---
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`

## 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.net/7shifts/apis/7shifts-api.md) · [All operations](https://skmtc.net/7shifts/apis/7shifts-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/7shifts/7shifts-api/revisions/96a02ef888ab/schema)
