Документация API

Apikley совместим с OpenAI API. Чтобы начать, меняют две вещи — адрес и ключ; остальной код интеграции остаётся прежним.

Быстрый старт

  1. Получите ключ в личном кабинете, раздел «API-ключи».
  2. Укажите базовый адрес https://api.apikley.ru/v1.
  3. Передавайте ключ заголовком x-api-key.
cURL
curl https://api.apikley.ru/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "model": "gpt-5",
    "messages": [
      {"role": "user", "content": "Привет!"}
    ]
  }'
Python — официальный SDK OpenAI
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.apikley.ru/v1"
)

response = client.chat.completions.create(
    model="gpt-5",
    messages=[{"role": "user", "content": "Привет!"}]
)

print(response.choices[0].message.content)

Аутентификация

Ключ передают заголовком. Принимаются оба варианта — какой удобнее вашей библиотеке, тот и используйте: официальные SDK OpenAI отправляют Authorization, примеры на cURL обычно короче с x-api-key.

x-api-key: YOUR_API_KEY
Authorization: Bearer YOUR_API_KEY

Запрос без ключа получает 401 missing_api_key, с негодным ключом — 401 invalid_api_key. По ответу нельзя определить, чем именно ключ не подошёл: истёк, отозван или никогда не существовал.

Методы

Базовый адрес — https://api.apikley.ru/v1. Обязательное поле в теле одно — model; остальные параметры зависят от модели и передаются как есть.

POST /v1/chat/completions
Текстовые и мультимодальные диалоги. Формат запроса и ответа — как у OpenAI, поэтому официальные SDK работают со сменой двух настроек.
POST /v1/images/generations
Генерация изображений. Набор параметров у каждой модели свой — смотрите карточку модели в каталоге.

Отдельного метода GET /v1/models нет: вызов client.models.list() из SDK вернёт 404. Список доступных моделей — в каталоге ниже.

Ошибки

Отказ, сформированный шлюзом, приходит в таком виде:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "request_validation_failed",
    "request_id": "d87d07aa-e293-4beb-8d61-169d0425…"
  }
}

request_id — самое полезное поле при обращении в поддержку: по нему запрос находится в журналах. Сохраняйте его при неожиданных отказах.

401Ключ отсутствует или не подошёл.
422Тело запроса не прошло проверку — чаще всего нет поля model.
405Метод не тот: оба эндпоинта принимают только POST.
502Провайдер ответил неудачно или прислал пустой ответ.
504Провайдер не ответил за отведённое время. Повторить запрос безопасно.

Модели и цены

Какие модели доступны сейчас, что каждая умеет и сколько стоит — в каталоге. Там же лежат идентификаторы, которые подставляют в поле model.