Voice Assistant
Read assistant conversations, notes and appointments; start task calls (quote / collection) from the CRM; embed the live conversation screen into your own software. Integration key (bt_…, scope voicebot or autocall).
Endpoint: https://api.buluthat.com/api/voicebot_api.php?action=<işlem> — read GET, which changes POST. Parameters can be sent as query, form or a JSON body.
GETping · bots
GET https://api.buluthat.com/api/voicebot_api.php?action=bots
{ "ok": true, "data": [ { "id": 3, "name": "Teknik Servis Asistanı", "status": "active", "language": "tr" } ] }
GETsessions · session
Conversation list and a summary of a single conversation.
| Parameter | Description |
|---|---|
bot_id | Assistant filter |
from, to | Date range (Y-m-d) |
outcome | Result filter (resolved, transferred, note, appointment, failed …) |
caller | Caller number |
limit, offset | Pagination (at most 200) |
{ "ok": true, "data": [ {
"id": 8812, "bot_id": 3, "direction": "inbound", "caller_number": "05321234567",
"started_at": "2026-09-18 10:12:03", "duration_seconds": 84, "status": "ended",
"summary": "Arayan robot süpürgesinin servis durumunu sordu; parça bekleniyor bilgisi verildi.",
"intent": "servis_durumu", "sentiment_label": "notr", "outcome": "resolved"
} ] }
action=session&id=8812 returns a single record with tool calls and result fields; action=session_messages&id=8812 gives the full transcript (role, text, time).
GETnotes · POST note_done
Notes and callback requests taken by the assistant.
GET https://api.buluthat.com/api/voicebot_api.php?action=notes&status=new
POST https://api.buluthat.com/api/voicebot_api.php?action=note_done { "id": 512 }
Note types: note, callback, approval (price approval). note_done closes the note.
GETappointments · POST appointment_status
GET ?action=appointments&from=2026-09-18
POST ?action=appointment_status { "id": 77, "status": "done" } // booked | cancelled | done
GEThistory · memory
history the past conversations of a number across all assistants (the memory source), memory returns the memory text given to the assistant for that number — for the "why did the assistant say this" diagnosis.
GET ?action=history&phone=05321234567&limit=20
GET ?action=memory&phone=05321234567
POSTtask_start — task call
Makes the assistant call the customer right away: repair quote (quote) or a free-form task (brief). In a quote the floor price is protected; if the customer asks for less than the floor, the assistant gets manager approval ("I'll check with my manager and get back to you").
curl -X POST "https://api.buluthat.com/api/voicebot_api.php?action=task_start" \
-H "Authorization: Bearer bt_xxx" -H "Content-Type: application/json" \
-d '{
"bot_id": 3, "phone": "05321234567", "caller_id": "02124119610",
"kind": "quote", "customer_name": "Ayşe Yılmaz", "external_ref": "SERVIS-48211",
"title": "Robot süpürge onarım teklifi",
"brief": "Batarya değişimi gerekiyor. Cihaz garanti dışı. Teslim 3 iş günü.",
"offer_price": 3500, "floor_price": 2900, "currency": "TRY",
"payment_options": "online,havale",
"fields": { "cihaz": "Roborock S7", "takip_no": "7K2M9QX4AB" }
}'
| Field | Required | Description |
|---|---|---|
bot_id | yes | The assistant that will make the call |
phone | yes | Number to call |
kind | yes | quote (quote) or brief (free-form task) |
brief | yes | Context the assistant needs to know (diagnosis, conditions) |
offer_price, floor_price | for quote | Opening offer and the floor it can drop to; the floor is not told to the customer and is also enforced server-side |
payment_options | no | online,havale → the payment method is asked on acceptance |
caller_id, trunk_slug | no | Caller number and line (caller_ids / trunks is listed with) |
external_ref | no | ID of your own recording (tasks to find with) |
followup_of, decision, decision_note | no | Callback after the manager's decision: approved / counter / rejected |
Response: { "ok": true, "data": { "id": 91, "status": "calling", … }, "embed_url": "https://…/api/voicebot_embed.php?t=…" }
GETtask · tasks
GET ?action=task&id=91
GET ?action=tasks&external_ref=SERVIS-48211
Task statuses: calling → active → ended; failed (unreachable). Result fields: outcome (accepted, rejected, manager_approval, callback, not_reached), agreed_price, requested_price, payment_method, summary, callback_time.
GETembed_url — embed the live screen
Generates a time-limited, signed address for embedding the conversation's live/history messenger screen in your software via iframe; no panel session required.
GET ?action=embed_url&phone=05321234567&label=crm&ttl=43200
| Parameter | Description |
|---|---|
phone | The screen shows (and accepts commands for) only this number's conversations |
task_id / session_id | A specific task or conversation |
listener_extension | Extension to use for "Listen" |
ttl | Seconds (default 12 hours) |
to the iframe allow="microphone" give; the authorized person's whisper feature uses the browser's own speech recognition (Chrome/Edge).
GETfaq_suggestions
Question-answer suggestions mined from conversations (pending approval). Approval is given in the panel.
Connecting the assistant to your CRM
REST tools for the assistant to find / create records in your system are defined in the assistant form (URL, method, headers, parameters). A ready-made bridge exists for Byfix CRM; for your own CRM, endpoints to look up a customer by number and create a record are enough. Details: CRM Integration.
Webhook
When the conversation ends session_ended the event is sent (summary, result, tool calls). See Webhooks.
