UKG

UKG Pro Workforce Management API

The UKG Pro WFM API provides programmatic access to time and labor management data including punches, shifts, schedules, accruals, and attendance. Supports timekeeping, scheduling, and compliance workflows for hourly and salaried employees. Uses OAuth 2.0 with tenant API keys.

Documentation

Specifications

Examples

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-schema/pro-wfm-wfm-employee-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-schema/pro-wfm-timecard-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-schema/pro-wfm-punch-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-schema/pro-wfm-punch-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-schema/pro-wfm-accrual-balance-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-schema/pro-wfm-shift-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-structure/pro-wfm-wfm-employee-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-structure/pro-wfm-timecard-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-structure/pro-wfm-punch-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-structure/pro-wfm-punch-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-structure/pro-wfm-accrual-balance-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/ukg/refs/heads/main/json-structure/pro-wfm-shift-structure.json

Other Resources

OpenAPI Specification

ukg-pro-wfm-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: UKG Pro Workforce Management API
  description: >-
    The UKG Pro Workforce Management (WFM) API provides programmatic access to
    time and labor management data including punches, shifts, schedules, accruals,
    and attendance. The API supports workforce scheduling, timekeeping, and
    compliance workflows for hourly and salaried employees. Authentication uses
    OAuth 2.0 with tenant-specific API keys.
  version: '1.0'
  contact:
    name: UKG Developer Support
    url: https://developer.ukg.com
  termsOfService: https://www.ukg.com/legal/terms
  x-generated-from: documentation
servers:
- url: https://api.ultipro.com/workforce/v1
  description: UKG Pro WFM API
security:
- bearerAuth: []
tags:
- name: Employees
  description: Employee profiles and workforce data
- name: Timekeeping
  description: Punches, time entries, and timecards
- name: Scheduling
  description: Shifts, schedules, and schedule management
- name: Accruals
  description: Accrual balances and transactions
- name: Attendance
  description: Attendance records and patterns
paths:
  /v1/employees:
    get:
      operationId: listWfmEmployees
      summary: UKG Pro WFM List Employees
      description: Retrieve employee records from the WFM system including workforce attributes.
      tags:
      - Employees
      parameters:
      - name: limit
        in: query
        schema:
          type: integer
        description: Maximum number of records to return
        example: 50
      - name: offset
        in: query
        schema:
          type: integer
        description: Number of records to skip
        example: 0
      - name: locationId
        in: query
        schema:
          type: string
        description: Filter by work location
        example: LOC-NYC
      responses:
        '200':
          description: List of WFM employee records
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WfmEmployee'
              examples:
                listWfmEmployees200Example:
                  summary: Default listWfmEmployees 200 response
                  x-microcks-default: true
                  value:
                  - employeeId: example-value
                    firstName: example-value
                    lastName: example-value
                    badge: example-value
                    homeLocationId: example-value
                    jobCode: example-value
                    workRule: example-value
                    status: example-value
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v1/employees/{employeeId}/timecards:
    get:
      operationId: getEmployeeTimecards
      summary: UKG Pro WFM Get Employee Timecards
      description: Retrieve timecard records for an employee within a date range.
      tags:
      - Timekeeping
      parameters:
      - name: employeeId
        in: path
        required: true
        schema:
          type: string
        description: Employee identifier
        example: EMP001
      - name: startDate
        in: query
        required: true
        schema:
          type: string
          format: date
        description: Start date for timecard retrieval
        example: '2026-01-01'
      - name: endDate
        in: query
        required: true
        schema:
          type: string
          format: date
        description: End date for timecard retrieval
        example: '2026-01-14'
      responses:
        '200':
          description: Employee timecards
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Timecard'
              examples:
                getEmployeeTimecards200Example:
                  summary: Default getEmployeeTimecards 200 response
                  x-microcks-default: true
                  value:
                  - timecardId: example-value
                    employeeId: example-value
                    periodStart: '2026-01-15'
                    periodEnd: '2026-01-15'
                    totalHours: 1.0
                    regularHours: 1.0
                    overtimeHours: 1.0
                    status: Open
        '404':
          description: Employee not found
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v1/employees/{employeeId}/punches:
    get:
      operationId: getEmployeePunches
      summary: UKG Pro WFM Get Employee Punches
      description: Retrieve clock punch records for an employee.
      tags:
      - Timekeeping
      parameters:
      - name: employeeId
        in: path
        required: true
        schema:
          type: string
        description: Employee identifier
        example: EMP001
      - name: startDate
        in: query
        schema:
          type: string
          format: date
        description: Start date for punch retrieval
        example: '2026-01-01'
      - name: endDate
        in: query
        schema:
          type: string
          format: date
        description: End date for punch retrieval
        example: '2026-01-14'
      responses:
        '200':
          description: Employee punch records
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Punch'
              examples:
                getEmployeePunches200Example:
                  summary: Default getEmployeePunches 200 response
                  x-microcks-default: true
                  value:
                  - punchId: example-value
                    employeeId: example-value
                    punchTime: '2026-01-15T10:30:00Z'
                    punchType: In
                    locationId: example-value
                    jobCode: example-value
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createPunch
      summary: UKG Pro WFM Create Punch
      description: Submit a clock punch for an employee (in, out, or transfer).
      tags:
      - Timekeeping
      parameters:
      - name: employeeId
        in: path
        required: true
        schema:
          type: string
        description: Employee identifier
        example: EMP001
      requestBody:
        required: true
        description: Punch details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PunchRequest'
            examples:
              createPunchRequestExample:
                summary: Default createPunch request
                x-microcks-default: true
                value:
                  punchTime: '2026-01-15T10:30:00Z'
                  punchType: In
                  locationId: example-value
                  jobCode: example-value
      responses:
        '201':
          description: Punch created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Punch'
              examples:
                createPunch201Example:
                  summary: Default createPunch 201 response
                  x-microcks-default: true
                  value:
                    punchId: example-value
                    employeeId: example-value
                    punchTime: '2026-01-15T10:30:00Z'
                    punchType: In
                    locationId: example-value
                    jobCode: example-value
        '400':
          description: Invalid punch data
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v1/employees/{employeeId}/accruals:
    get:
      operationId: getEmployeeAccruals
      summary: UKG Pro WFM Get Employee Accruals
      description: Retrieve accrual balances for an employee including vacation, sick, and PTO.
      tags:
      - Accruals
      parameters:
      - name: employeeId
        in: path
        required: true
        schema:
          type: string
        description: Employee identifier
        example: EMP001
      responses:
        '200':
          description: Accrual balances
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccrualBalance'
              examples:
                getEmployeeAccruals200Example:
                  summary: Default getEmployeeAccruals 200 response
                  x-microcks-default: true
                  value:
                  - accrualCodeId: example-value
                    accrualName: example-value
                    balance: 1.0
                    pendingBalance: 1.0
                    takingBalance: 1.0
                    asOfDate: '2026-01-15'
        '404':
          description: Employee not found
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v1/schedules:
    get:
      operationId: listSchedules
      summary: UKG Pro WFM List Schedules
      description: Retrieve employee schedules for a location and date range.
      tags:
      - Scheduling
      parameters:
      - name: locationId
        in: query
        schema:
          type: string
        description: Location to retrieve schedules for
        example: LOC-NYC
      - name: startDate
        in: query
        required: true
        schema:
          type: string
          format: date
        description: Start date for schedule retrieval
        example: '2026-01-01'
      - name: endDate
        in: query
        required: true
        schema:
          type: string
          format: date
        description: End date for schedule retrieval
        example: '2026-01-07'
      responses:
        '200':
          description: Schedule data
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Shift'
              examples:
                listSchedules200Example:
                  summary: Default listSchedules 200 response
                  x-microcks-default: true
                  value:
                  - shiftId: example-value
                    employeeId: example-value
                    locationId: example-value
                    shiftDate: '2026-01-15'
                    startTime: example-value
                    endTime: example-value
                    totalHours: 1.0
                    jobCode: example-value
                    status: Scheduled
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v1/employees/{employeeId}/shifts:
    get:
      operationId: getEmployeeShifts
      summary: UKG Pro WFM Get Employee Shifts
      description: Retrieve scheduled shifts for a specific employee.
      tags:
      - Scheduling
      parameters:
      - name: employeeId
        in: path
        required: true
        schema:
          type: string
        description: Employee identifier
        example: EMP001
      - name: startDate
        in: query
        schema:
          type: string
          format: date
        description: Start date
        example: '2026-01-01'
      - name: endDate
        in: query
        schema:
          type: string
          format: date
        description: End date
        example: '2026-01-14'
      responses:
        '200':
          description: Employee scheduled shifts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Shift'
              examples:
                getEmployeeShifts200Example:
                  summary: Default getEmployeeShifts 200 response
                  x-microcks-default: true
                  value:
                  - shiftId: example-value
                    employeeId: example-value
                    locationId: example-value
                    shiftDate: '2026-01-15'
                    startTime: example-value
                    endTime: example-value
                    totalHours: 1.0
                    jobCode: example-value
                    status: Scheduled
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 bearer token with WFM API key header
  schemas:
    WfmEmployee:
      type: object
      description: Employee record in WFM system
      properties:
        employeeId:
          type: string
          description: Employee identifier
          example: EMP001
        firstName:
          type: string
          description: First name
          example: Jane
        lastName:
          type: string
          description: Last name
          example: Smith
        badge:
          type: string
          description: Badge or punch number
          example: '12345'
        homeLocationId:
          type: string
          description: Home location identifier
          example: LOC-NYC
        jobCode:
          type: string
          description: Primary job code
          example: CASHIER
        workRule:
          type: string
          description: Pay rule for overtime and break calculations
          example: Standard-40hr
        status:
          type: string
          description: Employment status
          example: Active
    Timecard:
      type: object
      description: Employee timecard for a pay period
      properties:
        timecardId:
          type: string
          description: Timecard identifier
          example: EMP001
        employeeId:
          type: string
          description: Employee identifier
          example: EMP001
        periodStart:
          type: string
          format: date
          description: Pay period start date
          example: '2026-01-15'
        periodEnd:
          type: string
          format: date
          description: Pay period end date
          example: '2026-01-15'
        totalHours:
          type: number
          format: double
          description: Total hours worked
          example: 80.0
        regularHours:
          type: number
          format: double
          description: Regular hours
          example: 80.0
        overtimeHours:
          type: number
          format: double
          description: Overtime hours
          example: 0.0
        status:
          type: string
          description: Timecard approval status
          example: Approved
          enum:
          - Open
          - Submitted
          - Approved
          - Rejected
    Punch:
      type: object
      description: Clock punch record
      properties:
        punchId:
          type: string
          description: Punch identifier
          example: EMP001
        employeeId:
          type: string
          description: Employee identifier
          example: EMP001
        punchTime:
          type: string
          format: date-time
          description: Punch date and time
          example: '2026-01-15T09:00:00Z'
        punchType:
          type: string
          description: Type of punch
          example: In
          enum:
          - In
          - Out
          - Transfer
          - Meal Start
          - Meal End
        locationId:
          type: string
          description: Location where punch occurred
          example: EMP001
        jobCode:
          type: string
          description: Job code for this punch
          example: example-value
    PunchRequest:
      type: object
      description: Request to create a clock punch
      required:
      - punchTime
      - punchType
      properties:
        punchTime:
          type: string
          format: date-time
          description: Punch timestamp
          example: '2026-01-15T09:00:00Z'
        punchType:
          type: string
          description: Type of punch
          example: In
          enum:
          - In
          - Out
          - Transfer
        locationId:
          type: string
          description: Location identifier
          example: EMP001
        jobCode:
          type: string
          description: Job code for this punch
          example: example-value
    AccrualBalance:
      type: object
      description: Employee accrual balance for a time-off policy
      properties:
        accrualCodeId:
          type: string
          description: Accrual code identifier
          example: EMP001
        accrualName:
          type: string
          description: Accrual policy name
          example: Vacation
        balance:
          type: number
          format: double
          description: Current available balance in hours
          example: 40.0
        pendingBalance:
          type: number
          format: double
          description: Pending approved requests
          example: 8.0
        takingBalance:
          type: number
          format: double
          description: Hours in approved future requests
          example: 1.0
        asOfDate:
          type: string
          format: date
          description: Balance as of this date
          example: '2026-01-15'
    Shift:
      type: object
      description: Scheduled work shift
      properties:
        shiftId:
          type: string
          description: Shift identifier
          example: EMP001
        employeeId:
          type: string
          description: Employee identifier
          example: EMP001
        locationId:
          type: string
          description: Work location
          example: LOC-NYC
        shiftDate:
          type: string
          format: date
          description: Date of the shift
          example: '2026-01-15'
        startTime:
          type: string
          description: Shift start time (HH:MM)
          example: '09:00'
        endTime:
          type: string
          description: Shift end time (HH:MM)
          example: '17:00'
        totalHours:
          type: number
          format: double
          description: Total scheduled hours
          example: 8.0
        jobCode:
          type: string
          description: Job code for the shift
          example: example-value
        status:
          type: string
          description: Shift status
          example: Scheduled
          enum:
          - Scheduled
          - Open
          - Filled
          - Cancelled