WFM Schedule Import API
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?
- Only one import per account can be in progress at any time. Attempting a second concurrent upload returns a
409 Conflicterror. - 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-importswith the schedule file, specifying the date format and timezone. - The response returns
202 Acceptedwith aLocationheader containing the import status URL. Use it to poll the status viaGET /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 theerror_report_urlto 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
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
| Header | Description |
|---|---|
Location |
URL to check the import status, e.g. /v1/schedules/event-imports/550e8400-e29b-41d4-a716-446655440000 |
Error Responses
| HTTP Status | Error Code | Description | Message |
|---|---|---|---|
400 | 1580028 | Bad Request — invalid CSV header or unsupported date format | The CSV template is incorrect. |
401 | 1580005 | Unauthorized — missing or invalid JWT | Invalid authentication. |
403 | — | Forbidden — valid JWT but missing wfm-public:write scope | Insufficient permissions to perform this operation. |
409 | 1580026 | Conflict — a schedule event import is already in progress | Another event import is already in progress. Please try again later. |
413 | 1580047 | Payload Too Large — CSV file exceeds 5 MB | The uploaded file exceeds the maximum allowed size of 5 MB. |
415 | 1580027 | Unsupported Media Type — only .csv files are accepted | Unsupported Media Type. |
429 | — | Too Many Requests | Rate limit exceeded. Please retry later. |
GET /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
| Parameter | Type | Required | Description |
|---|---|---|---|
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
| Field | Type | Required | Description |
|---|---|---|---|
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
| Status | Description |
|---|---|
| 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 Status | Error Code | Description | Message |
|---|---|---|---|
401 | 1580005 | Unauthorized — missing or invalid JWT | Invalid authentication. |
403 | — | Forbidden — valid JWT but missing wfm-public:read scope | Insufficient permissions to perform this operation. |
404 | 1580001 | Not Found — no import with this ID exists for the account | Not found. |
CSV File Format
The CSV file must contain the following columns (exact header names, in order, case-sensitive):
| Column | Required | Type | Description |
|---|---|---|---|
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)
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)
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 String | Example Value | Description |
|---|---|---|
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)
| Scope | Required for |
|---|---|
wfm-public:write |
POST — upload schedule events |
wfm-public:read |
GET — retrieve import status |
Subscription Limits
- 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.
Updated about 7 hours ago