Skip to content

HTTP API

All /api/* endpoints require X-RoomCall-Token when a token is configured.

Method Path Description
GET /api/status Version, speaker count, clip base URL
GET /api/speakers Discovered speakers with their room
GET /api/rooms Rooms and their speaker names
POST /api/refresh Re-run discovery
POST /api/talk?target=<room\|speaker\|all>&volume=0.4 Body: audio (audio/webm, audio/mp4, audio/ogg, audio/mpeg, audio/wav)
GET /clips/<id>.mp3 Clip download used by speakers (no token; ids are random and expire)

POST /api/talk

curl -X POST -H "Content-Type: audio/mpeg" --data-binary @hello.mp3 \
  "http://localhost:8765/api/talk?target=Kitchen"
{
  "target": "Kitchen",
  "ok": true,
  "clip": "http://192.168.1.20:8765/clips/Qm3k…mp3",
  "results": [
    {"speaker": "Kitchen Speaker", "ok": true, "elapsed_ms": 1180, "error": null},
    {"speaker": "Kitchen Hub", "ok": true, "elapsed_ms": 1544, "error": null}
  ]
}
Status Meaning
200 Every speaker accepted the clip
207 Some speakers failed — see results
404 No speaker matches target
422 The audio could not be converted

CLI

roomcall send Kitchen hello.mp3 --url http://localhost:8765