List inquiries
GET/api/v1/inquiries
scope
inquiries:readPaginatedLists the account’s inquiries, newest first, with cursor pagination. Filter by status, topic, source or sender email, search the free text, or page through everything received since a timestamp.
Query parameters
| Name | Type | Description |
|---|---|---|
limitoptional | integer | Page size, 1–100Default: 20 |
cursoroptional | string | The `next_cursor` from the previous page |
statusoptional | string (enum) | Only inquiries in this statenewin_progressclosedspam |
topicoptional | string | Exact match on your own topic string |
sourceoptional | string | Exact match on the form name |
emailoptional | string | Exact sender email match, case-insensitive |
qoptional | string | Case-insensitive match on name, email, phone, company, topic or message |
created_sinceoptional | string (date-time) | Only inquiries created at or after this time |
updated_sinceoptional | string (date-time) | Only inquiries updated at or after this time |
Request
curl "https://your-crm.example.com/api/v1/inquiries?limit=20&status=new" \
-H "Authorization: Bearer $RAABTA_API_KEY"Response · 200 OK
{
"data": [
{
"id": "a3f1c2d4-5e6b-4f78-9a0b-1c2d3e4f5a6b",
"status": "new",
"topic": "Quote request",
"name": "Ayesha Khan",
"email": "ayesha@example.com",
"phone": "+971501234567",
"company": "Khan Trading LLC",
"message": "Do you cover Jumeirah? Looking for a quote for two units.",
"source": "Pricing page",
"source_path": "/pricing",
"metadata": {
"Budget": "AED 10,000–25,000",
"Preferred contact": "WhatsApp",
"Units": 2
},
"first_touched_at": null,
"created_at": "2026-09-02T10:05:00.000Z",
"updated_at": "2026-09-02T10:05:00.000Z"
}
],
"meta": {
"next_cursor": null,
"has_more": false,
"limit": 20
}
}Response
Wrapped in { data: [...], meta }| Name | Type | Description |
|---|---|---|
idrequired | string (uuid) | UUID |
statusrequired | string (enum) | Where the inquiry sits in triagenewin_progressclosedspam |
topicrequired | string | Your own category for the inquiry — free text, e.g. "Billing" |
namerequired | string | Who sent it |
emailrequired | string | null | Sender email, lowercased; null if the form collected only a phone |
phonerequired | string | null | Sender phone; null if the form collected only an email |
companyrequired | string | null | Sender company, when the form asks |
messagerequired | string | What they wrote |
sourcerequired | string | null | Which form this came from, e.g. "Pricing page" |
source_pathrequired | string | null | The page path the form was on |
metadatarequired | map<string, string | number | boolean | null> | Any additional form fields, verbatim — flat key/value pairs. Shown in the inbox and included in the CSV export. |
first_touched_atrequired | string (date-time) | null | When someone first acted on it; null while untouched |
created_atrequired | string (date-time) | ISO 8601 timestamp |
updated_atrequired | string (date-time) | ISO 8601 timestamp |
Errors
| Status | Code | When |
|---|---|---|
| 400 | bad_request | The request could not be parsed: malformed JSON, an invalid cursor, or a query parameter of the wrong shape. |
| 400 | validation_error | The body or query failed validation. `details` lists each failing field with a `path` and a `message`. |
| 401 | unauthorized | No usable API key: the Authorization header is missing or malformed, or the key is unknown, revoked or expired. The three are deliberately indistinguishable. |
| 403 | forbidden | The key is valid but lacks the scope this endpoint requires, or the request came from an address outside the key’s IP allowlist. The message says which. |
| 403 | account_suspended | The account this key belongs to is suspended. Rotating the key will not help; contact support. |
| 422 | unprocessable | The request was well-formed but cannot be carried out. `reason` is a stable string saying why (for example `outside_window` or `stage_not_in_pipeline`). |
| 429 | rate_limited | The per-key budget, or the per-IP budget for failed authentication, is exhausted. Honour `Retry-After` before retrying. |
| 500 | internal | Something failed on our side. Safe to retry with the same Idempotency-Key; quote `request_id` if it persists. |