Błędy

W tym przewodniku omówimy, co się dzieje, gdy coś pójdzie nie tak podczas pracy z Meshy API.


Błędy Żądania

Te błędy są zwracane natychmiast, gdy twoje żądanie API zostaje odrzucone. Sprawdź kod statusu HTTP i pole message, aby zrozumieć, co poszło nie tak.

Format Odpowiedzi

Odpowiedź błędu zawiera jedno pole message opisujące, co poszło nie tak:

  • Name
    message
    Type
    string
    Description

    Krótki opis błędu.

Kody Statusu

  • Name
    2xx
    Description

    Kod statusu 2xx wskazuje na pomyślną odpowiedź.

    • Name
      200 - OK
      Description

      Domyślnie, jeśli wszystko działało zgodnie z oczekiwaniami, zostanie zwrócony kod statusu 200.

    • Name
      202 - Accepted
      Description

      Twoje żądanie zostało zaakceptowane do przetworzenia, ale przetwarzanie nie zostało zakończone. Jest to odpowiedź niekompletna z Meshy API. Na przykład, żądanie utworzenia nowego zadania zwróci kod statusu 202.

  • Name
    4xx
    Description

    Kod statusu 4xx wskazuje na błąd klienta.

    • Name
      400 - Bad Request
      Description

      Żądanie było nieakceptowalne, często z powodu braku obowiązkowego parametru lub jednego z parametrów było niepoprawnie sformułowane.

    • Name
      401 - Unauthorized
      Description

      Nie podano prawidłowego klucza API lub podany klucz API nie jest uprawniony do dostępu do punktu końcowego Meshy API.

    • Name
      402 - Payment Required
      Description

      Niewystarczające środki na koncie powiązanym z podanym kluczem API.

    • Name
      403 - Forbidden
      Description

      Dostęp do żądanego zasobu jest zabroniony. Może się to zdarzyć, jeśli próbujesz uzyskać dostęp do Meshy API bezpośrednio z kodu JavaScript po stronie klienta, ponieważ żądania Cross-Origin Resource Sharing (CORS) z przeglądarek nie są dozwolone. Rozważ użycie proxy po stronie serwera dla takich żądań. Więcej szczegółów znajdziesz w przewodniku MDN CORS.

    • Name
      404 - Not Found
      Description

      Żądany zasób nie istnieje. Na przykład, gdy próbujesz pobrać zadanie według jego ID, ale podałeś nieprawidłowe ID, otrzymasz kod statusu 404.

    • Name
      429 - Too Many Requests
      Description

      Zbyt wiele żądań trafia do Meshy API zbyt szybko. Proszę zapoznać się z przewodnikiem Ograniczenia Szybkości dla szczegółów.

  • Name
    5xx
    Description

    Kod statusu 5xx wskazuje na błąd serwera. Jeśli go zobaczysz, sprawdź naszą stronę statusu dla więcej informacji i skontaktuj się z nami przez Discord po pomoc.

Przykład: 400 Bad Request

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

Błędy zadań

Te błędy występują po utworzeniu zadania i podczas jego przetwarzania. Sprawdź obiekt task_error w odpowiedzi zadania, aby uzyskać szczegóły błędu.

Obiekt task_error zawiera następujące pola:

  • Name
    type
    Type
    string
    Description

    Kategoria błędu. Zawsze obecna w przypadku nieudanych zadań. Zobacz Typy błędów poniżej.

  • Name
    message
    Type
    string
    Description

    Opis błędu w formie czytelnej dla człowieka. Zawsze obecny w przypadku nieudanych zadań.

  • Name
    code
    Type
    string
    Opcjonalne
    Description

    Specyficzny kod błędu identyfikujący problem. Obecny, gdy dostępne są dodatkowe szczegóły. Zobacz Kody błędów poniżej.

  • Name
    doc_url
    Type
    string
    Opcjonalne
    Description

    Link do szczegółowej dokumentacji dla tego kodu błędu, w tym wskazówki dotyczące rozwiązania. Obecny, gdy code jest obecny.

Błąd ze szczegółami

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

Błąd bez szczegółów

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

Typy błędów

Pole type informuje o ogólnej kategorii niepowodzenia. Użyj go, aby zdecydować o strategii ponowienia.

  • Name
    invalid_input
    Description

    Coś jest nie tak z danymi wejściowymi, które podałeś. Sprawdź pola code i message dla szczegółów, napraw problem i spróbuj ponownie.

  • Name
    timeout
    Description

    Przetwarzanie przekroczyło limit czasu. Jest to często przejściowe. Spróbuj ponownie wysłać żądanie, a jeśli nadal się nie powiedzie, spróbuj uprościć dane wejściowe.

  • Name
    service_unavailable
    Description

    Usługa jest tymczasowo niedostępna. Poczekaj chwilę i spróbuj ponownie.

  • Name
    server_error
    Description

    Wystąpił wewnętrzny błąd podczas przetwarzania. Spróbuj ponownie wysłać żądanie. Jeśli problem będzie się powtarzał, skontaktuj się z pomocą techniczną, podając swój identyfikator zadania.


Kody błędów

Gdy pole code jest obecne, identyfikuje konkretny, możliwy do rozwiązania problem. Poniżej znajduje się pełna referencja dla każdego kodu błędu.

image_too_complex

Ten błąd występuje, gdy obraz wejściowy lub prompt opisuje temat, który jest zbyt geometrycznie skomplikowany, aby model generowania 3D mógł go przetworzyć.

Typowe przykłady obejmują:

  • Gęste stosy małych obiektów (np. skrzynka pełna owoców, stos książek)
  • Skomplikowane powtarzające się wzory (np. struktury kratowe, rusztowania, siatki druciane)
  • Złożone struktury budynków (np. wielopiętrowe budynki z wieloma oknami i balkonami)
  • Wiele odrębnych obiektów na jednym obrazie zamiast jednego tematu

Przykłady wejść, które prawdopodobnie są zbyt skomplikowane:

Skrzynka z mieszanymi jagodamiSkomplikowane sklepienie katedryBudynek w budowie z rusztowaniemKula z kratownicą w kształcie plastra miodu

Rozwiązanie:

  1. Użyj jednego obiektu na obraz. Model działa najlepiej z jednym wyraźnym tematem. Nie umieszczaj wielu oddzielnych obiektów na tym samym obrazie lub w prompt.
  2. Uprość swój temat. Zmniejsz poziom szczegółowości. Na przykład, prosty wazon zamiast wazonu wypełnionego dziesiątkami kwiatów.
  3. Unikaj promptów na poziomie sceny. Całe budynki, bloki miejskie, wnętrza wypełnione meblami lub krajobrazy prawdopodobnie przekroczą możliwości modelu. Skup się na jednym obiekcie.
  4. Unikaj gęstych powtarzających się struktur. Tematy takie jak rusztowania, siatki druciane, wzory kratowe lub stosy wielu małych przedmiotów są częstymi wyzwalaczami.

model_missing_uv

Ten błąd występuje, gdy przesyłasz model do teksturowania z ustawionym enable_original_uv na true, ale model nie ma współrzędnych UV. Współrzędne UV definiują, jak 2D tekstura owija się na 3D powierzchni twojego modelu.

Brak UV vs Dobre UV

Rozwiązanie:

Właściwe rozwiązanie zależy od tego, dlaczego ustawiłeś enable_original_uv na true:

  • Jeśli musisz zachować oryginalny układ UV swojego modelu (np. niestandardowe rozmieszczenie szwów dla precyzyjnego mapowania tekstur): twój model musi mieć prawidłowe współrzędne UV. Zweryfikuj istnienie UV w edytorze UV twojego oprogramowania 3D przed przesłaniem. Pamiętaj, że pliki STL nie mogą przechowywać danych UV, więc użyj GLB, FBX lub OBJ zamiast tego.
  • Jeśli nie potrzebujesz specyficznej kontroli UV (lub nie jesteś pewien): pomiń enable_original_uv lub ustaw go na false. System automatycznie wygeneruje układ UV dla twojego modelu. Automatycznie wygenerowane UV są zoptymalizowane pod kątem pokrycia, ale nie będziesz mieć kontroli nad tym, gdzie są umieszczone szwy tekstury.

model_insufficient_uv

Ten błąd występuje, gdy model ma współrzędne UV, ale pokrycie UV jest zbyt małe dla jakościowego teksturowania. Zwykle dzieje się to z modelami eksportowanymi z narzędzi 3D, które generują tymczasowe lub złożone UV bez odpowiedniego rozwinięcia.

Niewystarczające UV vs Dobre UV

Rozwiązanie:

  • Jeśli musisz zachować swój oryginalny układ UV: ponownie rozwiń UV modelu w swoim oprogramowaniu 3D. Upewnij się, że wyspy UV są odpowiednio rozłożone w przestrzeni UV, a nie złożone w małym obszarze.
  • Jeśli nie potrzebujesz specyficznej kontroli UV: pomiń enable_original_uv lub ustaw na false. System automatycznie wygeneruje nowy układ UV. Kompromis polega na utracie oryginalnego rozmieszczenia szwów, ale automatycznie wygenerowane UV będą miały odpowiednie pokrycie dla teksturowania.

invalid_input

To jest domyślny kod błędu, gdy dane wejściowe nie przechodzą walidacji, ale nie ma bardziej szczegółowego kodu, który można zastosować. Pole message zawiera konkretny powód niepowodzenia.

Typowe przyczyny to:

  • Puste lub uszkodzone pliki modeli
  • Nieobsługiwane warianty formatów plików (np. pliki ASCII FBX, GLB skompresowane za pomocą meshopt)
  • Brak prawidłowych obiektów 3D w przesłanym modelu (np. plik zawiera tylko armatury, kamery lub światła)
  • Treści, które nie przechodzą przez filtry bezpieczeństwa

Rozwiązanie: Sprawdź pole message, aby uzyskać szczegóły dotyczące tego, co poszło nie tak. Zweryfikuj, czy twoje pliki wejściowe i parametry spełniają wymagania punktu końcowego.

moderation_blocked

Ten błąd występuje, gdy Twój prompt lub obrazy referencyjne są odrzucane przez filtry bezpieczeństwa AI. Filtr ocenia zarówno tekstowy prompt, jak i wszelkie obrazy referencyjne razem.

Rozwiązanie:

  • Przekształć swój tekstowy prompt, aby usunąć sugestywne lub wrażliwe opisy.
  • Dostosuj obrazy referencyjne, jeśli przedstawiają treści, które mogą uruchomić filtry bezpieczeństwa.

timeout

Ten błąd oznacza, że czas przetwarzania Twojego zadania przekroczył dozwolony limit. Może się to zdarzyć z powodu dużego obciążenia systemu lub zbyt skomplikowanego wejścia do przetworzenia w ramach limitu czasu.

Rozwiązanie:

  1. Ponów próbę. Timeouty są często przejściowe i ponowienie próby może się powieść.
  2. Uprość swoje wejście. Jeśli ponowne próby nadal zawodzą, Twoje wejście może być zbyt skomplikowane. Spróbuj zmniejszyć poziom szczegółowości w swoim obrazie lub prompt. Zobacz image_too_complex w celu uzyskania wskazówek, jakie typy wejść są trudniejsze do przetworzenia.

format_conversion_failed

Ten błąd występuje, gdy wygenerowany model 3D nie mógł zostać przekonwertowany na żądany format wyjściowy. Model został wygenerowany pomyślnie, ale krok konwersji zakończył się niepowodzeniem.

Rozwiązanie:

  1. Ponów próbę.
  2. Spróbuj innego formatu wyjściowego. Jeśli konkretny format ciągle zawodzi, przełącz się na inny format, który spełnia Twoje potrzeby.

Najlepsze praktyki

  1. Zaimplementuj logikę ponawiania. Dla błędów timeout i service_unavailable zaimplementuj logikę ponawiania z wykładniczym opóźnieniem.
  2. Rejestruj identyfikatory zadań. Zawsze rejestruj identyfikator zadania do celów debugowania. Dołącz go, kontaktując się z pomocą techniczną.
  3. Waliduj dane wejściowe. Upewnij się, że Twoje obrazy wejściowe i modele spełniają wymagania dotyczące formatu przed przesłaniem.