WFM Schedule Import API

WFM Schedule Event Import API — Public Documentation

WFM Schedule Event Import API

Overview

The Workforce Management (WFM) Schedule Event Import API allows customers to programmatically upload agent schedule events into Talkdesk Workforce Management via CSV files. This API is part of the Talkdesk Workforce Management product.

Typical use cases include:

  • Importing externally managed agent schedules (e.g., from third-party HRIS or workforce planning tools) into Talkdesk WFM.
  • Bulk-uploading shifts, time-off, breaks, and meetings for multiple agents across date ranges.
  • Automating periodic schedule uploads as part of an HRIS-to-WFM integration pipeline.

Business Problem-Solving Context

What can I achieve with this API?

  • Upload schedule events via CSV: Submit a CSV file containing agent schedule events (shifts, time-off, breaks, meetings) with agent identification, time ranges, and event types.
  • Track import status: Poll the import status by ID to monitor progress and retrieve error details including a downloadable error report.

What business problems does this API solve?

  • Third-party schedule integration: Organizations that manage agent schedules in external HRIS or workforce planning systems can push their schedule data into Talkdesk WFM without manual data entry in the UI, enabling WFM to become the single pane of glass for adherence monitoring.
  • Bulk schedule uploads: Supervisors and planners who need to create schedules for many agents can prepare the data in a spreadsheet and upload it in a single operation rather than creating each event individually.
  • Automated planning workflows: Enterprises with mature planning processes can integrate schedule uploads into their automated workflows (e.g., nightly batch jobs that sync schedules from an HRIS system into Talkdesk WFM).

What does this API support and what are its limitations?

Limitations
  • Only one import per account can be in progress at any time. Attempting a second concurrent upload returns a 409 Conflict error.
  • The CSV file must use specific column headers: Agent Name, Agent Email, Start Time, End Time, Event Type Name.
  • Agent emails in the CSV must match existing active agents configured in the Talkdesk account.
  • Event type names must match existing event types configured in Talkdesk WFM.
  • The maximum file size for the CSV upload is 5 MB.
  • The error file download URL (for imports with partial errors) is valid for 10 minutes after generation.

Use Case

Importing schedule data from an external HRIS system

A workforce planner exports agent schedules from a third-party HRIS system as a CSV file with the required columns and uploads it via the API:

  • Upload the CSV using POST /wfm/aion/v1/schedules/event-imports with the schedule file, specifying the date format and timezone.
  • The response returns 202 Accepted with a Location header containing the import status URL. Use it to poll the status via GET /wfm/aion/v1/schedules/event-imports/{import_id} until the import reaches a final state.
  • If the status is IMPORTED_WITH_ERRORS, download the error report CSV from the error_report_url to review which rows failed validation and why.

Usage

The Schedule Event Import API provides two endpoints:

  • POST /wfm/aion/v1/schedules/event-imports — Upload a schedule event CSV file
  • GET /wfm/aion/v1/schedules/event-imports/{import_id} — Retrieve the import status by ID

POST /wfm/aion/v1/schedules/event-imports

POSThttps://api.talkdeskapp.com/wfm/aion/v1/schedules/event-imports

Upload a schedule event CSV file for the account. Returns 202 Accepted with a Location header pointing to the import status resource. No synchronous processing of CSV rows occurs before the response is sent.

Content-Type: multipart/form-data

Request Parameters (form data)

Parameter Type Required Default Description
csv_file binary Yes The CSV file to upload (max 5 MB)
file_name string Yes The original file name, must end with .csv
time_zone string Yes IANA time zone for the time values in the CSV (e.g., America/New_York, UTC)
date_format string No HH:mm yyyy-MM-dd Date/time format used in the Start Time and End Time columns. See supported formats.

Response: 202 Accepted

The response body is empty. The import ID is embedded in the Location header.

Response Headers

HeaderDescription
Location URL to check the import status, e.g. /v1/schedules/event-imports/550e8400-e29b-41d4-a716-446655440000

Error Responses

HTTP StatusError CodeDescriptionMessage
4001580028Bad Request — invalid CSV header or unsupported date formatThe CSV template is incorrect.
4011580005Unauthorized — missing or invalid JWTInvalid authentication.
403Forbidden — valid JWT but missing wfm-public:write scopeInsufficient permissions to perform this operation.
4091580026Conflict — a schedule event import is already in progressAnother event import is already in progress. Please try again later.
4131580047Payload Too Large — CSV file exceeds 5 MBThe uploaded file exceeds the maximum allowed size of 5 MB.
4151580027Unsupported Media Type — only .csv files are acceptedUnsupported Media Type.
429Too Many RequestsRate limit exceeded. Please retry later.

GET /wfm/aion/v1/schedules/event-imports/{import_id}

GEThttps://api.talkdeskapp.com/wfm/aion/v1/schedules/event-imports/{import_id}

Retrieve the current status of a Schedule Event Import by its ID. The import must belong to the authenticated account; requesting an import from a different account returns 404.

Path Parameters

ParameterTypeRequiredDescription
import_id string (UUID) Yes The unique identifier of the schedule event import (extracted from the Location header of the POST response)

Response: 200 OK

Success example:

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "IMPORTED"
}

With errors example:

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "IMPORTED_WITH_ERRORS",
  "error_report_url": "https://s3.amazonaws.com/bucket/schedule_event_import_errors.csv?X-Amz-Expires=600",
  "error_report_expires_at": "2026-06-01T12:10:00Z"
}

Response Fields

FieldTypeRequiredDescription
id string (UUID) Yes The unique identifier of the import
status string Yes The current processing status
error_report_url string (nullable) No Pre-signed S3 URL to download the error report CSV. Present only when status is IMPORTED_WITH_ERRORS. Valid for 10 minutes.
error_report_expires_at string (date-time, nullable) No Expiry timestamp (ISO 8601) of the pre-signed URL. Present only when error_report_url is set.

Status Values

StatusDescription
PROCESSING File received or currently being processed
IMPORTED Successfully imported without errors
IMPORTED_WITH_ERRORS Imported with some row-level validation errors (error report available)
ERROR Import failed due to an unrecoverable error

Error Responses

HTTP StatusError CodeDescriptionMessage
4011580005Unauthorized — missing or invalid JWTInvalid authentication.
403Forbidden — valid JWT but missing wfm-public:read scopeInsufficient permissions to perform this operation.
4041580001Not Found — no import with this ID exists for the accountNot found.

CSV File Format

The CSV file must contain the following columns (exact header names, in order, case-sensitive):

ColumnRequiredTypeDescription
Agent Name Yes string Display name of the agent
Agent Email Yes string Email address of the agent — must match an active agent in the Talkdesk account
Start Time Yes string Start date and time of the schedule event (format must match the date_format parameter)
End Time Yes string End date and time of the schedule event (format must match the date_format parameter)
Event Type Name Yes string Name of the event type — must match an existing event type configured in Talkdesk WFM (e.g., Available for all channels)

Example CSV (default HH:mm yyyy-MM-dd format)

Agent Name,Agent Email,Start Time,End Time,Event Type Name
John Smith,[email protected],09:00 2026-06-01,17:00 2026-06-01,Available for all channels
Jane Doe,[email protected],08:00 2026-06-01,16:00 2026-06-01,Available for all channels
Bob Wilson,[email protected],12:00 2026-06-01,12:30 2026-06-01,Break

Example CSV (HH:mm MM/dd/yyyy format)

Agent Name,Agent Email,Start Time,End Time,Event Type Name
John Smith,[email protected],09:00 06/01/2026,17:00 06/01/2026,Available for all channels
Jane Doe,[email protected],08:00 06/01/2026,16:00 06/01/2026,Available for all channels

Supported Date Formats

The date_format parameter accepts the following values:

Format StringExample ValueDescription
HH:mm yyyy-MM-dd 09:00 2026-06-01 Default. 24-hour time followed by ISO date.
HH:mm yyyyMMdd 09:00 20260601 24-hour time followed by compact date.
HH:mm MM/dd/yyyy 09:00 06/01/2026 24-hour time followed by US date format.
HH:mm M/d/yyyy 09:00 6/1/2026 24-hour time followed by US date format (no leading zeros).
HH:mm MM/dd/yy 09:00 06/01/26 24-hour time followed by US date format with 2-digit year.
HH:mm dd/MM/yyyy 09:00 01/06/2026 24-hour time followed by European date format.

Authentication & Authorization

This API requires OAuth 2.0 authentication (Bearer token) using the client credentials grant.

Scopes (Early Access)

ScopeRequired for
wfm-public:write POST — upload schedule events
wfm-public:read GET — retrieve import status

Subscription Limits

Note
  • Only one schedule event import can be in progress per account at any time.
  • The maximum CSV file size is 5 MB.
  • The error report download URL expires 10 minutes after generation.