http://localhost:8000
GET /health
Response:
{"status": "ok", "service": "scenesim-api"}GET /scenarios
Response: ScenarioSummary[]
[
{
"id": "chf_pulmonary_edema_01",
"title": "CHF Exacerbation – Pulmonary Edema with Chest Pain",
"tags": ["medical", "cardiac", "respiratory"],
"difficulty": "intermediate"
}
]GET /scenarios/{scenario_id}
Response: ScenarioDefinition (full scenario JSON)
GET /protocols
Response: ProtocolSummary[]
GET /protocols/{county_id}
Response: CountyProtocolPack
POST /sessions
Request Body:
{
"scenario_id": "chf_pulmonary_edema_01",
"county_id": "demo_county",
"cert_level": "EMT-B",
"learner_id": "student-001",
"guardrail_level": "standard"
}Response: SessionCreateResponse
{
"session_id": "uuid",
"scenario_id": "chf_pulmonary_edema_01",
"dispatch_text": "Unit 42, respond to...",
"turn_count": 0
}GET /sessions/{session_id}
Response: Session (full session state)
POST /sessions/{session_id}/turns
Request Body:
{
"message_mode": "action",
"action_id": "bsi",
"user_text": null,
"metadata": {}
}Or for speech:
{
"message_mode": "speak",
"user_text": "Hello, what happened here?",
"action_id": null,
"metadata": {}
}Response: SimulationResponse
{
"turn_number": 1,
"role_messages": [...],
"state_updates": {},
"newly_revealed_findings": [],
"obtained_vitals": null,
"blocked_actions": [],
"guardrail_feedback": [],
"session_summary_snippet": "",
"is_complete": false
}POST /sessions/{session_id}/end
Request Body:
{"reason": "learner_ended"}Response: EndSessionResponse
{
"session_id": "uuid",
"is_complete": true,
"final_score": 15.0,
"message": "Session ended. Score: 75.0%"
}GET /sessions/{session_id}/report
Response: ReviewReport
{
"session_id": "uuid",
"scenario_id": "chf_pulmonary_edema_01",
"total_score": 15.0,
"max_possible": 20.0,
"percentage": 75.0,
"domain_scores": [...],
"critical_actions_hit": ["bsi", "scene_safe", ...],
"critical_actions_missed": ["radio_handoff"],
"contraindications_violated": [],
"debrief_text": "...",
"strengths": [],
"areas_for_improvement": []
}All errors return:
{"detail": "Error message"}| Status | Meaning |
|---|---|
| 400 | Bad request (e.g., session already complete) |
| 404 | Resource not found |
| 422 | Validation error |
| 500 | Internal server error |