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

# Quickstart

> Create an API key and make your first call

## 1. Create an API key

In the ChatBridge dashboard, go to **Settings → API Keys → Create Key**. Pick the scopes you need — a
key defaults to read-only (every `*.view` scope) if you don't pick any. The raw key is shown **once**;
store it somewhere safe.

<Warning>
  Keys are shown in full only at creation time. If you lose it, revoke it and create a new one — there's
  no way to retrieve the raw value again.
</Warning>

## 2. Make your first call

Every request authenticates with a `Bearer` token:

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.algosmiths.com/api/v1/contacts/ \
    -H "Authorization: Bearer cb_live_..."
  ```

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

  resp = requests.get(
      "https://api.algosmiths.com/api/v1/contacts/",
      headers={"Authorization": "Bearer cb_live_..."},
  )
  resp.raise_for_status()
  print(resp.json())
  ```

  ```javascript Node.js theme={null}
  const resp = await fetch("https://api.algosmiths.com/api/v1/contacts/", {
    headers: { Authorization: "Bearer cb_live_..." },
  });
  const data = await resp.json();
  console.log(data);
  ```
</CodeGroup>

## 3. Send a message

```bash theme={null}
curl -X POST https://api.algosmiths.com/api/v1/messages/ \
  -H "Authorization: Bearer cb_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "15550001234",
    "type": "text",
    "text": { "body": "Hey! Following up on your order." },
    "phone_number": "<your phone_number_id>"
  }'
```

Requires the `chat.send_message` scope. See [Authentication](/authentication) for the full scope list,
and the [API Reference](/api-reference) for every endpoint.

<Note>
  Outside the 24-hour customer service window, only template messages can be sent — the same rule Meta
  enforces, checked locally first so you get a clear error instead of an opaque one from Meta's API.
</Note>
