Назад к документации

Эндпоинты и протоколы

Сопоставляйте эндпоинт с возможностями модели.

Выбирайте модель с поддержкой нужного эндпоинта, инструментов и формата ввода. Схемы Chat Completions, Responses и Messages различаются; одной замены пути недостаточно.

конечная точка API

МетодПутьОписывать
POST/v1/messagesAPI Anthropic Messages (рекомендуется)
POST/v1/chat/completionsЗавершения чата OpenAI (совместимо)
POST/v1/images/generationsOpenAI Images Generations (req/gpt-image-2)
POST/v1/images/editsOpenAI Images Edits / опорное изображение (req/gpt-image-2)
POST/v1/audio/speechOpenAI Audio Speech / TTS (req/gpt-4o-mini-tts)
POST/v1/videosOpenAI Videos — создание видео
GET/v1/videos/{id}Проверка статуса видео (без списания средств)
GET/v1/videos/{id}/contentСкачать файл MP4 (без списания средств)
DELETE/v1/videos/{id}Отменить задачу в очереди (без списания средств)
POST/v1/responsesAPI ответов 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.

Support