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 zostanie odrzucone. Sprawdź kod statusu HTTP oraz pole message, aby zrozumieć, co poszło nie tak.
Format odpowiedzi
Odpowiedź z błędem zawiera pojedyncze 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 oznacza pomyślną odpowiedź.
- Name
200 - OK- Description
Domyślnie, jeśli wszystko przebiegło zgodnie z oczekiwaniami, zwracany jest kod statusu 200.
- Name
202 - Accepted- Description
Twoje żądanie zostało przyjęte do przetworzenia, ale przetwarzanie nie zostało jeszcze zakończone. Jest to wstępna odpowiedź z Meshy API. Na przykład żądanie utworzenia nowego zadania zwróci kod statusu 202.
- Name
4xx- Description
Kod statusu 4xx oznacza błąd po stronie klienta.
- Name
400 - Bad Request- Description
Żądanie było niepoprawne, często z powodu braku wymaganego parametru lub nieprawidłowego formatu jednego z parametrów.
- Name
401 - Unauthorized- Description
Nie podano prawidłowego klucza API lub podany klucz API nie jest autoryzowany 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
Nie masz uprawnień do wykonania tego żądania. Na przykład żądanie pochodziło z adresu spoza listy dozwolonych adresów IP przypisanych do klucza API, kontrola treści w planie Enterprise zablokowała pliki zadania podczas ich odczytu, lub punkt końcowy nie jest dostępny w Twoim planie.
- Name
404 - Not Found- Description
Żądany zasób nie istnieje. Na przykład, gdy próbujesz pobrać zadanie po jego ID, ale podano nieprawidłowe ID, otrzymasz kod statusu 404.
- Name
409 - Conflict- Description
Zasób istnieje, ale jego obecny stan nie pozwala na wykonanie operacji. Na przykład usunięcie zadania, które jest już w stanie
IN_PROGRESS, zwraca 409: worker rozpoczął już pracę, która nie może zostać zwrócona, więc zadanie pozostaje uruchomione. Poczekaj na stan końcowy (SUCCEEDED,FAILEDlubCANCELED) i spróbuj ponownie.
- Name
429 - Too Many Requests- Description
Zbyt wiele żądań trafiło do Meshy API zbyt szybko. Odczekaj liczbę sekund podaną w nagłówku
Retry-Afterprzed ponowną próbą. Szczegółowe informacje znajdziesz w przewodniku Rate Limits.
- Name
5xx- Description
Kod statusu 5xx oznacza błąd serwera. Jeśli go napotkasz, sprawdź naszą stronę statusu, aby uzyskać więcej informacji, i skontaktuj się z nami przez Discord, aby uzyskać pomoc.
Example: 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
codejest 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. Wykorzystaj je do podjęcia decyzji o strategii ponawiania próby.
- Name
invalid_input- Description
Coś jest nie tak z podanymi danymi wejściowymi. Sprawdź pola
codeimessage, aby poznać szczegóły, popraw problem i ponów próbę.
- Name
timeout- Description
Zadanie przekroczyło limit czasu po stronie serwera, dotyczący przetwarzania lub oczekiwania w kolejce, i zakończyło się niepowodzeniem. Jego kredyty zostają zwrócone. Jest to często sytuacja przejściowa: utwórz zadanie ponownie, a jeśli nadal będzie się nie powiodło, spróbuj uprościć dane wejściowe.
- Name
service_unavailable- Description
Usługa była tymczasowo niedostępna. Odczekaj chwilę, a następnie utwórz zadanie ponownie.
- Name
server_error- Description
Wystąpił błąd wewnętrzny podczas przetwarzania. Utwórz zadanie ponownie. Jeśli problem będzie się powtarzał, skontaktuj się z pomocą techniczną, podając 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:




Rozwiązanie:
- 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.
- Uprość swój temat. Zmniejsz poziom szczegółowości. Na przykład, prosty wazon zamiast wazonu wypełnionego dziesiątkami kwiatów.
- 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.
- 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.

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_uvlub ustaw go nafalse. 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.

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_uvlub ustaw nafalse. 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.
model_missing_texture
Ten błąd występuje, gdy model wejściowy zadania Multi-Color Print nie zawiera żadnych informacji o kolorze, które konwerter mógłby rozdzielić na kolory druku. Wielokolorowy plik 3MF jest budowany na podstawie kolorów modelu, więc zwykła biała siatka — na przykład podgląd z Tekst na 3D lub Obraz na 3D, który nigdy nie został poddany teksturowaniu, albo wynik naprawy / automatycznego podziału — nie zawiera niczego, na czym można by pracować.
To, co liczy się jako źródło koloru, zależy od żądanego style:
realisticpobiera próbki tekstury koloru bazowego na podstawie współrzędnych UV modelu, więc wymaga pojedynczej tekstury koloru bazowego ze współrzędnymi UV na każdej części siatki.cartoonspłaszcza kolory dla każdej ściany i akceptuje teksturę koloru bazowego na dowolnej części lub kolory na wierzchołkach (COLOR_0).
Model, który nie ma ani tekstury koloru bazowego, ani kolorów wierzchołków, zostanie odrzucony dla obu stylów; w przypadku cartoon w przeciwnym razie „powiódłby się” jako druk jednokolorowy.
Większość żądań jest odrzucana, zanim zadanie zostanie utworzone (400 Bad Request z tym samym wyjaśnieniem), więc zazwyczaj zobaczysz ten kod tylko wtedy, gdy nie można było wcześniej sprawdzić danych wejściowych — na przykład przesłany plik .fbx jest sprawdzany dopiero po tym, jak zadanie go znormalizuje.
Rozwiązanie:
- Najpierw nałóż teksturę na model. Uruchom na nim zadanie Retexture lub wygeneruj model z włączonym teksturowaniem (zadanie refine z Tekst na 3D albo zadanie Obraz na 3D z
should_texture: true), a następnie przekaż to zadanie jakoinput_task_id. - Modele z kolorami wierzchołków (skany fotogrametryczne, ręcznie malowane siatki): zażądaj
style: "cartoon", który odczytujeCOLOR_0. - Częściowo teksturowane modele lub modele z wieloma teksturami w trybie
realistic: każda część siatki wymaga współrzędnych UV oraz tej samej, pojedynczej tekstury koloru bazowego. Nałóż teksturę na pozostałe części lub połącz tekstury w jeden atlas, albo przełącz się nastyle: "cartoon".
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 zostają odrzucone przez filtry bezpieczeństwa AI. Filtr ocenia zarówno tekstowy prompt, jak i wszystkie obrazy referencyjne razem.
Rozwiązanie:
- Przeformułuj swój prompt tekstowy, aby usunąć sugestywne lub wrażliwe opisy.
- Dostosuj obrazy referencyjne, jeśli przedstawiają treści, które mogą uruchamiać filtry bezpieczeństwa.
moderation_unavailable
Ten błąd występuje, gdy moderation była tymczasowo niedostępna, przez co zadanie zakończyło się niepowodzeniem zamiast zostać uruchomione bez tej kontroli. Z Twoją treścią wszystko jest w porządku. Jego type to server_error.
Rozwiązanie: Utwórz zadanie ponownie.
timeout
Ten błąd oznacza, że zadanie przekroczyło limit czasu po stronie serwera — dotyczący przetwarzania lub oczekiwania w kolejce — w związku z czym zadanie zakończyło się niepowodzeniem, a jego kredyty zostały zwrócone. Może się to zdarzyć z powodu dużego obciążenia systemu lub ponieważ dane wejściowe są zbyt złożone, aby przetworzyć je w ramach limitu czasu.
To coś innego niż timeout w Twoim własnym kodzie. Jeśli Twój klient przestał czekać, zadanie nadal jest wykonywane; zobacz Cykl życia zadania.
Rozwiązanie:
- Utwórz zadanie ponownie. Błędy timeout są często przejściowe i nowe zadanie może się powieść.
- Uprość swoje dane wejściowe. Jeśli kolejne próby wciąż się nie udają, Twoje dane wejściowe mogą być zbyt złożone. Spróbuj zmniejszyć poziom szczegółowości obrazu lub prompta. Zobacz
image_too_complex, aby dowiedzieć się, jakie rodzaje danych wejściowych są trudniejsze do przetworzenia.
queue_timeout
Ten błąd oznacza, że zadanie zbyt długo czekało w kolejce i nie zostało uruchomione, w związku z czym zakończyło się niepowodzeniem, a wszelkie kredyty pobrane za nie zostały zwrócone. Twoje dane wejściowe nie są tego przyczyną. Jego type to timeout.
Rozwiązanie: Utwórz zadanie ponownie.
format_conversion_failed
Ten błąd występuje, gdy wygenerowany model 3D nie mógł zostać przekonwertowany do żądanego formatu wyjściowego. Model został wygenerowany pomyślnie, ale etap konwersji zakończył się niepowodzeniem.
Rozwiązanie:
- Ponów żądanie.
- Wypróbuj inny format wyjściowy. Jeśli konkretny format wciąż powoduje błąd, przełącz się na inny format, który odpowiada Twoim potrzebom.
Najlepsze praktyki
- Zaimplementuj logikę ponawiania prób. Gdy zadanie zakończy się błędem
timeout,service_unavailablelubserver_error, utwórz je ponownie, stosując wykładnicze opóźnienie (exponential backoff). Jeśli to Twoje żądanie przekroczyło limit czasu, nie twórz nowego zadania: najpierw sprawdź istniejące (zobacz Cykl życia zadania). - Rejestruj identyfikatory zadań. Zawsze loguj identyfikator zadania do celów debugowania. Podawaj go podczas kontaktu z pomocą techniczną.
- Waliduj dane wejściowe. Upewnij się, że przesyłane obrazy i modele spełniają wymagania dotyczące formatu, zanim je prześlesz.
- Wywołuj API z poziomu swojego serwera. Kod uruchamiany w przeglądarce ujawniłby Twój klucz API każdemu, kto otworzy tę stronę.