Trips
Search client donors as a leader
Type-ahead lookup over the client’s donors (matches email, username, or any custom JSON field). Returns up to 20 results. Requires the requesting donor to be an active leader on at least one trip for the client and to hold the invite_participants permission. Empty / single-character queries return an empty list.
GET
/
frontend
/
participant
/
trips
/
{client_id}
/
leader
/
donors
/
search
/
{session_id}
Search client donors as a leader
curl --request GET \
--url https://api.gratona.com/v1/frontend/participant/trips/{client_id}/leader/donors/search/{session_id} \
--header 'session_id: <api-key>'import requests
url = "https://api.gratona.com/v1/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}"
headers = {"session_id": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {session_id: '<api-key>'}};
fetch('https://api.gratona.com/v1/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}', 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/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"session_id: <api-key>"
],
]);
$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/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("session_id", "<api-key>")
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/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}")
.header("session_id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["session_id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": [
{
"id": 123,
"email": "jsmith@example.com",
"name": "<string>",
"phone": "<string>"
}
]
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}Authorizations
Legacy session-id header retained for backwards compatibility with older first-party clients. New integrations should prefer bearerAuth or apiKeyAuth.
Query Parameters
Search query — must be 2+ characters or the result is empty.
Minimum string length:
2⌘I
Search client donors as a leader
curl --request GET \
--url https://api.gratona.com/v1/frontend/participant/trips/{client_id}/leader/donors/search/{session_id} \
--header 'session_id: <api-key>'import requests
url = "https://api.gratona.com/v1/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}"
headers = {"session_id": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {session_id: '<api-key>'}};
fetch('https://api.gratona.com/v1/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}', 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/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"session_id: <api-key>"
],
]);
$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/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("session_id", "<api-key>")
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/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}")
.header("session_id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/frontend/participant/trips/{client_id}/leader/donors/search/{session_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["session_id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": [
{
"id": 123,
"email": "jsmith@example.com",
"name": "<string>",
"phone": "<string>"
}
]
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}