curl --request POST \
--url https://{organization}.rescueconsole.com/api/animals/applications/{id}/contract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"template_id": "e1d2c3b4-a596-4877-8a9b-0c1d2e3f4a5b",
"animal_ids": [
"0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f",
"1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a"
],
"fees": {
"1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a": {
"fee_cents": 0
}
},
"answers": {
"media_release": true,
"payment": {
"method": "card_link"
},
"approver_person_id": "5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"completed_where": {
"kind": "remote"
}
},
"adopted_on": "2026-09-18",
"signer_name": "Dana Whitfield",
"signer_email": "dana.whitfield@contoso.com",
"consent_acknowledged": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
template_id: 'e1d2c3b4-a596-4877-8a9b-0c1d2e3f4a5b',
animal_ids: ['0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f', '1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a'],
fees: {'1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a': {fee_cents: 0}},
answers: {
media_release: true,
payment: {method: 'card_link'},
approver_person_id: '5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a',
completed_where: {kind: 'remote'}
},
adopted_on: '2026-09-18',
signer_name: 'Dana Whitfield',
signer_email: 'dana.whitfield@contoso.com',
consent_acknowledged: true
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/applications/{id}/contract', 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}/contract"
payload = {
"template_id": "e1d2c3b4-a596-4877-8a9b-0c1d2e3f4a5b",
"animal_ids": ["0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f", "1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a"],
"fees": { "1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a": { "fee_cents": 0 } },
"answers": {
"media_release": True,
"payment": { "method": "card_link" },
"approver_person_id": "5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"completed_where": { "kind": "remote" }
},
"adopted_on": "2026-09-18",
"signer_name": "Dana Whitfield",
"signer_email": "dana.whitfield@contoso.com",
"consent_acknowledged": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"adoptions": [
{
"id": "<string>",
"animal_id": "<string>"
}
],
"signature": {
"id": "<string>",
"contract_name": "<string>",
"contract_version": "<string>",
"signer_name": "<string>",
"signed_at": "2023-11-07T05:31:56Z",
"entity_type": "adoption",
"entity_id": "<string>",
"is_voided": true,
"template_id": "<string>",
"contract_body": "<string>",
"contract_body_blocks": [
{
"type": "p",
"runs": [
{
"text": "<string>",
"bold": true,
"italic": true,
"underline": true,
"strike": true,
"href": "<string>"
}
],
"items": [
[
{
"text": "<string>",
"bold": true,
"italic": true,
"underline": true,
"strike": true,
"href": "<string>"
}
]
],
"level": 1,
"rows": [
[
[
{
"text": "<string>",
"bold": true,
"italic": true,
"underline": true,
"strike": true,
"href": "<string>"
}
]
]
],
"src": "<string>",
"alt": "<string>"
}
],
"signer_person_id": "<string>",
"signer_email": "<string>",
"consent_acknowledged": true,
"recorded_by_person_id": "<string>",
"media_release": 1,
"application_id": "<string>",
"adoption_ids": [
"<string>"
],
"approved_by_person_id": "<string>",
"approved_by_name": "<string>",
"completed_where_kind": "location",
"completed_where_id": "<string>",
"completed_where_label": "<string>",
"payment_method": "<string>",
"payment_instructions": "<string>",
"voided_at": "2023-11-07T05:31:56Z",
"voided_by_person_id": "<string>",
"void_reason": "<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)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Sign the adoption contract
Signs the adoption contract on an approved application, and records an adoption for each animal it names, as recording an adoption does: the fee, the animal’s status, the placement and the adopter role. One signature covers them all: it belongs to the first adoption and names every one in adoption_ids, and each adoption’s contract record is filled in with the adoption day. The template must be an active adoption contract offered for these animals, everything it asks must be answered, and no merge field may be left unfilled: a refusal names what is missing in missing_answers or unresolved_fields. The person who made the key is recorded as the team member who took the signature. If the adoptions are recorded and the signature cannot be saved, the answer is a 500 that lists the adoptions recorded; sign on the adoption instead of trying again. Needs write on Animals.
curl --request POST \
--url https://{organization}.rescueconsole.com/api/animals/applications/{id}/contract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"template_id": "e1d2c3b4-a596-4877-8a9b-0c1d2e3f4a5b",
"animal_ids": [
"0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f",
"1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a"
],
"fees": {
"1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a": {
"fee_cents": 0
}
},
"answers": {
"media_release": true,
"payment": {
"method": "card_link"
},
"approver_person_id": "5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"completed_where": {
"kind": "remote"
}
},
"adopted_on": "2026-09-18",
"signer_name": "Dana Whitfield",
"signer_email": "dana.whitfield@contoso.com",
"consent_acknowledged": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
template_id: 'e1d2c3b4-a596-4877-8a9b-0c1d2e3f4a5b',
animal_ids: ['0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f', '1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a'],
fees: {'1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a': {fee_cents: 0}},
answers: {
media_release: true,
payment: {method: 'card_link'},
approver_person_id: '5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a',
completed_where: {kind: 'remote'}
},
adopted_on: '2026-09-18',
signer_name: 'Dana Whitfield',
signer_email: 'dana.whitfield@contoso.com',
consent_acknowledged: true
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/applications/{id}/contract', 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}/contract"
payload = {
"template_id": "e1d2c3b4-a596-4877-8a9b-0c1d2e3f4a5b",
"animal_ids": ["0c9d8e7f-6a5b-4c3d-9e1f-0a9b8c7d6e5f", "1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a"],
"fees": { "1d0e9f8a-7b6c-4d5e-8f2a-1b0c9d8e7f6a": { "fee_cents": 0 } },
"answers": {
"media_release": True,
"payment": { "method": "card_link" },
"approver_person_id": "5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"completed_where": { "kind": "remote" }
},
"adopted_on": "2026-09-18",
"signer_name": "Dana Whitfield",
"signer_email": "dana.whitfield@contoso.com",
"consent_acknowledged": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"adoptions": [
{
"id": "<string>",
"animal_id": "<string>"
}
],
"signature": {
"id": "<string>",
"contract_name": "<string>",
"contract_version": "<string>",
"signer_name": "<string>",
"signed_at": "2023-11-07T05:31:56Z",
"entity_type": "adoption",
"entity_id": "<string>",
"is_voided": true,
"template_id": "<string>",
"contract_body": "<string>",
"contract_body_blocks": [
{
"type": "p",
"runs": [
{
"text": "<string>",
"bold": true,
"italic": true,
"underline": true,
"strike": true,
"href": "<string>"
}
],
"items": [
[
{
"text": "<string>",
"bold": true,
"italic": true,
"underline": true,
"strike": true,
"href": "<string>"
}
]
],
"level": 1,
"rows": [
[
[
{
"text": "<string>",
"bold": true,
"italic": true,
"underline": true,
"strike": true,
"href": "<string>"
}
]
]
],
"src": "<string>",
"alt": "<string>"
}
],
"signer_person_id": "<string>",
"signer_email": "<string>",
"consent_acknowledged": true,
"recorded_by_person_id": "<string>",
"media_release": 1,
"application_id": "<string>",
"adoption_ids": [
"<string>"
],
"approved_by_person_id": "<string>",
"approved_by_name": "<string>",
"completed_where_kind": "location",
"completed_where_id": "<string>",
"completed_where_label": "<string>",
"payment_method": "<string>",
"payment_instructions": "<string>",
"voided_at": "2023-11-07T05:31:56Z",
"voided_by_person_id": "<string>",
"void_reason": "<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)"
}{
"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
An active adoption contract, offered for these animals.
The animals going home, in the order the contract names them. They need not be the animals applied for, and none may already have an adoption that is not reversed.
1 - 10 elementsThe name the adopter typed. The typed name is the signature.
The adopter agreed to sign electronically. Must be true.
true By animal ID, a fee other than the usual: { "fee_cents": 0 } for another amount, or { "apply_discounts": false } for the adoption fee with no discounts. An animal left out goes home at its adoption fee less any of your discounts that apply.
Show child attributes
Show child attributes
The answers to what the template asks at signing. Answer what it asks; anything else is left out of the contract.
Show child attributes
Show child attributes
The adoption day, which {{date}} prints. Today unless you say.