작동 원리
첫 이미지 생성을 위한 5가지 명령어
터미널에 순서대로 붙여넣으세요. 모든 스니펫은 독립적이며 curl과 jq만 사용합니다.
- 01
단계 1
API 키 생성
ai.photta.app에 가입하고 개발자 대시보드를 엽니다. API 키를 생성하세요. 라이브 키는 photta_live_로 시작합니다. 쉘에서 읽을 수 있도록 키를 export 하세요.
# Sign up at ai.photta.app, open the Developers dashboard, # click "Generate API key" and copy it into your env. export PHOTTA_API_KEY="photta_live_xxxxx" export PHOTTA_BASE_URL="https://ai.photta.app/api/v1" - 02
단계 2
첫 번째 가상 피팅 POST
제품 이미지 URL, mannequin_id, pose_id와 함께 /api/v1/tryon/apparel을 호출하세요. API는 즉시 202 Accepted 응답을 주며 data.id에 생성 ID를 반환합니다.
curl -X POST "$PHOTTA_BASE_URL/tryon/apparel" \ -H "Authorization: Bearer $PHOTTA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "product_type": "dress", "product_images": ["https://example.com/dress.jpg"], "mannequin_id": "mnq_athena_ts", "pose_id": "pose_standing_front", "resolution": "2K", "aspect_ratio": "3:4" }' # Response: 202 Accepted + data.id (generation ID) - 03
단계 3
완료까지 폴링
3초마다 /api/v1/tryon/apparel/:id를 호출하세요. 보통 1.5–4분이 걸립니다. 작업이 무한정 대기하지 않도록 최대 시도 횟수를 설정하세요.
# Loop every 3 seconds until status flips to "completed". # Typical completion: 1.5–4 minutes. Max 120 attempts = 6 min. for i in $(seq 1 120); do RESULT=$(curl -s "$PHOTTA_BASE_URL/tryon/apparel/$ID" \ -H "Authorization: Bearer $PHOTTA_API_KEY") STATUS=$(echo "$RESULT" | jq -r '.data.status') [ "$STATUS" = "completed" ] && break [ "$STATUS" = "failed" ] && echo "Job failed" && exit 1 sleep 3 done - 04
단계 4
출력물 저장
상태가 completed로 바뀌면 data.output_url에 렌더링된 이미지가 담깁니다. 렌더링 성능을 위해 Photta CDN에 의존하지 말고 자체 스토리지에 다운로드하세요.
# Pull the final URL out of the response and save the bytes. OUTPUT_URL=$(echo "$RESULT" | jq -r '.data.output_url') curl -sO "$OUTPUT_URL" echo "Saved $(basename "$OUTPUT_URL")" - 05
단계 5
에러 상황 처리
HTTP 상태 코드로 분기하세요: 크레딧 부족 시 402, rate limits 시 429(Retry-After 준수), 일시적 서버 에러 시 5xx. 모든 에러 본문에는 프로그램에서 처리 가능한 기계 판독용 error.code가 포함됩니다.
# Surface the common failure modes honestly. case "$STATUS_CODE" in 402) echo "Out of credits — top up at ai.photta.app" ;; 429) echo "Rate limited — honour Retry-After header" ;; 4??) echo "Client error: $(echo "$BODY" | jq '.error.message')" ;; 5??) echo "Server error — retry with backoff" ;; esac
개발자 자주 묻는 질문
시작 전 궁금한 점
이 빠른 시작 가이드는 얼마나 걸리나요?+
가입, 키 생성, 첫 cURL 실행까지 5분 정도 걸립니다. 생성 작업 자체에 1.5~4분이 소요되므로 모델 착용 이미지를 확인하기까지 총 10분 정도 예상하면 됩니다.
테스트를 위해 신용카드가 필요한가요?+
아니요. 새 계정에는 유료 결제 전에 사용할 수 있는 체험용 크레딧이 제공됩니다. 프로덕션 배포 준비가 되면 더 많은 월간 크레딧과 빠른 rate limits를 제공하는 요금제를 구독하세요.
어떤 엔드포인트를 먼저 써봐야 할까요?+
의류 가상 피팅(/api/v1/tryon/apparel)을 추천합니다. 가장 많이 사용되는 기능이며 문서가 매우 상세하고, 다른 모든 Photta 엔드포인트가 재사용하는 비동기+폴링 패턴을 익힐 수 있기 때문입니다. 익숙해지면 주얼리와 고스트 마네킹도 동일한 방식으로 사용할 수 있습니다.
브라우저에서 직접 실행할 수 있나요?+
아니요. API 키는 반드시 서버 측에 보관해야 합니다. 브라우저에 키를 포함하면 모든 방문자에게 노출됩니다. 자체 백엔드(Next.js 라우트 핸들러, Express, Flask, Lambda 등)에 얇은 프록시를 두고 브라우저가 해당 프록시와 통신하도록 구현하세요.