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

# Quickstart

> From zero to your first authenticated call in 5 minutes.

This walk-through assumes you have a klikit **partner API key** and **secret**
already — your klikit integration contact issues them. If not, ping
[integrations@klikit.io](mailto:integrations@klikit.io) and come back with the
credentials.

<Steps>
  <Step title="Pick your environment">
    For everything below, set the base URL once. We'll use the development
    environment.

    ```bash theme={null}
    BASE_URL="https://api.dev.shadowchef.co/v1/partner"
    API_KEY="<your partner key>"
    API_SECRET="<your partner secret>"
    ```
  </Step>

  <Step title="Verify your credentials">
    Hit a cheap, side-effect-free endpoint to confirm authentication works.
    `GET /brands` lists every brand under your business — it's the smallest
    thing that requires real auth.

    ```bash theme={null}
    curl -sS -u "$API_KEY:$API_SECRET" "$BASE_URL/brands" | jq .
    ```

    A `200` with a `data` array means you're in. A `401` means the key /
    secret pair is wrong or revoked. A `403` means the credential is valid
    but lacks the `brands:read` scope — talk to your operator.
  </Step>

  <Step title="List recent orders">
    `GET /orders` returns the page of orders for your business, newest first.
    Page through with `cursor` (see [List Orders](/partner-api/api-reference/orders/list)).

    ```bash theme={null}
    curl -sS -u "$API_KEY:$API_SECRET" \
      "$BASE_URL/orders?limit=5" | jq '.data[] | {id, status, brand_id, branch_id, placed_at}'
    ```

    Decode the `status` field via the [OrderStatus reference](/partner-api/api-reference/reference-dictionaries).
  </Step>

  <Step title="Pull a menu">
    `GET /menus` has two modes:

    * With `brand_id` **and** `branch_id` — store-level snapshot (the payload
      that ships to aggregator marketplaces).
    * Without either — business-level tree (no store overrides applied).

    ```bash theme={null}
    # Business-level
    curl -sS -u "$API_KEY:$API_SECRET" "$BASE_URL/menus" | jq '.menu.sections | length'

    # Store-level
    curl -sS -u "$API_KEY:$API_SECRET" \
      "$BASE_URL/menus?brand_id=123&branch_id=456" | jq '.menu.sections | length'
    ```
  </Step>

  <Step title="Stand up a webhook receiver">
    To consume events you host an endpoint and give the URL to your klikit
    operator. Walk through [Webhooks overview](/partner-api/webhooks/overview)
    next — it has copy-runnable Node and Python receivers that handle
    signature verification, idempotency, and acknowledgement correctly.
  </Step>
</Steps>

## What to read next

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/partner-api/authentication">
    HTTP Basic, key rotation, scope vocabulary.
  </Card>

  <Card title="Response envelope" icon="box" href="/partner-api/concepts/envelope">
    The shape every success and every error shares.
  </Card>

  <Card title="Idempotency" icon="arrows-rotate" href="/partner-api/concepts/idempotency">
    When and how to use `Idempotency-Key` headers on writes.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/partner-api/webhooks/overview">
    Verify, dedupe, and acknowledge order events.
  </Card>
</CardGroup>
