Remesh API
Remesh APIを使用すると、他のMeshy API(画像から3Dやテキストから3Dなど)で生成された既存の3Dモデルをリメッシュし、さまざまな形式でエクスポートできます。このセクションでは、Remesh APIの使用方法について詳しく説明します。
Create a Remesh Task
このエンドポイントは新しいリメッシュタスクを作成します。
フォーマット変換とリサイズについては、専用のConvert APIとResize APIをご利用ください。以下の非推奨のパラメータは引き続き動作しますが、新しい統合には新しいエンドポイントを推奨します。
パラメータ
input_task_id または model_url のいずれか一方のみが必須です。両方が指定された場合、input_task_id が優先されます。
- Name
- input_task_id
- Type
- string
- 必須
- Description
リメッシュしたい、完了済みの画像から3DまたはテキストからD3タスクのIDです。 このタスクは、Text to 3D Preview、Text to 3D Refine、Image to 3D、またはRetextureのいずれかである必要があります。さらに、ステータスが
SUCCEEDEDである必要があります。
- Name
- model_url
- Type
- string
- 必須
- Description
公開アクセス可能なURLまたはData URIを介して、Meshyがリメッシュする3Dモデルを提供してください。 対応フォーマット:
.glb、.gltf、.obj、.fbx、.stl。Data URIの場合は、MIMEタイプ
application/octet-streamを使用してください。
- Name
- target_formats
- Type
- string[]
- デフォルト ["glb"]
- Description
リメッシュされたモデルの対象フォーマットのリストです。省略した場合、GLBのみが生成されます。
利用可能な値:
glb、fbx、obj、usdz、blend、stl、3mf。
- Name
- topology
- Type
- string
- デフォルト triangle
- Description
生成されるモデルのtopologyを指定します。
利用可能な値:
quad: クワッド優位のメッシュを生成します。triangle: 削減された三角形メッシュを生成します。
- Name
- target_polycount
- Type
- integer
- デフォルト 30,000
- Description
生成されるモデルの目標ポリゴン数を指定します。実際のポリゴン数は、ジオメトリの複雑さに応じて目標値から乖離する場合があります。
有効な値の範囲はユーザー階層によって異なります:
- 100〜300,000(両端を含む)
- Name
- decimation_mode
- Type
- integer
- Description
ポリゴン数レベルを設定することで、アダプティブ削減を有効にします。設定された場合、
target_polycountは無視されます。利用可能な値:
1: アダプティブ — 超高ポリゴン数。2: アダプティブ — 高ポリゴン数。3: アダプティブ — 中ポリゴン数。4: アダプティブ — 低ポリゴン数。
- Name
- resize_height
- Type
- number
- ⚠ 非推奨
- デフォルト 0
- Description
モデルを指定した高さ(メートル単位)にリサイズします。代わりに専用のResize APIを使用することを推奨します。
auto_size、resize_height、resize_longest_sideは互いに排他的です。
- Name
- resize_longest_side
- Type
- number
- ⚠ 非推奨
- デフォルト 0
- Description
バウンディングボックスの最長辺が指定した値(メートル単位)になるようにモデルをリサイズします。代わりに専用のResize APIを使用することを推奨します。
auto_size、resize_height、resize_longest_sideは互いに排他的です。
- Name
- auto_size
- Type
- boolean
- ⚠ 非推奨
- デフォルト false
- Description
trueに設定すると、サービスはAIビジョンを使用してオブジェクトの実世界の高さを自動的に推定し、それに応じてモデルをリサイズします。代わりに専用のResize APIを使用することを推奨します。auto_size、resize_height、resize_longest_sideは互いに排他的です。
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ 非推奨
- デフォルト bottom
- Description
原点の位置です。代わりに専用のResize APIを使用することを推奨します。
利用可能な値:
bottom、center。
- Name
- convert_format_only
- Type
- boolean
- ⚠ 非推奨
- Description
trueの場合、サービスは入力モデルファイルのフォーマットのみを変更し、topology、resize_height、target_polycountなどの他の入力は無視されます。代わりに専用のConvert APIを使用することを推奨します。convert_format_onlyがtrueに設定されている場合、target_formatsを指定する必要があります。
- Name
- alpha_thumbnail
- Type
- boolean
- デフォルト false
- Description
trueに設定すると、タスクはさらにプレビューの透明背景(RGBA)版をレンダリングし、GETレスポンスでalpha_thumbnail_urlとして返します。既存のthumbnail_urlフィールドは変更されません。
返り値
レスポンスの result プロパティには、新しく作成されたリメッシュタスクの id が含まれます。
失敗モード
- Name
400 - Bad Request- Description
リクエストが受け入れられませんでした。一般的な原因:
- パラメータの欠落:
model_urlまたはinput_task_idのいずれかを指定する必要があります。 - 無効な入力タスク:
input_task_idは、サポートされているモデルからの成功したタスクを参照する必要があります。 - 無効なモデルフォーマット:
model_urlがサポートされていない拡張子のファイルを指しています。 - 到達不可能なURL:
model_urlをダウンロードできませんでした。 - 無効なtopology:
topologyパラメータが無効です。 - 互いに排他的なパラメータ:
auto_sizeとresize_heightは両方同時に設定できません。
- パラメータの欠落:
- Name
401 - Unauthorized- Description
認証に失敗しました。APIキーを確認してください。
- Name
402 - Payment Required- Description
このタスクを実行するためのクレジットが不足しています。
- Name
429 - Too Many Requests- Description
レート制限を超過しました。
Request
# Basic remesh with custom formats and resize
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"resize_height": 1.0,
"origin_at": "bottom"
}'
# Quad remesh with auto-size
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"auto_size": true
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
リメッシュタスクを取得する
このエンドポイントは、IDによってリメッシュタスクを取得します。
パラメータ
- Name
- id
- Type
- path
- Description
取得するリメッシュタスクのID。
戻り値
リメッシュタスクオブジェクト。
Request
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
リメッシュタスクの削除
このエンドポイントは、関連するすべてのモデルとデータを含め、リメッシュタスクを完全に削除します。この操作は取り消せません。
パスパラメータ
- Name
- id
- Type
- path
- Description
削除するリメッシュタスクのID。
タスクステータス
まだPENDING状態のタスクは削除され、作成時に消費されたクレジットは
返金されます。
すでにIN_PROGRESS状態のタスクは削除できません。リクエストは
409 Conflictで拒否され、タスクは実行を継続します。ワーカーがすでに開始した
タスクのクレジットは返金対象外のため、実行途中で削除すると、クレジットと結果の
両方を失うことになります。SUCCEEDED、FAILED、CANCELEDのいずれかの
状態になるまで待ってから削除してください。
終了状態(SUCCEEDED、FAILED、CANCELED)のタスクは、
返金なしで削除されます。
戻り値
成功時は200 OKを返します。タスクがIN_PROGRESSの場合は
409 Conflictを返します。
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS — the task is left running:
{
"message": "Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."
}
リメッシュタスク一覧の取得
このエンドポイントを使用すると、リメッシュタスクの一覧を取得できます。
パラメーター
- Name
- page_num
- Type
- integer
- デフォルト 1
- Description
ページネーションのためのページ番号。
- Name
- page_size
- Type
- integer
- デフォルト 10
- Description
ページサイズの上限。最大で
100件まで指定できます。
- Name
- sort_by
- Type
- string
- Description
並び替えに使用するフィールド。
使用可能な値:
+created_at: 作成日時の昇順で並び替えます。-created_at: 作成日時の降順で並び替えます。
戻り値
リメッシュタスクオブジェクトのページネーションされた一覧を返します。
Request
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null
}
]
リメッシュタスクのストリーム取得
このエンドポイントは、Server-Sent Events (SSE) を使用してリメッシュタスクのリアルタイム更新をストリーミングします。
パラメータ
- Name
- id
- Type
- path
- Description
ストリーミングするリメッシュタスクの一意の識別子です。
戻り値
リメッシュタスクオブジェクトのストリームを Server-Sent Events として返します。
PENDING または IN_PROGRESS のタスクの場合、レスポンスストリームには必要な progress フィールドと status フィールドのみが含まれます。
Request
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
リメッシュタスクオブジェクト
リメッシュタスクオブジェクトは、Meshy が既存の3Dモデルをリメッシュし、さまざまな形式でエクスポートするために使用する作業単位を表します。 このオブジェクトには以下のプロパティがあります。
プロパティ
- Name
- id
- Type
- string
- Description
タスクの一意の識別子です。実装の詳細としてタスクIDにはk-sortable UUIDを使用していますが、IDの形式についていかなる前提も置かないようにしてください。
- Name
- type
- Type
- string
- Description
リメッシュタスクのタイプです。値は
remeshです。
- Name
- model_urls
- Type
- object
- Description
Meshy によって生成されたテクスチャ付き3Dモデルファイルのダウンロード可能なURLです。ある形式が生成されなかった場合、そのプロパティは空文字列を返す代わりに省略されます。
- Name
glb- Type
- string
- Description
GLB ファイルのダウンロード可能なURLです。
- Name
fbx- Type
- string
- Description
FBX ファイルのダウンロード可能なURLです。
- Name
obj- Type
- string
- Description
OBJ ファイルのダウンロード可能なURLです。
- Name
usdz- Type
- string
- Description
USDZ ファイルのダウンロード可能なURLです。
- Name
blend- Type
- string
- Description
Blender ファイルのダウンロード可能なURLです。
- Name
stl- Type
- string
- Description
STL ファイルのダウンロード可能なURLです。
- Name
3mf- Type
- string
- Description
3MF ファイルのダウンロード可能なURLです。
target_formatsで3mfがリクエストされた場合のみ存在します。
- Name
- thumbnail_url
- Type
- string
- Description
リメッシュされたモデルからレンダリングされたプレビュー画像のダウンロード可能なURLです。
- Name
- alpha_thumbnail_url
- Type
- string
- Description
thumbnail_urlの透明背景(RGBA)版のダウンロード可能なURLです。タスクがalpha_thumbnail: trueで作成され、透明プレビューのレンダリングが成功した場合のみ存在します。それ以外の場合、このフィールドは省略されます。
- Name
- progress
- Type
- integer
- Description
タスクの progress です。タスクがまだ開始されていない場合、このプロパティは
0になります。タスクが成功すると、100になります。
- Name
- status
- Type
- string
- Description
タスクのステータスです。可能な値は
PENDING、IN_PROGRESS、SUCCEEDED、FAILEDのいずれかです。
- Name
- preceding_tasks
- Type
- integer
- Description
先行するタスクの数です。
このフィールドの値は、タスクのステータスが
PENDINGの場合にのみ意味を持ちます。
- Name
- created_at
- Type
- timestamp
- Description
タスクが作成された時刻のタイムスタンプで、ミリ秒単位です。
- Name
- started_at
- Type
- timestamp
- Description
タスクが開始された時刻のタイムスタンプで、ミリ秒単位です。タスクがまだ開始されていない場合、このプロパティは
0になります。
- Name
- finished_at
- Type
- timestamp
- Description
タスクが完了した時刻のタイムスタンプで、ミリ秒単位です。タスクがまだ完了していない場合、このプロパティは
0になります。
- Name
- task_error
- Type
- object
- Description
失敗したタスクのエラー詳細です。
task_errorオブジェクトの完全なリファレンスについては、エラー を参照してください。
- Name
- consumed_credits
- Type
- integer
- Description
このタスクによって消費されたクレジットの数です。タスクのステータスが
PENDING、IN_PROGRESS、またはSUCCEEDEDの場合に存在します。FAILEDタスクの場合は0を返します(失敗時にはクレジットが返還されます)。
Example Remesh Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": {
"message": ""
},
"consumed_credits": 5
}