Biến một tấm ảnh nguồn thành huy hiệu móc khóa có thể in 3D — một bức phù điêu
độ sâu được tô màu theo hình dạng huy hiệu — qua hai giai đoạn: prototype
tạo ra một hình ảnh khái niệm được tô màu từ ảnh đầu vào của bạn, sau đó
build biến hình ảnh khái niệm đó thành một mô hình 3D dạng phù điêu. Hai
giai đoạn này được liên kết với nhau qua input_task_id.
Tạo một hình ảnh concept đã tô màu từ ảnh nguồn. ID tác vụ trả về chính là giá trị bạn truyền vào input_task_id cho endpoint build. Tham khảo
Đối tượng tác vụ Keychain Prototype
để biết cấu trúc phản hồi.
Tham số
Name
image_url
Type
string
Bắt buộc
Description
Ảnh nguồn để Meshy tô màu thành hình ảnh concept sẵn sàng cho keychain. Hiện tại chúng tôi hỗ trợ các định dạng .jpg, .jpeg, .png, và .webp.
Có hai cách để cung cấp hình ảnh:
URL truy cập công khai: Một URL có thể truy cập từ internet công cộng.
Data URI: Một data URI của hình ảnh được mã hóa base64. Ví dụ về data URI: data:image/jpeg;base64,<dữ liệu hình ảnh của bạn được mã hóa base64>.
Name
name
Type
string
Description
Tên tác vụ tùy chọn để hiển thị. Tối đa 100 ký tự.
Tên này gắn nhãn cho tác vụ trong bảng điều khiển và danh sách tác vụ của bạn. Nó không được khắc lên móc khóa — hãy dùng name_text cho mục đích đó.
Name
name_text
Type
string
Description
Văn bản để khắc lên móc khóa, chẳng hạn như tên thú cưng hoặc tên người. Tối đa 10 ký tự, được tính theo ký tự Unicode chứ không phải byte, vì vậy một tên tiếng Trung, Nhật hoặc Hàn dài 10 ký tự vẫn được chấp nhận. Bỏ qua tham số này nếu muốn tạo móc khóa không có khắc chữ.
Khoảng trắng xung quanh sẽ được cắt bỏ và các ký tự định dạng vô hình sẽ bị loại bỏ trước khi văn bản được sử dụng. Giá trị kết quả được trả về dưới dạng name_text trong đối tượng tác vụ prototype, để bạn có thể xác nhận chính xác nội dung sẽ được khắc trước khi thanh toán cho giai đoạn build.
Việc khắc chữ được áp dụng ở đây, tại giai đoạn prototype. Giai đoạn build sẽ tự động kế thừa nó và không chấp nhận name_text riêng.
Khi văn bản không phải là ASCII thuần túy, hãy gửi nội dung yêu cầu dưới dạng UTF-8 và đặt Content-Type: application/json; charset=utf-8. Một số HTTP client — bao gồm Invoke-RestMethod của Windows PowerShell — mã hóa nội dung theo ISO-8859-1 theo mặc định, khiến mọi ký tự không thuộc bảng chữ cái Latin âm thầm bị chuyển thành ? trước khi đến được Meshy. API không thể phân biệt điều đó với một nội dung khắc chữ mà bạn thực sự yêu cầu.
Name
remove_background
Type
boolean
mặc định false
Description
Khi được đặt thành true, hình ảnh prototype được trả về dưới dạng PNG RGBA trong suốt với nền đã được xóa, để bạn có thể ghép chủ thể lên bất kỳ nền nào.
Điều này chỉ kiểm soát hình ảnh mà endpoint này trả về. Nó tách biệt với tùy chọn build cùng tên (mặc định true), vốn kiểm soát việc xóa nền trước khi tạo relief.
Kết quả trả về
Thuộc tính result của phản hồi chứa id tác vụ của tác vụ keychain prototype vừa được tạo. Poll endpoint Get a Task hoặc đăng ký stream cho đến khi tác vụ đạt trạng thái SUCCEEDED, sau đó truyền ID đó vào endpoint build dưới dạng input_task_id.
Các trường hợp thất bại
Name
400 - Bad Request
Description
Yêu cầu không hợp lệ. Các nguyên nhân phổ biến:
Thiếu tham số: image_url là bắt buộc.
Định dạng hình ảnh không hợp lệ: image_url được cung cấp không phải là định dạng được hỗ trợ (.jpg, .jpeg, .png, .webp).
Kích thước hình ảnh nằm ngoài phạm vi cho phép: Hình ảnh quá nhỏ, vượt quá dung lượng file tối đa, hoặc vượt quá số lượng pixel tối đa.
URL không thể truy cập: image_url không thể tải xuống (404 hoặc timeout).
Data URI không hợp lệ: Chuỗi base64 bị lỗi định dạng.
Nội dung khắc quá dài: name_text dài hơn 10 ký tự. Yêu cầu sẽ bị từ chối thay vì bị cắt ngắn, vì vậy bạn sẽ không bao giờ bị tính phí cho một móc khóa được khắc với tên bị rút gọn.
Nội dung bị gắn cờ: Hình ảnh đầu vào bị gắn cờ bởi hệ thống moderation nội dung nhạy cảm (NSFW) hoặc sở hữu trí tuệ, hoặc nội dung khắc name_text bị gắn cờ bởi moderation NSFW. Nội dung khắc chỉ được kiểm duyệt cho nội dung NSFW — việc kiểm duyệt sở hữu trí tuệ chỉ áp dụng cho hình ảnh.
Name
401 - Unauthorized
Description
Xác thực thất bại. Vui lòng kiểm tra khóa API của bạn.
Name
402 - Payment Required
Description
Không đủ tín dụng để thực hiện tác vụ này.
Name
429 - Too Many Requests
Description
Bạn đã vượt quá giới hạn tốc độ.
Request
POST
/openapi/creative-lab/keychain/v1/prototype
# Stage 1: generate a colorized keychain concept imagecurlhttps://api.meshy.ai/openapi/creative-lab/keychain/v1/prototype \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json; charset=utf-8' \-d'{ "image_url": "<your publicly accessible image url or base64-encoded data URI>", "name_text": "Luna" }'
Response
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Prototype example
Start with a source photo, then generate the prototype image used by the keychain build stage.
Tạo huy hiệu móc khóa 3D có thể in cuối cùng từ một prototype task đã thành công. Quá trình build chạy một pipeline relief bản đồ độ sâu (depth-map) trên ảnh concept đã tô màu của prototype và trả về một artifact lưới duy nhất theo định dạng bạn yêu cầu. Tham khảo
The Keychain Build Task Object để biết cấu trúc phản hồi.
Tham số
Name
input_task_id
Type
string
Bắt buộc
Description
Task ID của một prototype task được tạo qua cùng endpoint OpenAPI này. Prototype phải được tạo bằng cùng một khóa API, phải đạt trạng thái SUCCEEDED, và phải tạo ra chính xác một ảnh ứng viên.
Các prototype task được tạo qua webapp không được chấp nhận — endpoint build chỉ chấp nhận các prototype task được tạo bởi POST /openapi/creative-lab/keychain/v1/prototype và từ chối mọi nguồn khác với mã 404.
Name
name
Type
string
Description
Tên task tùy chọn dùng cho mục đích hiển thị. Tối đa 100 ký tự.
options
Các tham số điều chỉnh tùy chọn cho hình học relief. Mỗi trường đều có giá trị mặc định hợp lý — chỉ gửi những trường bạn muốn ghi đè.
Name
badge_shape
Type
string
mặc định circle
Description
Hình dáng viền ngoài của huy hiệu móc khóa. Các giá trị khả dụng:
circle (mặc định)
rounded-rect
hexagon
shield
star
Name
size_mm
Type
number
mặc định 40
Description
Độ dài cạnh hình vuông bao quanh móc khóa, tính bằng milimet. Phạm vi: (0, 400].
Name
relief_height_mm
Type
number
mặc định 2.2
Description
Chiều cao relief tối đa phía trên đế, tính bằng milimet. Phạm vi: [0, 20].
Name
relief_offset_mm
Type
number
mặc định 0
Description
Độ lệch dọc áp dụng cho relief trước khi đùn (extrusion), tính bằng milimet. Phạm vi: [0, 20].
Name
base_thickness_mm
Type
number
mặc định 0.1
Description
Độ dày của tấm đế phẳng phía sau relief, tính bằng milimet. Phạm vi: [0, 20].
Name
has_closed_back
Type
boolean
mặc định true
Description
Xác định liệu mặt sau của huy hiệu có được bịt kín thành bề mặt đóng hay không. Đặt thành false để có vỏ hở.
Name
relief_curve
Type
string
mặc định linear
Description
Đường cong chuyển đổi ánh xạ giá trị bản đồ độ sâu thành chiều cao relief. Các giá trị khả dụng:
linear (mặc định)
gamma
s-curve
Name
curve_param
Type
number
mặc định 1.0
Description
Tham số hình dạng cho đường cong chuyển đổi (chỉ có ý nghĩa khi relief_curve là gamma). Phạm vi: (0, 10].
Name
invert_depth
Type
boolean
mặc định false
Description
Đảo ngược cách diễn giải bản đồ độ sâu để các vùng tối hơn trở thành relief cao hơn.
Name
smoothing
Type
number
mặc định 0.24
Description
Cường độ làm mượt áp dụng cho bản đồ độ sâu trước khi trích xuất relief. Phạm vi: [0, 10].
Name
relief_scale
Type
number
mặc định 1.0
Description
Hệ số tỷ lệ dọc áp dụng thêm bên trên relief_height_mm. Phạm vi: (0, 10].
Name
depth_threshold
Type
number
mặc định 0.1
Description
Ngưỡng lọc thấp cho các giá trị bản đồ độ sâu; bất kỳ giá trị nào dưới ngưỡng này sẽ bị kẹp về 0. Phạm vi: [0, 1].
Name
remove_background
Type
boolean
mặc định true
Description
Tự động xóa nền của ảnh concept prototype trước khi tạo relief.
Khác với tham số cùng tên của prototype (mặc định là false), tham số này kiểm soát việc chính ảnh prototype có được trả về với nền trong suốt hay không.
Name
export_resolution
Type
integer
mặc định 512
Description
Độ phân giải lưới dùng khi xuất. Phạm vi: [64, 2048].
output
Bộ chọn định dạng dữ liệu tùy chọn. Mặc định là glb.
Name
format
Type
string
mặc định glb
Description
Gói artifact được trả về bởi quá trình build. Các giá trị khả dụng:
glb (mặc định) — trả về một model.glb duy nhất tại model_urls.glb.
obj — nén model.obj + model.mtl + texture.png và trả về gói tại model_urls.obj.
zip — nén mọi artifact mà bộ tạo tạo ra và trả về gói tại model_urls.bundle_zip.
Giá trị trả về
Thuộc tính result của phản hồi chứa id task của keychain build task vừa được tạo. Hãy thăm dò (poll) endpoint Get a Task hoặc đăng ký stream cho đến khi task đạt trạng thái SUCCEEDED, sau đó tải artifact từ mục duy nhất trong model_urls.
Các chế độ lỗi
Name
400 - Bad Request
Description
Yêu cầu không hợp lệ. Các nguyên nhân phổ biến:
Thiếu tham số: input_task_id là bắt buộc.
UUID không hợp lệ: input_task_id không phải là một UUID hợp lệ.
Task cha chưa thành công: Prototype task được tham chiếu chưa đạt trạng thái SUCCEEDED.
Không có ứng viên: Prototype task đã thành công nhưng không tạo ra ảnh ứng viên nào.
Options nằm ngoài phạm vi: Một trong các trường của options nằm ngoài phạm vi cho phép hoặc tập giá trị enum.
Name
401 - Unauthorized
Description
Xác thực thất bại. Vui lòng kiểm tra khóa API của bạn.
Name
402 - Payment Required
Description
Không đủ tín dụng để thực hiện task này.
Name
404 - Not Found
Description
Prototype task được tham chiếu không tồn tại, thuộc về người dùng khác, hoặc được tạo qua webapp (chỉ các prototype task chế độ API mới có thể nối tiếp vào build).
Truy xuất một tác vụ nguyên mẫu (prototype) hoặc tác vụ xây dựng (build) dựa trên id tác vụ hợp lệ. Đường dẫn URL
phải khớp với giai đoạn của tác vụ — một tác vụ build được truy xuất qua
/prototype/:id sẽ trả về 404, và ngược lại.
Hủy một tác vụ móc khóa. Nếu tác vụ vẫn đang ở trạng thái PENDING, số
tín dụng đã tiêu tốn lúc tạo sẽ được hoàn lại. Các tác vụ đã ở trạng thái
IN_PROGRESS sẽ bị hủy nhưng không được hoàn tín dụng (do worker có thể
đã đang sử dụng tài nguyên). Các tác vụ đã đạt trạng thái cuối cùng
(SUCCEEDED, FAILED, CANCELED) không thể bị hủy.
Đường dẫn URL phải khớp với giai đoạn của tác vụ — thực hiện DELETE
trên /prototype/:buildId sẽ trả về 404.
Tham số Đường dẫn
Name
id
Type
path
Description
Định danh duy nhất của tác vụ móc khóa cần hủy.
Giá trị trả về
Trả về 204 No Content khi thành công với nội dung rỗng.
Các trường hợp thất bại
Name
400 - Bad Request
Description
Tác vụ đã ở trạng thái cuối cùng và không thể bị hủy.
Name
404 - Not Found
Description
Tác vụ không tồn tại, thuộc về một người dùng khác, hoặc giai đoạn của nó không khớp với đường dẫn URL.
Truyền trực tiếp các cập nhật theo thời gian thực cho một tác vụ móc khóa thông qua Server-Sent Events (SSE).
Đường dẫn URL phải khớp với giai đoạn của tác vụ — mở một luồng tại
/prototype/:buildId/stream sẽ phát ra một payload event: error duy nhất với
status_code: 404 và đóng luồng lại.
Tham số
Name
id
Type
path
Description
Định danh duy nhất của tác vụ móc khóa cần truyền trực tiếp.
Giá trị trả về
Trả về một luồng các đối tượng tác vụ Keychain Prototype
hoặc Keychain Build dưới dạng
Server-Sent Events. Mỗi khung dữ liệu mang theo toàn bộ đối tượng tác vụ cho giai đoạn đó — cùng cấu trúc mà
endpoint Get trả về — vì vậy trong khi tác vụ đang ở trạng thái PENDING hoặc IN_PROGRESS, các
trường đầu ra đơn giản là chưa được điền (null, [] hoặc {}) và
finished_at là null.
// Error event example (wrong stage or task not found)event: errordata: {"status_code": 404,"message": "Task not found"}// Message event examples illustrate task progress.// Every frame is the full task object; fields not yet populated are null / empty.// The PENDING frame below is abbreviated to the fields that change.event: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","progress": 0,"status": "PENDING"}event: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","type": "creative-lab-keychain-build","status": "SUCCEEDED","progress": 100,"created_at": 1729123500000,"started_at": 1729123510000,"finished_at": 1729123535000,"expires_at": 1729382735000,"task_error": null,"consumed_credits": 20,"model_urls": {"glb":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.glb?Expires=***" }}
Truy xuất danh sách phân trang các tác vụ móc khóa của bạn cho một giai đoạn duy nhất. Đường dẫn URL
lựa chọn giai đoạn — /prototype trả về các tác vụ nguyên mẫu; /build
trả về các tác vụ build. Các tác vụ từ giai đoạn còn lại không được bao gồm trong bất kỳ
phản hồi nào.
Path Parameters
Name
stage
Type
path
Bắt buộc
Description
Là prototype hoặc build. Bộ sưu tập chỉ trả về các tác vụ
có giai đoạn khớp với URL — việc lấy /prototype sẽ không bao giờ trả về
các tác vụ build và ngược lại.
Query Parameters
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.
Đối tượng Keychain Prototype Task là một đơn vị công việc mà Meshy theo dõi để
tạo ra một hình ảnh khái niệm (concept image) đã tô màu từ một bức ảnh nguồn. Đầu ra của
giai đoạn này được liên kết chuỗi vào giai đoạn build
thông qua input_task_id.
Thuộc tính
Name
id
Type
string
Description
Định danh duy nhất cho tác vụ. Mặc dù chúng tôi sử dụng UUID có thể sắp xếp theo k (k-sortable UUID) làm chi tiết triển khai cho id tác vụ, bạn không nên đưa ra bất kỳ giả định nào về định dạng của id.
Name
type
Type
string
Description
Loại tác vụ. Giá trị là creative-lab-keychain-prototype.
Name
name
Type
string
Description
Tên tác vụ được cung cấp khi tác vụ được tạo. Là chuỗi rỗng nếu không có tên nào được cung cấp.
Name
name_text
Type
string
Description
Nội dung khắc được áp dụng cho móc khóa này, sau khi cắt bỏ khoảng trắng và loại bỏ các ký tự định dạng vô hình. Không xuất hiện khi tác vụ được tạo mà không có name_text. So sánh giá trị này với những gì bạn đã gửi để xác nhận văn bản không bị thay đổi bởi việc mã hóa của HTTP client.
Name
status
Type
string
Description
Trạng thái của tác vụ. Các giá trị có thể là một trong các giá trị PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Tiến trình (progress) của tác vụ. Nếu tác vụ chưa bắt đầu, thuộc tính này sẽ là 0. Khi tác vụ đã hoàn thành thành công, giá trị này sẽ trở thành 100.
Name
created_at
Type
timestamp
Description
Dấu thời gian khi tác vụ được tạo, tính bằng mili giây.
Dấu thời gian biểu thị số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 UTC, theo
tiêu chuẩn RFC 3339.
Ví dụ, Thứ Sáu, ngày 1 tháng 9 năm 2023 lúc 12:00:00 CH GMT được biểu diễn là 1693569600000. Điều này áp dụng
cho tất cả các dấu thời gian trong Meshy API.
Name
started_at
Type
timestamp
Description
Dấu thời gian khi tác vụ bắt đầu, tính bằng mili giây. Nếu tác vụ chưa bắt đầu, thuộc tính này sẽ là 0.
Name
finished_at
Type
timestamp
Description
Dấu thời gian khi tác vụ kết thúc, tính bằng mili giây. Nếu tác vụ chưa kết thúc, thuộc tính này sẽ là 0.
Name
expires_at
Type
timestamp
Description
Dấu thời gian khi kết quả của tác vụ hết hạn, tính bằng mili giây.
Name
preceding_tasks
Type
integer
Description
Số lượng tác vụ đứng trước.
Giá trị của trường này chỉ có ý nghĩa khi trạng thái tác vụ là PENDING.
Name
task_error
Type
object
Description
Chi tiết lỗi cho các tác vụ thất bại. Xem Lỗi để biết tham chiếu đầy đủ về đối tượng task_error.
Name
consumed_credits
Type
integer
Description
Số lượng tín dụng đã tiêu thụ bởi tác vụ này. Có mặt khi trạng thái tác vụ là PENDING, IN_PROGRESS, hoặc SUCCEEDED. Trả về 0 đối với các tác vụ FAILED (tín dụng sẽ được hoàn lại khi thất bại).
Name
image_urls
Type
array of strings
Description
Các URL có thể tải xuống cho các ứng viên hình ảnh khái niệm được tạo bởi tác vụ prototype này. Hiện tại API luôn trả về chính xác một ứng viên; trường này là một mảng để các phiên bản trong tương lai có thể hiển thị nhiều ứng viên mà không gây ra thay đổi phá vỡ tương thích.
Đối tượng Keychain Build Task là một đơn vị công việc mà Meshy theo dõi để
tạo ra lưới móc khóa 3D cuối cùng từ một prototype task đã thành công. Quá trình
build sẽ chạy một pipeline relief bản đồ độ sâu trên ảnh khái niệm (concept image) của prototype và
xuất bản một artifact lưới duy nhất theo định dạng mà bên gọi yêu cầu.
Thuộc tính
Name
id
Type
string
Description
Định danh duy nhất của tác vụ.
Name
type
Type
string
Description
Loại của tác vụ. Giá trị là creative-lab-keychain-build.
Name
name
Type
string
Description
Tên tác vụ được cung cấp khi tác vụ được tạo. Là chuỗi rỗng nếu không có tên nào được cung cấp.
Name
status
Type
string
Description
Trạng thái của tác vụ. Các giá trị có thể có là một trong các giá trị PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Tiến độ của tác vụ. Nếu tác vụ chưa bắt đầu, thuộc tính này sẽ là 0. Khi tác vụ đã thành công, giá trị này sẽ trở thành 100.
Name
created_at
Type
timestamp
Description
Dấu thời gian khi tác vụ được tạo, tính bằng mili-giây.
Name
started_at
Type
timestamp
Description
Dấu thời gian khi tác vụ được bắt đầu, tính bằng mili-giây.
Name
finished_at
Type
timestamp
Description
Dấu thời gian khi tác vụ hoàn thành, tính bằng mili-giây.
Name
expires_at
Type
timestamp
Description
Dấu thời gian khi kết quả của tác vụ hết hạn, tính bằng mili-giây.
Name
preceding_tasks
Type
integer
Description
Số lượng tác vụ đứng trước. Chỉ có ý nghĩa khi trạng thái là PENDING.
Name
task_error
Type
object
Description
Chi tiết lỗi cho các tác vụ thất bại. Xem Lỗi để biết tham chiếu đầy đủ về đối tượng task_error.
Name
consumed_credits
Type
integer
Description
Số tín dụng đã tiêu thụ bởi tác vụ này. Trả về 0 đối với các tác vụ FAILED (tín dụng sẽ được hoàn lại khi thất bại).
Name
model_urls
Type
object
Description
Các URL có thể tải xuống cho artifact đã được tạo ra, được đánh khóa theo tên artifact. Luôn chứa đúng một mục — định dạng được yêu cầu thông qua output.format của yêu cầu build. Khóa này khớp với định dạng đã yêu cầu:
Name
glb
Type
string
Description
URL có thể tải xuống cho tệp GLB. Xuất hiện khi output.format là glb (mặc định).
Name
obj
Type
string
Description
URL có thể tải xuống cho một gói zip chứa model.obj, model.mtl, và texture.png. Xuất hiện khi output.format là obj.
Name
bundle_zip
Type
string
Description
URL có thể tải xuống cho một gói zip chứa mọi artifact mà trình tạo xuất ra. Xuất hiện khi output.format là zip.