curl --request GET \
--url https://{subdomain}.conveyour.com/api/exports/public/{pid}const options = {method: 'GET'};
fetch('https://{subdomain}.conveyour.com/api/exports/public/{pid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET'};
fetch('https://{subdomain}.conveyour.com/api/exports/public/{pid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/exports/public/{pid}"
response = requests.get(url)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/exports/public/{pid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "ok",
"message": "Export status",
"data": {
"name": "Contacts Export",
"status": "ready",
"progress": 1,
"created_at": 1717027200,
"expires_at": 1717632000,
"is_expired": false
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}{
"status": "failed",
"message": "Contact not found",
"data": []
}Get export status by public ID
Public export status lookup by pid. No authentication required. Returns only non-sensitive fields, intended for a status-polling page.
None | Look up export status by public pid
This endpoint requires no authentication. Anyone who has the export pid can read its status — treat the pid as a secret and do not put it in logs, referrer-visible URLs, or client-side code you do not control.
curl --request GET \
--url https://{subdomain}.conveyour.com/api/exports/public/{pid}const options = {method: 'GET'};
fetch('https://{subdomain}.conveyour.com/api/exports/public/{pid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET'};
fetch('https://{subdomain}.conveyour.com/api/exports/public/{pid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/exports/public/{pid}"
response = requests.get(url)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/exports/public/{pid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "ok",
"message": "Export status",
"data": {
"name": "Contacts Export",
"status": "ready",
"progress": 1,
"created_at": 1717027200,
"expires_at": 1717632000,
"is_expired": false
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}{
"status": "failed",
"message": "Contact not found",
"data": []
}Path Parameters
The export's public pid (a 32-character random string).
Query Parameters
Team scope for the request, as one or more team ObjectIds. The brackets are required: PHP keeps only the last value for a repeated plain key, so teams=A&teams=B silently resolves to B alone. On requests with a JSON body you may send teams (no brackets) in the body instead.
Values that are not valid ObjectIds are silently ignored — a mistyped team ID behaves as if no team was sent. See the teams section of the API conventions guide.
Response
Success.
The common response envelope shared by all ConveYour endpoints.