---
title: "Create User"
method: POST
path: "/users/"
tags: ["authenticated", "users"]
---

# Create User

`POST /users/`

## Request

- Base URL: `https://api-docs.upsmith.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api-docs.upsmith.com/users/`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

## Headers

- `organization-id` string, nullable
- `x-user-id` string, nullable
- `timezone` string
- `x-actor-email` string, nullable
- `x-request-source` string, nullable
- `x-operation-id` string, nullable
- `x-commit-message` string, nullable
- `x-confirmation-id` string, nullable
- `x-chat-id` string, nullable

## Request body

- CreateUserRequest
  - `email` string, required
  - `first_name` string, required
  - `last_name` string, required
  - `phone_number` string, nullable
  - `organization_id` string, required
  - `role_id` string, required
  - `skip_seat_check` boolean
  - `send_to_setup` boolean
  - `send_to_opportunities` boolean

## Response `200`

Successful Response

- UserRead
  - `sms_consent_status` 'opted_in' | 'opted_out' | 'grandfathered'
  - `sms_consent_phone_number` string, nullable
  - `sms_consent_updated_at` string, date-time, nullable
  - `sms_consent_source` 'settings_page' | 'sms_reply' | 'sms_start' | 'sms_stop' | 'carrier_opt_out' | 'legacy_backfill'
  - `id` string, required
  - `first_name` string, required
  - `last_name` string, required
  - `email` string, required
  - `phone_number` string, nullable
  - `image` string, nullable
  - `is_staff` boolean
  - `organizations` OrganizationRead[]
    - `id` string, required
    - `name` string, required
    - `slug` string, required
    - `created_at` string, date-time, nullable
    - `alias` string, nullable
    - `path` string, required
    - `image` string, nullable
    - `parent_organization_id` string, nullable
    - `timezone` string, nullable
    - `access_lapses_at` string, nullable
    - `billing_account_id` string, nullable
    - `is_active_agent_platform` boolean, required
    - `is_active_ask_jenny` boolean, required
    - `lenny_st_form_intake_enabled` boolean, required
    - `lenny_st_form_intake_sources` string[], required
    - `access_level` string, required
    - `role` OrganizationRoleRead
      - `id` string, required
      - `title` string, required
      - `is_inherited` boolean, required
      - `has_access` boolean, required
      - `can_mutate_users` boolean, required
      - `can_toggle_feature_roles` boolean, required
      - `can_toggle_organization_roles` boolean, required
    - `roles` OrganizationRoleRead[]
      - `id` string, required
      - `title` string, required
      - `is_inherited` boolean, required
      - `has_access` boolean, required
      - `can_mutate_users` boolean, required
      - `can_toggle_feature_roles` boolean, required
      - `can_toggle_organization_roles` boolean, required
    - `features` FeatureRead[]
      - `id` string, required
      - `title` string, required
      - `description` string, nullable
      - `href` string, required
      - `role` FeatureRoleRead
        - `id` string, required
        - `title` string, required
        - `is_inherited` boolean, required
        - `has_access` boolean, required
        - `can_mutate_documents` boolean, required
        - `can_mutate_sessions` boolean, required
        - `can_toggle_agents` boolean, required
        - `can_toggle_engagements` boolean, required
      - `roles` FeatureRoleRead[]
        - `id` string, required
        - `title` string, required
        - `is_inherited` boolean, required
        - `has_access` boolean, required
        - `can_mutate_documents` boolean, required
        - `can_mutate_sessions` boolean, required
        - `can_toggle_agents` boolean, required
        - `can_toggle_engagements` boolean, required
    - `children` OrganizationChild[]
      - `id` string, required
      - `name` string, required
      - `slug` string, required
      - `alias` string, nullable
      - `image` string, nullable
      - `parent_organization_id` string, nullable
      - `path` string, required
    - `service_titan_installation_status` 'DISABLED' | 'INSTALLED' | 'NONE' | 'REQUESTED'
    - `pending_parent_link` OrganizationParentLinkRequestRead
      - `id` string, required
      - `organization_id` string, required
      - `organization_name` string, nullable
      - `parent_organization_id` string, required
      - `parent_name` string, nullable
      - `status` string, required
      - `evidence` string[], required
      - `parent_link_reason` string, nullable
      - `gaining_access_count` integer, required
      - `requested_by_email` string, nullable
      - `created_at` string, date-time, required
      - `decided_by_email` string, nullable
      - `decided_at` string, date-time, nullable
      - `decision_note` string, nullable
    - `service_titan_requested_at` string, date-time, nullable
    - `service_titan_environment_mismatch` ServiceTitanEnvironmentMismatch: What the customer declared versus what ServiceTitan reports, when they disagree.
      - `declared` string, required
      - `reported` string, required
      - `declared_source` 'default' | 'customer', required
    - `subscription` OrganizationSubscription
      - `status` string, nullable
      - `current_period_end` integer, nullable
      - `max_seats` integer, nullable
      - `used_seats` integer
    - `preflight` object, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/upsmith/apis/upsmith-api.md) - [All operations](https://skmtc.dev/upsmith/apis/upsmith-api/llms.txt) - [OpenAPI document](https://skmtc.dev/upsmith/apis/upsmith-api/revisions/cce8b07a5787?raw)
