Searches conversations in the current organization by matching message text. You can narrow results by status, assigned operator, and created-at date range. The search uses PostgreSQL full-text matching and also falls back to a case-insensitive content match. Pagination defaults to page 1 with 20 items per page, and the maximum page size is 100. Authenticate with an organization API key sent in `X-API-Key` or as a Bearer token and carrying the exact `search:read` scope. API-key access also requires the Automation & API module (`automation_api`). Authorized dashboard sessions remain supported where the route already permits them. The request is isolated to the authenticated organization. Resource and site/project identifiers must belong to that organization; out-of-scope identifiers are not disclosed. Pagination defaults to page 1 and 20 items, with a maximum page size of 100. Date filters are ISO 8601 instants and all filters are combined within the authenticated organization. Retry behavior: This read-only operation is safe to retry.
/api/search/conversationsOrganization API key supplied as Authorization: Bearer convor_sk_....
In: header
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"data": [
{
"id": "22222222-2222-4222-8222-222222222222",
"orgId": "11111111-1111-4111-8111-111111111111",
"visitorId": "33333333-3333-4333-8333-333333333333",
"assignedOperatorId": "44444444-4444-4444-8444-444444444444",
"status": "open",
"priority": "normal",
"resolvedBy": null,
"channel": "widget",
"aiActive": false,
"snoozedUntil": null,
"lastMessageAt": "2026-06-23T11:10:00.000Z",
"metadata": {},
"createdAt": "2026-06-23T10:55:00.000Z",
"updatedAt": "2026-06-23T11:10:00.000Z"
}
],
"pagination": {
"totalItems": 1,
"page": 1,
"pageSize": 20,
"hasNextPage": false,
"hasPrevPage": false
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}curl --request GET \
'https://api.convor.io/api/search/conversations?q=refund+request' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer convor_sk_...'const response = await fetch("https://api.convor.io/api/search/conversations?q=refund+request", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": "Bearer convor_sk_..."
},
});
const contentType = response.headers.get("content-type") ?? "";
const data = response.status === 204
? null
: contentType.includes("json")
? await response.json()
: contentType.startsWith("text/")
? await response.text()
: await response.blob();
if (!response.ok) {
const message = typeof data === "object" && data !== null
&& "error" in data && typeof data.error === "object"
&& data.error !== null && "message" in data.error
? String(data.error.message)
: "Convor API request failed (" + response.status + ")";
throw new Error(message);
}
console.log(data);Was this page helpful?
Search
Full-text search across conversations and messages
Search messages within a conversation
Searches messages inside one conversation in the current organization. The conversation must belong to the current organization before messages are searched. Results are ordered by text relevance and then by the newest matching message. Pagination defaults to page 1 with 50 items per page, and the maximum page size is 100. Authenticate with an organization API key sent in `X-API-Key` or as a Bearer token and carrying the exact `search:read` scope. API-key access also requires the Automation & API module (`automation_api`). Authorized dashboard sessions remain supported where the route already permits them. The request is isolated to the authenticated organization. Resource and site/project identifiers must belong to that organization; out-of-scope identifiers are not disclosed. `conversation_id` is required and must identify a conversation in the authenticated organization. Pagination defaults to page 1 and 50 items, with a maximum page size of 100. Retry behavior: This read-only operation is safe to retry.