curl --request POST \
--url https://{organization}.rescueconsole.com/api/fundraising/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Winter kennel appeal",
"slug": "winter-kennel-appeal",
"description": "Heated kennels for the outdoor run before the first frost.",
"goal_amount_cents": 1500000,
"status": "active",
"start_date": "2026-11-01",
"end_date": "2027-01-31"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Winter kennel appeal',
slug: 'winter-kennel-appeal',
description: 'Heated kennels for the outdoor run before the first frost.',
goal_amount_cents: 1500000,
status: 'active',
start_date: '2026-11-01',
end_date: '2027-01-31'
})
};
fetch('https://{organization}.rescueconsole.com/api/fundraising/campaigns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/fundraising/campaigns"
payload = {
"name": "Winter kennel appeal",
"slug": "winter-kennel-appeal",
"description": "Heated kennels for the outdoor run before the first frost.",
"goal_amount_cents": 1500000,
"status": "active",
"start_date": "2026-11-01",
"end_date": "2027-01-31"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"name": "<string>",
"goal_amount_cents": 1,
"status": "draft",
"id": "<string>",
"total_raised_cents": 123,
"donation_count": 123,
"donor_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"slug": "<string>",
"description": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"metadata": {},
"custom_fields": {},
"tenant_id": "<string>",
"progress_percent": 123
}{
"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)"
}Create a campaign
Creates a campaign. Only the name is required. A campaign starts as a draft unless you give a status. Any of your campaign custom fields marked required must be sent. Needs write on Fundraising.
curl --request POST \
--url https://{organization}.rescueconsole.com/api/fundraising/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Winter kennel appeal",
"slug": "winter-kennel-appeal",
"description": "Heated kennels for the outdoor run before the first frost.",
"goal_amount_cents": 1500000,
"status": "active",
"start_date": "2026-11-01",
"end_date": "2027-01-31"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Winter kennel appeal',
slug: 'winter-kennel-appeal',
description: 'Heated kennels for the outdoor run before the first frost.',
goal_amount_cents: 1500000,
status: 'active',
start_date: '2026-11-01',
end_date: '2027-01-31'
})
};
fetch('https://{organization}.rescueconsole.com/api/fundraising/campaigns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/fundraising/campaigns"
payload = {
"name": "Winter kennel appeal",
"slug": "winter-kennel-appeal",
"description": "Heated kennels for the outdoor run before the first frost.",
"goal_amount_cents": 1500000,
"status": "active",
"start_date": "2026-11-01",
"end_date": "2027-01-31"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"name": "<string>",
"goal_amount_cents": 1,
"status": "draft",
"id": "<string>",
"total_raised_cents": 123,
"donation_count": 123,
"donor_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"slug": "<string>",
"description": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"metadata": {},
"custom_fields": {},
"tenant_id": "<string>",
"progress_percent": 123
}{
"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
Cannot be blank.
A short name for the campaign's address. No two of your campaigns may share one.
The goal, in whole cents.
x >= 0draft, active, paused, completed, archived Anything else you want to keep with the campaign, as keys and values.
Values for your own campaign fields, by field key. A key that is not one of your fields is refused.
Response
The campaign, as it was created.
Cannot be blank.
The goal, in whole cents: 1500000 is $15,000.00. 0 means no goal.
x >= 0draft, active, paused, completed, archived The sum of the completed gifts given to this campaign, in whole cents.
How many completed gifts.
How many different people gave them.
A short name for the campaign's address. No two of your campaigns may share one.
Anything else you want to keep with the campaign, as keys and values.
Values for your own campaign fields, by field key. A key that is not one of your fields is refused.
Your organization's ID.
What has been raised as a percentage of the goal, rounded. It can pass 100. Null when there is no goal.