Schedule Files

Upload a schedule file

Uploads a schedule file (P6 XER/XML, Phoenix PPX, or Microsoft Project MPP) and enqueues a sync job to parse and ingest it.

Required scope: write:schedule_files

Constraints:

  • file must be a multipart/form-data upload.
  • file_type must be one of xer, xml, ppx, mpp.
  • Within the same partner family (XER/XML share a family; PPX and MPP are each their own), the most recent file's file_type cannot change between uploads. Switching formats inside a partner returns 422 file_type_mismatch. PPX after XER is allowed because they belong to different partners.
  • customer_project_id, if provided, must reference a customer project owned by the authenticated company.

422 error codes:

  • invalid_request — missing required parameter (name, file, or file_type) or file is not a multipart upload.
  • file_type_mismatch — the most recent file in the same partner family uses a different file_type.
  • validation_error — the underlying record failed model-level validation (including unknown file_type values).
post/schedule_files

Response

File uploaded; sync job enqueued

idinteger required

Unique identifier for the schedule file.

namestring required

Human-readable name supplied when the file was uploaded.

is_baselineboolean required

True if the file was marked as a baseline at upload time; baselines are preserved for variance reporting.

file_type'xer' | 'xml' | 'ppx' | 'mpp'

Format the file was uploaded as, which also determines the scheduling integration it belongs to.

partner_token_idinteger nullable

The scheduling integration the file was uploaded under. Null for files uploaded before that link existed, or whose integration was disconnected.

company_idinteger required

ID of the company that owns this file. Always equal to the authenticated client's company.

created_atstring date-time required

ISO 8601 timestamp of when the upload was accepted.

Example response

{
  "id": 482,
  "name": "October 2026 Baseline",
  "file_type": "xer",
  "company_id": 1042,
  "created_at": "2026-04-27T15:30:00Z"
}

Changes