Эндпоинты и протоколы
Сопоставляйте эндпоинт с возможностями модели.
Выбирайте модель с поддержкой нужного эндпоинта, инструментов и формата ввода. Схемы Chat Completions, Responses и Messages различаются; одной замены пути недостаточно.
конечная точка API
| Метод | Путь | Описывать |
|---|---|---|
| POST | /v1/messages | API Anthropic Messages (рекомендуется) |
| POST | /v1/chat/completions | Завершения чата OpenAI (совместимо) |
| POST | /v1/images/generations | OpenAI Images Generations (req/gpt-image-2) |
| POST | /v1/images/edits | OpenAI Images Edits / опорное изображение (req/gpt-image-2) |
| POST | /v1/audio/speech | OpenAI Audio Speech / TTS (req/gpt-4o-mini-tts) |
| POST | /v1/videos | OpenAI Videos — создание видео |
| GET | /v1/videos/{id} | Проверка статуса видео (без списания средств) |
| GET | /v1/videos/{id}/content | Скачать файл MP4 (без списания средств) |
| DELETE | /v1/videos/{id} | Отменить задачу в очереди (без списания средств) |
| POST | /v1/responses | API ответов OpenAI (совместимо) |
| GET | /v1/models | Список моделей и цены |
| POST | /v1/messages/count_tokens | Оценка токена (бесплатно) |
/v1/messages/count_tokens
Эндпоинт бесплатно возвращает локальную оценку, а не результат официального токенизатора модели. input_tokens ограничен 200 000, поэтому не используйте его для подтверждения, что большой промпт помещается в контекст, или для окончательного расчёта цены. Сверяйтесь с фактическим usage генерации. JSON ниже — иллюстрация, а не реальный ответ.
curl --fail-with-body "https://apivn.dev/v1/messages/count_tokens" \
-H "x-api-key: ${STALI_API_KEY:?STALI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"claude-fable-5","messages":[{"role":"user","content":"Hello"}]}'Responses и вызовы инструментов
Пример Responses использует POST /v1/responses и передает контекст в input. Эта документация не гарантирует поддержку неопубликованных операций хранения, получения или перечисления ответов.
import os
from getpass import getpass
from openai import OpenAI
client = OpenAI(api_key=os.getenv("STALI_API_KEY") or getpass("STALI_API_KEY: "), base_url="https://apivn.dev/v1", max_retries=0)
stream = client.responses.create(model="gpt-5.6-sol", input="Hello", stream=True, store=False)
completed = False
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
elif event.type == "response.completed":
completed = event.response.status == "completed"
elif event.type in ("error", "response.failed", "response.incomplete"):
raise RuntimeError(str(event))
if not completed:
raise RuntimeError("Stream ended without response.completed; preserve the request ID and check usage before retrying.")Примеры JSON предназначены для Chat Completions и Messages соответственно. Примеры Python показывают полный цикл вызова инструмента с локальным сложением: проверьте имя и аргументы, выполните функцию и отправьте результат с соответствующим call ID. Шлюз не выполняет функцию. Каждый раунд обращения к модели может оплачиваться отдельно; примеры ограничены 4 раундами и отключают автоматические повторы SDK.
Примеры проходят проверку исходного кода и локальные проверки; это не подтверждает работу во всех версиях приложений. До эксплуатации проверьте настройки, небольшой запрос и usage.

