크레딧 및 요청 제한
생성은 통합 월렛(지갑)에서 크레딧을 사용합니다. 작업이 시작될 때 차감되며, 실패하면 자동으로 환불됩니다.
비용은 선택한 엔진과 옵션에 따라 달라집니다 — 이미지는 모델에 따라 15~200 크레딧이며(2K/4K 출력은 더 높음), 요청 수보다 모델 선택이 배치 비용을 좌우합니다. 모델별 정확한 기준 값은 GET /v1/models의 cost(및 textureCost) 필드입니다. 현재 잔액은 GET /v1/credits로 확인하세요.
비용
| 작업 | 일반적인 비용 |
|---|---|
| 이미지 생성 | ≈ 15–200 크레딧 (모델별) |
| 텍스트 / 이미지 → 3D | ≈ 60–660 크레딧 (엔진·옵션별) — 기본값(Tripo P1 + 텍스처. /v1 은 texture: false 를 보내지 않으면 텍스처를 켭니다)은 텍스트 240 · 이미지 300 |
| 리메시 | 10 크레딧부터 (PB Remesh) |
| 재텍스처 · 오토리깅 | 엔진에 따라 다름 — GET /v1/models 참고 |
크레딧의 달러 가격
플랜은 연간 플랜도 매달 크레딧을 채워 주고(쓰지 않은 플랜 크레딧은 이월되지 않습니다), 유료 플랜은 크레딧 팩으로 더 충전할 수 있습니다. 1,000 크레딧당 가격은 다음과 같습니다.
| 크레딧을 얻는 방법 | 가격 | 1,000 크레딧당 |
|---|---|---|
| Max · 월간 | $96에 100,000 | $0.96 |
| Pro · 월간 | $32에 30,000 | $1.07 |
| Starter · 월간 | $12에 10,000 | $1.20 |
| 크레딧 팩 · 유료 플랜 | $14.99에 6,000 – $499.99에 300,000 | $1.67–$2.50 |
기본 이미지 → 3D 작업(Tripo P1 + 텍스처, 300 크레딧)은 Max 기준 약 $0.29, Starter 기준 약 $0.36입니다. 연간 플랜은 크레딧당 가격이 더 낮습니다. 최신 가격은 언제나 요금제 페이지가 기준입니다.
taskStatus: 3으로 끝난 작업은 비용이 들지 않습니다.요청 제한
| 제한 | 범위 | 초과 시 |
|---|---|---|
| 240 / 분 | 클라이언트 IP당 | 429 · error.code 10003 |
| 120 / 분 | 사용자당 (생성 POST) |
제한을 초과하면 error.code 10003과 함께 429를 반환합니다. 지수적으로 지연을 늘리며 백오프(~1 초에서 시작, 최대 ~30 초)한 뒤 재시도하세요. 프로덕션 볼륨을 위해 더 높은 제한이 필요하신가요? 문의하세요.
키당 하루 안전 기준
API 키 하나로 요청한 생성이 하루(한국 시간 기준) 20,000 크레딧에 이르면 그 키는 자동으로 일시 중지됩니다. 키가 유출됐을 때 크레딧이 한꺼번에 빠져나가지 않게 하려는 장치입니다. 중지된 동안에는 조회와 다운로드만 되고(이미 시작한 작업의 결과는 받아 갈 수 있습니다), 나머지 요청은 403(error.code 6016)을 받습니다. 계정 주인에게 안내 메일이 가며, API Keys 페이지에서 키를 다시 켤 수 있습니다. 다시 켜면 그날은 20,000 크레딧을 더 쓸 수 있고, 그걸 넘으면 다시 중지됩니다. 사용한 기억이 없다면 다시 켜지 말고 키를 삭제한 뒤 새 키를 만드세요.
동시 생성
분당 요청 제한과 별개로, 계정은 동시에 진행 중인 작업 수 — 즉 taskStatus 0(대기) 또는 1(처리 중) 상태의 작업 — 를 제한합니다. 이미지와 3D 작업은 각각 독립된 예산을 쓰며, 각 예산은 같은 계정으로 로그인한 PicoBerry 웹 앱과 공유됩니다.
| 플랜 | 동시 이미지 | 동시 3D · 후처리 |
|---|---|---|
| Free | 1 | 1 |
| Starter | 3 | 5 |
| Pro | 6 | 20 |
| Max | 15 | 30 |
한도를 넘겨 제출하면 error.code 13002와 함께 429를 반환합니다. 아무것도 차감되거나 큐잉되지 않고 요청이 그대로 거부되므로, 슬롯이 나면 재시도하세요.
{ "success": false, "error": { "code": 13002, "message": "Generation queue is full", "httpStatus": 429, "details": { "total": 15, "maxTotal": 15 } } }details.maxTotal은 현재 상한이고 details.total은 지금 진행 중인 수입니다. 숫자를 하드코딩하지 말고 maxTotal을 읽으세요 — 이것이 전체 예산이며, 업그레이드하면 늘어나고, 낮게 추측하는 클라이언트는 처리량을 조용히 낭비합니다. 일반적인 패턴은 maxTotal개의 요청을 유지하고, 작업이 taskStatus 2 또는 3에 도달할 때마다 하나씩 추가로 시작하는 것입니다.