> ## Documentation Index
> Fetch the complete documentation index at: https://docs.happyuptime.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

First monitor, status page, and on-call rotation in under 5 minutes.

# Quickstart

Five minutes from sign-up to a paged on-call person.

**Sign up + install the CLI**

```bash
    npm i -g happyuptime-cli
    happy login
    ```

    Opens your browser to sign in (or create an account). Stores an API key in `~/.happyuptime/config.json`.

    Prefer cURL? Create an API key from **Dashboard → Settings → API Keys** and use `Authorization: Bearer hu_...` on every request.

  **Create your first monitor**

```bash CLI
    happy monitors create \
      --name "My App" \
      --url https://myapp.com \
      --interval 60
    ```

    ```bash cURL
    curl -X POST https://happyuptime.com/api/v1/monitors \
      -H "Authorization: Bearer hu_your_api_key" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "My App",
        "url": "https://myapp.com",
        "type": "http",
        "interval_seconds": 60
      }'
    ```

    ```javascript Node
    await fetch("https://happyuptime.com/api/v1/monitors", {
      method: "POST",
      headers: {
        "Authorization": "Bearer " + process.env.HAPPYUPTIME_API_KEY,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        name: "My App",
        url: "https://myapp.com",
        type: "http",
        interval_seconds: 60,
      }),
    });
    ```

    Now checked every 60s from `us-east`, `us-west`, `eu-west`, `eu-central`, `ap-southeast`, `ap-northeast`. See live status with `happy status`.

  **Wire Slack for alerts**

**Dashboard → Integrations → Slack → Connect**, pick your alert channel, approve.

    A `slack_app` alert channel is created automatically. New monitors are routed to it by default.

    Detail walkthrough: [Slack integration](/integrations/slack).

  **Build a status page**

```bash
    curl -X POST https://happyuptime.com/api/v1/status-pages \
      -H "Authorization: Bearer hu_your_api_key" \
      -H "Content-Type: application/json" \
      -d '{"name":"Acme Status","slug":"acme","template":"minimal","brand_color":"#34d399"}'
    ```

    Add components in **Dashboard → Status Pages**, or via the [status page components API](/api/status-pages/components). Now live at `https://happyuptime.com/status/acme`. Custom domain via [Custom domain guide](/guides/custom-domain).

  **Set up on-call paging**

Create the schedule in **Dashboard → On-call**, or use the [on-call schedules API](/api/oncall/schedules).

    Then add an alert rule that pages the schedule:

    ```bash
    curl -X POST https://happyuptime.com/api/v1/alerts/rules \
      -H "Authorization: Bearer hu_your_api_key" \
      -H "Content-Type: application/json" \
      -d '{"name":"Page on-call on critical","severity":"critical","notify_oncall":true}'
    ```

    Detail walkthrough: [First on-call rotation](/guides/first-rotation).

## You're done

- Site checked every minute from 6 regions
- Slack channel + DM page when something breaks
- Public status page customers can subscribe to
- On-call rotation that hands off automatically every Monday

## Next steps

**[Multi-layer schedules](/guides/multi-layer-schedules)**

Stack Primary + Secondary + Manager with restrictions and escalation.
  **[Config-as-code](/cli/config-as-code)**

Version-control your entire setup as `happyuptime.yml`.
  **[Heartbeat monitors](/guides/heartbeat-cron)**

Monitor cron jobs and scheduled workflows.
  **[Custom domain](/guides/custom-domain)**

Put your status page on `status.acme.com`.