Совместимо с OpenAI Chat Completions. Базовый адрес: https://spoofapi.lat/v1
Ключ передаётся в заголовке Authorization. Ключи создаются в кабинете, раздел «API-ключи».
Authorization: Bearer sk-spoof-...
Ключ можно ограничить сроком жизни, суммой расходов, списком IP-адресов и белым списком моделей. Ключ виден целиком только один раз при создании, дальше в панели отображается префикс.
| Метод | Путь | Назначение |
|---|---|---|
GET | /v1/models | Каталог доступных вам моделей и комбо-цепочек |
POST | /v1/chat/completions | Генерация ответа, обычная и потоковая |
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 не прислал, выход оценивается по объёму полученного текста.
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 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 будет обработано по ней.
| HTTP | code | Что произошло |
|---|---|---|
| 401 | invalid_api_key | Ключ не найден или не передан |
| 403 | key_expired, ip_not_allowed, model_not_allowed | Ограничения ключа |
| 402 | insufficient_balance | Не хватает средств под резерв запроса |
| 429 | rate_limit_exceeded, concurrency_limit | Превышены лимиты частоты или одновременных запросов |
| 404 | model_not_found | Модель или комбо не найдены |
| 503 | no_upstream_key, upstream_unavailable | Провайдеры модели временно недоступны |
| 504 | upstream_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 | стрим · картинки |