Errors
In this guide, we will talk about what happens when something goes wrong while you work with the Meshy API.
Request Errors
These errors are returned immediately when your API request is rejected. Check the HTTP status code and message field to understand what went wrong.
Response Format
The error response contains a single message field describing what went wrong:
- Name
- message
- Type
- string
- Description
A short description of the error.
Status Codes
- Name
2xx- Description
A 2xx status code indicates a successful response.
- Name
200 - OK- Description
By default if everything worked as expected a 200 status code will be returned.
- Name
202 - Accepted- Description
Your request has been accepted for processing, but the processing has not been completed. This is a non-committal response from Meshy API. For example, a request to create a new task will return a 202 status code.
- Name
4xx- Description
A 4xx status code indicates a client error.
- Name
400 - Bad Request- Description
The request was unacceptable, often due to missing a mandatory parameter or one of the parameters was malformed.
- Name
401 - Unauthorized- Description
No valid API key provided or the API key provided is not authorized to access the Meshy API endpoint.
- Name
402 - Payment Required- Description
Insufficient funds in the account associated with the provided API key.
- Name
403 - Forbidden- Description
Access to the requested resource is forbidden. This might happen if you try to access the Meshy API directly from client-side JavaScript code, as Cross-Origin Resource Sharing (CORS) requests from browsers are not permitted. Consider using a server-side proxy for such requests. For more details, see the MDN CORS guide.
- Name
404 - Not Found- Description
The requested resource doesn't exist. For example, when you try to retrieve a task by its ID but provided an invalid ID, you will get a 404 status code.
- Name
429 - Too Many Requests- Description
Too many requests hit the Meshy API too quickly. Please refer to the Rate Limits guide for details.
- Name
5xx- Description
A 5xx status code indicates a server error. If you see one, please check our status page for more information and contact us via Discord for help.
Example: 400 Bad Request
{
"message": "Invalid model file extension: .3dm"
}
Task Errors
These errors occur after a task has been created and is processing. Check the task_error object on the task response for error details.
The task_error object contains the following fields:
- Name
- type
- Type
- string
- Description
The error category. Always present on failed tasks. See Error Types below.
- Name
- message
- Type
- string
- Description
A human-readable description of the error. Always present on failed tasks.
- Name
- code
- Type
- string
- Optional
- Description
A specific error code identifying the problem. Present when additional details are available. See Error Codes below.
- Name
- doc_url
- Type
- string
- Optional
- Description
A link to detailed documentation for this error code, including resolution guidance. Present when
codeis present.
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."
}
}
Error Types
The type field tells you the broad category of the failure. Use it to decide your retry strategy.
- Name
invalid_input- Description
Something is wrong with the input you provided. Check the
codeandmessagefields for specifics, fix the issue, and retry.
- Name
timeout- Description
Processing exceeded the time limit. This is often transient. Retry the request, and if it keeps failing, try simplifying your input.
- Name
service_unavailable- Description
The service is temporarily unavailable. Wait a moment and retry.
- Name
server_error- Description
An internal error occurred during processing. Retry the request. If the issue persists, contact support with your task ID.
Error Codes
When the code field is present, it identifies a specific, actionable problem. Below is the full reference for each error code.
image_too_complex
This error occurs when the input image or prompt describes a subject that is too geometrically complex for the 3D generation model to process.
Common examples include:
- Dense piles of small objects (e.g., a crate full of fruit, a stack of books)
- Intricate repeating patterns (e.g., lattice structures, scaffolding, wire meshes)
- Complex building structures (e.g., multi-story buildings with many windows and balconies)
- Multiple distinct objects in one image instead of a single subject
Examples of inputs that are likely too complex:




Resolution:
- Use a single object per image. The model works best with one clear subject. Don't include multiple separate objects in the same image or prompt.
- Simplify your subject. Reduce the level of detail. For example, a simple vase instead of a vase filled with dozens of flowers.
- Avoid scene-level prompts. Entire buildings, city blocks, interiors filled with furniture, or landscapes are likely to exceed the model's capacity. Focus on a single object instead.
- Avoid dense repeating structures. Subjects like scaffolding, wire meshes, lattice patterns, or piles of many small items are common triggers.
model_missing_uv
This error occurs when you upload a model for texturing with enable_original_uv set to true, but the model has no UV coordinates. UV coordinates define how a 2D texture wraps onto the 3D surface of your model.

Resolution:
The right fix depends on why you set enable_original_uv to true:
- If you need to preserve your model's original UV layout (e.g., custom seam placement for precise texture mapping): your model must have valid UV coordinates. Verify UVs exist in your 3D software's UV editor before uploading. Note that STL files cannot store UV data, so use GLB, FBX, or OBJ instead.
- If you don't need specific UV control (or you're not sure): omit
enable_original_uvor set it tofalse. The system will automatically generate a UV layout for your model. The auto-generated UVs are optimized for coverage but you won't have control over where texture seams are placed.
model_insufficient_uv
This error occurs when a model has UV coordinates, but the UV coverage is too small for quality texturing. This commonly happens with models exported from 3D tools that generate placeholder or collapsed UVs without a proper unwrap.

Resolution:
- If you need to preserve your original UV layout: re-unwrap the model's UVs in your 3D software. Ensure UV islands are properly spread across the UV space rather than collapsed into a small area.
- If you don't need specific UV control: omit
enable_original_uvor set it tofalse. The system will automatically generate a new UV layout. The tradeoff is you lose your original seam placement, but the auto-generated UVs will have proper coverage for texturing.
invalid_input
This is the fallback error code when the input fails validation but no more specific code applies. The message field contains the specific reason for the failure.
Common causes include:
- Empty or corrupted model files
- Unsupported file format variations (e.g., ASCII FBX files, meshopt-compressed GLB)
- No valid 3D objects found in the uploaded model (e.g., file contains only armatures, cameras, or lights)
- Content that does not pass safety filters
Resolution: Check the message field for specifics on what went wrong. Verify your input files and parameters match the endpoint's requirements.
moderation_blocked
This error occurs when your prompt or reference images are rejected by AI safety filters. The filter evaluates both the text prompt and any reference images together.
Resolution:
- Rephrase your text prompt to remove suggestive or sensitive descriptions.
- Adjust reference images if they depict content that may trigger safety filters.
timeout
This error means your task's processing time exceeded the allowed limit. This can happen due to high system load or because the input is too complex to process within the time limit.
Resolution:
- Retry the request. Timeouts are often transient and a retry may succeed.
- Simplify your input. If retries keep failing, your input may be too complex. Try reducing the level of detail in your image or prompt. See
image_too_complexfor guidance on what types of inputs are harder to process.
format_conversion_failed
This error occurs when the generated 3D model could not be converted to your requested output format. The model was generated successfully, but the conversion step failed.
Resolution:
- Retry the request.
- Try a different output format. If a specific format keeps failing, switch to another format that suits your needs.
Best Practices
- Implement retry logic. For
timeoutandservice_unavailableerrors, implement exponential backoff retry logic. - Log task IDs. Always log the task ID for debugging purposes. Include it when contacting support.
- Validate inputs. Ensure your input images and models meet the format requirements before submission.