API

Тот же формат, что у OpenAI. Другой base URL и ключ

Базовый URL

Все вызовы инференса идут на `https://inference.dahl.global/v1`. Для chat completions нужен Authorization: Bearer <API_KEY> и ключ, на который переведены токены.

Chat completions

POST /v1/chat/completions совместим с OpenAI. Передай model и messages. Текст ответа — в choices[0].message.content.

curl https://inference.dahl.global/v1/chat/completions \
  -H "Authorization: Bearer $DAHL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      { "role": "user", "content": "Hello, Dahl!" }
    ]
  }'
{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "..."
      }
    }
  ]
}

Стриминг

Добавь "stream": true. Dahl проксирует OpenAI SSE (строки data: {…}, в конце data: [DONE]). Для длинных ответов стриминг удобнее: клиент отображает токены по мере поступления.

curl https://inference.dahl.global/v1/chat/completions \
  -H "Authorization: Bearer $DAHL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [{"role": "user", "content": "Hello!"}],
    "stream": true
  }'

Инструменты

MiniMax, Kimi и DeepSeek Flash принимают tools / tool_choice в формате OpenAI. У Kimi есть vision. Перед запросами с tools или vision проверь, что модель сейчас есть в `GET /v1/models`.

Публичные эндпоинты

Ключ не нужен:

  • GET /v1/models — актуальные ID моделей
  • GET /v1/status?window=1h|24h|7d|30d — аптайм (по умолчанию 24h)
  • GET /health — состояние процесса
  • GET /v1/auth/check-username?username=… — свободен ли ник

Ошибки

СтатусСообщениеЧто делать
401Missing API token / invalid API tokenПередай Authorization: Bearer с актуальным ключом
402available tokens exhaustedПереведи токены из пула или пополни
429too many signup/sign-in attemptsПодожди и повтори
4xx / 502устаревший или неподдерживаемый modelВозьми id из GET /v1/models
503 / таймаутыперегрузка сети или узлаКороткий backoff и повтор