---
title: "Create User Journey"
method: POST
path: "/api/v2/user_journeys"
tags: ["User Journeys"]
---

# Create User Journey

`POST /api/v2/user_journeys`

Create a User Journey

## Request body

- RequestsUserJourneyCreate
  - `transition_type` 'pre_offer' | 'offer' | 'post_offer' | 'onboarding' | 'offboarding'
  - `user_id` union
    - string, uuid
    - object
      - `workday` string
  - `state` 'draft' | 'needs_attention' | 'pending_approval' | 'approved' | 'rejected' | 'rescinded' | 'user_pending' | 'submitted' | 'declined' | 'completed' | 'voided'
  - `expiration_date` string, YYYY-MM-DD
  - `office_location_id` union
    - string, uuid
    - object
      - `workday` string
  - `custom_fields` object
  - `documents` object[]
    - `document_type` string
    - `document_number` string
    - `document_title` string
    - `document_description` string
    - `attachments` object[]
      - `file_name` string
      - `file_content_base64` string, Base64

## Response `201`

The request has succeeded and a new resource has been created as a result.

- ResponsesUserJourneyCreate
  - `id` string, uuid, required
  - `journey_id` string, uuid, required
  - `user_id` string, uuid, required
  - `transition_type` 'pre_offer' | 'offer' | 'post_offer' | 'onboarding' | 'offboarding', required
  - `state` 'draft' | 'needs_attention' | 'pending_approval' | 'approved' | 'rejected' | 'rescinded' | 'user_pending' | 'submitted' | 'declined' | 'completed' | 'voided', required
  - `created_at` string, YYYY-MM-DD, required
  - `expiration_date` string, YYYY-MM-DD, required
  - `office_location` ModelsOfficeLocation, required
    - `id` string, uuid, required
    - `external_ids` object
      - `workday` string
    - `address1` string
    - `address2` string
    - `address3` string
    - `city` string, required
    - `state` string
    - `region` string
    - `country` string, required
    - `postal_code` string
    - `time_zone` string
    - `latitude` number, float
    - `longitude` number, float
  - `custom_field_values` object[], required
    - `id` string
    - `value` string
    - `name` string
    - `key` string

## Other responses

- `422` — Client error

## Changes

- **2026-03-20** `f30bd25c50fa` — 1 warning, 1 info
  - added the new `voided` enum value to the `state` response property for the response status `201`
  - added the new `voided` enum value to the request property `state`
- **2026-03-09** `fd9ba8047579` — 2 info
  - added `#/components/schemas/Models.OfficeLocation` to the `office_location` response property `anyOf` list for the response status `201`
  - removed `#/components/schemas/OfficeLocation` from the `office_location` response property `anyOf` list for the response status `201`
- **2026-03-09** `3f638e7bcdd4` — 13 breaking, 52 warning, 28 info
  - request property `state` was restricted to a list of enum values
  - request property `transition_type` was restricted to a list of enum values
  - the `custom_fields` request property type/format changed from ``/`` to `object`/``
  - the `documents/items/attachments/items/file_content_base64` request property type/format changed from `string`/`` to `string`/`Base64`
  - …89 more
- **2025-07-31** `33c1d5958395` — 2 warning, 2 info
  - removed the request property `journey_type`
  - removed the optional property `journey_type` from the response with the `201` status
  - added the new optional request property `transition_type`
  - added the optional property `transition_type` to the response with the `201` status
- **2025-05-19** `805744a185fa` — 1 info
  - endpoint added

[Full history](https://skmtc.dev/xpand-io/apis/xpand-api/changes/api/v2/user_journeys/post.md)

---

[API](https://skmtc.dev/xpand-io/apis/xpand-api.md) · [All operations](https://skmtc.dev/xpand-io/apis/xpand-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/xpand-io/xpand-api/revisions/85bece7875fd/schema)
