---
title: "Create Session"
method: POST
path: "/playground/sessions"
tags: ["playground"]
---

# Create Session

`POST /playground/sessions`

Seed the scenario, then generate and send the opener out of band.

## Request body

- PlaygroundSessionCreateRequest
  - `phone` string, required — Visitor's mobile number, any common US format
  - `scenario_key` string, required
  - `consent` boolean, required — Visitor ticked the SMS consent box

## Response `202`

Successful Response

- PlaygroundSessionResponse
  - `session_id` string, required
  - `status` string, required
  - `scenario_key` string, required
  - `lane` string
  - `expires_at` string, date-time, nullable
  - `message` string, required

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-09** `db50150bcca5` — 2 breaking, 1 info
  - the response property `expires_at` became optional for the status `202`
  - response property `expires_at` list-of-types was widened by adding types `null` to media type `application/json` of response `202`
  - added the optional property `lane` to the response with the `202` status

[Change history](https://skmtc.dev/noso/apis/crucible-backend-api/changes/playground/sessions/post.md)

---

[API](https://skmtc.dev/noso/apis/crucible-backend-api.md) · [All operations](https://skmtc.dev/noso/apis/crucible-backend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/noso/apis/crucible-backend-api/revisions/f2cac64213a3?raw)
