Skip to main content
POST
Create encounter

Body

application/json

POST /v1/projects/{project_id}/encounters

description
string
required

Brief description of the encounter scenario

Required string length: 1 - 500
difficulty
string
default:medium

Encounter difficulty: easy | medium | hard | deadly

Pattern: ^(easy|medium|hard|deadly)$
party_level
integer
default:5

Average party level (1-20)

Required range: 1 <= x <= 20
party_size
integer
default:4

Number of players in the party

Required range: 1 <= x <= 10
game_system
string
default:dnd5e

Game system (e.g. dnd5e, pathfinder2e)

Maximum string length: 50
project_context
string | null

Project or setting description

Maximum string length: 50000
environment
string | null

Physical environment (e.g. dungeon, forest, city)

Maximum string length: 100
generate_token
boolean
default:false

When true, generate a top-down battle-map / token image via the configured image provider. Returns the URL on the EncounterResponse. Silently degrades to no image if no provider is configured or the prompt is blocked by content safety.

Response

Encounter created

Encounter resource representation.

encounter_id
string
required

Unique encounter identifier

description
string
required

Brief description of the encounter scenario

project_id
string
required

Project this encounter belongs to

external_id
string | null

Human-readable slug for the URL (/projects/<slug>/encounters/<external_id>). Derived from description at create time and immutable. May be null on rows that pre-date migration 102 backfill - frontend falls back to id. See docs/conventions/dashboard-slug-urls.md.

status
string
default:brainstorm

Lifecycle status: brainstorm | draft | final

difficulty
string
default:medium

Encounter difficulty level

session_id
string | null

Active generation session ID, if any

created_at
string<date-time> | null

ISO 8601 creation timestamp

token_url
string | null

URL of a generated battle-map / token image when generate_token=true was passed and image generation succeeded. Null otherwise.