Fundraising
Read fundraising hub settings
Returns canonical settings, normalized defaults, setup state and this user’s comparison default. Requires permission: one of donors_view.
GET
/
admin
/
fundraising
/
settings
Read fundraising hub settings
curl --request GET \
--url https://api.gratona.com/v1/admin/fundraising/settings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/fundraising/settings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/fundraising/settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gratona.com/v1/admin/fundraising/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/fundraising/settings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gratona.com/v1/admin/fundraising/settings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/fundraising/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"comparison": {
"default_mode": "Comparison.Default Mode",
"effective_default_mode": "Example"
},
"user_preferences": {
"comparison": {
"default_mode": "User Preferences.Comparison.Default Mode"
}
},
"caseload": {
"major_gift_threshold": 25,
"mid_level_threshold": 25,
"at_risk_months": 1,
"lapsed_months": 1,
"needs_contact_days": 1,
"new_donor_window_days": 1,
"upgrade_potential_threshold_pct": 25,
"giving_trend_threshold_pct": 25,
"minimum_gifts_for_trend": 1
},
"portfolio": {
"major_gift_threshold": 25,
"mid_level_threshold": 25,
"at_risk_months": 1,
"lapsed_months": 1,
"needs_contact_days": 1,
"new_donor_window_days": 1,
"upgrade_potential_threshold_pct": 25,
"giving_trend_threshold_pct": 25,
"minimum_gifts_for_trend": 1
},
"cohorts": {
"upgrade_threshold_pct": 25,
"downgrade_threshold_pct": 25,
"maintained_tolerance_pct": 25
},
"acknowledgements": {
"enabled": true,
"stewardship_start_date": "2026-10-20",
"initial_backfill_days": 0,
"pending_after_days": 1,
"auto_email_can_acknowledge_default": true,
"allowed_sources": [
"<unknown>"
],
"stewardship_configured": true,
"source": "donations_acknowledged_at"
},
"filters": {
"default_group_by_household": true
},
"planning": {
"strategy_review_days": 1,
"qualification_stall_days": 1,
"severely_overdue_days": 1,
"annual_review_reminder_days": 1,
"qualification_template_version": 1,
"default_period": "calendar_year"
},
"relationship_provisioning": {
"policy_version": 1,
"enabled": true,
"default_giving_scope": "attributed_only",
"relationship_type_mappings": [
{
"key": "donor_advised_fund",
"core_relationship_type": "Relationship Provisioning.Relationship Type Mappings.*.Core Relationship Type",
"vehicle_relationship_type": "Relationship Provisioning.Relationship Type Mappings.*.Vehicle Relationship Type",
"kind": "family_fund",
"decision": "auto_create"
}
]
},
"attribution": {
"policy_version": 1,
"soft_credit_types": {},
"relationship_follow_up": {
"enabled": true,
"due_days_after": 1,
"lookback_days": 1
},
"soft_credit_type_options": [
{
"key": "Example",
"name": "Example"
}
]
},
"reactivation": {
"allowed_actions": [
"<unknown>"
]
},
"interactions": {
"classification_version": 2,
"meaningful_channels": [
"Interactions.Meaningful Channels.*"
],
"meaningful_purposes": [
"Interactions.Meaningful Purposes.*"
],
"meaningful_outcomes": [
"completed"
],
"meaningful_directions": [
"inbound"
],
"meaningful_provider_purposes": [
"Interactions.Meaningful Provider Purposes.*"
],
"meaningful_keywords": [
"Interactions.Meaningful Keywords.*"
],
"meaningful_subject_markers": [
"meaningful"
],
"excluded_contact_purposes": [
"Interactions.Excluded Contact Purposes.*"
]
},
"suggestions": {
"enabled": true,
"playbook": "balanced",
"moments": {
"first_gift": "call",
"major_gift": "call",
"giving_anniversary": "call",
"reactivation": "call",
"sustainer_milestone": "call"
},
"scope": {
"dashboard": true,
"donor_record": true,
"work_queue": true,
"after_gift_entry": true
},
"guardrails": {
"touch_fatigue_cap_per_30_days": 1,
"respect_channel_consent": true,
"budget_aware_downgrade": true,
"channel_cooldown_days": 1
}
},
"digest": {
"enabled": true,
"frequency": "daily",
"weekday": "monday",
"recipients": [
"jane@example.org"
],
"include_anniversaries": true,
"include_unacknowledged_gifts": true,
"include_reactivation": true
},
"stewardship_setup": {
"required": true,
"today": "2026-10-20",
"timezone": "Example"
}
}
}{
"message": "Unauthorized",
"status": "error"
}Authorizations
bearerAuthapiKeyAuth
Passport bearer token authentication for legacy admin sessions.
⌘I
Read fundraising hub settings
curl --request GET \
--url https://api.gratona.com/v1/admin/fundraising/settings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/fundraising/settings"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/fundraising/settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gratona.com/v1/admin/fundraising/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/fundraising/settings"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gratona.com/v1/admin/fundraising/settings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/fundraising/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"comparison": {
"default_mode": "Comparison.Default Mode",
"effective_default_mode": "Example"
},
"user_preferences": {
"comparison": {
"default_mode": "User Preferences.Comparison.Default Mode"
}
},
"caseload": {
"major_gift_threshold": 25,
"mid_level_threshold": 25,
"at_risk_months": 1,
"lapsed_months": 1,
"needs_contact_days": 1,
"new_donor_window_days": 1,
"upgrade_potential_threshold_pct": 25,
"giving_trend_threshold_pct": 25,
"minimum_gifts_for_trend": 1
},
"portfolio": {
"major_gift_threshold": 25,
"mid_level_threshold": 25,
"at_risk_months": 1,
"lapsed_months": 1,
"needs_contact_days": 1,
"new_donor_window_days": 1,
"upgrade_potential_threshold_pct": 25,
"giving_trend_threshold_pct": 25,
"minimum_gifts_for_trend": 1
},
"cohorts": {
"upgrade_threshold_pct": 25,
"downgrade_threshold_pct": 25,
"maintained_tolerance_pct": 25
},
"acknowledgements": {
"enabled": true,
"stewardship_start_date": "2026-10-20",
"initial_backfill_days": 0,
"pending_after_days": 1,
"auto_email_can_acknowledge_default": true,
"allowed_sources": [
"<unknown>"
],
"stewardship_configured": true,
"source": "donations_acknowledged_at"
},
"filters": {
"default_group_by_household": true
},
"planning": {
"strategy_review_days": 1,
"qualification_stall_days": 1,
"severely_overdue_days": 1,
"annual_review_reminder_days": 1,
"qualification_template_version": 1,
"default_period": "calendar_year"
},
"relationship_provisioning": {
"policy_version": 1,
"enabled": true,
"default_giving_scope": "attributed_only",
"relationship_type_mappings": [
{
"key": "donor_advised_fund",
"core_relationship_type": "Relationship Provisioning.Relationship Type Mappings.*.Core Relationship Type",
"vehicle_relationship_type": "Relationship Provisioning.Relationship Type Mappings.*.Vehicle Relationship Type",
"kind": "family_fund",
"decision": "auto_create"
}
]
},
"attribution": {
"policy_version": 1,
"soft_credit_types": {},
"relationship_follow_up": {
"enabled": true,
"due_days_after": 1,
"lookback_days": 1
},
"soft_credit_type_options": [
{
"key": "Example",
"name": "Example"
}
]
},
"reactivation": {
"allowed_actions": [
"<unknown>"
]
},
"interactions": {
"classification_version": 2,
"meaningful_channels": [
"Interactions.Meaningful Channels.*"
],
"meaningful_purposes": [
"Interactions.Meaningful Purposes.*"
],
"meaningful_outcomes": [
"completed"
],
"meaningful_directions": [
"inbound"
],
"meaningful_provider_purposes": [
"Interactions.Meaningful Provider Purposes.*"
],
"meaningful_keywords": [
"Interactions.Meaningful Keywords.*"
],
"meaningful_subject_markers": [
"meaningful"
],
"excluded_contact_purposes": [
"Interactions.Excluded Contact Purposes.*"
]
},
"suggestions": {
"enabled": true,
"playbook": "balanced",
"moments": {
"first_gift": "call",
"major_gift": "call",
"giving_anniversary": "call",
"reactivation": "call",
"sustainer_milestone": "call"
},
"scope": {
"dashboard": true,
"donor_record": true,
"work_queue": true,
"after_gift_entry": true
},
"guardrails": {
"touch_fatigue_cap_per_30_days": 1,
"respect_channel_consent": true,
"budget_aware_downgrade": true,
"channel_cooldown_days": 1
}
},
"digest": {
"enabled": true,
"frequency": "daily",
"weekday": "monday",
"recipients": [
"jane@example.org"
],
"include_anniversaries": true,
"include_unacknowledged_gifts": true,
"include_reactivation": true
},
"stewardship_setup": {
"required": true,
"today": "2026-10-20",
"timezone": "Example"
}
}
}{
"message": "Unauthorized",
"status": "error"
}