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

# API overview

> Base URL, versioning, auth summary, and the full Messages API map.

The Messages API is a versioned HTTP API for sending and receiving traffic on your Comms line.

## Base URL

```text theme={null}
https://osis.co
```

All routes in this reference live under:

```text theme={null}
/api/v1/comms
```

## Authentication

```http theme={null}
Authorization: Bearer <COMMS_API_KEY>
```

Keys are minted in the dashboard: [Messages API](https://comms.osis.co/dashboard/settings/api-keys).

See [Authentication](/messages-api/authentication) for scopes, rotation, and security rules.

## Conventions

| Topic         | Rule                                       |
| ------------- | ------------------------------------------ |
| Content type  | `application/json` on bodies               |
| Phone numbers | E.164 (`+12125550147`)                     |
| Idempotency   | Header `Idempotency-Key` on outbound sends |
| Errors        | `{ "error": "…" }` JSON                    |
| Time          | ISO-8601 where timestamps appear           |

## Endpoint map

### Messages

| Method | Path                     | Scope        | Docs                                |
| ------ | ------------------------ | ------------ | ----------------------------------- |
| `POST` | `/api/v1/comms/messages` | `comms_send` | [Send](/messages-api/send-message)  |
| `GET`  | `/api/v1/comms/messages` | `comms_read` | [List](/messages-api/list-messages) |

### Conversations

| Method | Path                          | Scope        | Docs                                     |
| ------ | ----------------------------- | ------------ | ---------------------------------------- |
| `GET`  | `/api/v1/comms/conversations` | `comms_read` | [List](/messages-api/list-conversations) |

### Contacts

| Method | Path                     | Scope        | Docs                                   |
| ------ | ------------------------ | ------------ | -------------------------------------- |
| `GET`  | `/api/v1/comms/contacts` | `comms_read` | [List](/messages-api/list-contacts)    |
| `POST` | `/api/v1/comms/contacts` | `write`\*    | [Upsert](/messages-api/upsert-contact) |

\*Contact upsert currently expects the broader `write` scope when present on the key.

### Webhooks

| Method | Path                     | Scope            | Docs                                   |
| ------ | ------------------------ | ---------------- | -------------------------------------- |
| `GET`  | `/api/v1/comms/webhooks` | `comms_webhooks` | [List](/messages-api/list-webhooks)    |
| `POST` | `/api/v1/comms/webhooks` | `comms_webhooks` | [Create](/messages-api/create-webhook) |

### Events

| Method | Path                   | Scope        | Docs                              |
| ------ | ---------------------- | ------------ | --------------------------------- |
| `GET`  | `/api/v1/comms/events` | `comms_read` | [List](/messages-api/list-events) |

## Rate limits

See [Errors & rate limits](/guides/errors-and-rate-limits). Defaults are roughly **100 requests/min** globally and **60 sends/min** per caller.

## SDKs

There is no required SDK. Use any HTTP client with a Bearer token. The [quickstart](/quickstart) shows cURL, Node, and Python.
