WeTravel Trips API
The Trips API from WeTravel — 3 operation(s) for trips.
The Trips API from WeTravel — 3 operation(s) for trips.
openapi: 3.0.1
info:
title: WeTravel Partner Access token Trips API
version: 2.0.0
description: WeTravel Partner API — Trip Builder, Bookings/Orders, Payments (payment links), Transactions, Suppliers and Leads. Enables travel companies to programmatically create WeTravel trip and booking pages and sync customers, orders and transactions. Harvested from the WeTravel Developer Hub per-endpoint OpenAPI fragments (developer.wetravel.com). Paths normalized to the https://api.wetravel.com/v2 base.
x-apievangelist:
generated: '2026-07-21'
method: searched
source: https://developer.wetravel.com/reference (per-endpoint OpenAPI fragments, merged; paths normalized to the /v2 base)
note: Harvested v2 Partner API. Current release is v3 (2026-02-01); see changelog/.
servers:
- url: https://api.wetravel.com/v2
description: Production
- url: https://api.demo.wetravel.to/v2
description: Sandbox
security:
- bearerAuth: []
- tokenAuth: []
tags:
- name: Trips
paths:
/draft_trips:
post:
tags:
- Trips
summary: Create trip
description: Creating a "draft" trip object. Using the other endpoints of Trip builder you can enhance your trip object and eventually publish it.
operationId: createTrip
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CreateTrip'
required: true
responses:
'201':
description: Successfully created
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Trip'
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ValidationError'
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error message
example: A token is not valid.
get:
tags:
- Trips
summary: List trips
description: Get the list of all trips
operationId: getTrips
parameters:
- in: query
name: per_page
description: Number of trips per page
schema:
type: integer
minimum: 1
maximum: 1000
example: 25
default: 1000
- in: query
name: page
description: Page number (minimum:1)
schema:
type: integer
minimum: 1
example: 1
default: 1
- in: query
name: exclude_payment_links
schema:
type: boolean
default: false
description: Exclude payment links from the response
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Trip'
pagination:
$ref: '#/components/schemas/Pagination'
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error message
example: A token is not valid.
/draft_trips/{trip_uuid}:
delete:
tags:
- Trips
summary: Delete trip
description: Delete Trip
operationId: deleteTrip
parameters:
- name: trip_uuid
in: path
description: UUID of the trip
required: true
schema:
type: string
responses:
'204':
description: Delete Trip
content: {}
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ValidationError'
'404':
description: Not found
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error message
example: Trip {TripID} not found
get:
tags:
- Trips
summary: Get trip
description: Get a trip by UUID
operationId: getTripById
parameters:
- name: trip_uuid
in: path
description: UUID of the trip
required: true
schema:
type: string
- in: query
name: exclude_payment_links
schema:
type: boolean
default: false
description: Exclude payment links from the trip response
responses:
'200':
description: Successfull response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Trip'
'404':
description: Not found
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error message
example: Trip {TripID} not found
patch:
tags:
- Trips
summary: Update trip
description: Update Trip
operationId: updateTrip
parameters:
- name: trip_uuid
in: path
description: UUID of the trip
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/UpdateTrip'
required: true
responses:
'200':
description: Successfully updated
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Trip'
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ValidationError'
'404':
description: Not found
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error message
example: Trip {TripID} not found
/draft_trips/{trip_uuid}/publish:
post:
tags:
- Trips
summary: Publish trip
description: Publish Trip
operationId: publishTrip
parameters:
- name: trip_uuid
in: path
description: UUID of the trip
required: true
schema:
type: string
responses:
'200':
description: Publish Trip
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Trip'
'404':
description: Not found
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error message
example: Trip {TripID} not found
'500':
description: Server Error
content:
text/plain:
schema:
type: string
description: Error message
example: An unhandled lowlevel error occurred. The application logs may have details.
components:
schemas:
ValidationError:
type: object
properties:
field_name:
type: array
items:
type: string
description: Error message
example: is missing
UpdateTrip:
type: object
properties:
trip_id:
type: string
description: This optional Trip Reference is set by you. It is not visible to your clients. It is only visible to you in your WeTravel dashboard and reporting.
example: TRIP20
title:
type: string
description: Title of the trip
example: Epic London Trip
destination:
type: string
description: Destination of the trip
example: London, Uk
start_date:
type: string
description: Start date of the trip in ISO 8601 format, e.g. “2021-05-07”
example: '2021-05-07T00:00:00.000Z'
end_date:
type: string
description: End date of the trip in ISO 8601 format, e.g. “2021-05-07”
example: '2021-05-07T00:00:00.000Z'
group_min:
type: integer
description: Min group size of the trip
format: int32
example: 5
group_max:
type: integer
description: Max group size of the trip
format: int32
example: 15
currency:
type: string
description: Currency of the trip
example: USD
participant_list_show_type:
type: string
description: "You can choose to show the names of already booked participants on your booking page. The options are “everyone”, “participants” or “only_organizer” which stand for\n everyone - everyone can see the participant list on the booking page\n participants - only already booked participants see the participant list\n only_organizer - nobody can see the participant list (only the organizer)"
example: everyone
enum:
- everyone
- participants
- only_organizer
welcome_message:
type: string
description: This welcome message is added to the booking confirmation email and is also shown on the payment confirmation page. This can also contain HTML.
example: YAY!!!
participant_fees:
type: string
description: "This setting allows you to choose how the payment fees are handled. The options are:\n “credit_card” - Bank account payments are free to the participant, but if they choose to pay by credit card, a card fee is added to the price\n “service” - Service fees are paid by the participant. Payment method fees are covered by the organizer.\n “all” - all fees are paid by the participant\n “none” - all fees are paid by the organizer"
example: all
enum:
- credit_card
- service
- all
- none
listing_status:
type: string
description: Whether the trip is “public” or “private”
example: private
enum:
- private
- public
waiting_list_enabled:
type: boolean
description: Whether the trip has a waitlist or not in case it’s sold out.
example: true
can_contribute:
type: boolean
description: Whether the participant is allowed to create a contribution / fundraising page after booking this trip.
example: true
carbon_offset:
$ref: '#/components/schemas/CarbonOffset'
description: Update a trip
CreateTrip:
required:
- can_contribute
- currency
- destination
- end_date
- group_max
- group_min
- listing_status
- participant_fees
- participant_list_show_type
- start_date
- title
- waiting_list_enabled
type: object
properties:
trip_id:
type: string
description: Allows you to set the optional trip reference. It is not visible to your clients, it is only visible to you in your WeTravel dashboard and reporting.
example: TRIP20
url:
type: string
description: Allows you to set the URL of the trip on WeTravel
example: https://wetravel.com/trips/123456
title:
type: string
description: Allows you to set the title of the trip
example: Epic London Trip
default: Epic London Trip
destination:
type: string
description: Allows you to set the destination of the trip in free-form text.
example: London, UK
default: London, UK
start_date:
type: string
description: Allows you to set the start date of the trip in ISO 8601 format, e.g. “2021-05-07”
example: '2021-05-07T00:00:00.000Z'
default: '2021-05-07T00:00:00.000Z'
end_date:
type: string
description: Allows you to set the end date of the trip in ISO 8601 format, e.g. “2021-05-07”
example: '2021-05-07T00:00:00.000Z'
default: '2021-05-07T00:00:00.000Z'
group_min:
type: integer
description: Allows you to set minimum group size for the trip
format: int32
example: 5
default: 5
group_max:
type: integer
description: Allows you to set the maximum group size for the trip
format: int32
example: 15
default: 15
currency:
type: string
description: Allows you to set the currency in which the payments are accepted for the trip
example: USD
default: USD
enum:
- USD
- EUR
- CAD
- ZAR
- GBP
participant_list_show_type:
type: string
description: "Allow you to choose how to show the names of already booked participants on your booking page. The available options are “everyone”, “participants” or “only_organizer” which stand for\n everyone - everyone can see the participant list on the booking page\n participants - only already booked participants see the participant list\n only_organizer - nobody can see the participant list (only the organizer)"
example: everyone
default: everyone
enum:
- everyone
- participants
- only_organizer
welcome_message:
type: string
description: Allow you to set a welcome message that is added to the booking confirmation email and is also shown on the payment confirmation page. This field can also contain HTML tags such as \<p\>, \<b\>, \<i\>, \<strong\>, \<a\> for formatting.
example: Thanks for booking the trip! Please <a href="http://example.com">see the details</a>
default: Welcome message
participant_fees:
type: string
description: "Allows you to choose how the payment fees are handled. The available options are:\n “credit_card” - Bank account payments are free for the participant, but if they choose to pay by credit card, a card fee is added to the price\n “service” - Service fees are paid by the participant. Payment method fees are covered by the organizer.\n “all” - all fees are paid by the participant\n “none” - all fees are paid by the organizer"
example: all
enum:
- credit_card
- service
- all
- none
listing_status:
type: string
description: Allows you to set whether the trip is “public” or “private”. Public trips can be indexed by search engines; however, private ones cannot.
example: private
default: private
enum:
- private
- public
waiting_list_enabled:
type: boolean
description: Allows you to set whether the trip has a waitlist or not in case it’s sold out.
example: true
default: true
can_contribute:
type: boolean
description: Allows you to set whether the participant is allowed to create a contribution / fundraising page after booking this trip.
example: true
default: true
carbon_offset:
$ref: '#/components/schemas/CarbonOffset'
description: Trip object for creation
CarbonOffset:
required:
- enabled
- percentage
- paid_by_participant
type: object
properties:
enabled:
type: boolean
description: Carbon Offset Contribution offered for the trip
example: true
default: false
percentage:
type: number
description: Carbon Offset Contribution amount as a selected percentage of the trip price
example: 2.5
default: 1
paid_by_participant:
type: boolean
description: Carbon Offset Contribution is paid by participant
example: true
default: true
description: Carbon Offset Contribution
Trip:
required:
- can_contribute
- currency
- destination
- end_date
- group_max
- group_min
- listing_status
- participant_fees
- participant_list_show_type
- start_date
- title
- waiting_list_enabled
type: object
properties:
uuid:
type: string
description: Unique ID of the trip
example: '12345678'
created_at:
type: string
format: date-time
description: Time at which the object was created.
example: '2017-07-21T17:32:28.000Z'
trip_id:
type: string
description: This optional Trip Reference is set by you. It is not visible to your clients. It is only visible to you in your WeTravel dashboard and reporting.
example: TRIP20
url:
type: string
description: Url of the trip
example: https://wetravel.com/trips/123456
title:
type: string
description: Title of the trip
example: Epic London Trip
default: Epic London Trip
destination:
type: string
description: Destination of the trip
example: London, Uk
default: London, Uk
start_date:
type: string
description: Start date of the trip in ISO 8601 format, e.g. “2021-05-07”
example: '2021-05-07T00:00:00.000Z'
default: '2021-05-07T00:00:00.000Z'
end_date:
type: string
description: End date of the trip in ISO 8601 format, e.g. “2021-05-07”
example: '2021-05-07T00:00:00.000Z'
default: '2021-05-07T00:00:00.000Z'
group_min:
type: integer
description: Min group size of the trip
format: int32
example: 5
default: 5
group_max:
type: integer
description: Max group size of the trip
format: int32
example: 15
default: 15
currency:
type: string
description: Currency of the trip
example: USD
default: USD
participant_list_show_type:
type: string
description: "You can choose to show the names of already booked participants on your booking page. The options are “everyone”, “participants” or “only_organizer” which stand for\n everyone - everyone can see the participant list on the booking page\n participants - only already booked participants see the participant list\n only_organizer - nobody can see the participant list (only the organizer)"
example: everyone
default: everyone
enum:
- everyone
- participants
- only_organizer
welcome_message:
type: string
description: This welcome message is added to the booking confirmation email and is also shown on the payment confirmation page. This can also contain HTML.
example: YAY!!!
default: YAY!!!
participant_fees:
type: string
description: "This setting allows you to choose how the payment fees are handled. The options are:\n “credit_card” - Bank account payments are free to the participant, but if they choose to pay by credit card, a card fee is added to the price\n “all” - all fees are paid by the participant\n “none” - all fees are paid by the organizer"
example: all
enum:
- credit_card
- all
- none
listing_status:
type: string
description: Whether the trip is “public” or “private”
example: private
default: private
enum:
- private
- public
published:
type: integer
description: Date and time when the trip was last published. Unpublished trips will return the “published” field empty.
format: int32
waiting_list_enabled:
type: boolean
description: Whether the trip has a waitlist or not in case it’s sold out.
example: true
default: true
can_contribute:
type: boolean
description: Whether the participant is allowed to create a contribution / fundraising page after booking this trip.
example: true
default: true
carbon_offset:
$ref: '#/components/schemas/CarbonOffset'
description: Trip model
Pagination:
type: object
properties:
total_count:
type: integer
description: Total number of leads
format: int32
example: 1
page:
type: integer
description: Current page number where the lead is found
format: int32
example: 1
per_page:
type: integer
description: 'How many lead are per page (default: 25)'
format: int32
example: 20
total_pages:
type: integer
description: Total number of pages
format: int32
example: 1
has_previous:
type: boolean
description: Whether the previous page is there or not
example: false
has_next:
type: boolean
description: Whether the next page is there or not
example: false
description: Pagination object
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
tokenAuth:
type: apiKey
in: header
name: X-Api-Key