Помилки

У цьому посібнику ми поговоримо про те, що відбувається, коли щось іде не так під час роботи з 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

    Категорія помилки. Завжди присутня в завданнях, що завершилися невдало. Див. Типи помилок нижче.

  • Name
    message
    Type
    string
    Description

    Зрозумілий для людини опис помилки. Завжди присутній у завданнях, що завершилися невдало.

  • 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 або референсні зображення відхиляються фільтрами безпеки AI. Фільтр оцінює як текстовий prompt, так і будь-які референсні зображення разом.

Вирішення:

  • Перефразуйте ваш текстовий prompt, щоб прибрати натякаючі або чутливі описи.
  • Змініть референсні зображення, якщо вони зображують вміст, який може спрацювати фільтри безпеки.

timeout

Ця помилка означає, що час обробки вашого завдання перевищив дозволений ліміт. Це може статися через високе навантаження на систему або тому, що вхідні дані надто складні для обробки в межах ліміту часу.

Рішення:

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

format_conversion_failed

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

Вирішення:

  1. Повторіть запит.
  2. Спробуйте інший вихідний формат. Якщо певний формат і далі завершується невдало, перейдіть на інший формат, який відповідає вашим потребам.

Найкращі практики

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