curl --request POST \
--url https://{organization}.rescueconsole.com/api/people/persons/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dry_run": true,
"rows": [
{
"first_name": "Jordan",
"last_name": "Ellis",
"email": "jordan.ellis@example.com",
"phone": "207-555-0142",
"phone_country": "1",
"roles": "adopter; volunteer"
},
{
"first_name": "Priya",
"last_name": "Natarajan",
"email": "priya.n@example.com",
"roles": "donor",
"status": "inactive"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dry_run: true,
rows: [
{
first_name: 'Jordan',
last_name: 'Ellis',
email: 'jordan.ellis@example.com',
phone: '207-555-0142',
phone_country: '1',
roles: 'adopter; volunteer'
},
{
first_name: 'Priya',
last_name: 'Natarajan',
email: 'priya.n@example.com',
roles: 'donor',
status: 'inactive'
}
]
})
};
fetch('https://{organization}.rescueconsole.com/api/people/persons/import', 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/import"
payload = {
"dry_run": True,
"rows": [
{
"first_name": "Jordan",
"last_name": "Ellis",
"email": "jordan.ellis@example.com",
"phone": "207-555-0142",
"phone_country": "1",
"roles": "adopter; volunteer"
},
{
"first_name": "Priya",
"last_name": "Natarajan",
"email": "priya.n@example.com",
"roles": "donor",
"status": "inactive"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"dry_run": true,
"total_rows": 123,
"would_create": 123,
"created": 123,
"skipped": [
{
"line": 123,
"email": "<string>",
"reason": "<string>"
}
],
"errors": [
{
"line": 123,
"message": "<string>"
}
],
"preview": [
{
"line": 123,
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"roles": [
"<string>"
],
"photos": 123
}
],
"import_id": "<string>",
"fetches": {
"photos": 123,
"attachments": 123
}
}{
"dry_run": true,
"total_rows": 123,
"would_create": 123,
"created": 123,
"skipped": [
{
"line": 123,
"email": "<string>",
"reason": "<string>"
}
],
"errors": [
{
"line": 123,
"message": "<string>"
}
],
"preview": [
{
"line": 123,
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"roles": [
"<string>"
],
"photos": 123
}
],
"import_id": "<string>",
"fetches": {
"photos": 123,
"attachments": 123
}
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Import people
Adds people from the rows of a spreadsheet you have read into JSON, 2,000 rows at most. Send dry_run: true first to see what would happen: the real run makes the same checks. The whole file is checked before anything is written, and if any row has an error nothing is written: a dry run answers 200 with the errors listed, a real run answers 400 with the same summary. A row whose email is already on a person, including a deleted one, is skipped and not updated. Line numbers count your header as line 1, so the first row you send is line 2. A row’s photo_url is fetched afterwards, a few at a time. Custom fields are not imported, and no workflow starts. Needs write on People.
curl --request POST \
--url https://{organization}.rescueconsole.com/api/people/persons/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dry_run": true,
"rows": [
{
"first_name": "Jordan",
"last_name": "Ellis",
"email": "jordan.ellis@example.com",
"phone": "207-555-0142",
"phone_country": "1",
"roles": "adopter; volunteer"
},
{
"first_name": "Priya",
"last_name": "Natarajan",
"email": "priya.n@example.com",
"roles": "donor",
"status": "inactive"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dry_run: true,
rows: [
{
first_name: 'Jordan',
last_name: 'Ellis',
email: 'jordan.ellis@example.com',
phone: '207-555-0142',
phone_country: '1',
roles: 'adopter; volunteer'
},
{
first_name: 'Priya',
last_name: 'Natarajan',
email: 'priya.n@example.com',
roles: 'donor',
status: 'inactive'
}
]
})
};
fetch('https://{organization}.rescueconsole.com/api/people/persons/import', 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/import"
payload = {
"dry_run": True,
"rows": [
{
"first_name": "Jordan",
"last_name": "Ellis",
"email": "jordan.ellis@example.com",
"phone": "207-555-0142",
"phone_country": "1",
"roles": "adopter; volunteer"
},
{
"first_name": "Priya",
"last_name": "Natarajan",
"email": "priya.n@example.com",
"roles": "donor",
"status": "inactive"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"dry_run": true,
"total_rows": 123,
"would_create": 123,
"created": 123,
"skipped": [
{
"line": 123,
"email": "<string>",
"reason": "<string>"
}
],
"errors": [
{
"line": 123,
"message": "<string>"
}
],
"preview": [
{
"line": 123,
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"roles": [
"<string>"
],
"photos": 123
}
],
"import_id": "<string>",
"fetches": {
"photos": 123,
"attachments": 123
}
}{
"dry_run": true,
"total_rows": 123,
"would_create": 123,
"created": 123,
"skipped": [
{
"line": 123,
"email": "<string>",
"reason": "<string>"
}
],
"errors": [
{
"line": 123,
"message": "<string>"
}
],
"preview": [
{
"line": 123,
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"roles": [
"<string>"
],
"photos": 123
}
],
"import_id": "<string>",
"fetches": {
"photos": 123,
"attachments": 123
}
}{
"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_.
Body
Response
What the import did, or would do on a dry run.
How many people the rows make.
How many people were made: 0 on a dry run or when there are errors.
Rows whose email is already on a person.
Show child attributes
Show child attributes
What is wrong, by line. Any error means nothing is written.
Show child attributes
Show child attributes
The first 10 people the rows make.
Show child attributes
Show child attributes
How many links are to be fetched.
Show child attributes
Show child attributes