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

Совместимо с OpenAI Chat Completions. Базовый адрес: https://spoofapi.lat/v1

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

Ключ передаётся в заголовке Authorization. Ключи создаются в кабинете, раздел «API-ключи».

Authorization: Bearer sk-spoof-...

Ключ можно ограничить сроком жизни, суммой расходов, списком IP-адресов и белым списком моделей. Ключ виден целиком только один раз при создании, дальше в панели отображается префикс.

Доступные эндпоинты

МетодПутьНазначение
GET/v1/modelsКаталог доступных вам моделей и комбо-цепочек
POST/v1/chat/completionsГенерация ответа, обычная и потоковая

Python (openai)

from openai import OpenAI

client = OpenAI(
    base_url="https://spoofapi.lat/v1",
    api_key="sk-spoof-...",
)

response = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages=[
        {"role": "system", "content": "Отвечай коротко."},
        {"role": "user", "content": "Объясни, что такое SSE."},
    ],
    max_tokens=1024,
)
print(response.choices[0].message.content)

Потоковый ответ

stream = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages=[{"role": "user", "content": "Считай до десяти"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

Шлюз просит у провайдера usage в последнем чанке, поэтому стрим тарифицируется по фактическому числу токенов. Если провайдер usage не прислал, выход оценивается по объёму полученного текста.

Node.js

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://spoofapi.lat/v1",
  apiKey: process.env.SPOOFAPI_KEY,
});

const res = await client.chat.completions.create({
  model: "gpt-5.6-luna",
  messages: [{ role: "user", content: "Привет!" }],
});
console.log(res.choices[0].message.content);

curl

curl https://spoofapi.lat/v1/chat/completions \
  -H "Authorization: Bearer sk-spoof-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-luna",
    "messages": [{"role": "user", "content": "Привет!"}]
  }'

Картинки и вызов функций

Поддерживается стандартный формат OpenAI. Возможности каждой модели указаны в каталоге.

{
  "model": "gpt-5.6-luna",
  "messages": [{
    "role": "user",
    "content": [
      {"type": "text", "text": "Что на картинке?"},
      {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}
    ]
  }],
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "parameters": {"type": "object", "properties": {"city": {"type": "string"}}}
    }
  }]
}

Тарификация

Цена модели задаётся в копейках за 1 000 000 токенов отдельно для входа и выхода. Перед запросом на балансе резервируется максимально возможная стоимость (промпт плюс max_tokens), после ответа резерв закрывается по факту, а разница возвращается. Из-за резерва баланс не может уйти в минус: если денег на максимальную стоимость не хватает, запрос отклоняется с кодом insufficient_balance.

Бесплатный тир пробуется первым. Если суточная квота выбрана, либо запрос не проходит по бесплатным ограничениям (например, слишком большой промпт), шлюз автоматически переключается на платный тариф. Причина переключения возвращается в тексте ошибки, когда платный тариф тоже недоступен.

Комбо-цепочки

В кабинете можно собрать цепочку моделей и указать, при каких условиях переходить к следующей: ошибка провайдера, ограничение частоты, исчерпанная квота, таймаут. Цепочка вызывается как обычная модель — по её виртуальному имени, например combo/my-chain. Цепочку также можно привязать к ключу: тогда любое значение model будет обработано по ней.

Коды ошибок

HTTPcodeЧто произошло
401invalid_api_keyКлюч не найден или не передан
403key_expired, ip_not_allowed, model_not_allowedОграничения ключа
402insufficient_balanceНе хватает средств под резерв запроса
429rate_limit_exceeded, concurrency_limitПревышены лимиты частоты или одновременных запросов
404model_not_foundМодель или комбо не найдены
503no_upstream_key, upstream_unavailableПровайдеры модели временно недоступны
504upstream_timeoutПровайдер не ответил за отведённое время
{
  "error": {
    "message": "Недостаточно средств: для запроса нужно до 1,20 ₽, доступно 0,35 ₽",
    "type": "insufficient_quota",
    "code": "insufficient_balance"
  }
}

Идентификаторы моделей

modelНазваниеВозможности
gpt-5.6-luna GPT 5.6 Luna стрим
glm-5.3-flash GLM 5.3 Flash стрим · бесплатный тир
gemini-3.6-flash Gemini 3.6 Flash стрим · картинки