curl --request PATCH \
--url https://{organization}.rescueconsole.com/api/animals/applications/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"stage": "meet_scheduled",
"meet_scheduled_at": "2026-10-03T14:00",
"meet_location": "Contoso Animal Rescue adoption center",
"meet_with": [
"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a"
]
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
stage: 'meet_scheduled',
meet_scheduled_at: '2026-10-03T14:00',
meet_location: 'Contoso Animal Rescue adoption center',
meet_with: ['5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a']
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/applications/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/applications/{id}"
payload = {
"stage": "meet_scheduled",
"meet_scheduled_at": "2026-10-03T14:00",
"meet_location": "Contoso Animal Rescue adoption center",
"meet_with": ["5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"application": {
"id": "<string>",
"applicant_person_id": "<string>",
"status": "draft",
"is_open": true,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"co_applicant_name": "<string>",
"co_applicant_email": "<string>",
"co_applicant_phone": "<string>",
"housing_type": "house",
"housing_is_rented": true,
"landlord_name": "<string>",
"landlord_phone": "<string>",
"landlord_approves": true,
"has_fenced_yard": true,
"household_adults": 1,
"household_children": 1,
"youngest_child_age": 1,
"household_agrees": true,
"has_current_pets": true,
"current_pets": "<string>",
"has_previous_pets": true,
"previous_pets": "<string>",
"vet_name": "<string>",
"vet_phone": "<string>",
"hours_alone_per_day": 12,
"meet_scheduled_at": "<string>",
"meet_location": "<string>",
"meet_completed_at": "<string>",
"meet_notes": "<string>",
"decision_notes": "<string>",
"application_kind": "adoption",
"stage": "<string>",
"stage_label": "<string>",
"submitted_on": "2023-12-25",
"decided_on": "2023-12-25",
"decided_by_person_id": "<string>",
"decision_reason_code": "housing_unsuitable",
"held_at": "2023-11-07T05:31:56Z",
"hold_reason": "<string>",
"meet_with": [
{
"person_id": "<string>",
"name": "<string>"
}
],
"source_submission_id": "<string>",
"custom_fields": {},
"applicant_first_name": "<string>",
"applicant_last_name": "<string>",
"applicant_name": "<string>",
"applicant_email": "<string>",
"pet_count": 123,
"assignees": [
{
"person_id": "<string>",
"name": "<string>"
}
],
"pets": [
{
"animal_id": "<string>",
"rank": 123,
"id": "<string>",
"name": "<string>",
"species": "dog",
"status": "<string>",
"breed": "<string>"
}
]
}
}{
"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)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Change an application
Send only what changes. This is how an application moves between stages, is withdrawn, goes on or comes off hold, and has its meet and greet arranged. Approving and denying are a decision, not a change. An application that is approved, denied or withdrawn cannot be changed at all. Changing the meet and greet keeps the tasks of the people on it in step: a new date moves them, a completed meet closes them, and a cleared date or a name taken off removes the open ones. Needs write on Animals.
curl --request PATCH \
--url https://{organization}.rescueconsole.com/api/animals/applications/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"stage": "meet_scheduled",
"meet_scheduled_at": "2026-10-03T14:00",
"meet_location": "Contoso Animal Rescue adoption center",
"meet_with": [
"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a"
]
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
stage: 'meet_scheduled',
meet_scheduled_at: '2026-10-03T14:00',
meet_location: 'Contoso Animal Rescue adoption center',
meet_with: ['5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a']
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/applications/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/applications/{id}"
payload = {
"stage": "meet_scheduled",
"meet_scheduled_at": "2026-10-03T14:00",
"meet_location": "Contoso Animal Rescue adoption center",
"meet_with": ["5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"application": {
"id": "<string>",
"applicant_person_id": "<string>",
"status": "draft",
"is_open": true,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"co_applicant_name": "<string>",
"co_applicant_email": "<string>",
"co_applicant_phone": "<string>",
"housing_type": "house",
"housing_is_rented": true,
"landlord_name": "<string>",
"landlord_phone": "<string>",
"landlord_approves": true,
"has_fenced_yard": true,
"household_adults": 1,
"household_children": 1,
"youngest_child_age": 1,
"household_agrees": true,
"has_current_pets": true,
"current_pets": "<string>",
"has_previous_pets": true,
"previous_pets": "<string>",
"vet_name": "<string>",
"vet_phone": "<string>",
"hours_alone_per_day": 12,
"meet_scheduled_at": "<string>",
"meet_location": "<string>",
"meet_completed_at": "<string>",
"meet_notes": "<string>",
"decision_notes": "<string>",
"application_kind": "adoption",
"stage": "<string>",
"stage_label": "<string>",
"submitted_on": "2023-12-25",
"decided_on": "2023-12-25",
"decided_by_person_id": "<string>",
"decision_reason_code": "housing_unsuitable",
"held_at": "2023-11-07T05:31:56Z",
"hold_reason": "<string>",
"meet_with": [
{
"person_id": "<string>",
"name": "<string>"
}
],
"source_submission_id": "<string>",
"custom_fields": {},
"applicant_first_name": "<string>",
"applicant_last_name": "<string>",
"applicant_name": "<string>",
"applicant_email": "<string>",
"pet_count": 123,
"assignees": [
{
"person_id": "<string>",
"name": "<string>"
}
],
"pets": [
{
"animal_id": "<string>",
"rank": 123,
"id": "<string>",
"name": "<string>",
"species": "dog",
"status": "<string>",
"breed": "<string>"
}
]
}
}{
"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)"
}{
"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_.
Path Parameters
The application's ID.
Body
The answers on an application. Send only what changes. A yes or no answer is true, false, or null for not asked. Text is trimmed, and empty text is stored as null.
A second adult applying with them. Kept on the application, not as a person record.
house, apartment, condo, townhouse, mobile_home, farm, other, null Whether they rent their home.
Whether the landlord agrees. Null means nobody has asked the landlord yet, which is not the same as no.
How many adults live in the home.
x >= 0How many children live in the home.
x >= 0The age of the youngest child, in years.
x >= 0Whether everyone in the home agrees to the adoption.
Whether they have pets now.
The pets they have now, in their words.
Whether they have had pets before.
The pets they have had, in their words.
Their veterinarian.
How many hours a day the animal would be alone.
0 <= x <= 24When the meet and greet is: a date, or a date and time such as 2026-10-03T14:00.
Where the meet and greet is.
When the meet and greet took place.
How the meet and greet went.
Notes on the decision.
Moves the application by hand, and clears its stage. Send withdrawn when the applicant withdraws. To approve or deny, record a decision instead. Leaving draft sets the submitted date.
draft, submitted, under_review, meet_scheduled, withdrawn The key of one of your stages (Settings → Application stages) that is switched on and offered for this kind of application. Setting a stage sets the status it belongs to. Null clears the stage.
Puts the application on hold, and says why. Kept to its first 500 characters.
Send false to take the application off hold.
false The people the applicant meets at the meet and greet, as person IDs: any person on file, not only your team. Replaces the list. Each person on a scheduled meet is given a task for it.
10Your own application questions, by field key. Merged into the answers already there.
Response
The application, as it now is.
The answers on an application. Send only what changes. A yes or no answer is true, false, or null for not asked. Text is trimmed, and empty text is stored as null.
Show child attributes
Show child attributes