Справка по API

API

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

Базовый URL

Все запросы к моделям отправляются на https://inference.dahl.global/v1. Для запросов Chat Completions нужен заголовок Authorization: Bearer <API_KEY> и ключ с токенами на балансе.

Генерация ответов (Chat Completions)

POST /v1/chat/completions совместим с API 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
  }'

Responses (Codex / Agents SDK)

POST /v1/responses — адаптер для тех же моделей, что доступны через Chat Completions. Codex CLI и OpenAI Agents SDK используют этот эндпоинт по умолчанию. Передай model и input (строку или список элементов). Текст ответа — в output_text или output[]. Потоковая передача использует события Responses SSE (response.created … response.completed), без data: [DONE].

curl https://inference.dahl.global/v1/responses \
  -H "Authorization: Bearer $DAHL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "input": "Hello, Dahl!"
  }'
{
  "id": "resp_…",
  "object": "response",
  "status": "completed",
  "model": "MiniMaxAI/MiniMax-M2.7",
  "output_text": "…",
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "content": [
        { "type": "output_text", "text": "…" }
      ]
    }
  ]
}

В Codex укажи собственный идентификатор провайдера (dahl) вместо встроенного openai. Иначе Codex обращается к /v1/responses/compact, который брокер не поддерживает. Сжатие контекста выполняется локально.

model = "MiniMaxAI/MiniMax-M2.7"
model_provider = "dahl"

[model_providers.dahl]
name = "Dahl"
base_url = "https://inference.dahl.global/v1"
env_key = "DAHL_API_KEY"
requires_openai_auth = false
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://inference.dahl.global/v1",
    api_key=os.environ["DAHL_API_KEY"],
)
r = client.responses.create(
    model="MiniMaxAI/MiniMax-M2.7",
    input="Hello, Dahl!",
)
print(r.output_text)

Инструменты

MiniMax и DeepSeek Flash принимают tools / tool_choice в формате OpenAI. Изображения (vision) на текущих моделях не принимаются. Перед запросами с инструментами проверь, что модель сейчас есть в GET /v1/models.

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

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

  • GET /v1/models — актуальные ID моделей
  • GET /v1/status?window=1h|24h|7d|30d — результаты проверок доступности (по умолчанию за 24 часа)
  • 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Подожди и повтори
400This model is not currently offered (+ актуальные ID)Поставь в model id из ошибки или GET /v1/models
503 / таймаутыперегрузка сети или узлаНемного подожди и повтори запрос