구현 · 노코드 자동화
코드 작성 없이 카탈로그 자동화하기
한 줄 요약
노코드 워크플로는 단일 HTTP 노드로 여러 제품 사진의 배치를 제출하고, 3초간 대기한 뒤, 배치 상태를 확인하며, 완료될 때까지 이를 반복한 후 시트에 URL을 다시 기록합니다.
- 크레딧: 2K에서 4 크레딧 · 4K에서 5 크레딧
- 일반적인 소요 시간: 1.5–4 min per image
- 처리 방식: 비동기, 폴링
이 페이지의 모든 수치는 다음 출처를 기반으로 합니다: Photta API 문서 · 확인 완료
HTTP 노드, 대기 노드, 그리고 조건 노드. n8n, Make 또는 HTTP를 지원하는 모든 도구를 통해 전체 카탈로그를 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"]동작 원리
스프레드시트를 입력하고, 이미지 폴더를 출력받으세요
카탈로그를 내보내고, 단일 HTTP 노드를 구성한 뒤, 대기를 포함한 루프를 돌려 URL을 다시 기록하세요.
단계 1
카탈로그 내보내기
공개 이미지 URL이 포함된 의류당 한 행씩 구성합니다. batch endpoint에 필요한 입력값은 해당 열 하나뿐입니다.
단계 2
Photta API 키 발급받기
내보낸 워크플로에 시크릿이 노출되지 않도록, 노드 본문 대신 자동화 도구의 자격 증명 볼트에 키를 저장하세요.
단계 3
HTTP 노드 구성하기
POST 방식, Bearer 헤더, 그리고 여기에 표시된 JSON 본문을 사용합니다. 배열의 각 항목은 의류 한 벌에 해당하며, 스타일링 필드는 모든 항목에 공통 적용됩니다.
단계 4
대기를 포함한 루프 실행
3초간 대기하고, 배치를 확인한 뒤, 상태가 완료되었는지 체크하고 다시 루프를 돕니다. 이 대기 주기는 문서에 명시된 기준입니다.
단계 5
제한 사항 준수
배치 크기 제한 및 동시 배치 수 제한은 모두 사용 중인 플랜을 따릅니다. 하나의 배치를 제출하여 완료한 후 다음 배치를 제출하세요.
단계 6
URL 다시 기록하기
배치가 완료되면 각 항목마다 고유한 출력 URL이 생성됩니다. 해당 URL들을 시트에 기록하고 동일한 실행 흐름 내에서 파일을 다운로드하세요.
노드 구성 및 입력 항목
요청 본문은 API 문서에 게시된 예시 그대로이며, 루프는 문서에 명시된 polling 주기를 따릅니다.
{
"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.개발자가 자주 묻는 질문
노코드 워크플로 관련 자주 묻는 질문
코드를 직접 작성해야 하나요?
아닙니다. 여기 소개된 모든 과정은 모든 자동화 도구에서 전송할 수 있는 JSON 본문 기반의 HTTP 요청입니다. 직접 입력할 텍스트는 이 페이지에 나와 있는 본문이 전부입니다.
한 번의 실행에 몇 장의 이미지를 처리할 수 있나요?
API 배치 제한은 Free 및 Hobby 플랜에서 5장, Seller에서 10장, Brand에서 25장, Studio에서 50장입니다. 더 많은 양의 카탈로그는 여러 배치로 나누어 순차적으로 실행됩니다.
이미지 한 장이 실패하면 어떻게 되나요?
배치의 나머지 작업은 계속 진행됩니다. 배치 응답 본문에 완료된 수와 실패한 수가 표시되며, 실패한 항목에 대한 credits는 환불됩니다.
스케줄에 따라 정기적으로 실행할 수 있나요?
네. 매일 밤 워크플로를 트리거하여 아직 이미지가 없는 행을 자동으로 가져와 처리하도록 설정할 수 있습니다. 수동으로 시작하든 스케줄에 따르든 polling 루프는 동일합니다.
Make나 Zapier에서도 동작하나요?
헤더와 JSON 본문이 포함된 HTTP 요청을 전송하고 단계 사이에 대기 시간을 둘 수 있는 환경이라면 어디서든 동작합니다. 노드 명칭만 다를 뿐 3단계 과정은 동일합니다.