Changelog
Every change to the RaabtaHQ public API, newest first: endpoints added, fields changed, behaviour fixed, and anything deprecated ahead of removal.
Review requests report their real channel
- fixed
A review request sent on personal WhatsApp, email or website chat now reports that channel and its `conversation_id`. It used to report `whatsapp` with no conversation, although the message was delivered. `channel` can therefore be any conversation channel.
Bookings, segments, reviews and business hours
Four parts of the product that had no API get one: put a customer in the diary from your own website, keep a contact list in step, ask for a review when a job is done, and read or set when the business is open.
- added
Bookings: list what can be booked and with whom, read the free slots, create a booking for an existing contact or one found by phone, reschedule or reassign it, move it forward, and cancel it. A booking is only accepted at a time the slots endpoint offers, so the API cannot book outside working hours.
- added
Segments: list, create, rename and delete saved contact lists, page through the contacts in one, and add or remove contacts. The id is what a broadcast audience or an assistant trigger takes as `segment_id`. Uses the existing contacts:read and contacts:write scopes.
- added
Reviews: send a contact a review request, follow it from sent to clicked to completed, and read the ratings and answers that came back, along with the forms and review platforms the account has set up.
- added
Business hours: read the account’s time zone, weekly hours and whether it is open now, and set them. A change applies at once to assistant schedules, website chat availability and broadcast send windows.
- added
Six scopes: bookings:read and bookings:write, reviews:read and reviews:send, account:read and account:write. In each pair the second implies the first.
- changed
The booking object in the booking.created, booking.cancelled and booking.completed webhook events gains `notes` and `updated_at`, and `source` can now be `api`. It is the same object GET /bookings/{id} returns.
- fixed
The OpenAPI document now lists every webhook event under its top-level `webhooks` key. The events were always delivered; the document had left them out.
AI assistants
The assistant layer joins the API: configure assistants, start runs and watch them, and answer the approvals they raise.
- added
Assistants, with their tool grants, schedule, channel bindings and delegation policy.
- added
Granting tools to an assistant, with `enabled` resolved against each tool’s catalogue default — so the answer is what the assistant can do, not merely what was overridden.
- added
The tool catalogue, and the instruction library assistants draw their standing guidance from.
- added
Memories — what an assistant has learned about the account, another assistant or one contact. Written on the natural key, so the same key twice updates rather than duplicates.
- added
Triggers: what wakes an assistant on a schedule, on a CRM event, or when another system calls in. Preview resolves the audience and spends nothing; firing starts runs and does.
- added
Runs. Starting one returns 202 with a queued run — poll it, or subscribe to assistant.run_completed. The event feed is the whole timeline: every tick, message, tool decision and handoff.
- added
Human approvals. A run that needs a decision parks until somebody answers or the timeout rule fires, and holds that conversation’s run slot while it waits.
- added
AI spend and the monthly budget, in billed figures that match the invoice.
- added
Seven scopes: assistants:read and :write, runs:read and :start, asks:read and :answer, and ai:usage. A run bound to a contact can reply on your channels, so runs:start says so in its description.
Inquiries
A website contact form can now post straight into the Raabta HQ inbox. Submissions land in Inquiries in the dashboard, notify the team, and fan out to any webhook endpoint subscribed to them.
- added
Inquiries: submit an inquiry from your own form backend, list and filter the inbox, read one, move it through triage, delete it, and list or add internal notes.
- added
Two scopes: inquiries:read and inquiries:write. As everywhere else, write implies read.
- added
Two webhook events: inquiry.created, delivered as the submission arrives, and inquiry.status_changed.
Public API v1
The first public release of the REST API: seven resources, cursor pagination on every list, Idempotency-Key on every create, and an OpenAPI 3.1 document generated from the same definitions these pages are.
- added
GET /me — identify a key, its account, and the scopes it can exercise.
- added
Contacts: list, create, get and update contacts; add and remove tags; set custom-field values; list and add notes; list tags, create tags and list custom-field definitions.
- GET
/api/v1/contacts - POST
/api/v1/contacts - GET
/api/v1/contacts/{id} - PATCH
/api/v1/contacts/{id} - POST
/api/v1/contacts/{id}/tags - DELETE
/api/v1/contacts/{id}/tags/{tag_id} - PUT
/api/v1/contacts/{id}/custom-fields - GET
/api/v1/contacts/{id}/notes - POST
/api/v1/contacts/{id}/notes - GET
/api/v1/tags - POST
/api/v1/tags - GET
/api/v1/custom-fields
- GET
- added
Conversations: list and get threads, list their messages, change status or assignment, mark read, hand over to a human, return to the assistant, and list team members.
- added
Messages: send a text, template or media message to a thread or a phone number, and read one message with its delivery status.
- added
Templates: list and get approved WhatsApp message templates.
- added
Broadcasts: create and send a template campaign, list and get campaigns, list per-recipient delivery, and cancel a scheduled one.
- added
Pipelines and deals: list pipelines with their stages; list, create, get, update, move, close, reopen and delete deals.
- added
Webhooks: register HTTPS endpoints, subscribe them to events, rotate a signing secret, send a test ping, and inspect or redeliver individual deliveries.
- GET
/api/v1/webhooks - POST
/api/v1/webhooks - GET
/api/v1/webhooks/{id} - PATCH
/api/v1/webhooks/{id} - DELETE
/api/v1/webhooks/{id} - POST
/api/v1/webhooks/{id}/rotate-secret - POST
/api/v1/webhooks/{id}/test - GET
/api/v1/webhooks/{id}/deliveries - GET
/api/v1/webhooks/{id}/deliveries/{delivery_id} - POST
/api/v1/webhooks/{id}/deliveries/{delivery_id}/redeliver
- GET
- added
The OpenAPI 3.1 document at /api/v1/openapi.json, generated from the endpoint registry.