---
title: "Create Many Users"
method: POST
path: "/v2/company/{company_id}/create_many_users"
tags: ["Users"]
---

# Create Many Users

`POST /v2/company/{company_id}/create_many_users`

## Request

- Base URL: `https://api.7shifts.com`
- URL: `https://api.7shifts.com/v2/company/{company_id}/create_many_users`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://app.7shifts.com/oauth2/authorize`
    - Client credentials
    - Password
    - Token URL: `https://app.7shifts.com/oauth2/token`
  - API key in cookie `7session`
- TypeScript: <https://skmtc.dev/7shifts/apis/7shifts-api/docs/v2/company/:company_id/create_many_users/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `company_id` integer, required

## Headers

- `x-api-version` string: An API version
- `x-company-guid` string, uuid

## Request body

- object[]
  - `first_name` string, required: The user's first name
  - `last_name` string, required: The user's last name
  - `preferred_first_name` string, nullable: An optional alternate first name
  - `preferred_last_name` string, nullable: An optional alternate last name
  - `location_ids` integer[], required: An array of location IDs this user will be assigned to
  - `department_ids` integer[], nullable, required: An array of department IDs this user will be assigned to. Department ID is required if this user's location has at least one department
  - `role_ids` integer[], nullable: An array of role IDs this user will be assigned to.
  - `email` string: the user's email
  - `mobile_number` string, nullable: The user's mobile phone number. Format with no spaces and include area code
  - `home_number` string, nullable: The user's home phone number. Format with no spaces and include area code
  - `address` string, nullable: The user's address
  - `postal_zip` string, nullable: The user's postal code or zip code
  - `city` string, nullable: The user's city
  - `prov_state` string, nullable: The user's province or state
  - `invite_user` boolean, nullable: If true Invite the user to 7shifts
  - `notes` string, nullable: Notes associated with this user
  - `hire_date` string, date, nullable: The hire date of this user. Format YYYY-MM-DD
  - `type` 'employee' | 'asst_manager' | 'manager' | 'employer', required: The type of this user
  - `employee_id` string, nullable: Either an employee ID or an ID assigned by your payroll provider that is used in your payroll export
  - `punch_id` integer, nullable: The punch ID they punch in/out with. If no value is provided a new one will be created
  - `birth_date` string, date, nullable: The user's birthdate. Format YYYY-MM-DD
  - `language` 'en' | 'es' | 'fr': The user's preferred language. Default value is en
  - `appear_as_employee` boolean, nullable: User should appear in the system as an employee. Applies to admin users only
  - `subscribe_to_updates` boolean, nullable: Subscribe this user to updates from 7shifts. This includes announcing new features for 7shifts
  - `max_weekly_hours` number, nullable: The maximum weekly hours this user is set to work
  - `skill_level` 1 | 2 | 3, nullable
  - `wage_cents` number, nullable
  - `wage_type` 'hourly' | 'weekly_salary', nullable: The wage type
  - `wages` object[], nullable: An array of Wages that will be set to the assigned User's roles
    - `role_id` integer
    - `wage_cents` integer
    - `effective_date` string, date, nullable
  - `permissions_template_id` integer, nullable: Id of a permissions template the user will be assigned to and granted permissions from.

## Response `201`

Created

- object
  - `object` 'user', required
  - `data` object[], required
    - `id` integer, required: User ID
    - `identity_id` integer, nullable: Internal use
    - `company_id` integer, required: Company ID
    - `first_name` string, required: First Name
    - `last_name` string, required: Last Name
    - `preferred_first_name` string, nullable: Preferred first name
    - `preferred_last_name` string, nullable: Preferred last name
    - `pronouns` string, nullable: Pronouns
    - `email` string, required: Email Address
    - `mobile_number` string, nullable, required: Mobile Number
    - `home_number` string, nullable, required: Home Number
    - `birth_date` string, date, nullable, required: Birthdate. Format YYYY-MM-DD
    - `address` string, nullable, required: Address
    - `postal_zip` string, nullable, required: Zip or postal code
    - `city` string, nullable, required: City
    - `prov_state` string, nullable, required: State or province
    - `invite_status` 'accepted' | 'pending' | 'required' | 'missing_contact_info', required: Invitation status to join 7shifts for the first time
    - `active` boolean, required: If true user is active in allowed to login. If false the user has been deactivated/deleted
    - `photo` string, nullable, required: Photo url
    - `notes` string, nullable, required: User notes
    - `timezone` string, nullable, required: Timezone. Valid zone info name
    - `type` 'employee' | 'asst_manager' | 'manager' | 'employer', required: User type
    - `employee_id` string, nullable, required: Employee ID
    - `max_weekly_hours` string, required: Maximum weekly hours user is set to work
    - `punch_id` string, nullable, required: Value used during clock in/out in 7shifts applications
    - `created` string
    - `modified` string
    - `invited` string, nullable, required: The date that the user has been sent an invitation to join 7shifts, null if not invited.
    - `invite_accepted` string, nullable, required: The date that the user accepted their 7shifts invitation, null if not accepted.
    - `is_new` boolean, required: If true user is new
    - `appear_as_employee` boolean: If true user can be assigned shifts. This applies to managers, asst_manager and employers.
    - `subscribe_to_updates` boolean: If true this user is subscribed to updates from 7shifts. This includes announcing new features for 7shifts
    - `language` string: Specified language. In ISO 639-1 format
    - `push` boolean: Are mobile push notifications enabled for the user
    - `skill_level` integer, nullable: Current assigned skill level
    - `hourly_wage` integer, nullable: Users current hourly wage in cents
    - `wage_type` string, nullable: The type of wage the user will receive
    - `sms_me_schedules` boolean, nullable: If the user should receive sms notifications for shifts
    - `notify_ot_risk` boolean, nullable: Should notifications be sent if the user is at risk of overtime hours
    - `permissions_template_id` integer, nullable: The ID of the permission template currently assigned to the user.
    - `reactivation_status` 'accepted' | 'pending' | 'expired', nullable: Invitation status to re-join 7shifts after initially being deactivated
    - `meta` object, nullable
      - `readonly_fields` string[]
      - `identity_status` 'created' | 'updated' | 'merging_identities', nullable: Indicates whether an identity was created, updated, or lead to an Identity merge from the preceding request

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `500`: Server Error

---

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