Characters
List characters
GET /api/characters
Query parameters
pageSize(optional): number of results per page. Defaults to10. Min1, max100.cursor(optional): opaque paging cursor fromnext.search(optional): filters by name (case-insensitive).sort(optional): allowed values:name(default).include(optional): allowed values:relations.
If include=relations is omitted, worlds and books are returned as empty arrays.
Filtering & sorting
searchmatches against character name (case-insensitive).sort=nameis the only supported sort order right now.
Include relations example
GET /api/characters?include=relations
Response
200 OK
{
"count": null,
"next": "/api/characters?pageSize=10&cursor=...",
"previous": null,
"results": [
{
"url": "/api/characters/3d2586bc-07b6-5c5f-9edb-00a66e0c68aa",
"id": "3d2586bc-07b6-5c5f-9edb-00a66e0c68aa",
"name": "Kaladin Stormblessed",
"worlds": ["/api/worlds/99a58f64-10bd-5228-ae0b-46279aa515e9"],
"books": ["/api/books/d76e8ec4-e5a5-51d2-a788-f6a2d19acfd4"],
"created_at": "2026-02-19T12:34:56Z",
"updated_at": "2026-02-19T12:34:56Z"
}
]
}
Error cases
400 Bad Request: invalidcursor,sort, orinclude.
Get a character
GET /api/characters/{id}
Example
GET /api/characters/3d2586bc-07b6-5c5f-9edb-00a66e0c68aa
Response
200 OK
{
"url": "/api/characters/3d2586bc-07b6-5c5f-9edb-00a66e0c68aa",
"id": "3d2586bc-07b6-5c5f-9edb-00a66e0c68aa",
"name": "Kaladin Stormblessed",
"worlds": ["/api/worlds/99a58f64-10bd-5228-ae0b-46279aa515e9"],
"books": ["/api/books/d76e8ec4-e5a5-51d2-a788-f6a2d19acfd4"],
"created_at": "2026-02-19T12:34:56Z",
"updated_at": "2026-02-19T12:34:56Z"
}
404 Not Found: character id does not exist.