Skip to main content
POST
/
workers
Create Worker
curl --request POST \
  --url https://api.roostedhr.com/api/1_12/workers \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <api-key>' \
  --data '
{
  "name_first": "<string>",
  "email": "<string>",
  "phone": "<string>",
  "country_id": 123,
  "birth_date": "2023-12-25",
  "address": "<string>",
  "city": "<string>",
  "zip": "<string>",
  "skillsets": [
    "<string>"
  ],
  "custom_fields": [
    {}
  ],
  "areas": [
    "<string>"
  ],
  "tags": [
    "<string>"
  ]
}
'
{
  "id": "<string>",
  "reference_id": "<string>",
  "signup_date": "<string>",
  "signup_date_original": "<string>",
  "last_login": "<string>",
  "last_login_original": "<string>",
  "next_shift_date": "<string>",
  "next_shift_date_original": "<string>",
  "last_shift_date": "<string>",
  "last_shift_date_original": "<string>",
  "account_status": 0,
  "name_first": "<string>",
  "email": "<string>",
  "phone": "<string>",
  "address": "<string>",
  "city": "<string>",
  "zip": "<string>",
  "country_id": 123,
  "areas": [
    {
      "id": "<string>",
      "name": "<string>"
    }
  ],
  "bad_phone_number": 0,
  "texting_off": 0,
  "latitude": "<string>",
  "longitude": "<string>",
  "multilogin": 0,
  "onboarded": 0,
  "app_notifications_active": 0,
  "app_notifications_preferred": 0,
  "current_worker": 0,
  "admin": 0,
  "owner": 0,
  "selected": "<string>",
  "selected_picture_location": "<string>",
  "pending_document_signing_count": 123,
  "total_shifts": "<string>",
  "last_noshow": "<string>",
  "no_id": true,
  "stars": 1,
  "skillsets": [
    {
      "roles_id": "<string>",
      "role_title": "<string>"
    }
  ],
  "pullTimestamp": 123
}
Only name_first is required. The email and phone fields are recommended — they enable account activation emails and SMS notifications respectively.
If country_id is omitted, the worker defaults to United States. Use the GET /countries endpoint to look up valid country identifiers.

Authorizations

X-API-KEY
string
header
required

Body

application/json
name_first
string
required

Worker's full name. This is the only required field.

email
string

Worker's email address. Recommended for account activation and notifications.

phone
string

Worker's phone number including country code (e.g. +12125551234). Recommended for SMS notifications.

country_id
number

Country identifier. Defaults to United States if not provided.

birth_date
string<date>

Worker's date of birth in YYYY-MM-DD format.

address
string

Street address.

city
string

City.

zip
string

ZIP or postal code.

skillsets
string[]

List of skillset IDs to assign to the worker.

custom_fields
object[]

Custom field values to set on the worker profile.

areas
string[]

List of area IDs to assign to the worker.

tags
string[]

List of tag IDs to assign to the worker.

Response

Worker created successfully.

A worker profile with personal information, status flags, and assigned skillsets/areas.

id
string

Worker identifier

reference_id
string

External reference identifier

signup_date
string

Formatted signup date (e.g. "September 28th 2019")

signup_date_original
string

Raw signup timestamp (YYYY-MM-DD HH:mm:ss)

last_login
string | null

Formatted last login date

last_login_original
string | null

Raw last login timestamp

next_shift_date
string | null

Formatted next scheduled shift date

next_shift_date_original
string | null

Raw next shift timestamp

last_shift_date
string | null

Formatted last shift date

last_shift_date_original
string | null

Raw last shift timestamp

account_status
enum<integer>

Worker account status: 0 = pending, 2 = active, 86 = inactive

Available options:
0,
2,
86
name_first
string

Worker's first name

email
string | null

Worker's email address

phone
string | null

Worker's phone number

address
string

Street address

city
string

City

zip
string

ZIP/postal code

country_id
number

Country identifier

areas
object[]

Areas assigned to this worker

bad_phone_number
enum<integer>

Whether the phone number is flagged as bad

Available options:
0,
1
texting_off
enum<integer> | null

Whether texting is disabled for this worker

Available options:
0,
1
latitude
string | null

Worker's latitude coordinate

longitude
string | null

Worker's longitude coordinate

multilogin
enum<integer>

Whether multi-login is enabled

Available options:
0,
1
onboarded
enum<integer>

Whether the worker has completed onboarding

Available options:
0,
1
app_notifications_active
enum<integer>

Whether app notifications are active

Available options:
0,
1
app_notifications_preferred
enum<integer> | null

Whether app notifications are the preferred method

Available options:
0,
1
current_worker
enum<integer>

Whether this is a current worker

Available options:
0,
1
admin
enum<integer>

Whether the worker has admin privileges

Available options:
0,
1
owner
enum<integer>

Whether the worker is an owner

Available options:
0,
1
selected
string | null

Selection state

selected_picture_location
string | null

Profile picture path

pending_document_signing_count
integer

Number of documents awaiting the worker's signature

total_shifts
string

Total number of shifts worked

last_noshow
string | null

Date of last no-show, if any

no_id
boolean

Whether the worker lacks an ID on file

stars
enum<integer> | null

Worker star rating (1–5)

Available options:
1,
2,
3,
4,
5
skillsets
object[]

Skillsets assigned to this worker

pullTimestamp
integer

Unix timestamp of when this data was retrieved