错误处理

在本指南中,我们将讨论当您使用 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

      请求的资源禁止访问。如果您尝试直接从客户端 JavaScript 代码访问 Meshy API,可能会发生这种情况,因为不允许浏览器的跨域资源共享 (CORS) 请求。考虑使用服务器端代理进行此类请求。有关更多详细信息,请参阅 MDN CORS 指南

    • Name
      404 - Not Found
      Description

      请求的资源不存在。例如,当您尝试通过任务 ID 检索任务但提供了无效的 ID 时,您将获得 404 状态码。

    • Name
      429 - Too Many Requests
      Description

      太多请求过快地击中了 Meshy API。请参阅速率限制指南以获取详细信息。

  • Name
    5xx
    Description

    5xx 状态码表示服务器错误。如果您看到此错误,请查看我们的状态页面以获取更多信息,并通过 Discord 联系我们以获得帮助。

示例: 400 Bad Request

{
  "message": "无效的模型文件扩展名: .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 存在时出现。

包含详细信息的错误

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

不包含详细信息的错误

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

    您提供的输入有问题。请查看 codemessage 字段了解详情,修复问题后重试。

  • Name
    timeout
    Description

    处理超出了时间限制。这通常是暂时性的。请重试请求,如果持续失败,请尝试简化输入。

  • Name
    service_unavailable
    Description

    服务暂时不可用。请稍候后重试。

  • Name
    server_error
    Description

    处理过程中发生内部错误。请重试请求。如果问题持续存在,请携带任务 ID 联系支持团队。


错误代码

code 字段存在时,它标识了一个具体的、可操作的问题。以下是每个错误代码的完整参考。

image_too_complex

当输入图像或提示描述的主体几何复杂度超出 3D 生成模型的处理能力时,会出现此错误。

常见示例包括:

  • 密集的小物体堆积(如装满水果的箱子、一摞书籍)
  • 复杂的重复图案(如网格结构、脚手架、金属丝网)
  • 复杂的建筑结构(如带有大量窗户和阳台的多层建筑)
  • 单张图像中包含多个不同物体而非单一主体

可能过于复杂的输入示例:

一箱混合浆果精美的大教堂穹顶带脚手架的在建建筑蜂窝网格球体

解决方案:

  1. 每张图像使用单个物体。 模型对单一清晰的主体效果最佳。不要在同一张图像或提示中包含多个独立物体。
  2. 简化您的主体。 减少细节层次。例如,使用简单的花瓶而非装满数十朵花的花瓶。
  3. 避免场景级别的提示。 完整的建筑、城市街区、充满家具的室内或风景可能超出模型的处理能力。请专注于单个物体。
  4. 避免密集的重复结构。 脚手架、金属丝网、网格图案或大量小物体堆积是常见的触发因素。

model_missing_uv

当您上传模型进行贴图时将 enable_original_uv 设置为 true,但模型没有 UV 坐标时,会出现此错误。UV 坐标定义了 2D 纹理如何包裹在模型的 3D 表面上。

无 UV vs 有 UV

解决方案:

正确的修复方法取决于您为什么将 enable_original_uv 设置为 true

  • 如果您需要保留模型的原始 UV 布局(例如,用于精确纹理映射的自定义接缝位置):您的模型必须具有有效的 UV 坐标。在上传前,请在 3D 软件的 UV 编辑器中验证 UV 是否存在。注意 STL 文件无法存储 UV 数据,请改用 GLB、FBX 或 OBJ。
  • 如果您不需要特定的 UV 控制(或不确定):省略 enable_original_uv 或将其设置为 false。系统将自动为您的模型生成 UV 布局。自动生成的 UV 针对覆盖率进行了优化,但您无法控制纹理接缝的位置。

model_insufficient_uv

当模型具有 UV 坐标但 UV 覆盖率不足以进行高质量贴图时,会出现此错误。这通常发生在 3D 工具导出时生成了占位符或折叠的 UV 而没有进行适当展开的情况下。

UV 不足 vs 良好 UV

解决方案:

  • 如果您需要保留原始 UV 布局: 在 3D 软件中重新展开模型的 UV。确保 UV 岛在 UV 空间中正确展开,而不是折叠在小区域内。
  • 如果您不需要特定的 UV 控制: 省略 enable_original_uv 或将其设置为 false。系统将自动生成新的 UV 布局。代价是您将失去原始的接缝位置,但自动生成的 UV 将具有适当的贴图覆盖率。

invalid_input

当输入未通过验证但没有更具体的错误代码适用时,将返回此后备错误代码。message 字段包含失败的具体原因。

常见原因包括:

  • 空的或损坏的模型文件
  • 不受支持的文件格式变体(如 ASCII FBX 文件、meshopt 压缩的 GLB)
  • 上传的模型中未找到有效的 3D 对象(如文件仅包含骨架、摄像机或灯光)
  • 内容未通过安全过滤器

解决方案: 查看 message 字段了解具体错误原因。验证您的输入文件和参数是否符合端点的要求。

moderation_blocked

当您的提示或参考图像被 AI 安全过滤器拒绝时,会出现此错误。过滤器会同时评估文本提示和参考图像。

解决方案:

  • 修改您的文本提示,移除暗示性或敏感的描述。
  • 调整参考图像,确保其不包含可能触发安全过滤器的内容。

timeout

此错误表示任务的处理时间超出了允许的限制。这可能是由于系统负载较高或输入过于复杂导致。

解决方案:

  1. 重试请求。 超时通常是暂时性的,重试可能会成功。
  2. 简化您的输入。 如果重试持续失败,您的输入可能过于复杂。尝试减少图像或提示中的细节程度。请参阅 image_too_complex 了解哪些类型的输入更难处理。

format_conversion_failed

当生成的 3D 模型无法转换为您请求的输出格式时,会出现此错误。模型已成功生成,但转换步骤失败。

解决方案:

  1. 重试请求。
  2. 尝试其他输出格式。 如果某个特定格式持续失败,请切换到其他适合您需求的格式。

最佳实践

  1. 实现重试逻辑。 对于 timeoutservice_unavailable 错误,实现指数退避重试逻辑。
  2. 记录任务 ID。 始终记录任务 ID 以便调试。联系支持团队时请提供任务 ID。
  3. 验证输入。 在提交前确保您的输入图像和模型符合格式要求。