Skip to Content
IntegrationsAPIGET /v1/campaigns/:id

GET /v1/campaigns/:id

Returns one campaign with everything you curate for it in the dashboard: its characters (players and NPCs), items, locations and organizations. One call gets the campaign’s whole world, for example so an AI agent can answer “who is Captain Marrow?” or “what is the party carrying?”.

Request

GET /v1/campaigns/<id>
Authorization: Bearer <token>
Path paramRequiredDescription
idYesThe campaign’s numeric id, from GET /v1/campaigns or a session’s campaign_id.

No query string. No request body.

Example

GET /v1/campaigns/42
Authorization: Bearer <token>

Successful response

Status: 200 OK Content-Type: application/json

{
  "campaign": {
    "id": 42,
    "name": "The Mystic Triad",
    "description": "A heist across three floating cities.",
    "active": true,
    "total_sessions": 18,
    "created_at": "2026-02-11T19:04:22Z",
    "updated_at": "2026-10-12T21:40:05Z",
    "characters": [
      { "id": 7, "name": "Captain Marrow", "description": "Smuggler who owes the party a favour.", "character_type": "npc", "active": true },
      { "id": 3, "name": "Rook", "description": "Halfling rogue.", "character_type": "player", "active": true }
    ],
    "items": [
      { "id": 11, "name": "Skyglass Compass", "description": "Points to the nearest floating city.", "active": true }
    ],
    "locations": [
      { "id": 5, "name": "Veyl", "description": "The lowest of the three cities.", "active": true }
    ],
    "organizations": [
      { "id": 2, "name": "The Gilded Hand", "description": "Thieves' guild running Veyl's docks.", "active": true }
    ]
  }
}

The campaign fields are the same as in GET /v1/campaigns. Each list is sorted by name, and every entry has id, name, description (or null) and active. Characters also have character_type: player or npc. The lists aren’t paginated.

Not found

Status: 404 Not Found when the campaign doesn’t exist or belongs to a different Discord server than your API token authorises.

{ "error": "not_found", "message": "Resource not found." }

Last updated on