curl --request POST \
--url https://{organization}.rescueconsole.com/api/animals/adoptions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"animal_id": "0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f",
"adopter_person_id": "b7e4c1d2-5a3f-4e8b-9c6d-1f2a3b4c5d6e",
"application_id": "8a7b6c5d-4e3f-4a1b-9c8d-7e6f5a4b3c2d",
"adopted_on": "2026-09-18"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
animal_id: '0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f',
adopter_person_id: 'b7e4c1d2-5a3f-4e8b-9c6d-1f2a3b4c5d6e',
application_id: '8a7b6c5d-4e3f-4a1b-9c8d-7e6f5a4b3c2d',
adopted_on: '2026-09-18'
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/adoptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/adoptions"
payload = {
"animal_id": "0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f",
"adopter_person_id": "b7e4c1d2-5a3f-4e8b-9c6d-1f2a3b4c5d6e",
"application_id": "8a7b6c5d-4e3f-4a1b-9c8d-7e6f5a4b3c2d",
"adopted_on": "2026-09-18"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"adoption": {
"id": "<string>",
"animal_id": "<string>",
"adopter_person_id": "<string>",
"status": "active",
"fee_cents": 123,
"adopted_on": "2023-12-25",
"amounts": {
"fee_cents": 123,
"paid_cents": 123,
"pending_cents": 123,
"balance_cents": 123,
"donation_cents": 123
},
"application_id": "<string>",
"list_fee_cents": 123,
"discounts": [
{
"id": "<string>",
"label": "<string>",
"kind": "percent",
"value": 123,
"amount_off_cents": 123,
"reason": "<string>"
}
],
"contract_signed_at": "<string>",
"contract_signed_by": "<string>",
"contract_version": "<string>",
"receipt_number": "<string>",
"finalized_at": "2023-11-07T05:31:56Z",
"donation_id": "<string>",
"reversed_at": "2023-11-07T05:31:56Z",
"reversal_reason": "<string>",
"notes": "<string>",
"is_open": true,
"is_finalized": true,
"is_reversed": true,
"animal_name": "<string>",
"animal_species": "<string>",
"adopter_first_name": "<string>",
"adopter_last_name": "<string>",
"adopter_name": "<string>",
"payments": [
{
"id": "<string>",
"adoption_id": "<string>",
"kind": "payment",
"amount_cents": 2,
"method": "cash",
"received_on": "2023-12-25",
"reference": "<string>",
"verified_at": "2023-11-07T05:31:56Z",
"verified_by_person_id": "<string>",
"voided_at": "2023-11-07T05:31:56Z",
"voided_by_person_id": "<string>",
"void_reason": "<string>",
"recorded_by_person_id": "<string>",
"notes": "<string>",
"gateway": "stripe",
"gateway_reference": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"animal": {
"id": "<string>",
"name": "<string>",
"species": "dog",
"breed": "<string>",
"status": "<string>",
"pet_id": "<string>"
},
"adopter": {
"id": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"display_name": "<string>",
"email": "<string>",
"phone": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"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)"
}Record an adoption
Records that an animal went home with a person already on file. The fee is fixed now: the fee you send, or the animal’s adoption fee less any of your discounts that apply, with the discounts recorded beside it. Recording it also sets the animal’s status to adopted with this person and day as its outcome, records the placement, and gives the person the adopter role. An animal can have only one adoption that is not reversed. To record adoptions from an approved application together with the signed contract, sign the adoption contract on the application instead. Needs write on Animals.
curl --request POST \
--url https://{organization}.rescueconsole.com/api/animals/adoptions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"animal_id": "0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f",
"adopter_person_id": "b7e4c1d2-5a3f-4e8b-9c6d-1f2a3b4c5d6e",
"application_id": "8a7b6c5d-4e3f-4a1b-9c8d-7e6f5a4b3c2d",
"adopted_on": "2026-09-18"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
animal_id: '0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f',
adopter_person_id: 'b7e4c1d2-5a3f-4e8b-9c6d-1f2a3b4c5d6e',
application_id: '8a7b6c5d-4e3f-4a1b-9c8d-7e6f5a4b3c2d',
adopted_on: '2026-09-18'
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/adoptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/adoptions"
payload = {
"animal_id": "0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f",
"adopter_person_id": "b7e4c1d2-5a3f-4e8b-9c6d-1f2a3b4c5d6e",
"application_id": "8a7b6c5d-4e3f-4a1b-9c8d-7e6f5a4b3c2d",
"adopted_on": "2026-09-18"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"adoption": {
"id": "<string>",
"animal_id": "<string>",
"adopter_person_id": "<string>",
"status": "active",
"fee_cents": 123,
"adopted_on": "2023-12-25",
"amounts": {
"fee_cents": 123,
"paid_cents": 123,
"pending_cents": 123,
"balance_cents": 123,
"donation_cents": 123
},
"application_id": "<string>",
"list_fee_cents": 123,
"discounts": [
{
"id": "<string>",
"label": "<string>",
"kind": "percent",
"value": 123,
"amount_off_cents": 123,
"reason": "<string>"
}
],
"contract_signed_at": "<string>",
"contract_signed_by": "<string>",
"contract_version": "<string>",
"receipt_number": "<string>",
"finalized_at": "2023-11-07T05:31:56Z",
"donation_id": "<string>",
"reversed_at": "2023-11-07T05:31:56Z",
"reversal_reason": "<string>",
"notes": "<string>",
"is_open": true,
"is_finalized": true,
"is_reversed": true,
"animal_name": "<string>",
"animal_species": "<string>",
"adopter_first_name": "<string>",
"adopter_last_name": "<string>",
"adopter_name": "<string>",
"payments": [
{
"id": "<string>",
"adoption_id": "<string>",
"kind": "payment",
"amount_cents": 2,
"method": "cash",
"received_on": "2023-12-25",
"reference": "<string>",
"verified_at": "2023-11-07T05:31:56Z",
"verified_by_person_id": "<string>",
"voided_at": "2023-11-07T05:31:56Z",
"voided_by_person_id": "<string>",
"void_reason": "<string>",
"recorded_by_person_id": "<string>",
"notes": "<string>",
"gateway": "stripe",
"gateway_reference": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"animal": {
"id": "<string>",
"name": "<string>",
"species": "dog",
"breed": "<string>",
"status": "<string>",
"pet_id": "<string>"
},
"adopter": {
"id": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"display_name": "<string>",
"email": "<string>",
"phone": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"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_.
Body
The animal's record ID.
The person adopting.
The application it came from. Leave it out for a walk-in adoption.
What the adopter owes, in whole cents. Without it, the animal's adoption fee is charged, less any of your discounts that apply.
x >= 0false charges the animal's adoption fee with no discounts. Ignored when you send fee_cents.
Today unless you say.
Response
The adoption, as it was recorded.
Show child attributes
Show child attributes