Returns one conversation from the current organization, including the joined visitor record and computed dashboard fields such as unreadCount, tags, messageCount, and firstResponseTimeMs. Visitor callers can read only their own conversations. Missing conversations, cross-organization access, or history outside the caller's allowed window return an error. Authenticate with an organization API key sent in `X-API-Key` or as a Bearer token and carrying the exact `conversations: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. Visitor bearer callers can read only conversations owned by their authenticated visitor identity. Retry behavior: This read-only operation is safe to retry.
/api/conversations/{id}Organization 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
{
"id": "11111111-1111-4111-8111-111111111111",
"organizationId": "22222222-2222-4222-8222-222222222222",
"visitorId": "33333333-3333-4333-8333-333333333333",
"operatorId": null,
"status": "open",
"priority": "normal",
"source": "widget",
"aiEnabled": true,
"snoozedUntil": null,
"lastMessageAt": "2026-06-23T08:30:00.000Z",
"title": "Need help with billing",
"messageCount": 4,
"hasUnreadMessages": true,
"tags": [
"billing"
],
"customFields": {},
"language": null,
"aiSummary": null,
"aiSummaryGeneratedAt": null,
"aiClassification": null,
"metadata": {},
"version": 1,
"createdAt": "2026-06-23T08:00:00.000Z",
"updatedAt": "2026-06-23T08:30:00.000Z",
"visitor": {
"id": "33333333-3333-4333-8333-333333333333",
"identifier": "[email protected]",
"fingerprint": null,
"geoCountry": null,
"geoCity": null,
"totalSessions": 1,
"firstSeenAt": "2026-06-23T08:00:00.000Z",
"lastSeenAt": "2026-06-23T08:30:00.000Z",
"metadata": {}
},
"lastMessage": null,
"unreadCount": 0
}{
"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/conversations/11111111-1111-4111-8111-111111111111' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer convor_sk_...'const response = await fetch("https://api.convor.io/api/conversations/11111111-1111-4111-8111-111111111111", {
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?
Export conversation transcript as CSV or PDF
Exports one conversation transcript from the authenticated organization. `format` defaults to `csv`. Use `format=csv` for an immediate CSV file download. Use `format=pdf` to start an async background job; in that case the endpoint returns `202` with a polling `statusUrl` instead of the file itself. Large transcripts are capped at the first 5000 messages. The CSV export includes one flattened transcript field that concatenates the conversation messages in chronological order.
Get the assignment history timeline for a conversation
Returns assignment-related audit events for one conversation in chronological order. The timeline currently includes assignment and transfer events that were written to the audit log for the current organization. When no assignment events have been recorded yet, the response returns an empty `events` array. Authenticate with an organization API key sent in `X-API-Key` or as a Bearer token and carrying the exact `conversations: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. Retry behavior: This read-only operation is safe to retry.