Документация
PostCorporate API совместим с OpenAI API. Поменяйте base URL и ключ — ваш код, SDK или IDE заработает без других изменений.
Quickstart · 2 минуты
1. Получите ключ
Пополните баланс на /buy и возьмите пропуск. Ключ выдаётся сразу после оформления — он на странице /client.
2. Первый запрос
curl https://postcorporate.tech/v1/chat/completions \
-H "Authorization: Bearer ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [
{"role": "user", "content": "Привет! Расскажи о себе."}
]
}'
from openai import OpenAI
client = OpenAI(
api_key="ВАШ_КЛЮЧ",
base_url="https://postcorporate.tech/v1",
)
response = client.chat.completions.create(
model="claude-sonnet-5",
messages=[
{"role": "user", "content": "Привет! Расскажи о себе."}
]
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "ВАШ_КЛЮЧ",
baseURL: "https://postcorporate.tech/v1",
});
const response = await client.chat.completions.create({
model: "claude-sonnet-5",
messages: [{ role: "user", content: "Привет! Расскажи о себе." }],
});
console.log(response.choices[0].message.content);
postcorporate.tech можно использовать llmproxy.shop — это тот же сервис.
Авторизация
Все запросы требуют заголовок Authorization с Bearer-токеном:
Authorization: Bearer ВАШ_КЛЮЧ
Ключ начинается с sk-. Найти его можно на странице /client. Срок действия и остаток баланса также отображаются там.
| Ошибка | Причина |
|---|---|
401 Unauthorized | Неверный или истёкший ключ |
402 Payment Required | Баланс исчерпан |
403 Forbidden | Модель не включена в ключ |
Модели и цены
Цены в долларах за 1 000 000 токенов. Чтение из кеша — 50% от цены входа.
Полный список доступных моделей: GET /v1/models
Chat Completions
POST /v1/chat/completions — основной эндпоинт. Полностью совместим с OpenAI Chat API.
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
model обязательно | string | ID модели из /v1/models |
messages обязательно | array | Массив сообщений. Роли: user, assistant, system |
stream | boolean | Потоковый вывод Server-Sent Events (по умолчанию false) |
max_tokens | integer | Максимальное число токенов в ответе |
temperature | number | Температура 0–2 (по умолчанию 1) |
top_p | number | Nucleus sampling |
stop | string / array | Стоп-последовательности |
system | string | Системный промпт (альтернатива messages[0].role=system для Claude) |
Пример ответа
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1785765000,
"model": "claude-sonnet-5",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "Привет! Я языковая модель Claude Sonnet 5…"
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 18,
"completion_tokens": 45,
"total_tokens": 63
}
}
Streaming
Передайте "stream": true — ответ придёт частями в формате Server-Sent Events.
curl https://postcorporate.tech/v1/chat/completions \
-H "Authorization: Bearer ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","messages":[{"role":"user","content":"Привет"}],"stream":true}'
stream = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Расскажи мне историю"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Формат chunk
data: {"id":"chatcmpl-xyz","object":"chat.completion.chunk","choices":[{"delta":{"content":"Привет"},"index":0}]}
data: [DONE]
Изображения (Vision)
Модели с поддержкой изображений принимают content как массив:
{
"model": "claude-sonnet-5",
"messages": [{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/img.jpg"}},
{"type": "text", "text": "Что на этом изображении?"}
]
}]
}
Поддерживаются JPEG, PNG, GIF, WebP. Максимум 20 МБ. Также работает base64: "url": "data:image/jpeg;base64,..."
Какие модели поддерживают изображения — смотрите в таблице выше (столбец Картинки).
Коды ошибок
| Код | Тип | Значение | Что делать |
|---|---|---|---|
400 | invalid_request_error | Неверный запрос (параметры, формат JSON) | Проверить тело запроса |
401 | authentication_error | Неверный или просроченный ключ | Обновить ключ на /client |
402 | billing_error | Баланс исчерпан | Пополнить на /buy |
403 | permission_error | Модель не разрешена в этом ключе | Добавить модель в ключ на /account |
404 | not_found_error | Несуществующий путь или модель | Проверить название модели через GET /v1/models |
429 | rate_limit_error | Превышен RPM или лимит провайдера | Retry через 1–5 с экспоненциальным отступом |
500 | server_error | Внутренняя ошибка или недоступен провайдер | Retry 1–3 раза с задержкой |
503 | overloaded_error | Провайдер перегружен | Retry через 2–10 с |
Формат ошибки
{
"error": {
"message": "Описание ошибки на русском",
"type": "rate_limit_error",
"code": 429
}
}
Retry: рекомендуемый алгоритм
import time, random
def call_with_retry(fn, max_retries=3):
for attempt in range(max_retries):
try:
return fn()
except Exception as e:
if attempt == max_retries - 1: raise
status = getattr(e, "status_code", 0)
if status in (429, 500, 503):
delay = (2 ** attempt) + random.uniform(0, 1)
time.sleep(delay)
else:
raise # 4xx кроме 429 — не ретраить
Лимиты
| Параметр | Значение | Примечание |
|---|---|---|
| RPM (запросы в минуту) | 60 / ключ | Пишите нам, если нужно больше |
| Контекстное окно | до 1 000 000 токенов | Зависит от модели |
| Размер изображения | 20 МБ | JPEG / PNG / GIF / WebP |
| Одновременных ключей | 10 на аккаунт |
SDK и IDE
Используйте стандартные OpenAI SDK — меняется только base_url и api_key.
| Инструмент | Как подключить |
|---|---|
| openai Python SDK | OpenAI(api_key="sk-...", base_url="https://postcorporate.tech/v1") |
| openai Node SDK | new OpenAI({apiKey: "sk-...", baseURL: "https://postcorporate.tech/v1"}) |
| Cursor | Settings → Models → Add model → вставить base URL и ключ |
| Cline (VS Code) | Provider: OpenAI Compatible → API Base URL → ключ |
| Roo Code | То же, что Cline |
| Continue.dev | config.json → apiBase: "https://postcorporate.tech/v1" |
| OpenCode | opencode config set provider openai baseUrl https://postcorporate.tech/v1 |
| Claude Code | ANTHROPIC_BASE_URL=https://postcorporate.tech/v1 ANTHROPIC_API_KEY=sk-... |
| LiteLLM | litellm --model openai/claude-sonnet-5 --api_base https://postcorporate.tech/v1 |
FAQ
Как получить ключ?
Пополните баланс на /buy — картой через Platega, зачисление автоматическое. Затем на /account возьмите пропуск (кредит + срок + набор моделей). Ключ выдаётся сразу.
Какие модели доступны?
Более 70 моделей: Claude (Opus, Sonnet, Haiku), GPT-линейка, Gemini, Grok, Qwen, DeepSeek, GLM, kimi, MiniMax, MiMo и другие. Список с ценами — в таблице выше или через GET /v1/models.
Что происходит при ошибке 429?
Провайдер исчерпал лимит или наш RPM. Первые попытки делаем сами (до 3 ретраев с другими аккаунтами пула). Если 429 дошёл до вас — подождите 1–5 секунд и повторите запрос.
Как устроена тарификация?
Платите только за фактические токены по таблице на этой странице. Вход и выход считаются отдельно (выход дороже — так же, как у самих вендоров). Чтение кеша — 50% входной цены. Без скрытых коэффициентов.
Что значит «кеш»?
Когда в последовательных запросах начало контекста совпадает, провайдер читает его из кеша дешевле. Мы передаём эту скидку вам — строчка «кеш» в таблице цен.
Могу ли я использовать Anthropic Messages API?
Да. Путь /v1/messages также работает для Claude-моделей. Мы принимаем и OpenAI-формат, и Anthropic-формат — выбирайте тот, что удобнее вашему SDK.
Есть ли поддержка function calling / tool use?
Да, для всех моделей, которые поддерживают инструменты. Передавайте tools и tool_choice как в стандартном OpenAI API.
Как сменить модели в существующем ключе?
На /account → ваш пропуск → «Редактировать» → добавить или убрать модели. Изменение применяется сразу.
Есть ли поддержка?
Telegram: @Qwertylang740. Отвечаем оперативно.