快速开始

这是用于以编程方式与 Meshy 交互的 API 参考。


Meshy API 提供了一个简单的界面,可以从文本提示和图像生成 3D 模型和纹理。请按照本指南快速入门。

创建 API 密钥

在此处的 API 设置页面中创建 API 密钥,您将使用它来安全地验证您的请求。API 密钥的格式为 msy-<random-string>

生成 API 密钥

一旦生成了 API 密钥,请将其存储在安全的位置。

测试模式 API 密钥

在开发和测试期间,您可以使用我们的测试模式 API 密钥来探索 API,而不消耗您的积分:

msy_dummy_api_key_for_test_mode_12345678

此特殊 API 密钥具有以下特性:

  • 可用于向所有 Meshy API 端点发出请求
  • 使用此密钥时不会消耗积分
  • 所有有效请求将返回相同的示例任务结果,无论输入参数如何
  • 响应数据结构将与生产 API 完全匹配
  • 非常适合在切换到真实 API 密钥之前测试您的 API 集成

发出您的第一个“文本生成3D”API 请求

在此示例中,我们将使用 text-to-3d 端点 从文本提示生成 3D 模型。该过程包括两个阶段:预览阶段和细化阶段。在预览阶段,生成一个没有纹理的基础网格,允许您评估几何形状。在细化阶段,预览网格根据文本提示进行纹理化。

我们将向您展示如何在 Python 脚本中发出这些请求。

预览

Meshy 提供了一组 REST API 端点。您可以使用任何您选择的 HTTP 客户端使用它们。无论调用哪个 API,API 密钥始终作为名为 Authorization 的标头传递。请记住在使用此脚本之前将您的 API 密钥导出为名为 MESHY_API_KEY 的环境变量。

预览请求的关键参数是 mode,始终为 "preview",以及 prompt,即您需要的模型描述。在此示例中,我们还指定了 negative_promptart_styleshould_remesh,但它们是可选的。

api_request.py

import requests
import os
import time

headers = {
  "Authorization": f"Bearer {os.environ['MESHY_API_KEY']}"
}

# 1. 生成预览模型并获取任务 ID

generate_preview_request = {
  "mode": "preview",
  "prompt": "a monster mask",
  "negative_prompt": "low quality, low resolution, low poly, ugly",
  "art_style": "realistic",
  "should_remesh": True,
}

generate_preview_response = requests.post(
  "https://api.meshy.ai/openapi/v2/text-to-3d",
  headers=headers,
  json=generate_preview_request,
)

generate_preview_response.raise_for_status()

preview_task_id = generate_preview_response.json()["result"]

print("预览任务已创建。任务 ID:", preview_task_id)

这完成了预览 API 调用。

请注意,Meshy API 采用异步执行模型,这意味着当您创建任务时,API 端点仅返回任务 ID。然后您必须使用此 ID 轮询任务状态端点以检查任务是否已完成。

api_request.py

# 2. 轮询预览任务状态直到完成

preview_task = None

while True:
  preview_task_response = requests.get(
一旦任务完成,您将能够从其响应中访问模型的URL。让我们从响应中的 `model_urls` 字段下载模型。

如果到目前为止一切正常,您的 `preview_model.glb` 应该看起来与此类似。由于AI管道中的内在随机性,它不会完全匹配。

### 精细化

让我们继续进行精细化阶段。要启动精细化请求,请提供预览任务ID作为输入参数。

已创建精细化任务。任务ID:

### 整合

以下是使用文本生成3D API的完整代码。
如果 preview_task["status"] == "SUCCEEDED":
    print("预览任务已完成。")
    break

print("预览任务状态:", preview_task["status"], "| 进度:", preview_task["progress"], "| 5秒后重试...")
time.sleep(5)

# 3. 下载 glb 格式的预览模型

preview_model_url = preview_task["model_urls"]["glb"]

preview_model_response = requests.get(preview_model_url)
preview_model_response.raise_for_status()

with open("preview_model.glb", "wb") as f:
  f.write(preview_model_response.content)

print("预览模型已下载。")

# 4. 生成精炼模型并获取任务 ID

generate_refined_request = {
  "mode": "refine",
  "preview_task_id": preview_task_id,
}

generate_refined_response = requests.post(
  "https://api.meshy.ai/openapi/v2/text-to-3d",
  headers=headers,
  json=generate_refined_request,
)

generate_refined_response.raise_for_status()

refined_task_id = generate_refined_response.json()["result"]

print("精炼任务已创建。任务 ID:", refined_task_id)

# 5. 轮询精炼任务状态直到完成

refined_task = None

while True:
  refined_task_response = requests.get(
    f"https://api.meshy.ai/openapi/v2/text-to-3d/{refined_task_id}",
    headers=headers,
  )

  refined_task_response.raise_for_status()

  refined_task = refined_task_response.json()

  if refined_task["status"] == "SUCCEEDED":
    print("精炼任务已完成。")
    break

  print("精炼任务状态:", refined_task["status"], "| 进度:", refined_task["progress"], "| 5秒后重试...")
  time.sleep(5)

# 6. 下载 glb 格式的精炼模型

refined_model_url = refined_task["model_urls"]["glb"]

refined_model_response = requests.get(refined_model_url)
refined_model_response.raise_for_status()

with open("refined_model.glb", "wb") as f:
  f.write(refined_model_response.content)

print("精炼模型已下载。")

将代码复制并粘贴到 Python 脚本中并运行。

运行脚本

python api_request.py

你应该会在终端看到如下输出:

运行脚本

下一步

  • 你可以在 "API Endpoints" 部分找到完整的 API 参考,其中提供了关于每个 API 的详细信息。
  • 探索有关 定价速率限制 的详细信息,以及如何排查 常见错误
  • 别忘了定期查看我们的 更新日志 以获取更新和错误修复。
  • 有反馈或遇到问题?加入我们的 Discord 社区 - 我们期待您的声音!