Get a number's WhatsApp call settings
Returns the settings SautiKit last persisted (stored) plus a
best-effort LIVE read from Meta (live) and any Meta-imposed
restrictions.
The live read is best-effort by design: if it fails, the endpoint
still returns 200 with stored and puts the reason in
live_error rather than failing the whole request. Treat stored
as always present and live as a bonus.
Authorization
bearerAuth Long-lived ES256 JWT minted from the dashboard (https://app.sautikit.com/developers/api-keys). Signed by the
platform keyring. Carries workspace_id and scopes claims;
revoked via the platform deny-list.
In: header
Path Parameters
The tenant NUMBER id.
uuidResponse Body
application/json
application/json
curl -X GET "https://example.com/v1/numbers/497f6eca-6276-4993-bfeb-53cbbbba6f08/whatsapp/call-settings"{ "stored": { "status": "string", "call_icon_visibility": "string", "call_icons": { "restrict_to_user_countries": [ "KE", "US" ] }, "call_hours": { "status": "string", "timezone_id": "Africa/Nairobi", "weekly_operating_hours": [ { "day_of_week": "MONDAY", "open_time": "0800", "close_time": "1730" } ], "holiday_schedule": [ { "date": "2026-12-25", "start_time": "0900", "end_time": "1200" } ] }, "callback_permission_status": "string", "voicemail": { "status": "string", "triggers": [ "string" ], "announcement_media_id": 0, "timeout_seconds": 0 }, "audio_additional_codecs": [ "string" ] }, "live": { "status": "string", "call_icon_visibility": "string", "call_icons": { "restrict_to_user_countries": [ "KE", "US" ] }, "call_hours": { "status": "string", "timezone_id": "Africa/Nairobi", "weekly_operating_hours": [ { "day_of_week": "MONDAY", "open_time": "0800", "close_time": "1730" } ], "holiday_schedule": [ { "date": "2026-12-25", "start_time": "0900", "end_time": "1200" } ] }, "callback_permission_status": "string", "voicemail": { "status": "string", "triggers": [ "string" ], "announcement_media_id": 0, "timeout_seconds": 0 }, "audio_additional_codecs": [ "string" ] }, "restrictions": [ { "type": "string", "reason": "string", "expiration": 0 } ], "live_error": "string"}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ] }}Retry provisioning for a failed WhatsApp trunk POST
Resets a `failed` trunk to `pending` and re-runs provisioning against the existing row — no need to disconnect and reconnect the WhatsApp account. This is the recovery path for Meta error 138015 (WhatsApp Calling not yet available for the number until its WhatsApp account clears Meta's messaging-tier and business-verification gate): retry once the account is eligible. Only a `failed` trunk is retryable — retrying a `pending` one would stomp an in-flight saga, and an `active` one is already working.
Update a number's WhatsApp call settings PUT
Writes call hours, icon visibility, callback permission, and voicemail behaviour to Meta, then persists what was written. Synchronous — unlike enable/rotate, this returns `200` only after Meta has accepted the write. The write never includes `calling.sip`, so it cannot disturb the provisioned trunk.