Ошибки

В этом руководстве мы расскажем о том, что происходит, когда что-то идет не так во время работы с 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. Подробности см. в руководстве Rate Limits.

  • Name
    5xx
    Description

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

Example: 400 Bad Request

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

Ошибки задач

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

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

  • Name
    type
    Type
    string
    Description

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

  • Name
    message
    Type
    string
    Description

    Понятное человеку описание ошибки. Всегда присутствует в задачах со статусом FAILED.

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

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

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

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

Error with details

{
  "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"
  }
}

Error without details

{
  "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

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


Коды ошибок

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

image_too_complex

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

Распространенные примеры:

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

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

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

Решение:

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

model_missing_uv

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

Отсутствующие UV-координаты и корректные UV-координаты

Решение:

Правильное решение зависит от того, зачем вы установили 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, GLB, сжатые с помощью meshopt)
  • В загруженной модели не найдены допустимые 3D-объекты (например, файл содержит только арматуры, камеры или источники света)
  • Контент, который не проходит фильтры безопасности

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

moderation_blocked

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

Решение:

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

timeout

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

Решение:

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

format_conversion_failed

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

Решение:

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

Рекомендации

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