Skip to main content
A character is built from photos you upload first. Creating one returns an id at once; the build runs in the background and you hear about the result through a webhook or by polling.

Create a character

POST /v1/chars · scope chars:write
Each reference is the upload_key from POST /v1/uploads, either as a plain string or as { "upload_key": "..." }. An upload belongs to the person who created the API key that made it, so use keys created by the same person for uploading and creating; see Who can use an upload. In production a build uses one build from your team’s balance, or credits once builds run out. It is charged only when it produces a character; a failed build gives the build back. In sandbox nothing is charged and the build is mocked: see Sandbox.

Check a character

GET /v1/chars/{id} · scope chars:read
status is queued, building, ready or failed. download_url points at the latest ready .char and lasts at least 45 minutes; ask again for a fresh one. Every .char the API delivers carries a reserved.provider block in its manifest: your team id, the character id, the version, and receipt, which holds your provider_receipt or null when none was sent.

Retrain a character

POST /v1/chars/{id}/retrain · scope chars:write Retraining builds a new version from new references. The previous version stays downloadable until the new one is ready, and a successful retrain sends char.updated.
A production retrain uses one build from the balance, exactly like a new character. You cannot retrain while a version is still building; that answers 409.