Xây dựng · Tự động hóa No-code
Tự động hóa catalogue mà không cần viết code
Tóm tắt trong một câu
Một lượt chạy no-code sẽ gửi một batch ảnh sản phẩm bằng một node HTTP, đợi 3 giây, đọc trạng thái batch, và lặp lại cho đến khi hoàn thành trước khi ghi lại các URL vào bảng tính của bạn.
- Credits: 4 credits ở 2K · 5 credits ở 4K
- Thời gian điển hình: 1.5–4 min per image
- Xử lý: async, polling
Mọi số liệu trên trang này đều lấy từ tài liệu Photta API · đã kiểm tra
Một node HTTP, một node wait và một điều kiện. n8n, Make hoặc bất kỳ công cụ nào hỗ trợ HTTP đều có thể xử lý toàn bộ danh mục qua batch endpoint.
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/ghost-mannequin/batch", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/ghost-mannequin/batch",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
},
)
data = res.json()["data"] # data["id"], data["status"]Cơ chế hoạt động
Đầu vào là bảng tính, đầu ra là thư mục hình ảnh
Xuất danh mục, cấu hình một node HTTP, lặp lại kèm thời gian chờ, ghi lại các URL.
Bước 1
Xuất danh mục
Mỗi trang phục một dòng kèm URL ảnh công khai. Cột đó là input duy nhất mà batch endpoint cần.
Bước 2
Lấy API key của Photta
Lưu nó trong kho lưu trữ thông tin xác thực (credential vault) của công cụ tự động hóa, không đặt trong thân node, để các workflow khi export không bị lộ secret.
Bước 3
Cấu hình node HTTP
POST, bearer header, và JSON body như hiển thị ở đây. Mỗi item trong mảng là một trang phục; các trường định kiểu (styling) áp dụng cho tất cả item đó.
Bước 4
Lặp lại kèm thời gian chờ
Đợi 3 giây, đọc batch, kiểm tra xem trạng thái đã complete chưa, và lặp lại quy trình. Khoảng thời gian đó tuân theo hướng dẫn trong tài liệu.
Bước 5
Tuân thủ các giới hạn
Giới hạn kích thước batch và giới hạn batch đồng thời đều phụ thuộc vào gói dịch vụ của bạn. Gửi một batch, xử lý xong, rồi mới gửi batch tiếp theo.
Bước 6
Ghi lại các URL
Khi batch hoàn tất, mỗi item sẽ có output URL riêng. Ghi chúng vào bảng tính và tải các file về trong cùng một lượt chạy.
Các node, và những gì cấu hình bên trong
Request body chính là ví dụ từ tài liệu API; vòng lặp sử dụng khoảng thời gian polling được quy định trong tài liệu.
{
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin/batch \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id'){
"nodes": [
{
"name": "Wait",
"type": "n8n-nodes-base.wait",
"parameters": {
"amount": 3,
"unit": "seconds"
}
},
{
"name": "Read batch",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "GET",
"url": "https://api.photta.app/api/v1/ghost-mannequin/batch/{{ $json.data.batch_id }}"
}
},
{
"name": "Done?",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.data.status }}",
"value2": "completed"
}
]
}
}
}
]
}# 600 requests per minute per key, fixed window.
# One batch submission plus one poll every 3 seconds is ~21 requests per minute
# per batch in flight, so the concurrency cap binds long before the rate limit.
# On a 429, wait the Retry-After seconds (30 by default) before the next node runs.Câu hỏi thường gặp từ developer
Câu hỏi thường gặp về các lượt chạy no-code
Tôi có cần viết code không?
Không. Mọi thứ ở đây đều là HTTP request với JSON body mà bất kỳ công cụ tự động hóa nào cũng gửi được. Phần văn bản duy nhất bạn cần nhập là phần body hiển thị trên trang này.
Một lượt chạy xử lý được bao nhiêu ảnh?
Giới hạn batch của API là 5 ảnh cho gói Free và Hobby, 10 cho gói Seller, 25 cho gói Brand và 50 cho gói Studio. Danh mục dài hơn sẽ được chạy thành nhiều batch, nối tiếp nhau.
Điều gì xảy ra nếu một ảnh bị lỗi?
Phần còn lại của batch vẫn tiếp tục xử lý. Body của batch sẽ báo cáo số lượng completed và failed, đồng thời credits của các item bị lỗi sẽ được hoàn lại.
Quy trình này có thể chạy theo lịch trình không?
Có. Kích hoạt workflow hàng đêm để nó tự động lấy các dòng chưa có ảnh. Vòng lặp polling vẫn như nhau dù do người dùng kích hoạt thủ công hay chạy theo lịch.
Cách này có hoạt động trên Make hoặc Zapier không?
Hoạt động ở bất kỳ đâu bạn có thể gửi HTTP request kèm header và JSON body, cũng như thiết lập thời gian chờ giữa các bước. Tên node có thể khác nhau; ba bước cốt lõi thì không đổi.
Các trang liên quan
Tài liệu liên quan
Tính năng
Batch ghost mannequin API dành cho toàn bộ catalog
Gửi nhiều ảnh trang phục trong một request ghost mannequin. Có id riêng cho từng item, hỗ trợ aggregate polling và giữ credits trước. 4 credits mỗi ảnh ở độ phân giải 2K.
ĐọcBắt đầu nhanh
Tạo ảnh Photta đầu tiên trong vòng chưa đầy năm phút.
Đăng ký, tạo API key, chạy lệnh cURL đầu tiên, polling cho đến khi hoàn thành, lưu trữ kết quả. Năm bước, có tài liệu hướng dẫn trọn gói từ đầu đến cuối.
ĐọcRate limits
ĐọcPricing
Đọc
Mọi số liệu trên trang này đều lấy từ tài liệu Photta API · đã kiểm tra
Xử lý danh mục mà không cần lập trình viên
Một node HTTP và một khoảng chờ. Phần body trên trang này chính là mẫu do tài liệu cung cấp.