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

# Quickstart

> Authenticate and make your first request in under 5 minutes

Authenticate and fetch your first data from the Cula Tracking API. Every request goes to
the base URL `https://api.demo.cula.earth/tracking/v1`.

<Steps>
  <Step title="Set your credentials">
    As part of the beta program you receive a `client_id` and `client_secret`, along with the
    IDs (`org_...`) of the organisations you can access. Export them for the commands below:

    ```bash theme={null}
    export CULA_CLIENT_ID="your-client-id"
    export CULA_CLIENT_SECRET="your-client-secret"
    export CULA_ORGANISATION_ID="your-organisation-id"
    ```
  </Step>

  <Step title="Get an access token">
    The API uses the OAuth2 client credentials flow. Exchange your credentials for a
    short-lived access token at the token endpoint:

    ```bash Token request theme={null}
    curl -X POST https://auth.demo.cula.earth/oauth2/token \
      -u "$CULA_CLIENT_ID:$CULA_CLIENT_SECRET" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      -d "grant_type=client_credentials" \
      -d "audience=com.cula.tracking"
    ```

    ```json Token response theme={null}
    {
      "access_token": "eyJhbGciOiJSUzI1NiIs...",
      "expires_in": 300,
      "token_type": "bearer"
    }
    ```

    Export the returned `access_token` so the next request can use it:

    ```bash theme={null}
    export CULA_ACCESS_TOKEN="eyJhbGciOiJSUzI1NiIs..."
    ```

    See [Authentication](/guides/authentication) for the full token lifecycle, organisation
    context, and access model.
  </Step>

  <Step title="Make your first request">
    Every request needs the access token as a bearer token plus a `Cula-Organisation-Id`
    header. Fetch the organisations you have access to:

    ```bash Request theme={null}
    curl https://api.demo.cula.earth/tracking/v1/organisations \
      -H "Authorization: Bearer $CULA_ACCESS_TOKEN" \
      -H "Cula-Organisation-Id: $CULA_ORGANISATION_ID"
    ```

    ```json Response theme={null}
    {
      "data": [
        {
          "id": "org_01k6cvp6bdeayb0hfrghfwxjzy",
          "name": "Pyrolysis GmbH",
          "address": "Business Street 1, 10115 Berlin, DE",
          "external_id": null,
          "managed_by_site": null
        }
      ],
      "pagination": {
        "starting_after": null,
        "limit": 10,
        "has_more": false,
        "next_cursor": null
      }
    }
    ```
  </Step>
</Steps>

## Next Steps

Now that you've authenticated and retrieved accessible organisations, you can:

* List sinks to access carbon removal data: `GET /sinks`
* Get sink details including tracking steps: `GET /sinks/{id}`
* List sites involved in carbon removal activities: `GET /sites`
* Set up webhooks to receive real-time notifications: `POST /webhooks`

See [Receiving Event Updates](/guides/receiving-event-updates) to start consuming
webhook events.
