HiAPI
Блог

Руководство по использованию

Исправление ошибки "Model Not Found" (model_not_found) в OpenAI-совместимом интерфейсе HiAPI

Oct 22, 2026
Исправление ошибки "Model Not Found" (model_not_found) в OpenAI-совместимом интерфейсе HiAPI

Симптомы проблемы

Когда вы вызываете OpenAI-совместимый интерфейс HiAPI (POST /v1/chat/completions), а переданный model id не распознаётся или не может быть маршрутизирован HiAPI, интерфейс возвращает HTTP 400, а в теле ответа содержится код ошибки model_not_found, выглядящий так:

{
  "error": {
    "message": "The requested model does not exist or is not available. Check the exact model ID with GET /v1/models and try again. If the issue persists, contact support with request ID: ...",
    "type": "hiapi_error",
    "code": "model_not_found",
    "request_id": "..."
  }
}

Обратите внимание: это не то же самое, что «проблема с ключом». Если ваш API key недействителен или истёк, HiAPI возвращает HTTP 401 + permission_denied, а не model_not_found:

{
  "error": {
    "code": "permission_denied",
    "message": "This API key is invalid. Check that it is correct or use another API key and try again. If the issue persists, contact support with request ID: ...",
    "type": "hiapi_error",
    "request_id": "..."
  }
}

Если видите permission_denied, сначала исправляйте ключ, а model id не трогайте. Далее речь пойдёт только о model_not_found.

Распространённые причины

Отсортированы по фактической вероятности от высокой к низкой:

  1. Опечатка / ошибка в регистре model id, либо скопированный slug из адресной строки веб-страницы. model id чувствителен к регистру и часто содержит точки, дефисы, слэши (например, seedream-5.0-lite, а не seedream-5-0-lite). Копирование slug страницы модели из адресной строки браузера и использование его в качестве id — самый частый источник этой ошибки: короткий slug в URL страницы модели не обязательно совпадает с реальным API id.

  2. Эта модель вовсе не является диалоговой, она работает через другой интерфейс. Большинство моделей изображений / видео / аудио в HiAPI поддерживают только асинхронный интерфейс задач POST /v1/tasks; а такие推理-модели, как gpt-5.6 / gpt-6, поддерживают только POST /v1/responses. Если отправить их на /v1/chat/completions, интерфейс отклонит запрос с invalid_request (HTTP 400):

    {
      "error": {
        "message": "The request is incomplete or incorrectly formatted. Please check it and try again...",
        "type": "hiapi_error",
        "param": "",
        "code": "invalid_request",
        "request_id": "..."
      }
    }
    

    Каждая модель, возвращаемая GET /v1/models, содержит поле supported_endpoint_types, и именно оно является единственным основанием для ответа на вопрос «какой интерфейс использовать для этой модели» (см. ниже).

  3. Модель выведена из эксплуатации или переименована. id написан абсолютно верно, но её уже нет в текущем списке /v1/models — старые id из заметок и кэша могли устареть.

  4. Проблема с ключом / правами ошибочно принята за проблему с моделью. При недействительном ключе аккаунта возвращается permission_denied (401), а не model_not_found (400). Сначала по коду ошибки определите категорию, затем исправляйте по существу.

Шаги исправления

  1. Сначала получите актуальный список и точный id: с вашим ключом вызовите GET https://api.hiapi.ai/v1/models. Это живой каталог, и именно туда сообщение об ошибке велит вам свериться — его авторитет выше любого жёстко прописанного id в вашем коде или заметках.

  2. По supported_endpoint_types определите интерфейс. Каждая запись модели выглядит так:

    { "id": "gpt-image-2/text-to-image", "object": "model", "owned_by": "custom", "supported_endpoint_types": ["task"] }
    
    • task → используйте асинхронный POST /v1/tasks, нельзя использовать chat/completions;
    • openai → используйте POST /v1/chat/completions (именно об этой ветке идёт речь в статье);
    • openai-response → используйте POST /v1/responses.
  3. Отправьте запрос заново с id, буквально совпадающим с тем, что в списке. Мультизадачные модели в списке имеют суффикс типа задачи (например, /text-to-image, /image-to-video), используйте полный id, как написано в списке, а не голый slug из URL страницы модели.

  4. Правильно выберите интерфейс: если тип task — переходите на /v1/tasks, если тип openai-response — переходите на /v1/responses. Смена интерфейса решает проблему за один раз лучше, чем повторные попытки с id на chat/completions.

  5. Если код ошибки на самом деле permission_denied (401), проблема в вашем ключе, а не в model id — отдельно сбросьте или замените API key.

Минимальный пример проверки

При диагностике этой ошибки первая команда всегда GET /v1/models — она бесплатна, без побочных эффектов и за один раз проверяет две вещи: работает ли ключ, существует ли этот id и какой интерфейс использовать.

curl -s https://api.hiapi.ai/v1/models \
  -H "Authorization: Bearer $HIAPI_API_KEY"
  • Возвращает 200 + список моделей → ключ в порядке, далее сверьте id и его supported_endpoint_types в списке;
  • Возвращает 401 + permission_denied → проблема с ключом, сначала исправьте ключ.

Убедившись, что модель имеет тип task, правильный способ вызова — единый интерфейс задач (model можно указывать голым id, маршрутизация работает и без суффикса типа задачи):

curl -s -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer $HIAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "input": { "prompt": "a red apple on a white table" }
  }'

Обратите внимание: как только /v1/tasks принимает запрос, он реально создаёт платную задачу и возвращает taskId, поэтому это «официальный вызов после исправления», а не способ мимоходом проверить связность — для чистой проверки связности используйте приведённый выше GET /v1/models. Если id недоступен, ошибка /v1/tasks имеет другую плоскую структуру (отличную от chat/completions):

{ "code": 400, "data": null, "error_code": "MODEL_UNAVAILABLE", "message": "model not available via /v1/tasks" }

Связанные внутренние ссылки

FAQ

Вопрос: Я скопировал id прямо из URL страницы модели, почему он не работает? Ответ: В URL страницы модели обычно находится короткий slug, а реальный API id (особенно у мультизадачных моделей) имеет суффикс типа задачи, например gpt-image-2/text-to-image. Ориентируйтесь на id, возвращаемый GET /v1/models, а не на адресную строку браузера.

Вопрос: GET /v1/models/{id} для несуществующего id вдруг вернул HTTP 200 — это баг? Ответ: Нет. Интерфейс запроса одной модели возвращает 200 даже если id не существует, но в теле ответа находится структура invalid_request_error / model_not_found, а не статус-код 404/400. Для этого интерфейса не смотрите только на HTTP статус-код, смотрите на body. Поведение интерфейса списка GET /v1/models и /v1/chat/completions описано выше.

Вопрос: Я направил OpenAI SDK на HiAPI и получаю model_not_found — это проблема на стороне OpenAI? Ответ: Нет. Как только base_url OpenAI-совместимого SDK указывает на HiAPI, разрешение моделей полностью находится в ведении HiAPI. model_not_found означает, что HiAPI не смог сопоставить переданный вами id с зарегистрированной моделью — исправляйте по шагам выше.

Вопрос: Как быстро определить, какой интерфейс использовать для модели? Ответ: Смотрите supported_endpoint_types модели в GET /v1/models: если содержит task — используйте POST /v1/tasks, если содержит openai — используйте POST /v1/chat/completions, если содержит openai-response — используйте POST /v1/responses.

Вопрос: Коды ошибок /v1/tasks и /v1/chat/completions одинаковы? Ответ: Нет. /v1/chat/completions использует строчные code (например, model_not_found, invalid_request), обёрнутые в {"error": {...}}; /v1/tasks использует заглавный error_code (например, MODEL_UNAVAILABLE) в плоской структуре {"code","message","data","error_code"}. При написании обработки ошибок для двух интерфейсов не предполагайте, что один набор подойдёт для обоих.

Похожие статьи

Все статьи →

Начните работать с постоянными артефактами ИИ

Получите API-ключ и вызывайте модели изображений, видео и аудио через один API на основе tasks.

Читать документацию API