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

# Quickstart

> Make your first authenticated request to the Zeeg API in under 5 minutes — generate an API key, verify your token, and list scheduled events.

This guide walks you through making your first Zeeg API call. By the end, you will have verified your credentials and retrieved live data from your account.

## Prerequisites

* A Zeeg account with an active subscription
* An API token (generated in the next step)

## Base URL

All requests in this guide use the following base URL:

```
https://api.zeeg.me/v2
```

<Steps>
  <Step title="Get your API key">
    Go to **[Account Settings > API](https://app.zeeg.me/account/settings/api-access)** and generate a new token. Select the scopes your integration needs — for this quickstart, `users:read` and `events:read` are enough.

    Copy the token and store it somewhere safe. You will not be able to see it again.

    <Warning>
      Treat your API token like a password. Do not commit it to version control or expose it in client-side code.
    </Warning>
  </Step>

  <Step title="Verify your token">
    Call `GET /whoami` to confirm your token is valid and see which account it belongs to.

    <CodeGroup>
      ```bash cURL theme={null}
      curl -X GET https://api.zeeg.me/v2/whoami \
        -H "Authorization: Bearer YOUR_TOKEN" \
        -H "Accept: application/json"
      ```

      ```python Python theme={null}
      import requests

      response = requests.get(
          "https://api.zeeg.me/v2/whoami",
          headers={
              "Authorization": "Bearer YOUR_TOKEN",
              "Accept": "application/json",
          },
      )
      print(response.json())
      ```

      ```javascript JavaScript theme={null}
      const response = await fetch("https://api.zeeg.me/v2/whoami", {
        headers: {
          Authorization: "Bearer YOUR_TOKEN",
          Accept: "application/json",
        },
      });
      const data = await response.json();
      console.log(data);
      ```

      ```php PHP theme={null}
      $ch = curl_init("https://api.zeeg.me/v2/whoami");
      curl_setopt_array($ch, [
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_HTTPHEADER => [
              "Authorization: Bearer YOUR_TOKEN",
              "Accept: application/json",
          ],
      ]);
      $response = curl_exec($ch);
      curl_close($ch);
      echo $response;
      ```
    </CodeGroup>

    You should receive a response like:

    ```json theme={null}
    {"email": "lena.meier@horizondigital.de"}
    ```

    If you get a `401 Unauthorized` response, double-check that your token is correct and has not expired.
  </Step>

  <Step title="List your events">
    Call `GET /scheduled-events` to retrieve your upcoming scheduled events.

    <CodeGroup>
      ```bash cURL theme={null}
      curl -X GET https://api.zeeg.me/v2/scheduled-events \
        -H "Authorization: Bearer YOUR_TOKEN" \
        -H "Accept: application/json"
      ```

      ```python Python theme={null}
      import requests

      response = requests.get(
          "https://api.zeeg.me/v2/scheduled-events",
          headers={
              "Authorization": "Bearer YOUR_TOKEN",
              "Accept": "application/json",
          },
      )
      print(response.json())
      ```

      ```javascript JavaScript theme={null}
      const response = await fetch("https://api.zeeg.me/v2/scheduled-events", {
        headers: {
          Authorization: "Bearer YOUR_TOKEN",
          Accept: "application/json",
        },
      });
      const data = await response.json();
      console.log(data);
      ```

      ```php PHP theme={null}
      $ch = curl_init("https://api.zeeg.me/v2/scheduled-events");
      curl_setopt_array($ch, [
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_HTTPHEADER => [
              "Authorization: Bearer YOUR_TOKEN",
              "Accept: application/json",
          ],
      ]);
      $response = curl_exec($ch);
      curl_close($ch);
      echo $response;
      ```
    </CodeGroup>

    This returns a paginated list of your scheduled events, each including the event title, start/end time, status, location, invitees, and hosts. If you have no upcoming events, the `collection` array will be empty. See [Pagination](/pagination) for details on navigating large result sets.
  </Step>

  <Step title="List your scheduling pages">
    Call `GET /event-types` to retrieve your scheduling pages (event types).

    <CodeGroup>
      ```bash cURL theme={null}
      curl -X GET https://api.zeeg.me/v2/event-types \
        -H "Authorization: Bearer YOUR_TOKEN" \
        -H "Accept: application/json"
      ```

      ```python Python theme={null}
      import requests

      response = requests.get(
          "https://api.zeeg.me/v2/event-types",
          headers={
              "Authorization": "Bearer YOUR_TOKEN",
              "Accept": "application/json",
          },
      )
      print(response.json())
      ```

      ```javascript JavaScript theme={null}
      const response = await fetch("https://api.zeeg.me/v2/event-types", {
        headers: {
          Authorization: "Bearer YOUR_TOKEN",
          Accept: "application/json",
        },
      });
      const data = await response.json();
      console.log(data);
      ```

      ```php PHP theme={null}
      $ch = curl_init("https://api.zeeg.me/v2/event-types");
      curl_setopt_array($ch, [
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_HTTPHEADER => [
              "Authorization: Bearer YOUR_TOKEN",
              "Accept: application/json",
          ],
      ]);
      $response = curl_exec($ch);
      curl_close($ch);
      echo $response;
      ```
    </CodeGroup>

    Each scheduling page in the response includes its title, slug, duration, active status, profile, and any custom invitee questions configured for the page.
  </Step>
</Steps>

## Next steps

Now that you have made your first API calls, explore these resources to build deeper integrations:

<CardGroup cols={3}>
  <Card title="Booking Flow" icon="calendar-plus" href="/guides/booking-flow">
    Create bookings programmatically through the API.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/guides/webhooks-guide">
    Receive real-time notifications when events are created, cancelled, or rescheduled.
  </Card>

  <Card title="API Reference" icon="code" href="/api">
    Browse the full list of endpoints, parameters, and response schemas.
  </Card>
</CardGroup>
