Endpoints
Items
List wiki-visible items or read one item with its public description as Markdown and text.
Read items that have a hidden_from_wiki value of false in the campaign tied to your key. Each request relies on authentication and the shared rate limits.
List items
/api/public/v1/itemsThis gives back item metadata, sorted first by manual sort order and then by name. To obtain an item's description, read that single item.
| 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. |
curl "https://app.saga20.com/api/public/v1/items?limit=2" \
-H "Authorization: Bearer $SAGA20_API_KEY"
List response fields
Inside the response you will find data and pagination. To read a further page, follow pagination.
| 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. |
{
"data": [
{
"id": "e07a5c34-9b21-4d8f-a3c6-2f81d0b7e495",
"name": "Lantern of Hollow Stars",
"icon": null,
"hidden_from_wiki": false,
"created_at": "2026-09-17T20:55:30+00:00",
"updated_at": "2026-09-25T08:06:44+00:00",
"image_url": "https://example.com/lantern-of-hollow-stars.webp"
}
],
"pagination": {
"next_cursor": null,
"has_more": false
}
}
Get one item
/api/public/v1/items/{id}This gives back a single item that is visible in the wiki together with its public description. Sections meant only for the GM are stripped out. How the description is formatted follows what the API returns.
| Parameter | Type | Description |
|---|---|---|
id |
string | Required path parameter. Use a item id from the list response. |
When an item is absent, hidden, or belongs to another campaign, the result is 404 with {"error":"Entity not found"}.
curl "https://app.saga20.com/api/public/v1/items/e07a5c34-9b21-4d8f-a3c6-2f81d0b7e495" \
-H "Authorization: Bearer $SAGA20_API_KEY"
Item response fields
What comes back is the item object itself, with no data wrapper around it.
| 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. |
{
"id": "e07a5c34-9b21-4d8f-a3c6-2f81d0b7e495",
"name": "Lantern of Hollow Stars",
"icon": null,
"hidden_from_wiki": false,
"created_at": "2026-09-17T20:55:30+00:00",
"updated_at": "2026-09-25T08:06:44+00:00",
"image_url": "https://example.com/lantern-of-hollow-stars.webp",
"description_markdown": "A cold lantern that burns without oil. Its blue light reveals **star-shaped marks** on the cellar walls.",
"description_text": "A cold lantern that burns without oil. Its blue light reveals star-shaped marks on the cellar walls."
}