Перейти к содержимому
Главная

OdiRouter Model API

Model API предоставляет разные протоколы вызова для разных типов моделей. Мультимодальные модели обычно используют асинхронный протокол задач: создание задачи, polling статуса и получение результата. Большие языковые модели обычно используют синхронный или потоковый протоколы, возвращая текст или инкрементальный вывод в рамках одного запроса.

ВозможностьМетодПутьПримечания
Список моделейGET/v1/modelsСписок доступных моделей
Chat CompletionsPOST/v1/chat/completionsOpenAI-совместимые сообщения
ResponsesPOST/v1/responsesУнифицированный Responses API
Мультимодальный submitPOST/model/v1/queue/{endpoint}Создает queue request для выбранной модели
Статус задачиGET/model/v1/queue/{endpoint}/requests/{request_id}/statusВозвращает текущий статус
Получение результатаGET/model/v1/queue/{endpoint}/requests/{request_id}/responseВозвращает результат после завершения
Отмена задачиPUT/model/v1/queue/{endpoint}/requests/{request_id}/cancelОтменяет задачу, если endpoint поддерживает cancel
Видео Sora-stylePOST/v1/videosОтдельный multipart video endpoint

OdiRouter LLM API предназначен для вызовов Chat Completions и Responses API. Endpoints используют единый префикс /v1, а платформа берет на себя аутентификацию по API-ключу, проверку баланса и трассировку запросов.

Окно терминала
export BASE_URL="https://odirouter.ai/v1"
export API_KEY="YOUR_API_KEY"
curl -sS "${BASE_URL}/chat/completions" \
-H "Authorization: Bearer ${API_KEY}" \
-H "Content-Type: application/json" \
-H "X-Request-Id: demo-$(date +%s)" \
-d '{
"model": "gpt-4.1",
"messages": [
{
"role": "user",
"content": "Introduce OdiRouter LLM API in one sentence"
}
],
"temperature": 0.7
}'

Мультимодальные модели используют асинхронный queue-протокол: создайте задачу, опрашивайте статус и получите результат после завершения. Чтобы остановить выполнение, отправьте запрос на отмену. endpoint в URL — это непосредственно ID модели OdiRouter, а тело запроса содержит объект параметров модели.

Окно терминала
export BASE_URL="https://odirouter.ai/model"
export ENDPOINT="nano_banana_2"
export API_KEY="YOUR_API_KEY"
COMMON_HEADERS=(
-H "Authorization: Bearer ${API_KEY}"
-H "Content-Type: application/json"
)
SUBMIT_RESPONSE="$(curl -sS -X POST "${BASE_URL}/v1/queue/${ENDPOINT}" \
"${COMMON_HEADERS[@]}" \
-d '{
"prompt": "a cinematic photo of a cat astronaut"
}')"
echo "${SUBMIT_RESPONSE}" | jq .
REQUEST_ID="$(echo "${SUBMIT_RESPONSE}" | jq -r '.request_id')"
STATUS_URL="$(echo "${SUBMIT_RESPONSE}" | jq -r '.status_url')"
RESPONSE_URL="$(echo "${SUBMIT_RESPONSE}" | jq -r '.response_url')"
while true; do
STATUS_RESPONSE="$(curl -sS "${STATUS_URL}" "${COMMON_HEADERS[@]}")"
echo "${STATUS_RESPONSE}" | jq .
STATUS="$(echo "${STATUS_RESPONSE}" | jq -r '.status')"
ERROR="$(echo "${STATUS_RESPONSE}" | jq -r '.error // empty')"
if [ "${STATUS}" = "COMPLETED" ]; then
if [ -n "${ERROR}" ]; then
echo "task failed: ${ERROR}"
exit 1
fi
break
fi
sleep 3
done
curl -sS "${RESPONSE_URL}" "${COMMON_HEADERS[@]}" | jq .