Update a trip
Creates or edits a trip within the authenticated organization. Name and slug must be unique within the organization; end_date must not precede start_date. Creating a trip also creates its fund entity and required program/form bindings; updating settings may update the shared Trip Participants program.
curl --request PUT \
--url https://api.gratona.com/v1/admin/trips/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Follow up with trip participants",
"slug": "uganda-service-trip",
"description": "Please review the updated trip details.",
"destination": "Kampala, Uganda",
"start_date": "2026-10-20T09:00:00Z",
"end_date": "2026-10-20T09:00:00Z",
"fundraising_goal": 40,
"status": "draft",
"cover_image_id": 1,
"settings": {
"donor_hysform_id": 1,
"program_setting_id": 1,
"emailset_id": 1,
"show_donor_names": "full",
"default_participant_goal_mode": "equal_split",
"default_participant_goal_amount": 40,
"required_esign_templates": [
"<string>"
],
"background_check_validity_months": 1,
"background_check_cost_mode": "org",
"show_donation_amounts": false,
"allow_recurring_donations": false,
"completed_accept_donations": false,
"show_participant_goals": false,
"allow_anonymous_donations": false,
"sync_budget_to_goal": false,
"allow_participant_visibility_opt_out": false,
"request_to_join_enabled": false
}
}
'import requests
url = "https://api.gratona.com/v1/admin/trips/{id}"
payload = {
"name": "Follow up with trip participants",
"slug": "uganda-service-trip",
"description": "Please review the updated trip details.",
"destination": "Kampala, Uganda",
"start_date": "2026-10-20T09:00:00Z",
"end_date": "2026-10-20T09:00:00Z",
"fundraising_goal": 40,
"status": "draft",
"cover_image_id": 1,
"settings": {
"donor_hysform_id": 1,
"program_setting_id": 1,
"emailset_id": 1,
"show_donor_names": "full",
"default_participant_goal_mode": "equal_split",
"default_participant_goal_amount": 40,
"required_esign_templates": ["<string>"],
"background_check_validity_months": 1,
"background_check_cost_mode": "org",
"show_donation_amounts": False,
"allow_recurring_donations": False,
"completed_accept_donations": False,
"show_participant_goals": False,
"allow_anonymous_donations": False,
"sync_budget_to_goal": False,
"allow_participant_visibility_opt_out": False,
"request_to_join_enabled": False
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Follow up with trip participants',
slug: 'uganda-service-trip',
description: 'Please review the updated trip details.',
destination: 'Kampala, Uganda',
start_date: '2026-10-20T09:00:00Z',
end_date: '2026-10-20T09:00:00Z',
fundraising_goal: 40,
status: 'draft',
cover_image_id: 1,
settings: {
donor_hysform_id: 1,
program_setting_id: 1,
emailset_id: 1,
show_donor_names: 'full',
default_participant_goal_mode: 'equal_split',
default_participant_goal_amount: 40,
required_esign_templates: ['<string>'],
background_check_validity_months: 1,
background_check_cost_mode: 'org',
show_donation_amounts: false,
allow_recurring_donations: false,
completed_accept_donations: false,
show_participant_goals: false,
allow_anonymous_donations: false,
sync_budget_to_goal: false,
allow_participant_visibility_opt_out: false,
request_to_join_enabled: false
}
})
};
fetch('https://api.gratona.com/v1/admin/trips/{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/admin/trips/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Follow up with trip participants',
'slug' => 'uganda-service-trip',
'description' => 'Please review the updated trip details.',
'destination' => 'Kampala, Uganda',
'start_date' => '2026-10-20T09:00:00Z',
'end_date' => '2026-10-20T09:00:00Z',
'fundraising_goal' => 40,
'status' => 'draft',
'cover_image_id' => 1,
'settings' => [
'donor_hysform_id' => 1,
'program_setting_id' => 1,
'emailset_id' => 1,
'show_donor_names' => 'full',
'default_participant_goal_mode' => 'equal_split',
'default_participant_goal_amount' => 40,
'required_esign_templates' => [
'<string>'
],
'background_check_validity_months' => 1,
'background_check_cost_mode' => 'org',
'show_donation_amounts' => false,
'allow_recurring_donations' => false,
'completed_accept_donations' => false,
'show_participant_goals' => false,
'allow_anonymous_donations' => false,
'sync_budget_to_goal' => false,
'allow_participant_visibility_opt_out' => false,
'request_to_join_enabled' => false
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/trips/{id}"
payload := strings.NewReader("{\n \"name\": \"Follow up with trip participants\",\n \"slug\": \"uganda-service-trip\",\n \"description\": \"Please review the updated trip details.\",\n \"destination\": \"Kampala, Uganda\",\n \"start_date\": \"2026-10-20T09:00:00Z\",\n \"end_date\": \"2026-10-20T09:00:00Z\",\n \"fundraising_goal\": 40,\n \"status\": \"draft\",\n \"cover_image_id\": 1,\n \"settings\": {\n \"donor_hysform_id\": 1,\n \"program_setting_id\": 1,\n \"emailset_id\": 1,\n \"show_donor_names\": \"full\",\n \"default_participant_goal_mode\": \"equal_split\",\n \"default_participant_goal_amount\": 40,\n \"required_esign_templates\": [\n \"<string>\"\n ],\n \"background_check_validity_months\": 1,\n \"background_check_cost_mode\": \"org\",\n \"show_donation_amounts\": false,\n \"allow_recurring_donations\": false,\n \"completed_accept_donations\": false,\n \"show_participant_goals\": false,\n \"allow_anonymous_donations\": false,\n \"sync_budget_to_goal\": false,\n \"allow_participant_visibility_opt_out\": false,\n \"request_to_join_enabled\": false\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.gratona.com/v1/admin/trips/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Follow up with trip participants\",\n \"slug\": \"uganda-service-trip\",\n \"description\": \"Please review the updated trip details.\",\n \"destination\": \"Kampala, Uganda\",\n \"start_date\": \"2026-10-20T09:00:00Z\",\n \"end_date\": \"2026-10-20T09:00:00Z\",\n \"fundraising_goal\": 40,\n \"status\": \"draft\",\n \"cover_image_id\": 1,\n \"settings\": {\n \"donor_hysform_id\": 1,\n \"program_setting_id\": 1,\n \"emailset_id\": 1,\n \"show_donor_names\": \"full\",\n \"default_participant_goal_mode\": \"equal_split\",\n \"default_participant_goal_amount\": 40,\n \"required_esign_templates\": [\n \"<string>\"\n ],\n \"background_check_validity_months\": 1,\n \"background_check_cost_mode\": \"org\",\n \"show_donation_amounts\": false,\n \"allow_recurring_donations\": false,\n \"completed_accept_donations\": false,\n \"show_participant_goals\": false,\n \"allow_anonymous_donations\": false,\n \"sync_budget_to_goal\": false,\n \"allow_participant_visibility_opt_out\": false,\n \"request_to_join_enabled\": false\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/trips/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Follow up with trip participants\",\n \"slug\": \"uganda-service-trip\",\n \"description\": \"Please review the updated trip details.\",\n \"destination\": \"Kampala, Uganda\",\n \"start_date\": \"2026-10-20T09:00:00Z\",\n \"end_date\": \"2026-10-20T09:00:00Z\",\n \"fundraising_goal\": 40,\n \"status\": \"draft\",\n \"cover_image_id\": 1,\n \"settings\": {\n \"donor_hysform_id\": 1,\n \"program_setting_id\": 1,\n \"emailset_id\": 1,\n \"show_donor_names\": \"full\",\n \"default_participant_goal_mode\": \"equal_split\",\n \"default_participant_goal_amount\": 40,\n \"required_esign_templates\": [\n \"<string>\"\n ],\n \"background_check_validity_months\": 1,\n \"background_check_cost_mode\": \"org\",\n \"show_donation_amounts\": false,\n \"allow_recurring_donations\": false,\n \"completed_accept_donations\": false,\n \"show_participant_goals\": false,\n \"allow_anonymous_donations\": false,\n \"sync_budget_to_goal\": false,\n \"allow_participant_visibility_opt_out\": false,\n \"request_to_join_enabled\": false\n }\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "<string>",
"slug": "<string>",
"status": "<string>",
"fundraising_goal": 123,
"total_raised": 123,
"progress_percent": 123,
"participant_count": 123,
"is_sample_trip": true,
"sample_seed_version": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"destination": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25"
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}Authorizations
Passport bearer token authentication for legacy admin sessions.
Path Parameters
Record ID within the organization and any parent resource in this route.
Body
Request fields accepted by this operation. Omitted optional properties retain the behavior described above.
Validation: required|string|max:255.
255"Follow up with trip participants"
Unique within the organization; generated from name when omitted on create.
255^[a-z0-9-]+$"uganda-service-trip"
Validation: nullable|string|max:50000.
50000"Please review the updated trip details."
Validation: nullable|string|max:255.
255"Kampala, Uganda"
Validation: nullable|date.
"2026-10-20T09:00:00Z"
Trip end date; must be on or after start_date.
"2026-10-20T09:00:00Z"
Validation: required|numeric|min:0|max:999999999.99.
0 <= x <= 999999999.9940
Validation: required|in:draft,active,completed,archived,cancelled.
draft, active, completed, archived, cancelled "draft"
Validation: nullable|integer.
1
Trip-specific settings merged with saved settings on update. Binding IDs must belong to this organization. background_check_validity_months is validated but stripped before storage; Checkr owns validity. sample_seed is preserved and cannot be supplied by callers.
Show child attributes
Show child attributes
Response
Update a trip response.
curl --request PUT \
--url https://api.gratona.com/v1/admin/trips/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Follow up with trip participants",
"slug": "uganda-service-trip",
"description": "Please review the updated trip details.",
"destination": "Kampala, Uganda",
"start_date": "2026-10-20T09:00:00Z",
"end_date": "2026-10-20T09:00:00Z",
"fundraising_goal": 40,
"status": "draft",
"cover_image_id": 1,
"settings": {
"donor_hysform_id": 1,
"program_setting_id": 1,
"emailset_id": 1,
"show_donor_names": "full",
"default_participant_goal_mode": "equal_split",
"default_participant_goal_amount": 40,
"required_esign_templates": [
"<string>"
],
"background_check_validity_months": 1,
"background_check_cost_mode": "org",
"show_donation_amounts": false,
"allow_recurring_donations": false,
"completed_accept_donations": false,
"show_participant_goals": false,
"allow_anonymous_donations": false,
"sync_budget_to_goal": false,
"allow_participant_visibility_opt_out": false,
"request_to_join_enabled": false
}
}
'import requests
url = "https://api.gratona.com/v1/admin/trips/{id}"
payload = {
"name": "Follow up with trip participants",
"slug": "uganda-service-trip",
"description": "Please review the updated trip details.",
"destination": "Kampala, Uganda",
"start_date": "2026-10-20T09:00:00Z",
"end_date": "2026-10-20T09:00:00Z",
"fundraising_goal": 40,
"status": "draft",
"cover_image_id": 1,
"settings": {
"donor_hysform_id": 1,
"program_setting_id": 1,
"emailset_id": 1,
"show_donor_names": "full",
"default_participant_goal_mode": "equal_split",
"default_participant_goal_amount": 40,
"required_esign_templates": ["<string>"],
"background_check_validity_months": 1,
"background_check_cost_mode": "org",
"show_donation_amounts": False,
"allow_recurring_donations": False,
"completed_accept_donations": False,
"show_participant_goals": False,
"allow_anonymous_donations": False,
"sync_budget_to_goal": False,
"allow_participant_visibility_opt_out": False,
"request_to_join_enabled": False
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Follow up with trip participants',
slug: 'uganda-service-trip',
description: 'Please review the updated trip details.',
destination: 'Kampala, Uganda',
start_date: '2026-10-20T09:00:00Z',
end_date: '2026-10-20T09:00:00Z',
fundraising_goal: 40,
status: 'draft',
cover_image_id: 1,
settings: {
donor_hysform_id: 1,
program_setting_id: 1,
emailset_id: 1,
show_donor_names: 'full',
default_participant_goal_mode: 'equal_split',
default_participant_goal_amount: 40,
required_esign_templates: ['<string>'],
background_check_validity_months: 1,
background_check_cost_mode: 'org',
show_donation_amounts: false,
allow_recurring_donations: false,
completed_accept_donations: false,
show_participant_goals: false,
allow_anonymous_donations: false,
sync_budget_to_goal: false,
allow_participant_visibility_opt_out: false,
request_to_join_enabled: false
}
})
};
fetch('https://api.gratona.com/v1/admin/trips/{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/admin/trips/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Follow up with trip participants',
'slug' => 'uganda-service-trip',
'description' => 'Please review the updated trip details.',
'destination' => 'Kampala, Uganda',
'start_date' => '2026-10-20T09:00:00Z',
'end_date' => '2026-10-20T09:00:00Z',
'fundraising_goal' => 40,
'status' => 'draft',
'cover_image_id' => 1,
'settings' => [
'donor_hysform_id' => 1,
'program_setting_id' => 1,
'emailset_id' => 1,
'show_donor_names' => 'full',
'default_participant_goal_mode' => 'equal_split',
'default_participant_goal_amount' => 40,
'required_esign_templates' => [
'<string>'
],
'background_check_validity_months' => 1,
'background_check_cost_mode' => 'org',
'show_donation_amounts' => false,
'allow_recurring_donations' => false,
'completed_accept_donations' => false,
'show_participant_goals' => false,
'allow_anonymous_donations' => false,
'sync_budget_to_goal' => false,
'allow_participant_visibility_opt_out' => false,
'request_to_join_enabled' => false
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/trips/{id}"
payload := strings.NewReader("{\n \"name\": \"Follow up with trip participants\",\n \"slug\": \"uganda-service-trip\",\n \"description\": \"Please review the updated trip details.\",\n \"destination\": \"Kampala, Uganda\",\n \"start_date\": \"2026-10-20T09:00:00Z\",\n \"end_date\": \"2026-10-20T09:00:00Z\",\n \"fundraising_goal\": 40,\n \"status\": \"draft\",\n \"cover_image_id\": 1,\n \"settings\": {\n \"donor_hysform_id\": 1,\n \"program_setting_id\": 1,\n \"emailset_id\": 1,\n \"show_donor_names\": \"full\",\n \"default_participant_goal_mode\": \"equal_split\",\n \"default_participant_goal_amount\": 40,\n \"required_esign_templates\": [\n \"<string>\"\n ],\n \"background_check_validity_months\": 1,\n \"background_check_cost_mode\": \"org\",\n \"show_donation_amounts\": false,\n \"allow_recurring_donations\": false,\n \"completed_accept_donations\": false,\n \"show_participant_goals\": false,\n \"allow_anonymous_donations\": false,\n \"sync_budget_to_goal\": false,\n \"allow_participant_visibility_opt_out\": false,\n \"request_to_join_enabled\": false\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.gratona.com/v1/admin/trips/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Follow up with trip participants\",\n \"slug\": \"uganda-service-trip\",\n \"description\": \"Please review the updated trip details.\",\n \"destination\": \"Kampala, Uganda\",\n \"start_date\": \"2026-10-20T09:00:00Z\",\n \"end_date\": \"2026-10-20T09:00:00Z\",\n \"fundraising_goal\": 40,\n \"status\": \"draft\",\n \"cover_image_id\": 1,\n \"settings\": {\n \"donor_hysform_id\": 1,\n \"program_setting_id\": 1,\n \"emailset_id\": 1,\n \"show_donor_names\": \"full\",\n \"default_participant_goal_mode\": \"equal_split\",\n \"default_participant_goal_amount\": 40,\n \"required_esign_templates\": [\n \"<string>\"\n ],\n \"background_check_validity_months\": 1,\n \"background_check_cost_mode\": \"org\",\n \"show_donation_amounts\": false,\n \"allow_recurring_donations\": false,\n \"completed_accept_donations\": false,\n \"show_participant_goals\": false,\n \"allow_anonymous_donations\": false,\n \"sync_budget_to_goal\": false,\n \"allow_participant_visibility_opt_out\": false,\n \"request_to_join_enabled\": false\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/trips/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Follow up with trip participants\",\n \"slug\": \"uganda-service-trip\",\n \"description\": \"Please review the updated trip details.\",\n \"destination\": \"Kampala, Uganda\",\n \"start_date\": \"2026-10-20T09:00:00Z\",\n \"end_date\": \"2026-10-20T09:00:00Z\",\n \"fundraising_goal\": 40,\n \"status\": \"draft\",\n \"cover_image_id\": 1,\n \"settings\": {\n \"donor_hysform_id\": 1,\n \"program_setting_id\": 1,\n \"emailset_id\": 1,\n \"show_donor_names\": \"full\",\n \"default_participant_goal_mode\": \"equal_split\",\n \"default_participant_goal_amount\": 40,\n \"required_esign_templates\": [\n \"<string>\"\n ],\n \"background_check_validity_months\": 1,\n \"background_check_cost_mode\": \"org\",\n \"show_donation_amounts\": false,\n \"allow_recurring_donations\": false,\n \"completed_accept_donations\": false,\n \"show_participant_goals\": false,\n \"allow_anonymous_donations\": false,\n \"sync_budget_to_goal\": false,\n \"allow_participant_visibility_opt_out\": false,\n \"request_to_join_enabled\": false\n }\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "<string>",
"slug": "<string>",
"status": "<string>",
"fundraising_goal": 123,
"total_raised": 123,
"progress_percent": 123,
"participant_count": 123,
"is_sample_trip": true,
"sample_seed_version": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"destination": "<string>",
"start_date": "2023-12-25",
"end_date": "2023-12-25"
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}