lowpoly sẽ ngừng hoạt động vào 30 thg 10, 2026. Hãy chuyển sang mô hình khác trước các ngày này để tránh lỗi yêu cầu.

Convert API

Convert API cho phép bạn chuyển đổi các mô hình 3D hiện có sang các định dạng file khác.


POST/openapi/v1/convert

Create a Convert Task

Endpoint này tạo một tác vụ chuyển đổi định dạng mới.

Tác vụ chạy trong nền. Để biết thời gian xử lý thường mất bao lâu, xem Thời gian xử lý.

Tham số

  • Name
    input_task_id
    Type
    string
    Bắt buộc
    Description

    ID của một tác vụ Meshy đã hoàn thành mà bạn muốn chuyển đổi mô hình. Tác vụ phải có trạng thái SUCCEEDED.

  • Name
    model_url
    Type
    string
    Bắt buộc
    Description

    Một URL có thể truy cập công khai hoặc data URI trỏ đến một tệp mô hình 3D. Các định dạng được hỗ trợ: .glb, .gltf, .obj, .fbx, .stl. Đối với Data URI, sử dụng MIME type: application/octet-stream.

    Kích thước tệp tối đa: 400 MB đối với URL http hoặc https, 100 MB đối với URI data:.

    Một tệp GLB, glTF, FBX hoặc OBJ trên 100 MB có thể có tối đa 10.000.000 mặt. Mặt được tính theo tam giác: một tứ giác được tính là 2, và một lưới được vẽ nhiều lần được tính một lần cho mỗi bản sao. Trên 100 MB, tệp FBX phải là FBX nhị phân 7.1 trở lên, và tệp GLB hoặc glTF không được sử dụng nén Draco.

  • Name
    target_formats
    Type
    string[]
    Bắt buộc
    Description

    Danh sách các định dạng đầu ra cho mô hình đã chuyển đổi. Các giá trị khả dụng: glb, fbx, obj, usdz, blend, stl, 3mf.

Kết quả trả về

Thuộc tính result của phản hồi chứa id của tác vụ chuyển đổi vừa được tạo.

Các trường hợp lỗi

  • 400 - Bad Request

Yêu cầu không hợp lệ. Các nguyên nhân phổ biến:

  • Thiếu tham số: Phải cung cấp một trong hai model_url hoặc input_task_id.
  • Thiếu target_formats: Phải chỉ định ít nhất một định dạng đích.
  • Tác vụ đầu vào không hợp lệ: input_task_id phải tham chiếu đến một tác vụ đã thành công.
  • Định dạng mô hình không hợp lệ: model_url trỏ đến một tệp có phần mở rộng không được hỗ trợ.
  • URL không thể truy cập: Không thể tải xuống model_url.
  • Tệp mô hình quá lớn: Tệp model_url vượt quá 400 MB (URL http hoặc https) hoặc 100 MB (URI data:).
  • Quá nhiều mặt: Tệp model_url vượt quá 100 MB và có nhiều hơn 10.000.000 mặt. Giảm số lượng mặt, sau đó gửi lại tệp.
  • FBX ASCII trên 100 MB: Tệp model_url là FBX ASCII vượt quá 100 MB. Gửi dưới dạng FBX nhị phân hoặc GLB.
  • Tệp mô hình không thể đọc được: Tệp model_url vượt quá 100 MB và phần đầu của nó không thể đọc được, ví dụ như một GLB hoặc glTF được nén Draco, hoặc một FBX nhị phân cũ hơn phiên bản 7.1.
  • Phần đầu mô hình quá phức tạp: Tệp model_url vượt quá 100 MB và phần đầu của nó có quá nhiều lưới, nút hoặc bản ghi để kiểm tra. Giảm số lượng đối tượng trong tệp, sau đó gửi lại.
  • 401 - Unauthorized

Xác thực thất bại. Vui lòng kiểm tra khóa API của bạn.

  • 402 - Payment Required

Không đủ tín dụng để thực hiện tác vụ này.

  • 429 - Too Many Requests

Bạn đã vượt quá giới hạn tốc độ.

Request

POST
/openapi/v1/convert
curl https://api.meshy.ai/openapi/v1/convert \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "target_formats": ["fbx", "stl"]
  }'

Response

{
  "result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}

GET/openapi/v1/convert/:id

Truy xuất tác vụ Chuyển đổi

Endpoint này truy xuất một tác vụ chuyển đổi theo ID của nó.

Tham số

  • Name
    id
    Type
    path
    Description

    ID của tác vụ chuyển đổi cần truy xuất.

Kết quả trả về

Đối tượng Tác vụ Chuyển đổi.

Request

GET
/openapi/v1/convert/:id
curl https://api.meshy.ai/openapi/v1/convert/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "convert",
  "model_urls": {
      "glb": "",
      "fbx": "https://assets.meshy.ai/.../model.fbx?Expires=...",
      "obj": "",
      "usdz": "",
      "stl": "https://assets.meshy.ai/.../model.stl?Expires=..."
  },
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": null,
  "consumed_credits": 1
}

DELETE/openapi/v1/convert/:id

Xóa một tác vụ Chuyển đổi

Endpoint này xóa vĩnh viễn một tác vụ chuyển đổi, bao gồm tất cả các mô hình và dữ liệu liên quan. Hành động này không thể hoàn tác.

Tham số đường dẫn

  • Name
    id
    Type
    path
    Description

    ID của tác vụ chuyển đổi cần xóa.

Trạng thái tác vụ

Một tác vụ vẫn còn ở trạng thái PENDING sẽ được xóa và số tín dụng đã tiêu tốn tại thời điểm tạo sẽ được hoàn lại.

Một tác vụ đã ở trạng thái IN_PROGRESS thì không thể xóa: yêu cầu sẽ bị từ chối với mã 409 Conflict và tác vụ vẫn tiếp tục chạy. Tín dụng cho một tác vụ mà worker đã bắt đầu xử lý sẽ không được hoàn lại, vì vậy việc xóa nó giữa chừng sẽ khiến bạn mất cả tín dụng lẫn kết quả. Hãy chờ cho đến khi tác vụ đạt trạng thái SUCCEEDED, FAILED hoặc CANCELED, rồi mới xóa nó.

Một tác vụ ở trạng thái cuối cùng (SUCCEEDED, FAILED hoặc CANCELED) sẽ được xóa mà không hoàn lại tín dụng.

Kết quả trả về

Trả về 200 OK khi thành công, hoặc 409 Conflict khi tác vụ đang ở trạng thái IN_PROGRESS.

Request

DELETE
/openapi/v1/convert/:id
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/convert/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."
}

GET/openapi/v1/convert

Liệt kê Convert Tasks

Endpoint này cho phép bạn lấy danh sách các convert task.

Tham số

  • Name
    page_num
    Type
    integer
    mặc định 1
    Description

    Số trang cho phân trang.

  • Name
    page_size
    Type
    integer
    mặc định 10
    Description

    Giới hạn kích thước trang. Tối đa cho phép là 100 mục.

  • Name
    sort_by
    Type
    string
    Description

    Trường dùng để sắp xếp. Các giá trị khả dụng:

    • +created_at: Sắp xếp theo thời gian tạo tăng dần.
    • -created_at: Sắp xếp theo thời gian tạo giảm dần.

Trả về

Trả về một danh sách phân trang gồm Các đối tượng Convert Task.

Request

GET
/openapi/v1/convert
curl https://api.meshy.ai/openapi/v1/convert?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
    "type": "convert",
    "model_urls": {
      "fbx": "https://assets.meshy.ai/.../model.fbx?Expires=...",
      "stl": "https://assets.meshy.ai/.../model.stl?Expires=..."
    },
    "progress": 100,
    "status": "SUCCEEDED",
    "created_at": 1699999999000,
    "started_at": 1700000000000,
    "finished_at": 1700000001000,
    "task_error": null,
    "consumed_credits": 1
  }
]

GET/openapi/v1/convert/:id/stream

Stream một Convert Task

Endpoint này truyền (stream) các cập nhật theo thời gian thực cho một convert task bằng Server-Sent Events (SSE).

Tham số

  • Name
    id
    Type
    path
    Description

    Định danh duy nhất của convert task cần stream.

Kết quả trả về

Trả về một luồng (stream) các The Convert Task Objects dưới dạng Server-Sent Events.

Đối với các task ở trạng thái PENDING hoặc IN_PROGRESS, luồng phản hồi sẽ chỉ bao gồm các trường progress và status cần thiết.

Request

GET
/openapi/v1/convert/:id/stream
curl -N https://api.meshy.ai/openapi/v1/convert/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response Stream

// Message event examples illustrate task progress.
event: message
data: {
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "convert",
  "model_urls": {
    "fbx": "https://assets.meshy.ai/.../model.fbx?Expires=...",
    "stl": "https://assets.meshy.ai/.../model.stl?Expires=..."
  },
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "task_error": null,
  "consumed_credits": 1
}

Đối tượng Convert Task

Đối tượng Convert Task đại diện cho một tác vụ chuyển đổi định dạng.

Properties

  • id · string

Định danh duy nhất cho tác vụ.

  • type · string

Loại tác vụ. Giá trị là convert.

  • model_urls · object

Các URL có thể tải xuống cho các tệp mô hình đã chuyển đổi. Chỉ các định dạng được chỉ định trong target_formats mới có URL. Các thuộc tính định dạng khác sẽ là chuỗi rỗng.

  • progress · integer

Tiến trình của tác vụ (0-100).

  • status · string

Trạng thái của tác vụ. Các giá trị có thể có: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • preceding_tasks · integer

Số lượng tác vụ đứng trước. Chỉ có ý nghĩa khi trạng thái là PENDING.

  • created_at · timestamp

Dấu thời gian khi tác vụ được tạo, tính bằng mili giây.

  • started_at · timestamp

Dấu thời gian khi tác vụ được bắt đầu, tính bằng mili giây. 0 nếu chưa bắt đầu.

  • finished_at · timestamp

Dấu thời gian khi tác vụ hoàn thành, tính bằng mili giây. 0 nếu chưa hoàn thành.

  • task_error · object

Đối tượng lỗi nếu tác vụ thất bại. Xem Lỗi để biết thêm chi tiết.

  • consumed_credits · integer

Số lượng tín dụng đã tiêu thụ bởi tác vụ này (1 tín dụng cho mỗi tác vụ convert). Trả về 0 đối với các tác vụ FAILED.