Start contact export job
Enqueues a CSV export of contacts and returns immediately with a fileId — poll GET /v1/contacts/export-files/{fileId} for status and the download URL once it finishes. Either contactIds or exportAll: true with an optional filter is required. Example: {"fields":["sys:firstName","sys:email"],"exportAll":true,"filter":{"contactFilter":{...}}}.
curl --request POST \
--url https://app.chatbotx.io/api/v1/contacts/export \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fields": [
"<string>"
],
"contactIds": [
"<string>"
],
"exportAll": true,
"filter": {
"keyword": "<string>"
}
}
'import requests
url = "https://app.chatbotx.io/api/v1/contacts/export"
payload = {
"fields": ["<string>"],
"contactIds": ["<string>"],
"exportAll": True,
"filter": { "keyword": "<string>" }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fields: ['<string>'],
contactIds: ['<string>'],
exportAll: true,
filter: {keyword: '<string>'}
})
};
fetch('https://app.chatbotx.io/api/v1/contacts/export', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.chatbotx.io/api/v1/contacts/export",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fields' => [
'<string>'
],
'contactIds' => [
'<string>'
],
'exportAll' => true,
'filter' => [
'keyword' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.chatbotx.io/api/v1/contacts/export"
payload := strings.NewReader("{\n \"fields\": [\n \"<string>\"\n ],\n \"contactIds\": [\n \"<string>\"\n ],\n \"exportAll\": true,\n \"filter\": {\n \"keyword\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.chatbotx.io/api/v1/contacts/export")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fields\": [\n \"<string>\"\n ],\n \"contactIds\": [\n \"<string>\"\n ],\n \"exportAll\": true,\n \"filter\": {\n \"keyword\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.chatbotx.io/api/v1/contacts/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": [\n \"<string>\"\n ],\n \"contactIds\": [\n \"<string>\"\n ],\n \"exportAll\": true,\n \"filter\": {\n \"keyword\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"fileId": "<string>"
}{
"defined": true,
"code": "businessError",
"status": 400,
"message": "An error occurred while processing your request",
"data": "<unknown>"
}{
"defined": true,
"code": "UNAUTHORIZED",
"status": 401,
"message": "Authentication required",
"data": "<unknown>"
}{
"defined": true,
"code": "FORBIDDEN",
"status": 403,
"message": "You do not have permission to perform this action",
"data": "<unknown>"
}{
"defined": true,
"code": "invalidRequestData",
"status": 422,
"message": "Input validation failed",
"data": {
"issues": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}
}{
"defined": true,
"code": "tooManyRequests",
"status": 429,
"message": "Too many requests",
"data": "<unknown>"
}{
"defined": true,
"code": "INTERNAL_SERVER_ERROR",
"status": 500,
"message": "An unexpected error occurred",
"data": "<unknown>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Contact fields to include as CSV columns, e.g. sys:firstName, sys:email, or a custom field id.
1Specific contact ids to export. Required unless exportAll is true.
^\d+$Export every contact matching filter (or the whole workspace if omitted).
Narrows which contacts exportAll exports.
Show child attributes
Show child attributes
Response
OK
Export file id (numeric string). Poll contacts.getExportFile with it.
^\d+$Was this page helpful?
curl --request POST \
--url https://app.chatbotx.io/api/v1/contacts/export \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fields": [
"<string>"
],
"contactIds": [
"<string>"
],
"exportAll": true,
"filter": {
"keyword": "<string>"
}
}
'import requests
url = "https://app.chatbotx.io/api/v1/contacts/export"
payload = {
"fields": ["<string>"],
"contactIds": ["<string>"],
"exportAll": True,
"filter": { "keyword": "<string>" }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fields: ['<string>'],
contactIds: ['<string>'],
exportAll: true,
filter: {keyword: '<string>'}
})
};
fetch('https://app.chatbotx.io/api/v1/contacts/export', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.chatbotx.io/api/v1/contacts/export",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fields' => [
'<string>'
],
'contactIds' => [
'<string>'
],
'exportAll' => true,
'filter' => [
'keyword' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.chatbotx.io/api/v1/contacts/export"
payload := strings.NewReader("{\n \"fields\": [\n \"<string>\"\n ],\n \"contactIds\": [\n \"<string>\"\n ],\n \"exportAll\": true,\n \"filter\": {\n \"keyword\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.chatbotx.io/api/v1/contacts/export")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fields\": [\n \"<string>\"\n ],\n \"contactIds\": [\n \"<string>\"\n ],\n \"exportAll\": true,\n \"filter\": {\n \"keyword\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.chatbotx.io/api/v1/contacts/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": [\n \"<string>\"\n ],\n \"contactIds\": [\n \"<string>\"\n ],\n \"exportAll\": true,\n \"filter\": {\n \"keyword\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"fileId": "<string>"
}{
"defined": true,
"code": "businessError",
"status": 400,
"message": "An error occurred while processing your request",
"data": "<unknown>"
}{
"defined": true,
"code": "UNAUTHORIZED",
"status": 401,
"message": "Authentication required",
"data": "<unknown>"
}{
"defined": true,
"code": "FORBIDDEN",
"status": 403,
"message": "You do not have permission to perform this action",
"data": "<unknown>"
}{
"defined": true,
"code": "invalidRequestData",
"status": 422,
"message": "Input validation failed",
"data": {
"issues": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}
}{
"defined": true,
"code": "tooManyRequests",
"status": 429,
"message": "Too many requests",
"data": "<unknown>"
}{
"defined": true,
"code": "INTERNAL_SERVER_ERROR",
"status": 500,
"message": "An unexpected error occurred",
"data": "<unknown>"
}