List characters
Page through your team’s characters, newest first.
GET /v1/characters returns a cursor-paginated list of your team’s characters, ordered by created_at descending. Soft-deleted characters are excluded.
When to use
- Powering a “pick a character” UI in your own product.
- Auditing which characters are still in
synthesizing/reviewingand need attention. - Bulk-syncing the catalog into your local database.
Pagination
Passlimit (1–100, default 20) and starting_after (the next_cursor value from the previous response, which is the id of the last character returned). Stop when next_cursor is null.
The cursor convention is consistent across every paginated V1 endpoint — starting_after to advance, next_cursor to receive the next anchor.
Examples
Limits
- Rate limit: bucket
characters_get— 120 requests/min sustained, 240 burst per team.
Common pitfalls
- The list does not include
deletedcharacters. To enumerate everything for an audit, you need to track deletions out-of-band — deletes are soft and the character stays for IDs to remain valid forever, but the list endpoint hides them. next_cursoris the last returned character’sid(the opaquechar_<ulid>). Pass it back asstarting_afteron the next request — don’t synthesize cursors yourself.- The fields returned per character are the same as
GET /v1/characters/{id}(no shrunk “summary” shape); pages are bounded bylimit, not by payload size.
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"
Query Parameters
Items per page (1-100, default 20)
20
Cursor — opaque char_<ulid> from a prior page
"char_01HXMQ7Z3K8Y2NABCDEFGHJKMR"
Filter to a single lifecycle state. Omit to list all (non-deleted) states. An unrecognized value returns 400 invalid_request. Note: cancelled is NOT a filterable status — a cancelled character is hard-deleted and never appears in list/get; it surfaces only as the character.cancelled webhook.
synthesizing, reviewing, ready, failed, deleted Response
Cursor-paginated list of characters
Discriminator
list "list"
Array of CharacterResponse items
True when the next page exists
true
Pass as ?starting_after= on the next request. null when has_more is false.
"img_01HXMQ7Z3K8Y2ABCDEFGHJKM"

