Factions

Endpoints

Factions

List wiki-visible factions or read one faction with its public description as Markdown and text.

Read the factions whose hidden_from_wiki value is false, in the campaign linked to your key. Every call needs authentication and follows the shared rate limits.

List factions

GET/api/public/v1/factions

Returns faction metadata, sorted first by manual sort order, then by name. Fetch a single faction to read its description.

Parameter Type Description
limit integer Optional positive page size. Defaults to 50. Values above 100 are capped at 100.
cursor string Optional next_cursor from the previous page. Omit it for the first page.
Request
curl "https://app.saga20.com/api/public/v1/factions?limit=2" \
  -H "Authorization: Bearer $SAGA20_API_KEY"

List response fields

The response holds data and pagination. See pagination to fetch the next page.

Field Type Description
data array of objects Records on this page, with the fields below.
data[].id string Entry id. Use it in a single-record request.
data[].name string Entry name.
data[].icon string or null Stored icon identifier or emoji, or null when unset.
data[].hidden_from_wiki boolean Always false for returned entries.
data[].created_at string or null Creation timestamp, or null.
data[].updated_at string or null Last update timestamp, or null.
data[].image_url string or null Public image URL, or null when no image is set.
pagination object Pagination values for this list.
pagination.next_cursor string or null Cursor for the next page, or null on the last page.
pagination.has_more boolean True when another page is available.
Response
{
  "data": [
    {
      "id": "9d3e7b52-18c4-4a6f-8e07-c5a1f2b4d630",
      "name": "The Ashen Compact",
      "icon": null,
      "hidden_from_wiki": false,
      "created_at": "2026-09-05T21:40:09+00:00",
      "updated_at": "2026-09-18T07:44:01+00:00",
      "image_url": null
    }
  ],
  "pagination": {
    "next_cursor": null,
    "has_more": false
  }
}

Get one faction

GET/api/public/v1/factions/{id}

Returns a faction visible on the wiki together with its public description. Sections meant for the GM are stripped out. Description formatting works as described in what the API returns.

Parameter Type Description
id string Required path parameter. Use a faction id from the list response.

A faction that is missing, hidden, or belongs to another campaign gives back 404 with {"error":"Entity not found"}.

Request
curl "https://app.saga20.com/api/public/v1/factions/9d3e7b52-18c4-4a6f-8e07-c5a1f2b4d630" \
  -H "Authorization: Bearer $SAGA20_API_KEY"

Faction response fields

The faction object comes back on its own, with no data wrapper.

Field Type Description
id string Entry id. Use it in a single-record request.
name string Entry name.
icon string or null Stored icon identifier or emoji, or null when unset.
hidden_from_wiki boolean Always false for returned entries.
created_at string or null Creation timestamp, or null.
updated_at string or null Last update timestamp, or null.
image_url string or null Public image URL, or null when no image is set.
description_markdown string Public description as normalized Markdown. Empty when no public description content is available.
description_text string Matching description without heading or bold markers or images. List and table markers can remain.
Response
{
  "id": "9d3e7b52-18c4-4a6f-8e07-c5a1f2b4d630",
  "name": "The Ashen Compact",
  "icon": null,
  "hidden_from_wiki": false,
  "created_at": "2026-09-05T21:40:09+00:00",
  "updated_at": "2026-09-18T07:44:01+00:00",
  "image_url": null,
  "description_markdown": "## The compact\n\nAn order of wardens who keep the **old road** open through winter.",
  "description_text": "The compact\n\nAn order of wardens who keep the old road open through winter."
}