curl --request POST \
--url https://prod-api.raisedonors.com/api/Gift/query \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"filter": "<string>",
"skip": 123,
"take": 123,
"sortBy": "createdate",
"descending": true,
"includeDetails": true,
"groups": [
{
"conditions": [
{
"parameter": "<string>",
"value": "<string>",
"secondaryValue": "<string>",
"values": [
"<string>"
]
}
]
}
],
"selectedColumns": [
"<string>"
]
}
'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filter: '<string>',
skip: 123,
take: 123,
sortBy: 'createdate',
descending: true,
includeDetails: true,
groups: [
{
conditions: [
{
parameter: '<string>',
value: '<string>',
secondaryValue: '<string>',
values: ['<string>']
}
]
}
],
selectedColumns: ['<string>']
})
};
fetch('https://prod-api.raisedonors.com/api/Gift/query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://prod-api.raisedonors.com/api/Gift/query"
payload = {
"filter": "<string>",
"skip": 123,
"take": 123,
"sortBy": "createdate",
"descending": True,
"includeDetails": True,
"groups": [{ "conditions": [
{
"parameter": "<string>",
"value": "<string>",
"secondaryValue": "<string>",
"values": ["<string>"]
}
] }],
"selectedColumns": ["<string>"]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://prod-api.raisedonors.com/api/Gift/query");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
request.AddJsonBody("{\n \"filter\": \"<string>\",\n \"skip\": 123,\n \"take\": 123,\n \"sortBy\": \"createdate\",\n \"descending\": true,\n \"includeDetails\": true,\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"<string>\",\n \"value\": \"<string>\",\n \"secondaryValue\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"selectedColumns\": [\n \"<string>\"\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod-api.raisedonors.com/api/Gift/query",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filter' => '<string>',
'skip' => 123,
'take' => 123,
'sortBy' => 'createdate',
'descending' => true,
'includeDetails' => true,
'groups' => [
[
'conditions' => [
[
'parameter' => '<string>',
'value' => '<string>',
'secondaryValue' => '<string>',
'values' => [
'<string>'
]
]
]
]
],
'selectedColumns' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://prod-api.raisedonors.com/api/Gift/query")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"filter\": \"<string>\",\n \"skip\": 123,\n \"take\": 123,\n \"sortBy\": \"createdate\",\n \"descending\": true,\n \"includeDetails\": true,\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"<string>\",\n \"value\": \"<string>\",\n \"secondaryValue\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"selectedColumns\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod-api.raisedonors.com/api/Gift/query")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter\": \"<string>\",\n \"skip\": 123,\n \"take\": 123,\n \"sortBy\": \"createdate\",\n \"descending\": true,\n \"includeDetails\": true,\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"<string>\",\n \"value\": \"<string>\",\n \"secondaryValue\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"selectedColumns\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://prod-api.raisedonors.com/api/Gift/query';
const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filter: '<string>',
skip: 123,
take: 123,
sortBy: 'createdate',
descending: true,
includeDetails: true,
groups: [
{
conditions: [
{
parameter: '<string>',
value: '<string>',
secondaryValue: '<string>',
values: ['<string>']
}
]
}
],
selectedColumns: ['<string>']
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"items": [
{
"id": 602401,
"currency": "USD",
"amount": 50,
"formattedAmount": "$50.00",
"date": "2025-11-15T03:00:00",
"createdDate": "2025-11-15T03:00:00",
"modifiedDate": "2025-11-15T03:00:02",
"statusText": "Settled",
"gateway": "Riverside Hope — Stripe",
"transactionId": "ch_3QU4d1Hs1Yb4Lm2A",
"donationId": "RD-602401",
"paymentInfo": "Visa •••• 4242",
"paymentType": "Credit Card",
"campaignName": "Monthly Giving Society",
"donorId": 200456,
"billingName": "Priya Sharma",
"recurringGiftId": 700089,
"canRefund": true,
"donorPaidCosts": false,
"projects": [
{
"projectId": 3010,
"name": "General Operating Support",
"amount": "$50.00",
"currencyExchange": null
}
],
"recurringScheduleInfo": {
"amount": "$50.00",
"currencyCode": "USD",
"frequency": "Monthly",
"statusText": "Active",
"successfulCycles": 34,
"startDate": "2023-02-15",
"nextCharge": "2025-12-15",
"currentCharge": "2025-11-15",
"previousCharge": "2025-10-15"
},
"isAnonymous": false,
"isTestMode": false
},
{
"id": 602347,
"currency": "USD",
"amount": 250,
"formattedAmount": "$250.00",
"date": "2025-11-12T12:42:11",
"createdDate": "2025-11-12T12:42:11",
"modifiedDate": "2025-11-12T12:42:14",
"statusText": "Settled",
"gateway": "Riverside Hope — Stripe",
"authorizationNumber": "AUTH210983",
"transactionId": "ch_3QT1p8Hs1Yb4Lm0Z",
"donationId": "RD-602347",
"paymentInfo": "Mastercard •••• 1234",
"paymentType": "Credit Card",
"segment": "GT25-SOCIAL",
"campaignName": "Giving Tuesday 2025",
"segmentName": "Giving Tuesday Social",
"donorId": 202999,
"billingName": "Anonymous",
"recurringGiftId": null,
"giftAidRequested": false,
"canRefund": true,
"donorPaidCosts": false,
"submissionUrl": "https://riversidehope.example.org/give/giving-tuesday-2025",
"projects": [
{
"projectId": 3014,
"name": "Giving Tuesday 2025",
"amount": "$250.00",
"currencyExchange": null
}
],
"form": {
"id": 305,
"title": "Giving Tuesday 2025 Form",
"landingUrl": "https://riversidehope.example.org/give/giving-tuesday-2025",
"referringUrl": "https://www.riversidehope.example.org/giving-tuesday",
"isLegacy": false
},
"isAnonymous": true,
"isTestMode": false
},
{
"id": 602198,
"currency": "USD",
"amount": 1000,
"formattedAmount": "$1,000.00",
"date": "2025-10-12T11:04:37",
"createdDate": "2025-10-12T11:04:37",
"modifiedDate": "2025-10-12T11:04:41",
"statusText": "Settled",
"gateway": "Riverside Hope — Stripe",
"authorizationNumber": "AUTH204417",
"transactionId": "ch_3QK7f2Hs1Yb4Lm0T",
"donationId": "RD-602198",
"paymentInfo": "Visa •••• 4111",
"paymentType": "Credit Card",
"segment": "YE25-EMAIL",
"motivation": "YE25-EMAIL",
"campaignName": "Year-End Giving 2025",
"segmentName": "Year-End Email",
"notes": "Board member gift; acknowledge by letter.",
"comment": "Happy to support the holiday meals program again this year.",
"donorId": 200234,
"billingName": "Marcus Castellano",
"shippingName": null,
"recurringGiftId": null,
"giftAidRequested": false,
"canRefund": true,
"donorPaidCosts": true,
"paymentProviderTransactionUrl": "https://dashboard.stripe.com/payments/ch_3QK7f2Hs1Yb4Lm0T",
"submissionUrl": "https://riversidehope.example.org/give/year-end-appeal",
"billingAddress": {
"id": 400101,
"donorId": 200234,
"isPrimary": true,
"address1": "219 Oak Hill Drive",
"address2": null,
"city": "Springfield",
"state": "OR",
"postal": "97478",
"countryString": "United States",
"addressTypeDisplay": "Home"
},
"shippingAddress": null,
"projects": [
{
"projectId": 3012,
"name": "Year-End 2025 — Holiday Meals",
"amount": "$1,000.00",
"currencyExchange": null
}
],
"form": {
"id": 306,
"title": "Year-End Appeal Form",
"landingUrl": "https://riversidehope.example.org/give/year-end-appeal",
"referringUrl": "https://www.riversidehope.example.org/year-end",
"isLegacy": false
},
"donorStatistic": {
"totalGift": "47",
"totalGiftAmount": "$42,500.00",
"lastGiftAmount": "$1,000.00"
},
"recurringScheduleInfo": null,
"tribute": null,
"donor": {
"id": 200234,
"name": "Marcus Castellano",
"title": "Mr.",
"firstName": "Marcus",
"middleName": "David",
"lastName": "Castellano",
"suffix": null,
"email": "marcus.castellano@example.org",
"phone": "(555) 012-3401",
"createdDate": "2018-09-15T14:22:31Z",
"modifiedDate": "2025-10-12T09:15:42Z",
"notes": "Board member. Prefers email for receipts and annual reports.",
"isOrganization": false,
"organizationName": null,
"crmKeyUrls": {
"VirtuousCRM": {
"crmKey": "100234",
"url": "https://app.virtuoussoftware.com/Generosity/Contact/Detail/100234"
}
},
"crmKey": "100234",
"crmSecondKey": null,
"isTestMode": false,
"isArchived": false,
"isGDPRDeleted": false,
"primaryAddress": {
"id": 400101,
"donorId": 200234,
"isPrimary": true,
"address1": "219 Oak Hill Drive",
"address2": null,
"city": "Springfield",
"state": "OR",
"postal": "97478",
"countryString": "United States",
"addressTypeDisplay": "Home"
},
"donorAddresses": [
{
"id": 400101,
"donorId": 200234,
"isPrimary": true,
"address1": "219 Oak Hill Drive",
"address2": null,
"city": "Springfield",
"state": "OR",
"postal": "97478",
"countryString": "United States",
"addressTypeDisplay": "Home"
}
],
"donorEmailAddresses": [
{
"id": 300101,
"donorId": 200234,
"typeDisplay": "Home Email",
"value": "marcus.castellano@example.org",
"secondaryValue": null,
"isPrimary": true,
"isOptedIn": true,
"isValid": true,
"isEmail": true,
"isPhone": false,
"isBounced": false,
"countryCode": null
}
],
"donorPhoneNumbers": [
{
"id": 300102,
"donorId": 200234,
"typeDisplay": "Mobile Phone",
"value": "(555) 012-3401",
"secondaryValue": null,
"isPrimary": true,
"isOptedIn": true,
"isValid": true,
"isEmail": false,
"isPhone": true,
"isBounced": false,
"countryCode": "1"
},
{
"id": 300103,
"donorId": 200234,
"typeDisplay": "Home Phone",
"value": "(555) 012-3400",
"secondaryValue": null,
"isPrimary": false,
"isOptedIn": true,
"isValid": true,
"isEmail": false,
"isPhone": true,
"isBounced": false,
"countryCode": "1"
}
]
},
"isAnonymous": false,
"isTestMode": false,
"virtualTerminalId": null,
"virtualTerminal": null,
"googleUtmCampaign": "year-end-2025",
"googleUtmMedium": "email",
"googleUtmSource": "newsletter",
"motivationCodeGroupId": 720,
"motivationCodeGroupName": "Year-End 2025 Appeals",
"motivationCodeId": 6120,
"motivationCodeName": "Year-End Email Appeal",
"currencyExchange": null
}
],
"total": 3106
}{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"groups[0].conditions[0].parameter": [
"'donorEmail' is not a valid parameter for this query type. Call Get Query Options for the parameters this query type supports."
]
},
"instance": "/api/Gift/query"
}{
"type": "https://tools.ietf.org/html/rfc7235#section-3.1",
"title": "Unauthorized",
"status": 401,
"detail": "The Authorization header is missing, malformed, or carries a token that is expired or revoked.",
"instance": "/api/Gift/query"
}Query Gifts
Searches gifts with the query builder and returns a paginated list of matches.
curl --request POST \
--url https://prod-api.raisedonors.com/api/Gift/query \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"filter": "<string>",
"skip": 123,
"take": 123,
"sortBy": "createdate",
"descending": true,
"includeDetails": true,
"groups": [
{
"conditions": [
{
"parameter": "<string>",
"value": "<string>",
"secondaryValue": "<string>",
"values": [
"<string>"
]
}
]
}
],
"selectedColumns": [
"<string>"
]
}
'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filter: '<string>',
skip: 123,
take: 123,
sortBy: 'createdate',
descending: true,
includeDetails: true,
groups: [
{
conditions: [
{
parameter: '<string>',
value: '<string>',
secondaryValue: '<string>',
values: ['<string>']
}
]
}
],
selectedColumns: ['<string>']
})
};
fetch('https://prod-api.raisedonors.com/api/Gift/query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://prod-api.raisedonors.com/api/Gift/query"
payload = {
"filter": "<string>",
"skip": 123,
"take": 123,
"sortBy": "createdate",
"descending": True,
"includeDetails": True,
"groups": [{ "conditions": [
{
"parameter": "<string>",
"value": "<string>",
"secondaryValue": "<string>",
"values": ["<string>"]
}
] }],
"selectedColumns": ["<string>"]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://prod-api.raisedonors.com/api/Gift/query");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
request.AddJsonBody("{\n \"filter\": \"<string>\",\n \"skip\": 123,\n \"take\": 123,\n \"sortBy\": \"createdate\",\n \"descending\": true,\n \"includeDetails\": true,\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"<string>\",\n \"value\": \"<string>\",\n \"secondaryValue\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"selectedColumns\": [\n \"<string>\"\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod-api.raisedonors.com/api/Gift/query",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filter' => '<string>',
'skip' => 123,
'take' => 123,
'sortBy' => 'createdate',
'descending' => true,
'includeDetails' => true,
'groups' => [
[
'conditions' => [
[
'parameter' => '<string>',
'value' => '<string>',
'secondaryValue' => '<string>',
'values' => [
'<string>'
]
]
]
]
],
'selectedColumns' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://prod-api.raisedonors.com/api/Gift/query")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"filter\": \"<string>\",\n \"skip\": 123,\n \"take\": 123,\n \"sortBy\": \"createdate\",\n \"descending\": true,\n \"includeDetails\": true,\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"<string>\",\n \"value\": \"<string>\",\n \"secondaryValue\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"selectedColumns\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod-api.raisedonors.com/api/Gift/query")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter\": \"<string>\",\n \"skip\": 123,\n \"take\": 123,\n \"sortBy\": \"createdate\",\n \"descending\": true,\n \"includeDetails\": true,\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"<string>\",\n \"value\": \"<string>\",\n \"secondaryValue\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"selectedColumns\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://prod-api.raisedonors.com/api/Gift/query';
const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filter: '<string>',
skip: 123,
take: 123,
sortBy: 'createdate',
descending: true,
includeDetails: true,
groups: [
{
conditions: [
{
parameter: '<string>',
value: '<string>',
secondaryValue: '<string>',
values: ['<string>']
}
]
}
],
selectedColumns: ['<string>']
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"items": [
{
"id": 602401,
"currency": "USD",
"amount": 50,
"formattedAmount": "$50.00",
"date": "2025-11-15T03:00:00",
"createdDate": "2025-11-15T03:00:00",
"modifiedDate": "2025-11-15T03:00:02",
"statusText": "Settled",
"gateway": "Riverside Hope — Stripe",
"transactionId": "ch_3QU4d1Hs1Yb4Lm2A",
"donationId": "RD-602401",
"paymentInfo": "Visa •••• 4242",
"paymentType": "Credit Card",
"campaignName": "Monthly Giving Society",
"donorId": 200456,
"billingName": "Priya Sharma",
"recurringGiftId": 700089,
"canRefund": true,
"donorPaidCosts": false,
"projects": [
{
"projectId": 3010,
"name": "General Operating Support",
"amount": "$50.00",
"currencyExchange": null
}
],
"recurringScheduleInfo": {
"amount": "$50.00",
"currencyCode": "USD",
"frequency": "Monthly",
"statusText": "Active",
"successfulCycles": 34,
"startDate": "2023-02-15",
"nextCharge": "2025-12-15",
"currentCharge": "2025-11-15",
"previousCharge": "2025-10-15"
},
"isAnonymous": false,
"isTestMode": false
},
{
"id": 602347,
"currency": "USD",
"amount": 250,
"formattedAmount": "$250.00",
"date": "2025-11-12T12:42:11",
"createdDate": "2025-11-12T12:42:11",
"modifiedDate": "2025-11-12T12:42:14",
"statusText": "Settled",
"gateway": "Riverside Hope — Stripe",
"authorizationNumber": "AUTH210983",
"transactionId": "ch_3QT1p8Hs1Yb4Lm0Z",
"donationId": "RD-602347",
"paymentInfo": "Mastercard •••• 1234",
"paymentType": "Credit Card",
"segment": "GT25-SOCIAL",
"campaignName": "Giving Tuesday 2025",
"segmentName": "Giving Tuesday Social",
"donorId": 202999,
"billingName": "Anonymous",
"recurringGiftId": null,
"giftAidRequested": false,
"canRefund": true,
"donorPaidCosts": false,
"submissionUrl": "https://riversidehope.example.org/give/giving-tuesday-2025",
"projects": [
{
"projectId": 3014,
"name": "Giving Tuesday 2025",
"amount": "$250.00",
"currencyExchange": null
}
],
"form": {
"id": 305,
"title": "Giving Tuesday 2025 Form",
"landingUrl": "https://riversidehope.example.org/give/giving-tuesday-2025",
"referringUrl": "https://www.riversidehope.example.org/giving-tuesday",
"isLegacy": false
},
"isAnonymous": true,
"isTestMode": false
},
{
"id": 602198,
"currency": "USD",
"amount": 1000,
"formattedAmount": "$1,000.00",
"date": "2025-10-12T11:04:37",
"createdDate": "2025-10-12T11:04:37",
"modifiedDate": "2025-10-12T11:04:41",
"statusText": "Settled",
"gateway": "Riverside Hope — Stripe",
"authorizationNumber": "AUTH204417",
"transactionId": "ch_3QK7f2Hs1Yb4Lm0T",
"donationId": "RD-602198",
"paymentInfo": "Visa •••• 4111",
"paymentType": "Credit Card",
"segment": "YE25-EMAIL",
"motivation": "YE25-EMAIL",
"campaignName": "Year-End Giving 2025",
"segmentName": "Year-End Email",
"notes": "Board member gift; acknowledge by letter.",
"comment": "Happy to support the holiday meals program again this year.",
"donorId": 200234,
"billingName": "Marcus Castellano",
"shippingName": null,
"recurringGiftId": null,
"giftAidRequested": false,
"canRefund": true,
"donorPaidCosts": true,
"paymentProviderTransactionUrl": "https://dashboard.stripe.com/payments/ch_3QK7f2Hs1Yb4Lm0T",
"submissionUrl": "https://riversidehope.example.org/give/year-end-appeal",
"billingAddress": {
"id": 400101,
"donorId": 200234,
"isPrimary": true,
"address1": "219 Oak Hill Drive",
"address2": null,
"city": "Springfield",
"state": "OR",
"postal": "97478",
"countryString": "United States",
"addressTypeDisplay": "Home"
},
"shippingAddress": null,
"projects": [
{
"projectId": 3012,
"name": "Year-End 2025 — Holiday Meals",
"amount": "$1,000.00",
"currencyExchange": null
}
],
"form": {
"id": 306,
"title": "Year-End Appeal Form",
"landingUrl": "https://riversidehope.example.org/give/year-end-appeal",
"referringUrl": "https://www.riversidehope.example.org/year-end",
"isLegacy": false
},
"donorStatistic": {
"totalGift": "47",
"totalGiftAmount": "$42,500.00",
"lastGiftAmount": "$1,000.00"
},
"recurringScheduleInfo": null,
"tribute": null,
"donor": {
"id": 200234,
"name": "Marcus Castellano",
"title": "Mr.",
"firstName": "Marcus",
"middleName": "David",
"lastName": "Castellano",
"suffix": null,
"email": "marcus.castellano@example.org",
"phone": "(555) 012-3401",
"createdDate": "2018-09-15T14:22:31Z",
"modifiedDate": "2025-10-12T09:15:42Z",
"notes": "Board member. Prefers email for receipts and annual reports.",
"isOrganization": false,
"organizationName": null,
"crmKeyUrls": {
"VirtuousCRM": {
"crmKey": "100234",
"url": "https://app.virtuoussoftware.com/Generosity/Contact/Detail/100234"
}
},
"crmKey": "100234",
"crmSecondKey": null,
"isTestMode": false,
"isArchived": false,
"isGDPRDeleted": false,
"primaryAddress": {
"id": 400101,
"donorId": 200234,
"isPrimary": true,
"address1": "219 Oak Hill Drive",
"address2": null,
"city": "Springfield",
"state": "OR",
"postal": "97478",
"countryString": "United States",
"addressTypeDisplay": "Home"
},
"donorAddresses": [
{
"id": 400101,
"donorId": 200234,
"isPrimary": true,
"address1": "219 Oak Hill Drive",
"address2": null,
"city": "Springfield",
"state": "OR",
"postal": "97478",
"countryString": "United States",
"addressTypeDisplay": "Home"
}
],
"donorEmailAddresses": [
{
"id": 300101,
"donorId": 200234,
"typeDisplay": "Home Email",
"value": "marcus.castellano@example.org",
"secondaryValue": null,
"isPrimary": true,
"isOptedIn": true,
"isValid": true,
"isEmail": true,
"isPhone": false,
"isBounced": false,
"countryCode": null
}
],
"donorPhoneNumbers": [
{
"id": 300102,
"donorId": 200234,
"typeDisplay": "Mobile Phone",
"value": "(555) 012-3401",
"secondaryValue": null,
"isPrimary": true,
"isOptedIn": true,
"isValid": true,
"isEmail": false,
"isPhone": true,
"isBounced": false,
"countryCode": "1"
},
{
"id": 300103,
"donorId": 200234,
"typeDisplay": "Home Phone",
"value": "(555) 012-3400",
"secondaryValue": null,
"isPrimary": false,
"isOptedIn": true,
"isValid": true,
"isEmail": false,
"isPhone": true,
"isBounced": false,
"countryCode": "1"
}
]
},
"isAnonymous": false,
"isTestMode": false,
"virtualTerminalId": null,
"virtualTerminal": null,
"googleUtmCampaign": "year-end-2025",
"googleUtmMedium": "email",
"googleUtmSource": "newsletter",
"motivationCodeGroupId": 720,
"motivationCodeGroupName": "Year-End 2025 Appeals",
"motivationCodeId": 6120,
"motivationCodeName": "Year-End Email Appeal",
"currencyExchange": null
}
],
"total": 3106
}{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"groups[0].conditions[0].parameter": [
"'donorEmail' is not a valid parameter for this query type. Call Get Query Options for the parameters this query type supports."
]
},
"instance": "/api/Gift/query"
}{
"type": "https://tools.ietf.org/html/rfc7235#section-3.1",
"title": "Unauthorized",
"status": 401,
"detail": "The Authorization header is missing, malformed, or carries a token that is expired or revoked.",
"instance": "/api/Gift/query"
}Gift query type to discover the parameters, operators, and result fields available, then send one or more groups of conditions here along with selectedColumns and your paging options.
includeDetails=true adds each gift’s related records (donor, gateway, segment, and the rest), the same as Get a Gift returns, and may slow down large result sets.Authorizations
JWT Authorization header using the Bearer scheme. Example: "Authorization: Bearer {token}"
Body
The gift query request, including structured groups/conditions, selectedColumns, includeDetails, and paging options.
- Option 1
- Option 2
Request body for advanced query endpoints such as donor and campaign queries.
A free-text search term applied to the results.
The number of records to skip before the first record returned. Use it with take to page through the results.
The maximum number of records to return in this page of results.
Field to sort by (case-insensitive). Valid options: createdate, createddatetime, email, firstname, gifts, giftsum, id, lastname, modifieddatetimeutc, name, phone
createdate, createddatetime, email, firstname, gifts, giftsum, id, lastname, modifieddatetimeutc, name, phone "createdate"
The direction to sort the results. Set to true to sort in descending order.
When true, includes the related records for each item in the response. Not every list has extra records to return, and it can slow down large result sets.
The logical type of query being executed.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 The groups of conditions that make up the query.
Show child attributes
Show child attributes
The list of result columns to return for each item.
Was this page helpful?