---
title: "TripWorks integrations and MCP server - APIANT.ai"
description: "Connect TripWorks to any other app, or use it from your AI client over MCP. TripWorks is a booking platform for tour operators, built from the ground up to..."
canonical: "https://apiant.ai/connections/tripworks"
---

# TripWorks integrations

Connect TripWorks to any other app, or use it from your AI client over MCP. TripWorks is a booking platform for tour operators, built from the ground up to help you market, promote, grow, manage, and operate your business successfully.

Connects with an API key [tripworks.com](https://tripworks.com/)

**7** triggers **171** actions

What the catalog holds today. Ask for anything missing and your agent reads the API documentation and adds it.

## What do you want to automate with TripWorks?

Give your AI client this address.

`https://mcp.apiant.ai`

One connection does both: ask your client to act in an app once, or have it build an automation that keeps running. Any client that takes a remote MCP server. Nothing to install. Create your free account, then sign in once in your browser.

### Set it up in your client

### Claude Code

Run this in the directory you want to work in.

`claude mcp add --transport http -s project apiant-ai https://mcp.apiant.ai`

Start Claude Code there, approve the server, and sign in in the browser page it opens.

[Claude Code guide (opens in a new tab)](https://apiant.ai/docs/mcp/claude-code)

### Claude, web and desktop

Open Customize, then Connectors, then Add custom connector, and paste the address. On Team and Enterprise an owner adds it first.

[Setup guide (opens in a new tab)](https://apiant.ai/docs/mcp)

### Cursor

Add the address to your MCP configuration as a server URL. Cursor signs you in in your browser.

[Setup guide (opens in a new tab)](https://apiant.ai/docs/mcp)

### Zed

Open Settings, then AI, then MCP Servers, then Add Server, then Add Remote Server.

[Setup guide (opens in a new tab)](https://apiant.ai/docs/mcp)

### Codex and the ChatGPT desktop app

Open Settings, then MCP servers, then Add server, and choose Streamable HTTP. From the terminal, Codex takes the address with its own add command and then signs you in.

[Setup guide (opens in a new tab)](https://apiant.ai/docs/mcp)

### Grok

Open grok.com/connectors, choose New Connector, then Custom, and paste the address. Grok signs you in in your browser.

[Setup guide (opens in a new tab)](https://apiant.ai/docs/mcp)

### Any other MCP client

Paste the address where the client asks for a remote MCP server URL, and name the server apiant-ai where it lets you. APIANT's skills reach the client over the same connection.

[Setup guide (opens in a new tab)](https://apiant.ai/docs/mcp)

Popular

## TripWorks with the apps people pair it with most

- [ **HubSpot to TripWorks** HubSpot is your all-in-one stop for all of your marketing software needs.](https://apiant.ai/connect/hubspot-to-tripworks)
- [ **Salesforce to TripWorks** Salesforce is a leading enterprise customer relationship management (CRM) platform.](https://apiant.ai/connect/salesforce-to-tripworks)
- [ **Slack to TripWorks** Slack is a messaging platform for teams. Post messages, manage channels, users, reminders, and react to...](https://apiant.ai/connect/slack-to-tripworks)
- [ **Google Sheets to TripWorks** Google Sheets is Google's online spreadsheet app for creating, editing and sharing spreadsheets.](https://apiant.ai/connect/google-sheets-to-tripworks)
- [ **Gmail to TripWorks** Gmail is Google’s email service, featuring spam protection, search functions, and seamless integration with...](https://apiant.ai/connect/gmail-to-tripworks)
- [ **Google Calendar to TripWorks** Google Calendar is a time management tool providing scheduling features, event reminders, and integration...](https://apiant.ai/connect/google-calendar-to-tripworks)
- [ **Google Drive to TripWorks** Google Drive is a cloud storage solution for uploading, sharing, and collaborating on files across devices...](https://apiant.ai/connect/google-drive-to-tripworks)
- [ **Mailchimp to TripWorks** Mailchimp marketing automation and email platform.](https://apiant.ai/connect/mailchimp-to-tripworks)

Pair it

## Connect TripWorks with another app

- [ **HubSpot to TripWorks**](https://apiant.ai/connect/hubspot-to-tripworks)
- [ **Salesforce to TripWorks**](https://apiant.ai/connect/salesforce-to-tripworks)
- [ **Slack to TripWorks**](https://apiant.ai/connect/slack-to-tripworks)
- [ **Google Sheets to TripWorks**](https://apiant.ai/connect/google-sheets-to-tripworks)
- [ **Gmail to TripWorks**](https://apiant.ai/connect/gmail-to-tripworks)
- [ **Google Calendar to TripWorks**](https://apiant.ai/connect/google-calendar-to-tripworks)
- [ **Google Drive to TripWorks**](https://apiant.ai/connect/google-drive-to-tripworks)
- [ **Mailchimp to TripWorks**](https://apiant.ai/connect/mailchimp-to-tripworks)
- [ **Stripe to TripWorks**](https://apiant.ai/connect/stripe-to-tripworks)
- [ **Shopify to TripWorks**](https://apiant.ai/connect/shopify-to-tripworks)
- [ **QuickBooks Online to TripWorks**](https://apiant.ai/connect/quickbooks-online-to-tripworks)
- [ **Pipedrive to TripWorks**](https://apiant.ai/connect/pipedrive-to-tripworks)
- [ **ActiveCampaign to TripWorks**](https://apiant.ai/connect/activecampaign-to-tripworks)
- [ **Notion to TripWorks**](https://apiant.ai/connect/notion-to-tripworks)
- [ **Airtable to TripWorks**](https://apiant.ai/connect/airtable-to-tripworks)
- [ **Trello to TripWorks**](https://apiant.ai/connect/trello-to-tripworks)
- [ **Asana to TripWorks**](https://apiant.ai/connect/asana-to-tripworks)
- [ **JIRA to TripWorks**](https://apiant.ai/connect/jira-to-tripworks)
- [ **ClickUp to TripWorks**](https://apiant.ai/connect/clickup-to-tripworks)
- [ **TripWorks to Zoom**](https://apiant.ai/connect/tripworks-to-zoom)
- [ **Discord to TripWorks**](https://apiant.ai/connect/discord-to-tripworks)
- [ **TripWorks to Twilio**](https://apiant.ai/connect/tripworks-to-twilio)
- [ **SendGrid to TripWorks**](https://apiant.ai/connect/sendgrid-to-tripworks)
- [ **Outlook to TripWorks**](https://apiant.ai/connect/outlook-to-tripworks)
- [ **Intercom to TripWorks**](https://apiant.ai/connect/intercom-to-tripworks)
- [ **Freshdesk to TripWorks**](https://apiant.ai/connect/freshdesk-to-tripworks)
- [ **Klaviyo to TripWorks**](https://apiant.ai/connect/klaviyo-to-tripworks)
- [ **Brevo to TripWorks**](https://apiant.ai/connect/brevo-to-tripworks)
- [ **TripWorks to Typeform**](https://apiant.ai/connect/tripworks-to-typeform)
- [ **JotForm to TripWorks**](https://apiant.ai/connect/jotform-to-tripworks)
- [ **Calendly to TripWorks**](https://apiant.ai/connect/calendly-to-tripworks)
- [ **PandaDoc to TripWorks**](https://apiant.ai/connect/pandadoc-to-tripworks)
- [ **TripWorks to Webflow**](https://apiant.ai/connect/tripworks-to-webflow)
- [ **TripWorks to Wix**](https://apiant.ai/connect/tripworks-to-wix)
- [ **TripWorks to LinkedIn**](https://apiant.ai/connect/tripworks-to-linkedin)
- [ **TripWorks to Facebook**](https://apiant.ai/connect/tripworks-to-facebook)
- [ **Instagram to TripWorks**](https://apiant.ai/connect/instagram-to-tripworks)
- [ **OpenAI to TripWorks**](https://apiant.ai/connect/openai-to-tripworks)
- [ **TripWorks to Anthropic**](https://apiant.ai/connect/tripworks-to-anthropic)
- [ **OneDrive to TripWorks**](https://apiant.ai/connect/onedrive-to-tripworks)
- [ **Google Docs to TripWorks**](https://apiant.ai/connect/google-docs-to-tripworks)
- [ **Ontraport to TripWorks**](https://apiant.ai/connect/ontraport-to-tripworks)
- [ **Freshworks CRM to TripWorks**](https://apiant.ai/connect/freshworks-crm-to-tripworks)
- [ **GoHighLevel to TripWorks**](https://apiant.ai/connect/gohighlevel-to-tripworks)
- [ **Capsule CRM to TripWorks**](https://apiant.ai/connect/capsule-crm-to-tripworks)
- [ **Copper to TripWorks**](https://apiant.ai/connect/copper-to-tripworks)
- [ **Streak to TripWorks**](https://apiant.ai/connect/streak-to-tripworks)
- [ **NetHunt CRM to TripWorks**](https://apiant.ai/connect/nethunt-crm-to-tripworks)
- [ **MINDBODY to TripWorks**](https://apiant.ai/connect/mindbody-to-tripworks)
- [ **TripWorks to Supabase**](https://apiant.ai/connect/tripworks-to-supabase)
- [ **PostgreSQL to TripWorks**](https://apiant.ai/connect/postgresql-to-tripworks)
- [ **MySQL to TripWorks**](https://apiant.ai/connect/mysql-to-tripworks)
- [ **TripWorks to Vercel**](https://apiant.ai/connect/tripworks-to-vercel)
- [ **TripWorks to ElevenLabs**](https://apiant.ai/connect/tripworks-to-elevenlabs)
- [ **PagerDuty to TripWorks**](https://apiant.ai/connect/pagerduty-to-tripworks)
- [ **TripWorks to Pushover**](https://apiant.ai/connect/tripworks-to-pushover)
- [ **Gravity Forms to TripWorks**](https://apiant.ai/connect/gravity-forms-to-tripworks)
- [ **HubSpot Enterprise to TripWorks**](https://apiant.ai/connect/hubspot-enterprise-to-tripworks)
- [ **Google Forms to TripWorks**](https://apiant.ai/connect/google-forms-to-tripworks)
- [ **Facebook Lead Ads to TripWorks**](https://apiant.ai/connect/facebook-lead-ads-to-tripworks)

What your agent can do with TripWorks

## Triggers and actions 7 triggers · 171 actions

- Trigger

**Customer Created**

Triggers when a new customer is added in TripWorks.

- Trigger

**Customer Updated**

Triggers when a customer is added or any of the customer's details change.

- Trigger

**Payment Created**

Triggers when a payment is recorded on a trip.

- Trigger

**Trip Created**

Triggers when a new trip is booked.

- Trigger

**Trip Reserved**

Triggers when a trip reaches the reserved status.

- Trigger

**Trip Updated**

Triggers when a trip is booked or any of its details change.

- Trigger

**Waiver Signed**

Triggers when a guest signs a waiver.

- Action

**Activate Gift Card**

Makes a gift card active and sets its expiry from your account's gift card expiration policy: a date that many years ahead, or no expiry if the account does not expire gift cards. The balance is not changed, and the activation is recorded in the card's transaction history.

- Action

**Add Experience Waiver Config**

Attaches a waiver type to this experience as its next waiver, after the ones already there. Send `waiver_type_id`, the waiver type's internal numeric id. Returns 201 with the new waiver config. An experience can have at most 3 waiver configs and each waiver type can appear once.

- Action

**Assign Custom Field to Experience**

Asks a custom field on this experience, at the end of its order. Assigning a field that is already assigned changes nothing.

- Action

**Cancel Experience Timeslots**

Cancels timeslots and the trip orders booked on them. Choose what to cancel with exactly one of:

- Action

**Clear Callbot Schedule Override**

Ends the schedule override in force, if any, so the schedule decides again. Clearing when none is in force succeeds and changes nothing. Returns the callbot.

- Action

**Clear Resource Blackout Window**

Makes the resources available again for a window: blackouts inside it are deleted, one that spans it is split in two, and one that overlaps an edge is trimmed. Send `resource_ids` (at most 100, else 422 `too_many_resource_ids`), `start_time` and `end_time`; `note` is optional and recorded as the rea

- Action

**Clone Widget**

Creates a copy of a widget, the same way the Clone button in the widget builder does. The copy has the same type, selection, experiences, defaults and configuration (including custom CSS), its name is the original's name followed by " (Copy)", and it gets its own widget id; usage figures and past wi

- Action

**Create Experience Timeslot Config**

Creates a schedule and queues the generation of its timeslots for every activity in `experience_ids`. Replies 202 with `config_id`, `queued_experience_cnt`, `request_id` and `timeslot_cnt` (how many timeslots will be created in total), and a `Location` header pointing at the schedule.

- Action

**Delete Booking**

Removes the booking from its trip order, exactly as removing a guest in the back office does. Send no body. Removing the last booking on a trip order cancels the trip order (`trip_order_cancelled` true), except on an e-commerce cart that is still a draft, where the whole trip order is deleted instea

- Action

**Delete Callbot**

Permanently deletes a callbot, releases its phone number and removes it from the voice provider. Returns 424 `agent_teardown_failed` and keeps the callbot when the provider could not be cleaned up.

- Action

**Delete Callbot Pronunciation**

Removes a word from the list and updates every callbot with the voice provider in the background.

- Action

**Delete Customer**

Permanently deletes a customer. Blocked with 409 `in_use`, which includes the counts of what still references the customer, while the customer has bookings, trips, waivers, credit cards or CRM messages. To combine duplicate customers, use Merge instead of deleting.

- Action

**Delete Custom Field**

Permanently deletes a custom field. Blocked (409) while it has answers on any trip or booking, or is assigned to an experience; the response says how many. Fields that depended on it become always shown.

- Action

**Delete Custom Field Value**

Permanently deletes an answer. The custom field and the trip or booking are untouched.

- Action

**Delete Experience**

Permanently deletes an experience. Blocked (409) if it still has bookings, so cancel or move those bookings first.

- Action

**Delete Experience Customer Type**

Permanently deletes a customer type and its channel mappings. Blocked with 409 `default_type_not_removable` while it is the default, and 409 `type_has_bookings` once any booking uses it; hide it with `is_visible: false` instead.

- Action

**Delete Experience Timeslot**

Permanently deletes a timeslot. Blocked with 409 `delete_blocked_has_bookings` while it has bookings: cancel it instead.

- Action

**Delete Experience Waiver Config**

Removes a waiver config from this experience. Removing the last one turns off the experience's waiver requirement; see the warning on this resource.

- Action

**Delete Gift Card**

Permanently deletes a gift card. Refused while the card's trip is locked.

- Action

**Delete Knowledge Base**

Permanently deletes a knowledge base, its stored content, and its copy at the voice/chat provider.

- Action

**Delete Location**

Permanently deletes a location. Blocked with 409 `last_location` if this is the account's only location, or 409 `in_use` if an experience, trip, trip order, card reader or shipment still uses it; the error's `dependencies` object gives those counts. Set `is_live` to false to archive a location inste

- Action

**Delete Multiple Experience Timeslots**

Permanently deletes many timeslots, chosen with `ids` or `filters` exactly as for updating many. A timeslot that has bookings is skipped and counted in `blocked_cnt`; cancel it instead. `dry_run: true` returns `would_apply_cnt` and `blocked_cnt` and deletes nothing. More than 1,000 timeslots is refu

- Action

**Delete Promo Code**

Permanently deletes a promo code. Blocked with 409 `redeemed`, where `uses` is the number of redemptions, if the code has already been redeemed on an order. To stop such a code being used, set its `promo_code_status_id` to inactive instead.

- Action

**Delete Reseller**

Permanently deletes a reseller. Blocked (409 `in_use`, with the trip and invoice counts) while any trip or invoice still references the reseller; notes and cards on file are not counted.

- Action

**Delete Resource**

Permanently deletes a resource along with its blackouts, past and future. Blocked (409) while a real booking is assigned to it. `blackout_removed_cnt` says how many blackouts went with it.

- Action

**Delete Resource Blackout**

Removes a blackout; the resource is available again for that window.

- Action

**Delete Resource Usage**

Removes a usage: the guest is no longer assigned to the resource.

- Action

**Delete Restriction**

Permanently deletes a restriction. Every experience requires a restriction, so one that experiences still use is refused with 409 `requires_merge` unless you also send `merge_target_id`; the error's `uses` gives the number of experiences affected. Send `merge_target_id` in the request body, the id o

- Action

**Delete Review**

Permanently deletes a review. This cannot be undone and the review is not archived; any booking it was linked to is left unchanged.

- Action

**Delete Trip Note**

Permanently deletes a trip note.

- Action

**Delete Trip Source**

Permanently deletes a trip source. A built-in source cannot be deleted (409 `read_only`). If trips still use the source, the request is blocked (409 `requires_merge`, with the number of trips in `uses`) unless the body includes `merge_target_id`, the public id of another trip source: those trips are

- Action

**Delete Waiver Type**

Permanently deletes a waiver type. Blocked (409 `in_use_delete`) if it has been signed, is used by an activity or is required on a booking; archive it instead. The error includes `dependencies` with the signed, activity and booking counts.

- Action

**Delete Widget**

Deletes a widget. The widget disappears from the list and stops loading on your website (its embed code returns not found); its past widget events are kept and still report the widget's name. This cannot be undone through the API, so to switch a widget off temporarily set `is_active` to `false` inst

- Action

**Get Audit Log**

Returns one audit log entry by id, with every field change or event detail it contains.

- Action

**Get Availability Insights**

Returns how each timeslot is selling, with a summary over the selection. The overview above explains every field. Requires the `availability.read` scope; add `reports.read` for the revenue fields.

- Action

**Get Booking**

Returns a single booking by id, including `booking_status_id`, the price breakdown (see Money), `customer_id`, `trip_order_id`, `resources` (each assignment with resource name and type, start and end time, duration and note), `custom_fields` and `a

- Action

**Get Booking Check-in QR Code**

The QR code to print on, or show with, this guest's ticket, as a PNG data URI you can put in an `img` tag, plus the address it encodes (`check_in_url`). Scanning it opens that address, which needs a signed-in user of this account; the address identifies the guest by this id, never by name, so it wor

- Action

**Get Callbot**

Returns a single callbot by id with its weekly hours, its knowledge base and team member ids, and any schedule override in force.

- Action

**Get Callbot Pronunciation**

Returns a single pronunciation by id.

- Action

**Get Country**

Returns a single country by its `id` — the same public id other resources return as `country_id`.

- Action

**Get Country by Code**

Returns a single country by its two-letter ISO 3166-1 alpha-2 code (case-insensitive). Responds 404 when the code is not supported.

- Action

**Get Customer**

Returns a single customer by id.

- Action

**Get Custom Field**

Returns a single custom field by id, with its dropdown `options`, the `experience_ids` it is asked on and any dependency on another field.

- Action

**Get Custom Field Value**

Returns a single custom field answer by id.

- Action

**Get Experience**

Returns a single experience by id, with its ticket types and images.

- Action

**Get Experience Customer Type**

Returns one customer type of this experience. Returns 404 `mismatched_experience` when it belongs to a different experience.

- Action

**Get Experience Timeslot**

Returns one timeslot by id, including the ids of its assigned guides and its ticket types with their booked, held and availability counts (`customer_types`, the same name the activity uses for its ticket types; not part of the list). An id that matches no timeslot returns 404.

- Action

**Get Experience Timeslot Config**

Returns one schedule by id, with `generation`: for each activity, `state` (`idle`, `running` or `failed`) and `failed_at`. An id that matches no schedule returns 404.

- Action

**Get Gift Card**

Returns a single gift card by id, with its balance, status and recipient.

- Action

**Get Knowledge Base**

Returns a single knowledge base by id, including its text content for a `text` knowledge base.

- Action

**Get Knowledge Base Citation**

Returns a single knowledge base lookup by id.

- Action

**Get Location**

Returns one location by id. An id that matches no location returns 404.

- Action

**Get Manifest**

Returns the guest roster for a day or a range of up to 31 days, in departure order. The overview above explains how an entry is organised, the filters and how to check guests in. Requires both the `manifest.read` and `bookings.read` scopes.

- Action

**Get Payment Detail Report**

One row per successful payment in the date range, with the trip it was taken against. Amounts are integers in cents.

- Action

**Get Payout Detail Report**

One row per transaction inside each payout in the date range, with the payout it was paid out in and the trip's confirmation code. Columns starting `payout.` are the payout's own figures, repeated on every row of that payout, so do not add them up across rows; use Payouts for payout totals. Amounts

- Action

**Get Payouts Report**

One row per payout, the deposits made to your bank account. `gross_amount` is Charges and `net_amount` is the Deposit Amount. Amounts are integers in the smallest currency unit (cents for USD), and `currency` names it; refunds and fees are negative. Use Payout Detail for the transactions inside each

- Action

**Get Phone Call**

Returns a single phone call by id, with its transcript and tags.

- Action

**Get Phone Call Tag**

Returns a single phone call tag by id.

- Action

**Get Promo Code**

Returns a promo code, including the experiences, ticket types and date windows it applies to.

- Action

**Get Report Run**

Returns one report run.

- Action

**Get Reseller**

Returns a single reseller by id.

- Action

**Get Resource**

Returns a single resource by id.

- Action

**Get Resource Blackout**

Returns a single blackout by id.

- Action

**Get Resource Usage**

Returns a single resource usage by id.

- Action

**Get Restriction**

Returns one restriction by id. An id that matches no restriction returns 404.

- Action

**Get Review**

Returns a single review by its id, including its derived sentiment fields. Responds 404 for an id that does not exist in your account.

- Action

**Get Sales Detail Report**

One row per trip in the date range. Amounts are integers in cents.

- Action

**Get Team Member**

Returns one team member by id, including the permission groups they belong to. An id that matches no visible team member returns 404.

- Action

**Get Trip**

Returns a single trip by id with its full tree: `trip_orders` (every activity on the trip, including cancelled ones) and each order's `bookings`, fully detailed. Each booking lists its `addons`. A deleted trip (removed by staff, not a cancellation) is still returned; its `trip_status` is `deleted`.

- Action

**Get Trip Note**

Returns a single trip note by id.

- Action

**Get Trip Order Detail Report**

One row per booked trip order on a reserved trip in the date range, with its experience and trip. Amounts are integers in cents.

- Action

**Get Trip Payment**

Returns a single payment or refund by id.

- Action

**Get Trip Source**

Returns a single trip source by id.

- Action

**Get Waiver**

Returns a single signed waiver by id, with the same fields as the list.

- Action

**Get Waiver Document Link**

Returns a link to the signed PDF of this waiver, valid for five minutes. Each call issues a new link and writes an audit log entry naming the key that asked.

- Action

**Get Waiver Type**

Returns a single waiver type by id, including its waiver text and every signer requirement.

- Action

**Get Widget**

Returns a single widget by the widget id from its embed code. Responds 404 for an id that does not exist in your account, or belongs to a deleted widget.

- Action

**Get Widget Funnel**

A conversion funnel over the widget events: how many visitor sessions reached each stage, with the percent of the first stage and of the previous stage. Each stage counts the distinct sessions that fired that event in the period, in any order, so a visitor counts once per stage however many times th

- Action

**Get Widget Log**

Returns a single widget event by its id. Responds 404 for an id that does not exist in your account.

- Action

**List Audit Log**

Returns audit log entries, newest first, optionally filtered and sorted. The overview above explains what is recorded, how to read an entry and how to filter by record, team member, entry type and date.

- Action

**List Blackouts of Resource**

Returns the blackouts on one resource: the times it is unavailable, earliest first.

- Action

**List Booking Add-ons**

Returns the add-ons on this booking (options the guest picked, such as an extra hour or a meal choice), oldest first, each with its `addon_title`: exactly the booking's `addons`. The `total` of every line whose `price_adjust_type_id` is not 2 adds up to the booking's `addons_total`, and `total_gross

- Action

**List Booking Custom Fields**

Returns the booking's custom fields: exactly the entries of the booking's `custom_fields`, `{id, slug, name, type, value, required}` (plus `unit`, `lbs` or `kg`, on Weight fields), for every booking-level custom field that applies to its experience, in back-office order, answered or not (`value` is

- Action

**List Booking Products**

Returns the products (extras sold with the ticket, such as a photo package or a rental) on this booking, oldest first. It is a full breakdown of the booking's `products_total`: the `total` of every line adds up to `products_total`, and `total_gross` adds up to `products_total_gross`. Amounts are int

- Action

**List Booking Resource Usages**

Returns the resource usages on a booking: the resources (boats, vehicles, guides and so on) this guest is assigned to, earliest first.

- Action

**List Bookings**

Returns a paginated list of bookings, newest first (highest `id` first; ids only ever increase, so this is creation order). Filter by `trip_order_id`, `customer_id`, `booking_status_id`, `experience_customer_type_id` and `booking_waiver_status` (a slug). Only these indexed fields can be filtered, an

- Action

**List Booking Statuses**

Returns the account's booking statuses in display order. Use an `id` from this list as `booking_status_id` when setting a booking's status or adding a booking. Custom statuses share the slug `user`, so always identify a status by `id`, never by `slug` or `name`.

- Action

**List Booking Waivers**

Returns the booking's waiver requirements: exactly the entries of the booking's `waivers`, `{waiver_type_id, name, status, has_signed_waiver, waiver_id}`, one for every waiver requirement of its experience, signed or not. `status` is `signed` or `unsigned` (a requirement with no record is `unsigned`

- Action

**List Callbot Pronunciations**

Returns the account's pronunciation list ordered by word, paginated. Filter by `word` or `say`; `?sort=word` and `?sort=-word` change the order.

- Action

**List Callbots**

Returns a paginated list of callbots ordered by name, one flat row each without the weekly hours, the knowledge base and team member ids or the schedule override details. Filter by `name`, `is_active`, `voice_id`, `phone_number`, `twilio_number`, `notification_mode`, `hours_mode`, the `can_*` flags,

- Action

**List Callbot Voices**

Returns the voices a callbot can use: the `id` is the value to send as `voice_id` when creating or updating a callbot. This is a short list returned whole, without pagination or a `meta` block.

- Action

**List Countries**

Returns a paginated list of supported countries, ordered by name. Filter by code, name, three-letter code or dialing code, and sort by `name` or `code`.

- Action

**List Customers**

Returns customers.

- Action

**List Custom Fields**

Returns a paginated list of custom fields in the account-wide order. Filter by `custom_field_map` (`trip` or `booking`), `custom_field_type` slug, `visibility`, `is_required`, `internal_name`, `title`, `parent_custom_field_id`, or by ranges on `sort_order`, `min_value`, `max_value` and `created_at`.

- Action

**List Custom Field Values**

Returns a paginated list of custom field answers, newest first. Filter by `booking_id` for one guest's answers, `trip_id` for one reservation's, or `custom_field_id` for every answer to one field.

- Action

**List Experience Customer Types**

Returns every customer type of this experience in display order, lowest `sort_order` first. The list is not paginated. Narrow it with the filters below, for example `?is_visible=true` or `?name[contains]=adult`. Customer types with no value for a numeric filter never match it, and `is_group=false` m

- Action

**List Experience Custom Fields**

Returns the custom fields asked on this experience, in the order guests and staff see them. Guests answer trip fields once per reservation and booking fields once per guest.

- Action

**List Experiences**

Returns a paginated list of experiences, ordered by name unless you pass `sort`. Filter by name, location, status, capacity type and the other settings listed below.

- Action

**List Experience Timeslot Configs**

Returns a paginated list of schedules in id order unless you pass `sort`. Filter by `id`, `name`, `start_date` and `end_date`. Generation status is only on a single schedule.

- Action

**List Experience Timeslots**

Returns a paginated list of timeslots in id order (creation order), optionally filtered and sorted. Each timeslot carries its `guide_ids`. Filter by `id`, `experience_id`, `status`, `start_time`, `is_anytime`, `schedule_id` and the three visibility flags.

- Action

**List Experience Waiver Configs**

Returns every waiver config attached to this experience in display order, lowest `sort_order` first. The list is not paginated. A config's `waiver_option_overrides` is left out when it has no value.

- Action

**List Gift Cards**

Returns a paginated list of gift cards, newest first unless you pass `sort`. Filter by status, balance, expiry date, trip, code or style.

- Action

**List Gift Card Styles**

Returns the gift card styles available to choose from: the value to use for `gift_card_style_id` when creating or updating a gift card. Styles are read-only here; they are managed in the back office.

- Action

**List Knowledge Base Citations**

Returns a paginated list of knowledge base lookups, optionally filtered and sorted.

- Action

**List Knowledge Bases**

Returns a paginated list of knowledge bases, optionally filtered and sorted. Text content is only returned when fetching one knowledge base.

- Action

**List Locations**

Returns a paginated list of locations, ordered by name unless you pass `sort`, optionally filtered and sorted. Filter by `id`, `name`, `is_live` or `country_id`.

- Action

**List Phone Calls**

Returns phone calls, newest first unless you pass `sort`, optionally filtered and sorted. The overview above explains where calls come from, how to read one and how to filter.

- Action

**List Phone Call Tags**

Returns phone call tags, optionally filtered. The overview above explains the tag types and how to filter.

- Action

**List Promo Codes**

Returns a page of promo codes, up to 25, ordered by code unless you pass `sort`. Rows leave out `experiences`, `customerTypes` and `promo_code_dates`; Get one includes them. See Finding promo codes above for filter and sort examples.

- Action

**List Report Runs**

Returns a paginated list of report runs across all reports, newest first. Filter with `?report_type=sales_detail.1`, `?report_run_status=succeeded|pending|failed` or `?created_at[gte]=`. Sort with `?sort=created_at`.

- Action

**List Report Types**

Returns every report you can run, with the parameters each one takes and every column it can return.

- Action

**List Resellers**

Returns a page of resellers, up to 25, ordered by id unless you sort. See Finding resellers above for filter and sort examples.

- Action

**List Resource Blackouts**

Returns a paginated list of blackouts, earliest first by default. Filter by `resource_id` for one resource, or by `start_time`/`end_time` with `[gte]` and `[lte]`. To find blackouts overlapping a window send `end_time[gte]=<window start>&start_time[lte]=<window end>`. Time filters take any RFC 3339

- Action

**List Resource Groups**

Returns the resource groups available to choose from: the value to use for `resource_type_id` when creating or updating a resource.

- Action

**List Resource Icons**

Returns the icons available to choose from: the value to use for `resource_icon` when creating or updating a resource.

- Action

**List Resources**

Returns a paginated list of resources, ordered by name by default. Filter by `name`, by `resource_type_id` for one group, by `resource_icon` slug, by `pax` range, or by `color`.

- Action

**List Resource Usages**

Returns a paginated list of resource usages, earliest first by default. Filter by `booking_id` for one guest, by `resource_id` for one resource, or by `start_time`/`end_time` with `[gte]` and `[lte]`. To find usages overlapping a window send `end_time[gte]=<window start>&start_time[lte]=<window end>

- Action

**List Restrictions**

Returns a paginated list of restrictions, optionally filtered and sorted. The default order applies when `sort` is omitted. Every field can be filtered; the `*_min`, `*_max`, hours and days fields accept `gte` and `lte`, and the names accept `contains` and `begins_with`.

- Action

**List Reviews**

Returns a paginated list of reviews, newest first by default. Filter by `id` (also `[gte]`/`[lte]`), `rating`, `sentiment_positive`, `sentiment_negative` or `sentiment_neutral` (each also `[gte]`/`[lte]`), `is_approved`, `name` or `location` (also `[contains]`/`[begins_with]`), `overall_comment` or

- Action

**List Team Members**

Returns a paginated list of team members in the order they were added unless you pass `sort`, optionally filtered and sorted. TripWorks-managed accounts and accounts linked to a reseller or affiliate are never included. The list leaves out `groups`; get one team member to see their permission groups

- Action

**List Trip Custom Fields**

Returns the trip's own custom fields: `{id, slug, name, type, value, required}` (plus `unit`, `lbs` or `kg`, on Weight fields) for every trip-level custom field asked on any of its activities, in back-office order, answered or not (`value` is null when unanswered). Guest-level fields are on each boo

- Action

**List Trip Notes**

Returns a paginated list of trip notes, newest first by default. Filter by `trip_id` to get every note on one trip, by `user_avatar_id` for one author, or by `created_at[gte]`/`created_at[lte]` for a time range.

- Action

**List Trip Payments**

Returns a paginated list of payments and refunds, newest first by default, including those on draft and deleted trips. Filter by `trip_id` to get every payment on one trip, by `payment_status`, `payment_type_id` or `payment_direction_id`, by `created_at[gte]`/`created_at[lte]` for a time range, or b

- Action

**List Trips**

Returns a paginated list of trips ordered by activity date with the latest first (upcoming trips before past ones), then newest created, one flat row per trip with no `trip_orders` or `bookings`. Filter by `confirmation_code`, `trip_status`, `trip_type`, `customer_id`, `trip_source_id`, `reseller_id

- Action

**List Trip Sources**

Returns a page of trip sources, up to 25. See Finding trip sources above for filter and sort examples.

- Action

**List Usages of Resource**

Returns the resource usages on one resource: the guests assigned to it, earliest first.

- Action

**List Waivers**

Returns a paginated list of signed waivers, newest signed first, one row per signature. Filter by `waiver_type_id`, `customer_id`, `trip_order_id`, `is_waiver_adult`, a date range on `created_at` (`created_at[gte]`, `created_at[lte]`), a date of birth or range on `dob`, text on `first_name`, `last_n

- Action

**List Waiver Types**

Returns a paginated list of waiver types, ordered by name, optionally filtered and sorted. Every field can be filtered: `name` and `title` with `eq`, `contains` or `begins_with`; `body` and `body_minor` with `contains`; the age limits with `eq`, `gte` or `lte`; the flags and `waiver_type_status` (a

- Action

**List Widget Logs**

Returns a paginated list of widget events, newest first by default. With no lower bound on `created_at` the list covers the 30 days up to now, or up to `created_at[lte]` when only that is given; pass `created_at[gte]` to look further back. Filter by `id` (an exact match), `created_at` (also `[gte]`/

- Action

**List Widgets**

Returns a paginated list of widgets, ordered by name. Deleted widgets are never included. Filter by `name` (also `[contains]`/`[begins_with]`), `widget_type`, `selection_type`, `default_view`, `default_language`, `embed_type`, `is_active`, `clicks` or `embeds` (each also `[gte]`/`[lte]`), or `create

- Action

**Mark Booking Waivers Signed**

Marks every waiver the booking's experience requires as signed, using the same per-requirement step as `.

- Action

**Mark One Booking Waiver Signed**

Marks a single one of the booking's waiver requirements as signed. The requirement is identified by its `waiver_type_id` from the booking's `waivers`. Send no body. This is a staff override: it records that requirement as signed without a signed waiver document

- Action

**Merge Customers**

Merges two or more customers into one and permanently deletes the duplicates. Send at least two customer ids in `ids`. TripWorks chooses the destination: the customer with the most complete name, phone and email, and the oldest record if they tie. Blank phone, country, street address, city, state, p

- Action

**Reload Gift Card**

Adds `amount`, a positive whole number of cents, to both the original and the current balance, and sets the card to `pending` until the paying trip settles. Refused for a deleted or expired card.

- Action

**Reorder Custom Field**

Moves the field to a position in the account-wide order (0 is first) and shifts the fields in between. A position past the end puts it last. Returns the field with its new `sort_order`.

- Action

**Reorder Experience Custom Fields**

Sets the order the experience's custom fields are asked in. `custom_field_ids` lists assigned field ids in the order you want; fields you leave out keep their relative order after the listed ones.

- Action

**Reorder Experience Waiver Configs**

Sets the display order of this experience's waiver configs. Send `order` as a list that contains the `id` of every waiver config on the experience exactly once, in the order you want. An empty list returns 400. An id that is not a waiver config of this experience, or a list that leaves one out, retu

- Action

**Run Analytics Query**

Aggregates over your data: counts, sums, averages, minimums and maximums, optionally over a date range with an automatic comparison to the preceding period, and grouped by a dimension or by time. It also returns the headline business metrics.

- Action

**Set Booking Status**

Sets the booking's status to any of the account's booking statuses, the same choice the back office offers (for example checked in, no-show, or back to not checked in).

- Action

**Set Callbot Schedule Override**

Starts a schedule override that beats the schedule, replacing any already in force. `mode` is `answer` (answer every call) or `transfer` (send every call to a person). `duration` is `next_schedule` (until the schedule next changes), `custom` (until `until`, a date and time in the account's timezone,

- Action

**Set Status for Multiple Bookings**

Sets the status of up to 50 bookings in one call, for example to check in a whole party. Identify the target status by `booking_status_id` or by `status`, the shorthand for a built-in status. Pass `dry_run: true` to see what wo

- Action

**Sync Callbot**

Queues another attempt at setting the callbot up with the voice provider, for one whose last sync failed or is stuck. Returns immediately with the status the sync is now in (`sync_status`).

- Action

**Sync Callbot Prompt from Template**

Brings the callbot up to date with the latest TripWorks callbot template at the voice provider. Returns 409 `template_sync_failed` with a plain-language message when the provider rejects it, and `notice` names any knowledge base documents that were dropped to let it through.

- Action

**Sync Knowledge Base**

Queues a re-sync of the knowledge base to the voice/chat provider. Returns immediately; poll `sync_status` for progress. Blocked (409) for a type that cannot be synced.

- Action

**Unassign Custom Field from Experience**

Stops asking a custom field on this experience. Answers already given are kept. Returns 404 if the field is not assigned to the experience.

- Action

**Update Callbot**

Updates a callbot and queues re-syncing it with the voice provider. Only the fields you include are changed; omitted fields are left as they are. The `schedule_override_*` fields cannot be written here: use the set and clear schedule override actions.

- Action

**Update Callbot Pronunciation**

Changes a word or its respelling and updates every callbot with the voice provider in the background. Only the fields you include are changed.

- Action

**Update Customer**

Updates a customer and returns it. Only the fields you include are changed; omitted fields are left as they are. Write `sms_paused: false` to let texts go to the customer's number again after the carrier reported it cannot receive them; it is refused (422) for a customer who opted out, which only th

- Action

**Update Custom Field**

Updates a custom field. Only the fields you include are changed. `custom_field_type` and `custom_field_map` cannot be changed: sending the value the field already has is accepted, anything else is rejected with 422. When you send `options` or `experience_ids` the list you send replaces the current o

- Action

**Update Custom Field Value**

Changes the answer. `value` is the only field that can be changed; the custom field and the trip or booking are fixed. Send `null` to empty the answer.

- Action

**Update Experience**

Updates an experience. Only the fields you include are changed; omitted fields are left as they are. The status, ticket types and images cannot be changed here; ticket types are managed at `/rest/experiences/{id}/customer-types`, except which one is the default: set `default_customer_type_id` here.

- Action

**Update Experience Customer Type**

Changes a customer type. Only the fields you include are changed. `is_default` cannot be written here: set `default_customer_type_id` on the experience to change the default. `null` clears `description`, `pax_fixed`, `pax_min`, `pax_max`, `deposit_amount` and `deposit_percent`. `capacity` is only ac

- Action

**Update Experience Timeslot**

Updates a timeslot. Only the fields you include are changed, and the change is all or nothing: if any field is refused, none is applied.

- Action

**Update Experience Waiver Config**

Changes which waiver type a config uses with `waiver_type_id`, who signs it for each ticket type with `waiver_option_overrides`, or both. Only the fields you include are changed. Send `waiver_option_overrides` as `null` to clear the overrides. Each override value must be 1 (Adult), 2 (Minor) or 3 (C

- Action

**Update Gift Card**

Updates a gift card. Only the fields you include are changed; omitted fields are left as they are. `trip_id` cannot be changed after creation, and the balance and status cannot be written.

- Action

**Update Knowledge Base**

Updates a knowledge base and queues a re-sync. Only the fields you include are changed — omitted fields are left as-is. The type cannot be changed (409).

- Action

**Update Location**

Updates a location. Only the fields you include are changed — omitted fields are left as-is.

- Action

**Update Multiple Experience Timeslots**

Makes the same change to many timeslots: the same fields and the same decisions as updating one. Choose them with `ids`, or with `filters`. Add `dry_run: true` to see what would happe

- Action

**Update Promo Code**

Updates a promo code and returns it. Only the fields you include are changed; omitted fields are left as they are. The experiences and ticket types of a code cannot be changed: `experience_ids` and `customer_type_ids` are accepted on Create only, and sending them here is rejected with 422 `unknown_f

- Action

**Update Reseller**

Updates a reseller. Only the fields you include are changed — omitted fields are left as-is. The reseller type is set at creation and cannot be changed: sending `reseller_type_id` is rejected with 422 `unknown_fields`, as is any other field that is not writable (including `collect_type` and `commiss

- Action

**Update Resource**

Updates a resource. Only the fields you include are changed; omitted fields are left as they are. `resource_type_id` can be null to remove the resource from its group.

- Action

**Update Resource Blackout**

Changes the note of a blackout; `note` is the only field that can be changed, and null clears it. To change the times, clear the window and create a new blackout.

- Action

**Update Resource Usage**

Changes a usage in one atomic write. Only the fields you include are changed. `resource_id` moves the guest to another resource, `start_time` and `end_time` or `duration` change the window (without `end_time` or `duration` the length is kept), and `internal_note` sets or clears the staff note. The b

- Action

**Update Restriction**

Updates a restriction. Only the fields you include are changed; omitted fields are left as they are. The change applies to every experience that uses the restriction.

- Action

**Update Review**

Partially updates a review. Only the fields you include are changed — omitted fields are left as-is, and an explicit `null` clears nullable fields such as `location` and `experience_id` (comments are cleared and then omitted from responses; `name`, `rating` and `review_type` cannot be cleared). Chan

- Action

**Update Team Member**

Updates a team member's profile. Only the fields you include are changed. `email` and `cell_phone` are read only, and login passwords and permission-group assignment cannot be changed through the API. A failed validation returns 422 with an `errors` object keyed by field.

- Action

**Update Trip Note**

Changes the text of a note and marks it as edited. `text` is the only field that can be changed after creation; the trip and author are fixed.

- Action

**Update Trip Payment**

Changes the note and the details of the payment's own type: `notes` for any payment, `check_number` and `check_date` together for a check, `wire_date` for a wire, `voucher_number` for a voucher. Send `notes` on its own, not with a detail field (refused even as `null` or an empty string); alone, `nul

- Action

**Update Trip Source**

Updates a trip source and returns it. Only the fields you include are changed; omitted fields are left as they are. On a built-in source, a new `name` is ignored. `is_read_only` and `category_slug` cannot be set: sending either is rejected with 422 `unknown_fields`.

- Action

**Update Waiver Type**

Updates a waiver type. Only the fields you include are changed; omitted fields are left as-is. Setting `waiver_type_status` to `archived` is refused with 409 `in_use_archive` while an activity uses the waiver type. Sending `waiver_type_status: null` is rejected with 422; the status cannot be cleared

- Action

**Update Widget**

Partially updates a widget: only the fields you include are changed. Writable fields are `name`, `widget_type`, `selection_type`, `experience_ids` (the full list, as ids from `/rest/experiences`; it replaces the existing list), `default_view`, `default_language`, `embed_type`, `is_active` and `custo

Reviews

## What our customers say

Questions

## TripWorks, answered

###

### Is there a TripWorks MCP server?

APIANT's MCP server at https://mcp.apiant.ai works with TripWorks. Add that address to any AI client that takes a remote MCP server and sign in once in your browser. Your client can then run TripWorks actions on demand, or have APIANT build, test and run automations that use TripWorks. Nothing to install.

###

### What can start an automation from TripWorks?

Any of TripWorks's 7 triggers in the catalog, including Customer Created, Customer Updated, Payment Created and Trip Created. Describe the moment in plain language and your agent picks the right one.

###

### What can your agent do in TripWorks?

Any of TripWorks's 171 actions, including Create Experience Timeslot Config, Update Callbot, Update Callbot Pronunciation and Update Customer. Your agent maps the data both ways and tests every scenario before it ships.

###

### Can I use TripWorks directly from Claude, ChatGPT or Cursor?

Yes. Connect your AI client to APIANT once and it works with TripWorks two ways. Ask it to do something in TripWorks once and it runs that action on the spot. Ask for an automation and your agent builds it, tests every scenario and keeps it running on its own. A one-off action uses your plan's tasks the same way an automation step does.

###

### Do I need to write code against the TripWorks API?

No. APIANT connects to the TripWorks API for you, with your TripWorks API key. Describe what you want in plain language and your agent builds it on the TripWorks triggers and actions in the catalog. If you need an endpoint that is not there yet, your agent reads the TripWorks API documentation and adds it.

###

### Which apps can TripWorks connect to?

Any app in the catalog; the list on this page pairs TripWorks with each of them. If the other app is missing, point your agent at its API documentation and it builds the connector.

###

### What happens when something fails?

Your agent works that out for you. It plans the failure paths along with the happy path, then tests every scenario before it ships.

###

### Is there a free plan?

Yes. Every plan includes the agent, including free, and building from your own AI client spends no assistant credits.
