WeTravel Trips API

The Trips API from WeTravel — 3 operation(s) for trips.

OpenAPI Specification

wetravel-trips-api-openapi.yml Raw ↑
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