curl --request GET \
--url https://{organization}.rescueconsole.com/api/people/persons/export \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{organization}.rescueconsole.com/api/people/persons/export', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/people/persons/export"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)"id,first_name,last_name,email,phone,roles,status,created_at\r\n6f1c2b0e-8d4a-4c1e-9b7a-2e5d1f3a9c10,Jordan,Ellis,jordan.ellis@example.com,2075550142,adopter; volunteer,active,2026-09-18T14:02:11.482Z"{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Export people as CSV
The people matching the same filters as the list, as a CSV file named people.csv, newest first, 5,000 at most. The columns are id, first_name, last_name, email, phone, roles (separated by semicolons), status and created_at. To filter on a custom field, send cf_ and its field key, such as cf_home_type=Apartment. A true-or-false field takes yes or no, a number field takes one exact number, and every other kind matches when its value contains what you send. List person filters shows which custom fields can be used; any other is refused. Needs read on People.
curl --request GET \
--url https://{organization}.rescueconsole.com/api/people/persons/export \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{organization}.rescueconsole.com/api/people/persons/export', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/people/persons/export"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)"id,first_name,last_name,email,phone,roles,status,created_at\r\n6f1c2b0e-8d4a-4c1e-9b7a-2e5d1f3a9c10,Jordan,Ellis,jordan.ellis@example.com,2075550142,adopter; volunteer,active,2026-09-18T14:02:11.482Z"{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Authorizations
An API key from Settings, API keys. It starts with rc_live_.
Query Parameters
People whose first name, last name or email contains this.
People who hold this role.
adopter, donor, volunteer, foster People with this status: active, inactive or archived. Any other value matches nobody.
People carrying this tag. Several tags separated by commas match a person carrying any of them.
The full name contains this.
The first name contains this.
The last name contains this.
The email address contains this.
The phone number contains these digits. Phone numbers are kept as digits only.
Added on or after this date or time.
Added on or before this. It is compared with the full time, so a bare date here means the very start of that day.
Last changed on or after this date or time.
Last changed on or before this. It is compared with the full time, so a bare date here means the very start of that day.
Response
The CSV file.
The response is of type string.