Ошибки

В этом руководстве мы поговорим о том, что происходит, когда что-то идет не так при работе с Meshy API.


Ошибки запроса

Эти ошибки возвращаются немедленно, когда ваш API-запрос отклоняется. Проверьте HTTP код состояния и поле message, чтобы понять, что пошло не так.

Формат ответа

Ответ с ошибкой содержит одно поле message, описывающее, что пошло не так:

  • Name
    message
    Type
    string
    Description

    Краткое описание ошибки.

Коды состояния

  • Name
    2xx
    Description

    Код состояния 2xx указывает на успешный ответ.

    • Name
      200 - OK
      Description

      По умолчанию, если все прошло как ожидалось, будет возвращен код состояния 200.

    • Name
      202 - Accepted
      Description

      Ваш запрос был принят для обработки, но обработка еще не завершена. Это неокончательный ответ от Meshy API. Например, запрос на создание новой задачи вернет код состояния 202.

  • Name
    4xx
    Description

    Код состояния 4xx указывает на ошибку клиента.

    • Name
      400 - Bad Request
      Description

      Запрос был неприемлемым, часто из-за отсутствия обязательного параметра или один из параметров был некорректным.

    • Name
      401 - Unauthorized
      Description

      Не предоставлен действительный API-ключ или предоставленный API-ключ не авторизован для доступа к Meshy API эндпоинту.

    • Name
      402 - Payment Required
      Description

      Недостаточно средств на счете, связанном с предоставленным API-ключом.

    • Name
      403 - Forbidden
      Description

      Доступ к запрашиваемому ресурсу запрещен. Это может произойти, если вы пытаетесь получить доступ к Meshy API напрямую из клиентского JavaScript-кода, так как запросы Cross-Origin Resource Sharing (CORS) из браузеров не разрешены. Рассмотрите возможность использования серверного прокси для таких запросов. Для получения более подробной информации смотрите руководство MDN по CORS.

    • Name
      404 - Not Found
      Description

      Запрашиваемый ресурс не существует. Например, когда вы пытаетесь получить задачу по ее ID, но предоставили недействительный ID, вы получите код состояния 404.

    • Name
      429 - Too Many Requests
      Description

      Слишком много запросов поступило к Meshy API слишком быстро. Пожалуйста, обратитесь к руководству по лимитам запросов для получения подробной информации.

  • Name
    5xx
    Description

    Код состояния 5xx указывает на ошибку сервера. Если вы видите такую ошибку, пожалуйста, проверьте нашу страницу статуса для получения дополнительной информации и свяжитесь с нами через Discord для получения помощи.

Пример: 400 Bad Request

{
  "message": "Invalid model file extension: .3dm"
}

Ошибки задачи

Эти ошибки возникают после создания задачи и в процессе её выполнения. Проверьте объект task_error в ответе задачи для получения деталей ошибки.

Объект task_error содержит следующие поля:

  • Name
    type
    Type
    string
    Description

    Категория ошибки. Всегда присутствует в случае неудачных задач. См. Типы ошибок ниже.

  • Name
    message
    Type
    string
    Description

    Человеко-читаемое описание ошибки. Всегда присутствует в случае неудачных задач.

  • Name
    code
    Type
    string
    Необязательный
    Description

    Специфический код ошибки, идентифицирующий проблему. Присутствует, когда доступны дополнительные детали. См. Коды ошибок ниже.

  • Name
    doc_url
    Type
    string
    Необязательный
    Description

    Ссылка на подробную документацию по этому коду ошибки, включая рекомендации по разрешению. Присутствует, когда присутствует code.

Ошибка с деталями

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "status": "FAILED",
  "task_error": {
    "type": "invalid_input",
    "code": "image_too_complex",
    "message": "The uploaded image is too complex for 3D generation.",
    "doc_url": "https://docs.meshy.ai/en/api/errors#image-too-complex"
  }
}

Ошибка без деталей

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "status": "FAILED",
  "task_error": {
    "type": "server_error",
    "message": "An internal error occurred. Please retry."
  }
}

Типы ошибок

Поле type указывает на общую категорию сбоя. Используйте его для определения стратегии повторной попытки.

  • Name
    invalid_input
    Description

    Что-то не так с введенными вами данными. Проверьте поля code и message для получения подробной информации, исправьте проблему и повторите попытку.

  • Name
    timeout
    Description

    Обработка превысила лимит времени. Это часто временное явление. Повторите запрос, и если он продолжает не выполняться, попробуйте упростить ввод.

  • Name
    service_unavailable
    Description

    Сервис временно недоступен. Подождите немного и повторите попытку.

  • Name
    server_error
    Description

    Во время обработки произошла внутренняя ошибка. Повторите запрос. Если проблема сохраняется, свяжитесь с поддержкой, указав ваш идентификатор задачи.


Ошибки

Когда поле code присутствует, оно указывает на конкретную проблему, которую можно решить. Ниже приведена полная справка по каждому коду ошибки.

image_too_complex

Эта ошибка возникает, когда входное изображение или prompt описывает объект, который слишком геометрически сложен для обработки моделью 3D-генерации.

Распространенные примеры включают:

  • Плотные кучи мелких объектов (например, ящик, полный фруктов, стопка книг)
  • Сложные повторяющиеся узоры (например, решетчатые структуры, строительные леса, проволочные сетки)
  • Сложные строительные конструкции (например, многоэтажные здания с множеством окон и балконов)
  • Несколько различных объектов на одном изображении вместо одного объекта

Примеры входных данных, которые, вероятно, слишком сложны:

Ящик с ягодамиСложный потолок собораЗдание в процессе строительства с лесамиСфера с решеткой в виде сот

Решение:

  1. Используйте один объект на изображение. Модель лучше работает с одним четким объектом. Не включайте несколько отдельных объектов на одном изображении или в prompt.
  2. Упростите ваш объект. Уменьшите уровень детализации. Например, простая ваза вместо вазы, заполненной десятками цветов.
  3. Избегайте prompt на уровне сцены. Целые здания, городские кварталы, интерьеры, заполненные мебелью, или пейзажи, вероятно, превысят возможности модели. Сосредоточьтесь на одном объекте.
  4. Избегайте плотных повторяющихся структур. Объекты, такие как строительные леса, проволочные сетки, решетчатые узоры или кучи множества мелких предметов, являются частыми триггерами.

model_missing_uv

Эта ошибка возникает, когда вы загружаете модель для текстурирования с установленным значением enable_original_uv на true, но у модели отсутствуют UV-координаты. UV-координаты определяют, как 2D текстура оборачивается на 3D поверхность вашей модели.

No UVs vs Good UVs

Решение:

Правильное исправление зависит от того, почему вы установили enable_original_uv на true:

  • Если вам нужно сохранить оригинальную UV-раскладку вашей модели (например, пользовательское размещение швов для точного наложения текстуры): ваша модель должна иметь действительные UV-координаты. Убедитесь, что UV существуют в редакторе UV вашего 3D-программного обеспечения перед загрузкой. Обратите внимание, что файлы STL не могут хранить UV-данные, поэтому используйте GLB, FBX или OBJ вместо них.
  • Если вам не нужен специфический контроль UV (или вы не уверены): не указывайте enable_original_uv или установите его на false. Система автоматически сгенерирует UV-раскладку для вашей модели. Автоматически сгенерированные UV оптимизированы для покрытия, но у вас не будет контроля над тем, где размещаются швы текстуры.

model_insufficient_uv

Эта ошибка возникает, когда у модели есть UV-координаты, но покрытие UV слишком мало для качественного текстурирования. Это часто происходит с моделями, экспортированными из 3D-инструментов, которые генерируют временные или сжатые UV без правильного развертывания.

Недостаточные UV против Хороших UV

Решение:

  • Если вам нужно сохранить вашу оригинальную UV-раскладку: повторно разверните UV модели в вашем 3D-программном обеспечении. Убедитесь, что UV-острова правильно распределены по UV-пространству, а не сжаты в небольшую область.
  • Если вам не нужен специфический контроль UV: опустите enable_original_uv или установите его в false. Система автоматически сгенерирует новую UV-раскладку. Компромисс заключается в том, что вы потеряете оригинальное расположение швов, но автоматически сгенерированные UV будут иметь правильное покрытие для текстурирования.

invalid_input

Это код ошибки по умолчанию, который используется, когда входные данные не проходят проверку, но более конкретный код не применим. Поле message содержит конкретную причину сбоя.

Общие причины включают:

  • Пустые или поврежденные файлы моделей
  • Неподдерживаемые вариации форматов файлов (например, ASCII FBX файлы, meshopt-сжатые GLB)
  • В загруженной модели не найдено допустимых 3D объектов (например, файл содержит только арматуры, камеры или источники света)
  • Контент, который не проходит фильтры безопасности

Решение: Проверьте поле message для получения подробной информации о том, что пошло не так. Убедитесь, что ваши входные файлы и параметры соответствуют требованиям эндпоинта.

moderation_blocked

Эта ошибка возникает, когда ваш prompt или эталонные изображения отклоняются фильтрами безопасности ИИ. Фильтр оценивает как текстовый prompt, так и любые эталонные изображения вместе.

Решение:

  • Переформулируйте ваш текстовый prompt, чтобы убрать намеки или чувствительные описания.
  • Измените эталонные изображения, если они содержат контент, который может вызвать срабатывание фильтров безопасности.

timeout

Эта ошибка означает, что время обработки вашей задачи превысило допустимый предел. Это может произойти из-за высокой нагрузки на систему или потому, что ввод слишком сложен для обработки в пределах временного лимита.

Решение:

  1. Повторите запрос. Таймауты часто являются временными, и повторная попытка может быть успешной.
  2. Упростите ваш ввод. Если повторные попытки продолжают не удаваться, ваш ввод может быть слишком сложным. Попробуйте уменьшить уровень детализации в вашем изображении или prompt. См. image_too_complex для получения рекомендаций о том, какие типы вводов сложнее обрабатывать.

format_conversion_failed

Эта ошибка возникает, когда сгенерированная 3D-модель не может быть преобразована в запрашиваемый вами выходной формат. Модель была успешно сгенерирована, но этап преобразования завершился неудачей.

Решение:

  1. Повторите запрос.
  2. Попробуйте другой выходной формат. Если определенный формат продолжает давать сбой, переключитесь на другой формат, который соответствует вашим требованиям.

Лучшие практики

  1. Реализуйте логику повторных попыток. Для ошибок timeout и service_unavailable реализуйте логику повторных попыток с экспоненциальной задержкой.
  2. Логируйте идентификаторы задач. Всегда записывайте идентификатор задачи для целей отладки. Указывайте его при обращении в службу поддержки.
  3. Проверяйте входные данные. Убедитесь, что ваши входные изображения и модели соответствуют требованиям формата перед отправкой.