7shifts website screenshot

7shifts

7shifts is a restaurant employee scheduling, time-tracking, and team management platform that helps restaurant operators forecast labor, build schedules, manage shift trades, run payroll integrations, and communicate with hourly staff. The platform integrates with major POS systems for sales data and labor forecasting and supports multi-location operations across quick-service, full-service, and franchise concepts. The 7shifts API v2 is a REST API authenticated via long-lived access tokens (Bearer) for internal use or OAuth 2.0 client credentials for technology partners, exposing employees, schedules, shifts, time punches, departments, locations, and wages.

1 APIs 0 Features
RestaurantSchedulingWorkforce ManagementEmployee SchedulingTime TrackingHRISLabor

APIs

7shifts REST API v2

REST API v2 for managing companies, locations, departments, roles, employees, schedules, shifts, time punches, wages, and time-off requests in 7shifts. Authentication uses Beare...

Collections

Pricing Plans

7Shifts Plans Pricing

4 plans

PLANS

Rate Limits

7Shifts Rate Limits

1 limits

RATE LIMITS

FinOps

Semantic Vocabularies

7Shifts Context

33 classes · 12 properties

JSON-LD

API Governance Rules

7shifts API Rules

35 rules · 10 errors 15 warnings 10 info

SPECTRAL

JSON Structure

7Shifts Availability Structure

7 properties

JSON STRUCTURE

7Shifts Company Structure

7 properties

JSON STRUCTURE

7Shifts Department Structure

5 properties

JSON STRUCTURE

7Shifts Location Structure

11 properties

JSON STRUCTURE

7Shifts Receipt Structure

8 properties

JSON STRUCTURE

7Shifts Role Structure

8 properties

JSON STRUCTURE

7Shifts Shift Structure

15 properties

JSON STRUCTURE

7Shifts Timeoff Structure

10 properties

JSON STRUCTURE

7Shifts Timepunch Structure

15 properties

JSON STRUCTURE

7Shifts User Structure

13 properties

JSON STRUCTURE

7Shifts Wage Structure

8 properties

JSON STRUCTURE

7Shifts Webhook Structure

6 properties

JSON STRUCTURE

Example Payloads

7Shifts Availability Example

7 fields

EXAMPLE

7Shifts Company Example

7 fields

EXAMPLE

7Shifts Department Example

5 fields

EXAMPLE

7Shifts Location Example

11 fields

EXAMPLE

7Shifts Receipt Example

8 fields

EXAMPLE

7Shifts Role Example

8 fields

EXAMPLE

7Shifts Shift Example

15 fields

EXAMPLE

7Shifts Timeoff Example

10 fields

EXAMPLE

7Shifts Timepunch Example

15 fields

EXAMPLE

7Shifts User Example

13 fields

EXAMPLE

7Shifts Wage Example

8 fields

EXAMPLE

7Shifts Webhook Example

6 fields

EXAMPLE

Resources

👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
APIReference
APIReference
💰
Pricing
Pricing
📝
Signup
Signup
🔗
Login
Login
💬
Support
Support
🔗
LlmsText
LlmsText
🔗
Rules
Rules
🔗
Vocabulary
Vocabulary
🔗
JSONLD
JSONLD
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: 7shifts API
  version: '2.0'
items:
- info:
    name: OAuth
    type: folder
  items:
  - info:
      name: Create OAuth Token
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/oauth2/token
      body:
        type: json
        data: '{}'
    docs: Issues an access token using one of the supported OAuth 2.0 grant types (client_credentials, password, authorization_code,
      refresh_token).
- info:
    name: Identity
    type: folder
  items:
  - info:
      name: Retrieve Identity
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/whoami
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Returns the identity associated with the authenticated access token.
- info:
    name: Companies
    type: folder
  items:
  - info:
      name: List Companies
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/companies
      headers:
      - name: x-api-version
        value: ''
      - name: x-company-guid
        value: ''
      params:
      - name: modified_since
        value: ''
        type: query
        description: Return companies modified since the specified date (YYYY-MM-DD).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Companies
  - info:
      name: Retrieve Company
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/companies/:company_id
      headers:
      - name: x-api-version
        value: ''
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Retrieve Company
- info:
    name: Locations
    type: folder
  items:
  - info:
      name: List Locations
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/locations
      headers:
      - name: x-api-version
        value: ''
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: cursor
        value: ''
        type: query
        description: Pagination cursor for the next or previous page.
      - name: limit
        value: ''
        type: query
        description: Results per page (1-500, default 100; 20 for some collections).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Locations
  - info:
      name: Create Location
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/locations
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create Location
  - info:
      name: Retrieve Location
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/locations/:location_id
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: location_id
        value: ''
        type: path
        description: Location identifier.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Retrieve Location
- info:
    name: Departments
    type: folder
  items:
  - info:
      name: List Departments
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/departments
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: location_id
        value: ''
        type: query
        description: Filter departments by location.
      - name: cursor
        value: ''
        type: query
        description: Pagination cursor for the next or previous page.
      - name: limit
        value: ''
        type: query
        description: Results per page (1-500, default 100; 20 for some collections).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Departments
  - info:
      name: Create Department
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/departments
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create Department
- info:
    name: Roles
    type: folder
  items:
  - info:
      name: List Roles
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/roles
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: department_id
        value: ''
        type: query
        description: Filter roles by department.
      - name: cursor
        value: ''
        type: query
        description: Pagination cursor for the next or previous page.
      - name: limit
        value: ''
        type: query
        description: Results per page (1-500, default 100; 20 for some collections).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Roles
  - info:
      name: Create Role
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/roles
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create Role
- info:
    name: Users
    type: folder
  items:
  - info:
      name: List Users
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/users
      headers:
      - name: x-api-version
        value: ''
      - name: x-company-guid
        value: ''
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: modified_since
        value: ''
        type: query
        description: Filter by modification date (YYYY-MM-DD).
      - name: location_id
        value: ''
        type: query
        description: Filter by location (mutually exclusive with department_id and role_id).
      - name: department_id
        value: ''
        type: query
        description: Filter by department (mutually exclusive with location_id and role_id).
      - name: role_id
        value: ''
        type: query
        description: Filter by role (mutually exclusive with location_id and department_id).
      - name: status
        value: ''
        type: query
        description: User status filter.
      - name: name
        value: ''
        type: query
        description: Partial or full employee name filter.
      - name: sort_by
        value: ''
        type: query
        description: Sort field and direction (e.g. firstname.asc,lastname.desc).
      - name: cursor
        value: ''
        type: query
        description: Pagination cursor for the next or previous page.
      - name: limit
        value: ''
        type: query
        description: Results per page (1-500, default 100; 20 for some collections).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Users
  - info:
      name: Create User
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/users
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create User
  - info:
      name: Retrieve User
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/users/:identifier
      headers:
      - name: x-api-version
        value: ''
      - name: x-company-guid
        value: ''
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: identifier
        value: ''
        type: path
        description: User identifier. Accepts either a 7shifts user ID or a punch ID with the prefix "punch:".
      - name: include_inactive
        value: ''
        type: query
        description: Include inactive users in the response.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Retrieve User
  - info:
      name: Update User
      type: http
    http:
      method: PUT
      url: https://api.7shifts.com/v2/company/:company_id/users/:identifier
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: identifier
        value: ''
        type: path
        description: User identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Update User
- info:
    name: Wages
    type: folder
  items:
  - info:
      name: List User Wages
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/users/:user_id/wages
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: user_id
        value: ''
        type: path
        description: User identifier.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List User Wages
  - info:
      name: Create User Wage
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/users/:user_id/wages
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: user_id
        value: ''
        type: path
        description: User identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create User Wage
- info:
    name: Shifts
    type: folder
  items:
  - info:
      name: List Shifts
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/shifts
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: location_id
        value: ''
        type: query
        description: Filter by location.
      - name: department_id
        value: ''
        type: query
        description: Filter by department.
      - name: role_id
        value: ''
        type: query
        description: Filter by role.
      - name: user_id
        value: ''
        type: query
        description: Filter by assigned user.
      - name: start[gte]
        value: ''
        type: query
        description: Filter by shift start time greater than or equal to (ISO8601).
      - name: start[lte]
        value: ''
        type: query
        description: Filter by shift start time less than or equal to (ISO8601).
      - name: modified_since
        value: ''
        type: query
        description: Return shifts modified after the specified datetime.
      - name: open
        value: ''
        type: query
        description: Filter for unassigned (open) shifts.
      - name: include_draft
        value: ''
        type: query
        description: Include draft shifts.
      - name: cursor
        value: ''
        type: query
        description: Pagination cursor for the next or previous page.
      - name: limit
        value: ''
        type: query
        description: Results per page (1-500, default 100; 20 for some collections).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Shifts
  - info:
      name: Create Shift
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/shifts
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create Shift
  - info:
      name: Retrieve Shift
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/shifts/:shift_id
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: shift_id
        value: ''
        type: path
        description: Shift identifier.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Retrieve Shift
  - info:
      name: Delete Shift
      type: http
    http:
      method: DELETE
      url: https://api.7shifts.com/v2/company/:company_id/shifts/:shift_id
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: shift_id
        value: ''
        type: path
        description: Shift identifier.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Delete Shift
- info:
    name: Time Punches
    type: folder
  items:
  - info:
      name: List Time Punches
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/time_punches
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: location_id
        value: ''
        type: query
        description: Filter by location.
      - name: department_id
        value: ''
        type: query
        description: Filter by department.
      - name: user_id
        value: ''
        type: query
        description: Filter by user.
      - name: approved
        value: ''
        type: query
        description: Filter by approval status.
      - name: clocked_in[gte]
        value: ''
        type: query
        description: Filter by clock-in time greater than or equal to (ISO8601).
      - name: clocked_in[lte]
        value: ''
        type: query
        description: Filter by clock-in time less than or equal to (ISO8601).
      - name: modified_since
        value: ''
        type: query
        description: Return time punches modified after the specified datetime.
      - name: cursor
        value: ''
        type: query
        description: Pagination cursor for the next or previous page.
      - name: limit
        value: ''
        type: query
        description: Results per page (1-500, default 100; 20 for some collections).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Time Punches
  - info:
      name: Create Time Punch
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/time_punches
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create Time Punch
  - info:
      name: Retrieve Time Punch
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/time_punches/:time_punch_id
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: time_punch_id
        value: ''
        type: path
        description: Time punch identifier.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Retrieve Time Punch
- info:
    name: Time Off
    type: folder
  items:
  - info:
      name: List Time Off
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/time_off
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: user_id
        value: ''
        type: query
        description: Filter by user.
      - name: status
        value: ''
        type: query
        description: Filter by request status.
      - name: cursor
        value: ''
        type: query
        description: Pagination cursor for the next or previous page.
      - name: limit
        value: ''
        type: query
        description: Results per page (1-500, default 100; 20 for some collections).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Time Off
  - info:
      name: Create Time Off
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/time_off
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create Time Off
  - info:
      name: Approve Time Off Request
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/time_off/:time_off_id/approve
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: time_off_id
        value: ''
        type: path
        description: Time off request identifier.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Approve Time Off Request
- info:
    name: Availability
    type: folder
  items:
  - info:
      name: List Availabilities
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/availability
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: user_id
        value: ''
        type: query
        description: Filter by user.
      - name: cursor
        value: ''
        type: query
        description: Pagination cursor for the next or previous page.
      - name: limit
        value: ''
        type: query
        description: Results per page (1-500, default 100; 20 for some collections).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Availabilities
- info:
    name: Sales
    type: folder
  items:
  - info:
      name: List Receipts
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/receipts
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: location_id
        value: ''
        type: query
        description: Filter by location.
      - name: cursor
        value: ''
        type: query
        description: Pagination cursor for the next or previous page.
      - name: limit
        value: ''
        type: query
        description: Results per page (1-500, default 100; 20 for some collections).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Receipts
  - info:
      name: Create Receipt
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/receipts
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create Receipt
- info:
    name: Reporting
    type: folder
  items:
  - info:
      name: Retrieve Daily Sales And Labor
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/reports/daily_sales_and_labor
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      - name: location_id
        value: ''
        type: query
        description: Filter by location.
      - name: start_date
        value: ''
        type: query
        description: Start date (YYYY-MM-DD).
      - name: end_date
        value: ''
        type: query
        description: End date (YYYY-MM-DD).
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Retrieve Daily Sales And Labor
- info:
    name: Webhooks
    type: folder
  items:
  - info:
      name: List Webhooks
      type: http
    http:
      method: GET
      url: https://api.7shifts.com/v2/company/:company_id/webhooks
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: List Webhooks
  - info:
      name: Create Webhook
      type: http
    http:
      method: POST
      url: https://api.7shifts.com/v2/company/:company_id/webhooks
      params:
      - name: company_id
        value: ''
        type: path
        description: Company identifier.
      body:
        type: json
        data: '{}'
      auth:
        type: bearer
        token: '{{bearerToken}}'
    docs: Create Webhook
bundled: true