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

# One key, both protocols.

> Every request is authenticated with one API key. How you present it depends on which protocol you are speaking.

## Getting a key

Keys are created and revoked in the dashboard at
[www.sideren.io/dashboard/keys](https://www.sideren.io/dashboard/keys). A key is shown
once at creation — store it somewhere safe.

Keys start with `sdn_`.

<Note>
  Treat keys as secrets. Set them through environment variables rather than committing
  them, and rotate from the dashboard if one leaks.
</Note>

## How to present the key

| Protocol | Endpoint | Header |
| - | - | - |
| Anthropic Messages | `/v1/messages` | `x-api-key: sdn_...` |
| OpenAI Chat Completions | `/v1/chat/completions` | `Authorization: Bearer sdn_...` |
| OpenAI Responses | `/v1/responses` | `Authorization: Bearer sdn_...` |
| Embeddings / Completions / Batches | `/v1/...` | `Authorization: Bearer sdn_...` |

Every endpoint accepts either presentation — `x-api-key` or `Authorization: Bearer` — so a
client that can only set one auth header works everywhere. The table shows each protocol's
native convention. `GET /v1/models` needs no key at all.

## Examples

```sh title="Anthropic — x-api-key" theme={null}
curl https://api.sideren.io/v1/messages \
  -H "x-api-key: sdn_your_key" \
  -H "content-type: application/json" \
  -d '{"model":"@sdn/gpt-oss-120b","max_tokens":256,"messages":[{"role":"user","content":"Hi"}]}'
```

```sh title="OpenAI — Authorization: Bearer" theme={null}
curl https://api.sideren.io/v1/chat/completions \
  -H "authorization: Bearer sdn_your_key" \
  -H "content-type: application/json" \
  -d '{"model":"@sdn/gpt-oss-120b","messages":[{"role":"user","content":"Hi"}]}'
```

## Failure modes

* A missing or malformed key returns `401` with an `error` body shaped for the protocol
  you called.
* A valid key naming a model that does not exist in the catalog returns `404` — check the
  id against `GET /v1/models`.

See [Errors](/errors) for the full status-code reference and body shapes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.