Create encounter
Create a TTRPG encounter record with difficulty, party info, and optional world context. The encounter starts in brainstorm status. Use /encounters/{encounter_id}/generate to generate content.
Body
POST /v1/projects/{project_id}/encounters
Brief description of the encounter scenario
1 - 500Encounter difficulty: easy | medium | hard | deadly
^(easy|medium|hard|deadly)$Average party level (1-20)
1 <= x <= 20Number of players in the party
1 <= x <= 10Game system (e.g. dnd5e, pathfinder2e)
50Project or setting description
50000Physical environment (e.g. dungeon, forest, city)
100When 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.
Unique encounter identifier
Brief description of the encounter scenario
Project this encounter belongs to
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.
Lifecycle status: brainstorm | draft | final
Encounter difficulty level
Active generation session ID, if any
ISO 8601 creation timestamp
URL of a generated battle-map / token image when generate_token=true was passed and image generation succeeded. Null otherwise.