Get started
Saga20 API
Read the sessions, characters, locations, factions and items in a Saga20 campaign you own, as JSON over HTTPS.
Use the Saga20 API to read the data in your campaign from a script, a spreadsheet, or a bot. Each key is tied to one campaign. All ten endpoints answer GET requests with JSON over HTTPS.
Base URL
Add an endpoint path onto this base URL. Your key picks the campaign, so there is no campaign parameter.
https://app.saga20.com/api/public/v1
First request
Make a key in Settings, on the API tab, under Public API. Keep the whole key in the SAGA20_API_KEY environment variable, then hand it over in the Authorization header.
/api/public/v1/sessionsThis call lists the public sessions that belong to your campaign. A data array with nothing in it tells you that no public sessions exist to return.
curl "https://app.saga20.com/api/public/v1/sessions" \
-H "Authorization: Bearer $SAGA20_API_KEY"
{
"data": [
{
"id": "7b1e3f0a-52c4-4d1e-9a2b-3c8f6d1a9e41",
"title": "The Broken Gate",
"status": "completed",
"recording_date": "2026-09-24T00:00:00+00:00",
"created_at": "2026-09-24T19:12:45+00:00",
"updated_at": "2026-09-25T08:03:10+00:00",
"session_type": "audio",
"visibility": "public"
}
],
"pagination": {
"next_cursor": null,
"has_more": false
}
}
What you can read
The API hands back public sessions along with characters, locations, factions, and items that show up in the wiki. Endpoints that list records give you metadata plus pagination. Endpoints that return one record also include the public summary or description as Markdown and text.
Before sending anything back, Saga20 strips out the sections that only the GM can see. Transcripts of sessions stay private. Look at what the API returns for the rules on visibility and formatting.
Next steps
- Work through the quickstart to make a key and move through results page by page.
- Look at authentication for how keys are stored and rotated.
- Check endpoints for the ten request paths and what each one answers with.
- Review rate limits and errors while you put your client together.