ZS Styling TTS Caller

Outbound TTS calls via API · debug UI

Saved in localStorage · sent as Authorization: Bearer …

Default from server if blank

Pause after answer before TTS plays

(response)

Base URL: · Auth required on all /api/* routes except /api/health.

Authentication

Authorization: Bearer YOUR_API_KEY
# or
X-API-Key: YOUR_API_KEY

GET /api/health

No auth. Returns ARI status and defaults (playbackDelaySec, piperVoice).

GET /api/voices

List Piper voices from the voice service.

POST /api/calls

Create an immediate or scheduled outbound call.

{
  "phone": "8455551234",           // required, 10+ digits
  "text": "Your message",          // required, max 4000 chars
  "scheduleAt": "2026-06-29T14:00:00.000Z",  // optional ISO 8601
  "voice": "en_US-joe-medium",     // optional Piper voice
  "playbackDelaySec": 2,           // optional, 0–120, wait after answer
  "callerId": "16465275990",       // optional
  "callerName": "Caller"           // optional
}

Returns 201 with { ok, job }. Immediate calls start within ~5s.

GET /api/calls

Query: ?limit=100 (max 500), ?status=scheduled

GET /api/calls/:id

Get one job by UUID.

PATCH /api/calls/:id

Update a scheduled or queued job. Send any fields to change:

{
  "phone": "8455559999",
  "text": "Updated message",
  "scheduleAt": "2026-06-30T09:00:00.000Z",
  "voice": "en_US-lessac-medium",
  "playbackDelaySec": 3
}

Clear scheduleAt with null to run immediately when queued.

DELETE /api/calls/:id

Cancel a scheduled or queued job (sets status to cancelled).

Job statuses

Environment (.env)

Example: curl