> ## Documentation Index
> Fetch the complete documentation index at: https://developers.portao3.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a passenger

> Registers a passenger in the organization, so they can be booked on trips.

Send `userId` to register one of the organization's users: their name, e-mail and CPF are copied from the user and can't be changed later. Without `userId`, you register someone who is not a user, and the full profile is required: `name`, `birthDate`, `emails` and at least one document.

Every required passenger custom field of the organization must be in `customFields`. An error the travel provider reports about the passenger's data — a document number it rejects, say — is returned with its own status, `code` and `message`.


## OpenAPI

````yaml /api-reference/travel.openapi.json post /realms/{realmId}/organizations/{organizationId}/passengers
openapi: 3.0.3
info:
  title: Travel
  version: 1.0.0
  description: >-
    Portão 3 travel API. Every endpoint requires a bearer token in the
    Authorization header (Authorization: Bearer <token>) unless its page states
    otherwise; see the Authentication guide. That requirement is not repeated
    per endpoint. Generated by tools/openapi from code (routes + security) and
    the hand-written spec (request/response bodies). Passenger directory, trips
    and the search proxy (air/hotel/bus/vehicle). Every route validates path,
    query and body through a zod Input class (`travel/src/domain/*/input`),
    which documents its parameters and body; responses are the named interfaces
    in `travel/src/domain/*/response.ts`. Confidence tiers: generated:typed=53
    copied:manual=0 unknown=0.
servers:
  - url: https://api.travel.v2.portao3.com.br/
    description: production
  - url: https://api.travel.dev.3pers.com.br/
    description: development
security: []
tags:
  - name: Passengers
  - name: Trips
  - name: Air search
  - name: Hotel search
  - name: Bus search
  - name: Vehicle search
paths:
  /realms/{realmId}/organizations/{organizationId}/passengers:
    post:
      tags:
        - Passengers
      summary: Create a passenger
      description: >-
        Registers a passenger in the organization, so they can be booked on
        trips.
      operationId: postRealmsByRealmIdOrganizationsByOrganizationIdPassengers
      parameters:
        - name: realmId
          in: path
          required: true
          description: |-
            ID of your realm.

            Format: `UUID`
          schema:
            type: string
            format: uuid
          example: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
        - name: organizationId
          in: path
          required: true
          description: |-
            ID of the organization to register the passenger in.

            Format: `UUID`
          schema:
            type: string
            format: uuid
          example: c4bd3f21-dfbd-44e8-8055-68ba15bed410
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userId:
                  description: >-
                    ID of an active user of the organization to link the
                    passenger to. The passenger's name, e-mail and CPF are then
                    copied from the user — don't send `name`, `emails` or
                    `documents.CPF` — and `birthDate` is needed only when the
                    user has none. Omit it to register someone who is not a
                    user; `name`, `birthDate`, `emails` and at least one
                    document are then required. A user can have only one
                    passenger.


                    Format: `UUID`
                  example: e3553bc1-5e20-4e17-b22a-a796fda0aa99
                  type: string
                  format: uuid
                name:
                  description: >-
                    Full name, as it appears on the passenger's travel
                    documents. Required without `userId`; don't send it with
                    `userId`.
                  example: Mariana Costa
                  type: string
                  minLength: 1
                gender:
                  type: string
                  enum:
                    - MALE
                    - FEMALE
                  description: Gender.
                  example: FEMALE
                birthDate:
                  description: >-
                    Date of birth (`YYYY-MM-DD`). Required without `userId`;
                    with `userId`, used only when the user has none.
                  example: '1990-04-17'
                  type: string
                  pattern: ^\d{4}-\d{2}-\d{2}$
                emails:
                  description: >-
                    Contact e-mails; the first one is the main contact. Required
                    without `userId`; don't send it with `userId`.


                    ---


                    Example: `["mariana.costa@acme.com.br"]`
                  minItems: 1
                  type: array
                  items:
                    type: string
                    format: email
                    pattern: >-
                      ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                    example: mariana.costa@acme.com.br
                phoneNumbers:
                  minItems: 1
                  type: array
                  items:
                    anyOf:
                      - type: string
                        pattern: ^\d{10,15}$
                      - type: string
                        pattern: ^\+[1-9]\d{9,14}$
                    example: '+5511987654321'
                  description: >-
                    Contact phone numbers in international format
                    (`+5511987654321`). Digits only with the country code
                    (`5511987654321`) is also accepted.


                    ---


                    Example: `["+5511987654321"]`
                documents:
                  description: >-
                    Identity documents, by type. Without `userId`, at least one
                    is required. With `userId`, the CPF comes from the user; you
                    may add the others (an empty object is fine).
                  type: object
                  properties:
                    CPF:
                      description: >-
                        Brazilian taxpayer ID. Don't send it with `userId` — it
                        comes from the user.
                      type: object
                      properties:
                        code:
                          type: string
                          minLength: 1
                          description: CPF number, 11 digits.
                          example: '52998224725'
                        issueCountry:
                          type: string
                          minLength: 2
                          maxLength: 2
                          description: Issuing country. Always `BR`.
                          example: BR
                      required:
                        - code
                        - issueCountry
                      nullable: true
                    RG:
                      description: Brazilian national identity card.
                      type: object
                      properties:
                        code:
                          type: string
                          minLength: 1
                          description: RG number, digits and letters only.
                          example: '123456789'
                        issueCountry:
                          type: string
                          minLength: 2
                          maxLength: 2
                          description: Issuing country. Always `BR`.
                          example: BR
                      required:
                        - code
                        - issueCountry
                      nullable: true
                    PASSPORT:
                      description: Passport.
                      type: object
                      properties:
                        code:
                          type: string
                          minLength: 1
                          description: Passport number.
                          example: FX123456
                        issueCountry:
                          type: string
                          minLength: 2
                          maxLength: 2
                          description: Issuing country (ISO 3166-1 alpha-2).
                          example: BR
                        expirationDate:
                          type: string
                          pattern: ^\d{4}-\d{2}-\d{2}$
                          description: Expiration date (`YYYY-MM-DD`).
                          example: '2031-04-17'
                      required:
                        - code
                        - issueCountry
                        - expirationDate
                      nullable: true
                    CNH:
                      description: Brazilian driver's license.
                      type: object
                      properties:
                        code:
                          type: string
                          minLength: 1
                          description: Driver's license number.
                          example: '01234567890'
                        issueCountry:
                          type: string
                          minLength: 2
                          maxLength: 2
                          description: Issuing country. Always `BR`.
                          example: BR
                      required:
                        - code
                        - issueCountry
                      nullable: true
                address:
                  type: object
                  properties:
                    shortAddress:
                      type: string
                      minLength: 1
                      description: The address in a single line.
                      example: Av. Paulista, 1000 - Bela Vista, São Paulo - SP
                    adressLines:
                      minItems: 1
                      type: array
                      items:
                        type: string
                        minLength: 1
                        example: Av. Paulista, 1000
                      description: >-
                        The address in postal lines. The field name is spelled
                        `adressLines`.


                        ---


                        Example: `["Av. Paulista, 1000","Bela Vista"]`
                    locality:
                      type: string
                      minLength: 1
                      description: City.
                      example: São Paulo
                    administrativeArea:
                      type: string
                      minLength: 1
                      description: State or province code.
                      example: SP
                    administrativeAreaName:
                      type: string
                      minLength: 1
                      description: State or province name.
                      example: São Paulo
                    postalCode:
                      type: string
                      minLength: 1
                      description: Postal code.
                      example: 01310-100
                    country:
                      type: string
                      minLength: 2
                      maxLength: 2
                      description: Country (ISO 3166-1 alpha-2).
                      example: BR
                    timezone:
                      type: string
                      minLength: 1
                      description: IANA time zone of the address.
                      example: America/Sao_Paulo
                    coordinates:
                      type: object
                      properties:
                        lat:
                          type: number
                          description: Latitude.
                          example: -23.5614
                        lng:
                          type: number
                          description: Longitude.
                          example: -46.6559
                      required:
                        - lat
                        - lng
                      description: Location of the address.
                  required:
                    - shortAddress
                    - adressLines
                    - locality
                    - administrativeArea
                    - administrativeAreaName
                    - postalCode
                    - country
                    - timezone
                    - coordinates
                  description: Home address.
                loyalty:
                  description: |-
                    Loyalty program numbers, keyed by carrier code.

                    ---

                    Example: `{"LA":"123456789"}`
                  example:
                    LA: '123456789'
                  type: object
                  additionalProperties:
                    type: string
                customFields:
                  description: >-
                    Values of the organization's passenger custom fields, keyed
                    by the custom field's `slug`. Every required one must be
                    present.


                    ---


                    Example: `{"cost-center":"CC-1020"}`
                  example:
                    cost-center: CC-1020
                  type: object
                  additionalProperties: {}
              required:
                - gender
                - phoneNumbers
                - address
      responses:
        '201':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the passenger.
                    example: 6710a3f2c9e77b0012a4d5e1
                  realmId:
                    type: string
                    description: ID of the realm the passenger belongs to.
                    example: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
                    format: uuid
                  organizationId:
                    type: string
                    description: ID of the organization the passenger belongs to.
                    example: c4bd3f21-dfbd-44e8-8055-68ba15bed410
                    format: uuid
                  source:
                    type: string
                    enum:
                      - PASSENGER
                    description: >-
                      Always `PASSENGER` for a passenger. In the passenger list,
                      it tells a passenger apart from a user who is not a
                      passenger yet (`USER`).
                    example: PASSENGER
                  profileComplete:
                    type: boolean
                    enum:
                      - true
                    description: >-
                      Always `true`: a passenger has every field a booking
                      needs.
                    example: true
                  userId:
                    type: string
                    description: >-
                      ID of the organization user this passenger is linked to.
                      Omitted for a passenger who is not a user. A linked
                      passenger's `name`, first e-mail and CPF come from the
                      user and can't be changed.
                    example: e3553bc1-5e20-4e17-b22a-a796fda0aa99
                    format: uuid
                  name:
                    type: string
                    description: >-
                      Full name, as it appears on the passenger's travel
                      documents.
                    example: Mariana Costa
                  gender:
                    type: string
                    enum:
                      - MALE
                      - FEMALE
                    description: Gender.
                    example: FEMALE
                  birthDate:
                    type: string
                    description: Date of birth (`YYYY-MM-DD`).
                    example: '1990-04-17'
                  emails:
                    type: array
                    items:
                      type: string
                      example: mariana.costa@acme.com.br
                    description: |-
                      Contact e-mails. The first one is the main contact.

                      ---

                      Example: `["mariana.costa@acme.com.br"]`
                  phoneNumbers:
                    type: array
                    items:
                      type: string
                      example: '+5511987654321'
                    description: |-
                      Contact phone numbers, in international format.

                      ---

                      Example: `["+5511987654321"]`
                  documents:
                    type: object
                    properties:
                      CPF:
                        description: Brazilian taxpayer ID (CPF), 11 digits.
                        type: object
                        properties:
                          code:
                            type: string
                            description: >-
                              Document number as printed, digits and letters
                              only (no punctuation).
                            example: '52998224725'
                          issueCountry:
                            type: string
                            description: >-
                              Country that issued the document (ISO 3166-1
                              alpha-2). Always `BR` for `CPF`, `RG` and `CNH`.
                            example: BR
                        required:
                          - code
                          - issueCountry
                        nullable: true
                      RG:
                        description: Brazilian national identity card (RG).
                        type: object
                        properties:
                          code:
                            type: string
                            description: >-
                              Document number as printed, digits and letters
                              only (no punctuation).
                            example: '52998224725'
                          issueCountry:
                            type: string
                            description: >-
                              Country that issued the document (ISO 3166-1
                              alpha-2). Always `BR` for `CPF`, `RG` and `CNH`.
                            example: BR
                        required:
                          - code
                          - issueCountry
                        nullable: true
                      PASSPORT:
                        description: Passport.
                        type: object
                        properties:
                          code:
                            type: string
                            description: >-
                              Document number as printed, digits and letters
                              only (no punctuation).
                            example: '52998224725'
                          issueCountry:
                            type: string
                            description: >-
                              Country that issued the document (ISO 3166-1
                              alpha-2). Always `BR` for `CPF`, `RG` and `CNH`.
                            example: BR
                          expirationDate:
                            type: string
                            nullable: true
                            description: >-
                              Expiration date (`YYYY-MM-DD`). `null` for a
                              passport registered before the date was required.
                            example: '2031-04-17'
                        required:
                          - code
                          - expirationDate
                          - issueCountry
                        nullable: true
                      CNH:
                        description: Brazilian driver's license (CNH).
                        type: object
                        properties:
                          code:
                            type: string
                            description: >-
                              Document number as printed, digits and letters
                              only (no punctuation).
                            example: '52998224725'
                          issueCountry:
                            type: string
                            description: >-
                              Country that issued the document (ISO 3166-1
                              alpha-2). Always `BR` for `CPF`, `RG` and `CNH`.
                            example: BR
                        required:
                          - code
                          - issueCountry
                        nullable: true
                    description: Identity documents.
                  address:
                    type: object
                    properties:
                      shortAddress:
                        type: string
                        description: The address in a single line.
                        example: Av. Paulista, 1000 - Bela Vista, São Paulo - SP
                      adressLines:
                        type: array
                        items:
                          type: string
                          example: Av. Paulista, 1000
                        description: >-
                          The address in postal lines. The field name is spelled
                          `adressLines`.


                          ---


                          Example: `["Av. Paulista, 1000","Bela Vista"]`
                      locality:
                        type: string
                        description: City.
                        example: São Paulo
                      administrativeArea:
                        type: string
                        description: State or province code.
                        example: SP
                      administrativeAreaName:
                        type: string
                        description: State or province name.
                        example: São Paulo
                      postalCode:
                        type: string
                        description: Postal code.
                        example: 01310-100
                      country:
                        type: string
                        description: Country (ISO 3166-1 alpha-2).
                        example: BR
                      timezone:
                        type: string
                        description: IANA time zone of the address.
                        example: America/Sao_Paulo
                      coordinates:
                        type: object
                        properties:
                          lat:
                            type: number
                            description: Latitude.
                            example: -23.5614
                          lng:
                            type: number
                            description: Longitude.
                            example: -46.6559
                        required:
                          - lat
                          - lng
                        description: Location of the address.
                    required:
                      - shortAddress
                      - adressLines
                      - locality
                      - administrativeArea
                      - administrativeAreaName
                      - postalCode
                      - country
                      - timezone
                      - coordinates
                    description: Home address.
                  loyalty:
                    type: object
                    additionalProperties:
                      type: string
                    description: >-
                      Loyalty program numbers, keyed by carrier code. Omitted
                      when there are none.


                      ---


                      Example: `{"LA":"123456789"}`
                    example:
                      LA: '123456789'
                  customFields:
                    type: object
                    additionalProperties: {}
                    description: >-
                      Values of the organization's passenger custom fields,
                      keyed by the custom field's `slug`. Empty when none were
                      set.


                      ---


                      Example: `{"cost-center":"CC-1020"}`
                    example:
                      cost-center: CC-1020
                  status:
                    type: string
                    enum:
                      - ACTIVE
                      - DELETED
                    description: >-
                      Status of the passenger. Only `ACTIVE` passengers are
                      returned.
                    example: ACTIVE
                  createdAt:
                    type: string
                    description: When the passenger was created.
                    example: '2026-10-01T13:45:12.000Z'
                    format: date-time
                  updatedAt:
                    type: string
                    description: When the passenger was last changed.
                    example: '2026-10-01T13:45:12.000Z'
                    format: date-time
                required:
                  - id
                  - realmId
                  - organizationId
                  - source
                  - profileComplete
                  - name
                  - gender
                  - birthDate
                  - emails
                  - phoneNumbers
                  - documents
                  - address
                  - customFields
                  - status
                description: >-
                  A passenger of the organization: a traveler who can be booked
                  on trips.
        '404':
          description: >-
            `USER_NOT_FOUND` — `userId` is not an active user of the
            organization.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - USER_NOT_FOUND
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - TRAVEL
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: USER_NOT_FOUND
                origin: TRAVEL
                message: User not found in this organization
        '409':
          description: >-
            `PASSENGER_ALREADY_EXISTS_FOR_USER` — The user in `userId` is
            already registered as a passenger.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - PASSENGER_ALREADY_EXISTS_FOR_USER
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - TRAVEL
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: PASSENGER_ALREADY_EXISTS_FOR_USER
                origin: TRAVEL
                message: This user already has a passenger in this organization
        '422':
          description: >-
            `LINKED_USER_MISSING_BIRTHDATE` — The user in `userId` has no date
            of birth; send `birthDate`.


            `INVALID_CUSTOM_FIELD` — A custom field value is invalid or a
            required one is missing — or, with `userId`, the user has no CPF and
            `documents` has no other document.


            `BAD_REQUEST` — A path parameter is not a valid ID or the body
            failed validation; `fields` lists each offending field.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - LINKED_USER_MISSING_BIRTHDATE
                      - INVALID_CUSTOM_FIELD
                      - BAD_REQUEST
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - TRAVEL
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                  fields:
                    type: array
                    description: >-
                      One entry per invalid request field (validation errors
                      only).
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: >-
                            Path of the invalid field, e.g. `label` or
                            `values[0].value`.
                          example: label
                        message:
                          type: string
                          description: Why the field was rejected.
                          example: label is required
                        code:
                          type: string
                          description: >-
                            `<FIELD>_<REASON>` — e.g. `LABEL_REQUIRED`,
                            `TYPE_ONE_OF`, `VALUES_VALUE_TYPE_ERROR`.
                          example: LABEL_REQUIRED
                        values:
                          type: array
                          items:
                            type: string
                          description: >-
                            The accepted values, when the field is an
                            enumeration.
                      required:
                        - field
                        - message
                        - code
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: LINKED_USER_MISSING_BIRTHDATE
                origin: TRAVEL
                message: >-
                  The linked user has no birth date on record — provide
                  birthDate in the request body
        '503':
          description: >-
            `PROVIDER_UNAVAILABLE` — The travel provider could not be reached;
            no passenger was created. Retry later.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - PROVIDER_UNAVAILABLE
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - TRAVEL
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: PROVIDER_UNAVAILABLE
                origin: TRAVEL
                message: Travel provider temporarily unavailable, please retry.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.