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

Быстрый старт

OdiRouter предлагает удобный путь к мультимодальным AI-возможностям. Это руководство поможет за несколько минут выполнить первый вызов OdiRouter API.

Откройте OdiRouter и войдите на платформу. Сейчас поддерживаются вход через Google, GitHub и электронную почту. Новые пользователи могут зарегистрироваться по адресу электронной почты и пройти подтверждение.

OdiRouter использует единый API-ключ для аутентификации доступа ко всем мультимодальным возможностям. После входа ключи можно создавать и управлять ими на странице управления API-ключами ; они используются для последующего доступа к моделям и подключения рабочих процессов.

Authorization: Bearer YOUR_API_KEY

Чтобы пользоваться моделями и выполнять задачи без перерывов, убедитесь, что на аккаунте достаточно средств. Перед промышленным использованием пополните баланс на странице кредитов .

После входа, создания API-ключа и пополнения баланса выполните LLM-вызов или отправьте мультимодальную задачу, чтобы проверить подключение.

LLM-вызовы используют https://api.odirouter.ai/v1 и поддерживают три пути интерфейса: /chat/completions, /messages и /responses. В примере ниже используется /chat/completions.

Окно терминала
export BASE_URL="https://api.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-5.5",
"messages": [
{
"role": "user",
"content": "Introduce OdiRouter LLM API in one sentence"
}
],
"temperature": 0.7
}'

API синхронно возвращает объект сообщения, например:

{
"id": "resp_01hxyz...",
"object": "chat.completion",
"created": 1784552736,
"model": "gpt-5.5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "OdiRouter provides a unified API for accessing LLM and multimodal AI models."
},
"finish_reason": "stop"
}
]
}

Мультимодальные задачи используют https://api.odirouter.ai/model, а путь интерфейса — /v1/queue/{endpoint}; они работают через асинхронный queue-протокол. На примере генерации изображения сначала отправьте задачу генерации изображения, затем опрашивайте статус задачи и после завершения получите результат.

Например, создайте задачу генерации изображения с nano-banana-2:

Окно терминала
curl -X POST "https://api.odirouter.ai/model/v1/queue/nano-banana-2" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a cinematic photo of a cat astronaut"
}'

При успешном создании API вернет объект задачи. Сохраните request_id; он используется для дальнейшего опроса статуса и получения результата:

{
"request_id": "mmsu_01hxyz...",
"response_url": "https://api.odirouter.ai/model/v1/queue/nano-banana-2/requests/mmsu_01hxyz.../response",
"status_url": "https://api.odirouter.ai/model/v1/queue/nano-banana-2/requests/mmsu_01hxyz.../status",
"cancel_url": "https://api.odirouter.ai/model/v1/queue/nano-banana-2/requests/mmsu_01hxyz.../cancel",
"queue_position": 0
}

Чтобы проверить статус задачи, вызовите endpoint статуса с request_id:

Окно терминала
curl "https://api.odirouter.ai/model/v1/queue/nano-banana-2/requests/mmsu_01hxyz.../status" \
-H "Authorization: Bearer YOUR_API_KEY"

Пока задача выполняется, статус будет IN_QUEUE или IN_PROGRESS. Когда задача перейдет в конечное состояние, статус будет COMPLETED:

{
"status": "COMPLETED",
"request_id": "mmsu_01hxyz...",
"response_url": "https://api.odirouter.ai/model/v1/queue/nano-banana-2/requests/mmsu_01hxyz.../response",
"metrics": {
"inference_time": 12.34
}
}

После завершения задачи вызовите endpoint результата с request_id:

Окно терминала
curl "https://api.odirouter.ai/model/v1/queue/nano-banana-2/requests/mmsu_01hxyz.../response" \
-H "Authorization: Bearer YOUR_API_KEY"

URL сгенерированного изображения находится в массиве output[].content[]:

{
"created_at": 1784032815291,
"id": "mmsu_01hxyz...",
"metadata": {
"completed_at": 8.14733,
"in_queue_at": 0,
"upload_at": 0
},
"model": "nano-banana-2",
"output": [
{
"content": [
{
"type": "image",
"url": "https://example.com/generated-image.png"
}
]
}
],
"status": "completed",
"request_id": "mmsu_01hxyz..."
}

В следующем примере показан полный процесс: отправка задачи изображения, опрос статуса и чтение результата:

Окно терминала
export BASE_URL="https://api.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')"
while true; do
STATUS_RESPONSE="$(curl -sS "${BASE_URL}/v1/queue/${ENDPOINT}/requests/${REQUEST_ID}/status" \
"${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 "${BASE_URL}/v1/queue/${ENDPOINT}/requests/${REQUEST_ID}/response" \
"${COMMON_HEADERS[@]}" | jq .

Для пользователей без пополнения баланса:

  • Бесплатные модели: суммарно до 50 вызовов в день (лимит сбрасывается в 00:00 UTC), RPM для LLM — 5, лимит параллельных мультимодальных запросов — 2.
  • Платные модели: без ограничения по количеству вызовов, RPM для LLM — 5, лимит параллельных мультимодальных запросов — 2.

Для пользователей, пополнивших баланс:

  • Бесплатные модели: суммарно до 100 вызовов в день (лимит сбрасывается в 00:00 UTC), RPM для LLM — 100, лимит параллельных мультимодальных запросов — 10.
  • Платные модели: без ограничения по количеству вызовов, RPM для LLM — 100, лимит параллельных мультимодальных запросов — 10.