Query Tributes
curl --request POST \
--url https://api.virtuoussoftware.com/api/Tribute/Query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"groups": [
{
"conditions": [
{
"parameter": "Tribute Id",
"operator": "Is",
"value": "750001"
}
]
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
groups: [{conditions: [{parameter: 'Tribute Id', operator: 'Is', value: '750001'}]}]
})
};
fetch('https://api.virtuoussoftware.com/api/Tribute/Query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.virtuoussoftware.com/api/Tribute/Query"
payload = { "groups": [{ "conditions": [
{
"parameter": "Tribute Id",
"operator": "Is",
"value": "750001"
}
] }] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.virtuoussoftware.com/api/Tribute/Query");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"Tribute Id\",\n \"operator\": \"Is\",\n \"value\": \"750001\"\n }\n ]\n }\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://api.virtuoussoftware.com/api/Tribute/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([
'groups' => [
[
'conditions' => [
[
'parameter' => 'Tribute Id',
'operator' => 'Is',
'value' => '750001'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.virtuoussoftware.com/api/Tribute/Query")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"Tribute Id\",\n \"operator\": \"Is\",\n \"value\": \"750001\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.virtuoussoftware.com/api/Tribute/Query")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"Tribute Id\",\n \"operator\": \"Is\",\n \"value\": \"750001\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://api.virtuoussoftware.com/api/Tribute/Query';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
groups: [{conditions: [{parameter: 'Tribute Id', operator: 'Is', value: '750001'}]}]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"list": [
{
"id": 750001,
"tributeType": "In Honor Of",
"firstName": "Marcus",
"lastName": "Castellano",
"address1": "219 Oak Hill Drive",
"address2": null,
"city": "Springfield",
"state": "OR",
"postalCode": "97478",
"contactIndividualId": 200123,
"contactIndividualUrl": "https://api.virtuoussoftware.com/api/ContactIndividual/200123",
"defaultAcknowledgeeIndividualId": 200234,
"defaultAcknowledgeeIndividualUrl": "https://api.virtuoussoftware.com/api/ContactIndividual/200234",
"createDateTimeUtc": "2025-09-01T10:00:00Z",
"createdByUser": "Development Team",
"modifiedDateTimeUtc": "2025-09-01T10:00:00Z",
"modifiedByUser": "Development Team"
}
],
"total": 1
}{
"message": "Authorization has been denied for this request."
}{
"message": "You do not have permission to perform this action."
}{
"message": "Rate limit exceeded. Try again later."
}Contacts and Individuals
Query Tributes
Returns a paginated list of tributes matching the request conditions. Use Is with Tribute Id for an exact id match, or Is with First Name for an exact name match. Retrieve other available parameters and operators from Get Tribute Query Options. Unlike Search Tributes, name matching with Is does not match prefixes.
POST
/
api
/
Tribute
/
Query
Query Tributes
curl --request POST \
--url https://api.virtuoussoftware.com/api/Tribute/Query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"groups": [
{
"conditions": [
{
"parameter": "Tribute Id",
"operator": "Is",
"value": "750001"
}
]
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
groups: [{conditions: [{parameter: 'Tribute Id', operator: 'Is', value: '750001'}]}]
})
};
fetch('https://api.virtuoussoftware.com/api/Tribute/Query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.virtuoussoftware.com/api/Tribute/Query"
payload = { "groups": [{ "conditions": [
{
"parameter": "Tribute Id",
"operator": "Is",
"value": "750001"
}
] }] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.virtuoussoftware.com/api/Tribute/Query");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"Tribute Id\",\n \"operator\": \"Is\",\n \"value\": \"750001\"\n }\n ]\n }\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://api.virtuoussoftware.com/api/Tribute/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([
'groups' => [
[
'conditions' => [
[
'parameter' => 'Tribute Id',
'operator' => 'Is',
'value' => '750001'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.virtuoussoftware.com/api/Tribute/Query")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"Tribute Id\",\n \"operator\": \"Is\",\n \"value\": \"750001\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.virtuoussoftware.com/api/Tribute/Query")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"groups\": [\n {\n \"conditions\": [\n {\n \"parameter\": \"Tribute Id\",\n \"operator\": \"Is\",\n \"value\": \"750001\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://api.virtuoussoftware.com/api/Tribute/Query';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
groups: [{conditions: [{parameter: 'Tribute Id', operator: 'Is', value: '750001'}]}]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"list": [
{
"id": 750001,
"tributeType": "In Honor Of",
"firstName": "Marcus",
"lastName": "Castellano",
"address1": "219 Oak Hill Drive",
"address2": null,
"city": "Springfield",
"state": "OR",
"postalCode": "97478",
"contactIndividualId": 200123,
"contactIndividualUrl": "https://api.virtuoussoftware.com/api/ContactIndividual/200123",
"defaultAcknowledgeeIndividualId": 200234,
"defaultAcknowledgeeIndividualUrl": "https://api.virtuoussoftware.com/api/ContactIndividual/200234",
"createDateTimeUtc": "2025-09-01T10:00:00Z",
"createdByUser": "Development Team",
"modifiedDateTimeUtc": "2025-09-01T10:00:00Z",
"modifiedByUser": "Development Team"
}
],
"total": 1
}{
"message": "Authorization has been denied for this request."
}{
"message": "You do not have permission to perform this action."
}{
"message": "Rate limit exceeded. Try again later."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
The number of records to skip (default 0).
The number of records to take (default 10, maximum 1000).
Required range:
x <= 1000Body
application/json
Query groups and conditions.
Last modified on September 24, 2026
Was this page helpful?