Replace fee discounts
curl --request PUT \
--url https://{organization}.rescueconsole.com/api/animals/fee-schedules/discounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"discounts": [
{
"label": "Bonded pair",
"kind": "amount",
"value": 5000,
"conditions": {
"bonded_pair": true
}
},
{
"label": "December",
"kind": "percent",
"value": 20,
"starts_on": "2026-12-01",
"ends_on": "2026-12-31"
},
{
"label": "Senior cats",
"kind": "set",
"value": 0,
"conditions": {
"species": [
"cat"
],
"age_bands": [
"senior"
]
},
"notes": "Fee waived for senior cats."
}
]
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
discounts: [
{
label: 'Bonded pair',
kind: 'amount',
value: 5000,
conditions: {bonded_pair: true}
},
{
label: 'December',
kind: 'percent',
value: 20,
starts_on: '2026-12-01',
ends_on: '2026-12-31'
},
{
label: 'Senior cats',
kind: 'set',
value: 0,
conditions: {species: ['cat'], age_bands: ['senior']},
notes: 'Fee waived for senior cats.'
}
]
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/fee-schedules/discounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/fee-schedules/discounts"
payload = { "discounts": [
{
"label": "Bonded pair",
"kind": "amount",
"value": 5000,
"conditions": { "bonded_pair": True }
},
{
"label": "December",
"kind": "percent",
"value": 20,
"starts_on": "2026-12-01",
"ends_on": "2026-12-31"
},
{
"label": "Senior cats",
"kind": "set",
"value": 0,
"conditions": {
"species": ["cat"],
"age_bands": ["senior"]
},
"notes": "Fee waived for senior cats."
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"results": [
{
"id": "<string>",
"label": "<string>",
"kind": "percent",
"value": 123,
"conditions": {
"species": [
"<string>"
],
"age_bands": [
"<string>"
],
"traits": [
"<string>"
],
"min_days_in_care": 1,
"bonded_pair": true,
"min_animals": 3,
"min_fee_cents": 1,
"max_fee_cents": 1
},
"starts_on": "2023-12-25",
"ends_on": "2023-12-25",
"sort_order": 123,
"is_active": true,
"notes": "<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)"
}Adoption fee schedules
Replace fee discounts
Replaces every discount with what you send, in the order you send it, and every discount gets a new ID. A discount with no conditions and no dates would apply to every animal on every day and is refused: change the fee rules instead. At most 100 discounts. Needs admin on Animals.
PUT
/
api
/
animals
/
fee-schedules
/
discounts
Replace fee discounts
curl --request PUT \
--url https://{organization}.rescueconsole.com/api/animals/fee-schedules/discounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"discounts": [
{
"label": "Bonded pair",
"kind": "amount",
"value": 5000,
"conditions": {
"bonded_pair": true
}
},
{
"label": "December",
"kind": "percent",
"value": 20,
"starts_on": "2026-12-01",
"ends_on": "2026-12-31"
},
{
"label": "Senior cats",
"kind": "set",
"value": 0,
"conditions": {
"species": [
"cat"
],
"age_bands": [
"senior"
]
},
"notes": "Fee waived for senior cats."
}
]
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
discounts: [
{
label: 'Bonded pair',
kind: 'amount',
value: 5000,
conditions: {bonded_pair: true}
},
{
label: 'December',
kind: 'percent',
value: 20,
starts_on: '2026-12-01',
ends_on: '2026-12-31'
},
{
label: 'Senior cats',
kind: 'set',
value: 0,
conditions: {species: ['cat'], age_bands: ['senior']},
notes: 'Fee waived for senior cats.'
}
]
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/fee-schedules/discounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/fee-schedules/discounts"
payload = { "discounts": [
{
"label": "Bonded pair",
"kind": "amount",
"value": 5000,
"conditions": { "bonded_pair": True }
},
{
"label": "December",
"kind": "percent",
"value": 20,
"starts_on": "2026-12-01",
"ends_on": "2026-12-31"
},
{
"label": "Senior cats",
"kind": "set",
"value": 0,
"conditions": {
"species": ["cat"],
"age_bands": ["senior"]
},
"notes": "Fee waived for senior cats."
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"results": [
{
"id": "<string>",
"label": "<string>",
"kind": "percent",
"value": 123,
"conditions": {
"species": [
"<string>"
],
"age_bands": [
"<string>"
],
"traits": [
"<string>"
],
"min_days_in_care": 1,
"bonded_pair": true,
"min_animals": 3,
"min_fee_cents": 1,
"max_fee_cents": 1
},
"starts_on": "2023-12-25",
"ends_on": "2023-12-25",
"sort_order": 123,
"is_active": true,
"notes": "<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)"
}Authorizations
An API key from Settings, API keys. It starts with rc_live_.
Body
application/json
Every discount, in order. An empty list removes them all.
Maximum array length:
100Show child attributes
Show child attributes
Response
The discounts, as they now are.
Show child attributes
Show child attributes