---
title: "Справочник API: эндпоинты и заголовки — AI Creator API"
description: "Эндпоинты AI Creator API: Messages, Responses, Chat Completions, подсчёт токенов и список моделей, стриминг и заголовки."
url: https://llm.aicreator.app/docs/api/
lang: ru
updated: 2026-11-10
---

# Справочник API

Адрес API — `https://api.aicreator.app`. Тела запросов и ответов — как у официальных API Anthropic и OpenAI: их документация подходит и для нас. Тело запроса уходит провайдеру как есть; меняется только имя модели, если это алиас.

Для России есть второй адрес того же API — `https://api-ru.aicreator.app`: ключи, пути и баланс общие.

## Эндпоинты

| Запрос                           | Протокол                | Кто пользуется                     |
| -------------------------------- | ----------------------- | ---------------------------------- |
| `POST /v1/messages`              | Anthropic Messages      | Claude Code, Anthropic SDK         |
| `POST /v1/messages/count_tokens` | Anthropic Messages      | Claude Code, Anthropic SDK         |
| `POST /v1/responses`             | OpenAI Responses        | Codex CLI, OpenAI SDK              |
| `POST /v1/chat/completions`      | OpenAI Chat Completions | Cline, OpenCode, Aider, OpenAI SDK |
| `GET /v1/models`                 | Anthropic и OpenAI      | любой клиент                       |

Модель доступна не на всех протоколах: на каких — видно на [странице цен](https://llm.aicreator.app/pricing/). Запрос к модели по протоколу, на котором её нет, вернёт 400 `model_not_available` — мы не переводим один протокол в другой.

Тело запроса — до 32 МБ. Один запрос длится не дольше 30 минут.

## Ключ

Подходит любой из двух заголовков:

- `Authorization: Bearer sk-aic-…`
- `x-api-key: sk-aic-…`

Если пришли оба и значения разные, берётся `x-api-key`. Вход в кабинет — логин или cookie — здесь не подходит: нужен именно ключ.

## Список моделей

`GET /v1/models` отдаёт один список в форме, которую читают клиенты и Anthropic, и OpenAI: `{"object": "list", "data": [{"id": …, "display_name": …, "context_window": …}]}`. Ключ с ограничением по моделям видит только разрешённые.

Какой протокол имеется в виду, мы понимаем по заголовку запроса или по параметру `?surface=`; параметр главнее заголовка:

| Заголовок           | Параметр             | Что в списке                             |
| ------------------- | -------------------- | ---------------------------------------- |
| `anthropic-version` | `?surface=anthropic` | модели протокола Anthropic Messages      |
| `OpenAI-Beta`       | `?surface=responses` | модели протокола OpenAI Responses        |
| —                   | `?surface=chat`      | модели протокола OpenAI Chat Completions |

Без заголовка и параметра в списке модели, которые есть сразу на Chat Completions и Responses: их может вызвать любой клиент OpenAI. Другое значение `surface` — 400 `invalid_surface`.

```bash
curl "https://api.aicreator.app/v1/models?surface=responses" \
  -H "Authorization: Bearer $AIC_API_KEY"
```

## Подсчёт токенов

`POST /v1/messages/count_tokens` считает токены запроса в формате Messages и ничего не генерирует. Он бесплатный и не попадает в статистику, но расходует лимиты ключа на запросы и токены в минуту наравне с остальными.

```bash
curl https://api.aicreator.app/v1/messages/count_tokens \
  -H "x-api-key: $AIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-sonnet-5-5", "messages": [{"role": "user", "content": "Hello"}]}'
```

## Стриминг

С `"stream": true` ответ приходит как SSE. Мы передаём поток провайдера байт в байт — те же события в том же порядке, — поэтому Claude Code и Codex работают с ним так же, как с официальным API.

Если модель молчит дольше 15 секунд — например, долго думает, — мы шлём keepalive: `event: ping` в протоколе Anthropic и SSE-комментарий `: ping` в протоколах OpenAI. Клиент не обрывает соединение по тайм-ауту.

В стриме Chat Completions мы всегда включаем `stream_options.include_usage`: последним приходит чанк с пустым `choices: []` и статистикой токенов.

### Длинные ответы — только стримом

Запрос без стрима ждёт весь ответ молча. Если модель готовит его дольше примерно двух минут, Cloudflare перед нашим API закроет соединение с кодом 524, хотя модель ещё работает. Стрим с keepalive это ограничение проходит: для длинных ответов и долгого thinking включай `"stream": true`.

## Заголовки

### Запроса

- `anthropic-version`, `anthropic-beta` и `openai-beta` уходят провайдеру как есть: беты Claude Code работают.

### Ответа

- `X-Billing-Id` — номер запроса в биллинге. По нему запрос, который дошёл до провайдера, находится в выгрузке статистики (поле `request_id`).
- `retry-after` и `x-should-retry` — когда и стоит ли повторять. Мы ставим их на своих ошибках (кроме 401 и отказов без JSON) и передаём от провайдера.
- `anthropic-ratelimit-*` и `x-ratelimit-*` не возвращаются: у провайдера это лимиты нашего аккаунта, а не твоего ключа. Лимиты ключа — в разделе [«Ошибки и лимиты»](https://llm.aicreator.app/docs/errors/).

## Примеры

### Anthropic Messages

```bash
curl https://api.aicreator.app/v1/messages \
  -H "x-api-key: $AIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-sonnet-5-5", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}]}'
```

### OpenAI Responses

```bash
curl https://api.aicreator.app/v1/responses \
  -H "Authorization: Bearer $AIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-6-astra", "input": "Hello"}'
```

### OpenAI Chat Completions

```bash
curl https://api.aicreator.app/v1/chat/completions \
  -H "Authorization: Bearer $AIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-6-astra", "messages": [{"role": "user", "content": "Hello"}]}'
```

### Список моделей

```bash
curl https://api.aicreator.app/v1/models \
  -H "Authorization: Bearer $AIC_API_KEY"
```
