Save a reviewing character
Promote a synthesize-flow character from reviewing to ready.
POST /v1/characters/{id}/save is the publication step of the synthesize flow. It moves a reviewing character to ready, cleans up temporary upload bytes from the synthesis pipeline, and makes the character referenceable on POST /v1/images via character_id.
This endpoint costs no credits and dispatches no inference — it is purely a state transition.
When to use
- The synthesize flow finished (
status: reviewing) and you’ve inspectedrefs[]— the four poses look right and you’re ready to use the character. - You want to convert an idempotent intent (“create the character”) into a usable resource without doing extra work.
POST /v1/characters/{id}/refs/regenerate (one pose) or POST /v1/characters/{id}/resynthesize (all four) instead. To discard, call DELETE /v1/characters/{id}.
Examples
Limits
- Rate limit: bucket
characters_post— 30 requests/min sustained, 60 burst per team.
Errors
| Code | HTTP | When |
|---|---|---|
invalid_request_error | 400 | Character is in a non-savable state (e.g. synthesizing, failed). |
resource_not_found | 404 | Unknown ID, soft-deleted character, or cross-team. |
Common pitfalls
- Save is idempotent on already-
readycharacters — calling it twice returns 200 both times withstatus: readyunchanged. Use this property to retry confidently. - A
synthesizingcharacter returns400— don’t call save until you’ve polled and seenstatus: reviewing. - After save, the character cannot be returned to
reviewing. To retry refs, callregenerate-ref(single pose) orresynthesize(all four).
Authorizations
Your team API key (starts with al_live_).
Headers
Optional API version pin (YYYY-MM-DD). Defaults to your team's pinned version, or the system default 2026-05-15 for unauthenticated requests.
^\d{4}-\d{2}-\d{2}$"2026-05-15"
Path Parameters
Opaque character ID
"char_01HXMQ7Z3K8Y2NABCDEFGHJKMR"
Response
Character saved
Opaque character ID.
"char_01HXMQ7Z3K8Y2NABCDEFGHJKMR"
Discriminator
character "character"
Display name.
"Aurora the Adventurer"
Lifecycle state. synthesizing: synthesize flow running. reviewing: synthesize completed, awaiting POST /:id/save. ready: usable on POST /v1/images. failed: synthesize failed; use POST /:id/resynthesize to retry. deleted: soft-deleted (filtered out of list endpoint).
synthesizing, reviewing, ready, failed, deleted "ready"
Reference images (typically 4 poses).
Creation timestamp (ISO 8601).
"2026-05-08T10:00:00Z"
Last-update timestamp (ISO 8601).
"2026-05-08T10:00:00Z"
Caller-supplied reference echoed back (the value sent on create). Null if unset.
"bot_8472"
Character attributes. Null when unset.
Error message when status is failed. Null otherwise.
null
API contract version applied at the time this row was minted (D25 — frozen for replay across future version bumps).
"2026-05-15"

