Getting started

Credits & rate limits

Generation spends credits from your unified wallet. Deducted when a job starts, refunded automatically if it fails.

Cost depends on the engine and options you choose — an image ranges from 15 to 200 credits by model (higher again at 2K/4K output), so model choice, not request count, usually dominates a batch's cost. The exact, authoritative number for every model is the cost (and textureCost) field on GET /v1/models; check your live balance with GET /v1/credits.

What it costs

OperationTypical cost
Image generation≈ 15–200 credits (model-dependent)
Text / Image → 3D≈ 60–660 credits by engine and options — the default (Tripo P1 with texture, which /v1 turns on unless you send texture: false) is 240 from text and 300 from an image
Remeshfrom 10 credits (PB Remesh)
Re-texture · Auto-rigvaries by engine — see GET /v1/models

What credits cost in dollars

Plans add credits every month — annual plans too (unused plan credits don't roll over), and paid plans can top up with credit packs. Per 1,000 credits:

Where the credits come fromPricePer 1,000 credits
Max · monthly$96 for 100,000$0.96
Pro · monthly$32 for 30,000$1.07
Starter · monthly$12 for 10,000$1.20
Credit packs · paid plans$14.99 for 6,000 – $499.99 for 300,000$1.67–$2.50

So the default image → 3D job (Tripo P1 with texture, 300 credits) costs about $0.29 on Max and $0.36 on Starter. Annual plans cost less per credit. The pricing page always has the current prices and wins if the two ever differ.

Only successful jobs are billed Credits are deducted when a job starts and refunded automatically if it fails. A job that ends at taskStatus: 3 costs nothing.

Rate limits

LimitScopeOn exceed
240 / minper client IP429 · error.code 10003
120 / minper user (generation POSTs)

Over the limit returns 429 with error.code 10003. Back off with exponential delay (start ~1 s, cap ~30 s) and retry. Need higher limits for production volume? Get in touch.

Daily safety limit per key

When generations requested with a single API key reach 20,000 credits in one day (KST), that key is paused automatically. This keeps a leaked key from draining your wallet all at once. While it's paused, only reads and downloads work, so you can still collect the results of jobs you already started; every other request returns 403 with error.code 6016. The account owner gets an email and can resume the key from the API Keys page. Each resume allows another 20,000 credits that day before the key pauses again. If you don't recognize the usage, delete the key and create a new one instead of resuming it.

Concurrent generations

Separate from the per-minute request rate, your account caps how many jobs may be in flight at once — that is, sitting at taskStatus 0 (queued) or 1 (processing). Images and 3D jobs draw on independent budgets, and each budget is shared with the PicoBerry web app signed in to the same account.

PlanImages in flight3D & post-processing in flight
Free11
Starter35
Pro620
Max1530

Submitting past the cap returns 429 with error.code 13002. Nothing is charged and nothing is queued — the request is simply refused, so retry it once a slot frees up.

429 · queue full
{ "success": false, "error": { "code": 13002, "message": "Generation queue is full", "httpStatus": 429, "details": { "total": 15, "maxTotal": 15 } } }

details.maxTotal is your live ceiling and details.total is what you currently have in flight. Read maxTotal rather than hard-coding a number — it is the whole budget, it rises when you upgrade, and a client that guesses low silently throws away throughput. The usual shape is: keep maxTotal requests running, and start one more each time a job reaches taskStatus 2 or 3.