Streams conversations from the current organization as CSV or JSON, including flattened message content for each conversation.
/api/export/conversationsStreams conversations from the current organization as CSV or JSON, including flattened message content for each conversation. The format query parameter defaults to json, and redact_pii defaults to false. date_from and date_to are independent ISO 8601 boundaries. redact_pii=true masks recognized email addresses and phone numbers in message text. Stream the response to storage instead of buffering large exports. Requests over the configured row limit fail before the response body begins.
Bearer API key or X-API-Key header.export:readautomation_api)Query parameter. Format. Allowed values: csv, json.
Query parameter. ISO 8601 date and time for date_from.
Query parameter. ISO 8601 date and time for date_to.
Query parameter. Whether to mask recognized personal data in exported text.
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
[
{
"id": "11111111-1111-4111-8111-111111111111",
"status": "open",
"visitorId": "22222222-2222-4222-8222-222222222222",
"createdAt": "2026-07-15T10:00:00.000Z",
"updatedAt": "2026-07-15T10:30:00.000Z",
"messageCount": 1,
"messages": "[visitor] I need a copy of my invoice"
}
]{
"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/export/conversations?format=csv' \
--header 'Accept: text/csv' \
--header 'Authorization: Bearer convor_sk_...'const response = await fetch("https://api.convor.io/api/export/conversations?format=csv", {
method: "GET",
headers: {
"Accept": "text/csv",
"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?