Beats API
CRUD for beats within draft scenes.
GET /scenes/:sceneId/beats
// 200
{
"beats": [
{
"id": "uuid",
"sequence": 1,
"channelId": "uuid",
"content": { "body": "Hello" },
"toneWarmth": "warm",
"toneUrgency": "none",
"toneAsk": "implicit",
"timingMode": "absolute",
"targetTime": "2025-01-15T08:00:00Z",
"status": "pending",
"firedAt": null,
"driftMs": null
}
]
}POST /scenes/:sceneId/beats
Draft scenes only.
| Field | Type | Values |
|---|---|---|
sequence | integer | Positive integer |
channel_id | UUID | Existing channel |
content | object | Freeform JSON |
tone.warmth | string | cool, warm, familiar, intimate |
tone.urgency | string | none, gentle, present, pressing |
tone.ask | string | none, implicit, soft, direct |
timing.mode | string | absolute, relative, conditional |
Optional: tolerance, window, prerequisites, fallback, sensors_config
// 201
{
"beat": { "id": "uuid", "sequence": 2 }
}PATCH /scenes/:sceneId/beats/:beatId
Draft scenes only. All fields optional.
// 200
{
"beat": { "id": "uuid" }
}DELETE /scenes/:sceneId/beats/:beatId
Draft scenes only. Returns 204.