Assembled Time Off API

Programmatically create, list, and cancel time-off requests, and pull a stream of time-off updates for downstream HRIS or payroll synchronisation. The endpoint underpins the automated time-off and shift-swap workflows offered in Assembled's Pro and Enterprise plans.

OpenAPI Specification

assembled-time-off-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Assembled Activities Time Off API
  description: 'Activities are the scheduled shifts, breaks, time-off blocks, training

    sessions, and meetings that make up an agent''s calendar in Assembled.


    The Activities API supports single and bulk activity creation, listing

    with rich filters, soft-delete semantics, and CRUD for activity types

    (the colour-coded categories shown on schedules). The event_changes

    endpoint surfaces an audit trail of schedule modifications.

    '
  version: '2026-05-24'
  contact:
    name: Assembled Support
    url: https://support.assembled.com
servers:
- url: https://api.assembledhq.com
  description: Production Server
security:
- BasicAuth: []
tags:
- name: Time Off
paths:
  /v0/time_off:
    post:
      summary: Assembled Create Time Off
      operationId: createTimeOff
      tags:
      - Time Off
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TimeOffInput'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeOffRequest'
  /v0/time_off/requests:
    get:
      summary: Assembled List Time Off Requests
      operationId: listTimeOffRequests
      tags:
      - Time Off
      parameters:
      - in: query
        name: status
        schema:
          type: string
          enum:
          - pending
          - approved
          - denied
          - cancelled
      - in: query
        name: agent_id
        schema:
          type: string
      - in: query
        name: start_time
        schema:
          type: string
          format: date-time
      - in: query
        name: end_time
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Time off requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  requests:
                    type: array
                    items:
                      $ref: '#/components/schemas/TimeOffRequest'
  /v0/time_off/{id}/cancel:
    post:
      summary: Assembled Cancel Time Off Request
      operationId: cancelTimeOffRequest
      tags:
      - Time Off
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Cancelled
  /v0/time_off/updates:
    get:
      summary: Assembled List Time Off Updates
      operationId: listTimeOffUpdates
      tags:
      - Time Off
      parameters:
      - in: query
        name: since
        required: true
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Time off update stream
          content:
            application/json:
              schema:
                type: object
                properties:
                  updates:
                    type: array
                    items:
                      type: object
                      properties:
                        request_id:
                          type: string
                        change_type:
                          type: string
                        updated_at:
                          type: string
                          format: date-time
components:
  schemas:
    TimeOffRequest:
      type: object
      properties:
        id:
          type: string
        agent_id:
          type: string
        type:
          type: string
          example: pto
        status:
          type: string
          enum:
          - pending
          - approved
          - denied
          - cancelled
        start_time:
          type: string
          format: date-time
        end_time:
          type: string
          format: date-time
        all_day:
          type: boolean
        notes:
          type: string
        approver_id:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    TimeOffInput:
      type: object
      required:
      - agent_id
      - start_time
      - end_time
      properties:
        agent_id:
          type: string
        type:
          type: string
        start_time:
          type: string
          format: date-time
        end_time:
          type: string
          format: date-time
        all_day:
          type: boolean
        notes:
          type: string
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic