Import Primavera P6 XER Schedule
Parses a Primavera P6 XER file and returns a Normalized Schedule JSON object compatible with all analysis APIs.
Tier access: Starter and above.
File size limit: 100 MB.
Input: XER file content as a UTF-8 or Latin-1 string in the file_content field.
Multi-project XER: If the XER file contains multiple projects, specify options.project_id to select the target project. Omitting project_id when multiple projects are present returns a 422 error listing available project IDs.
Output: normalized_schedule (ready to submit to /health/score, /forensics/dcma-14-point, etc.) plus parse_summary, mapping_stats, warnings, and processing_metadata.
Request example
json{
"tasks": [
{
"id": "T1",
"duration_days": 5
}
]
}Request fields from OpenAPI contract
Required fields and the optional fields that change this call are listed here. The shared task model stays on the task schema guide.This table is generated from the endpoint schema in openapi.json.
| Field | Type | Required | Description |
|---|---|---|---|
| file_content | string | Required | P6 XER file content (text, any encoding — auto-detected) |
| options | object | Optional | Options controlling P6 XER import behavior. |
| options.project_id | string | null | Optional | Select a specific project from a multi-project XER. Required if XER contains more than one project. |
| options.strict_validation | boolean | Optional | No description in OpenAPI contract. |
| options.auto_detect_start_finish | boolean | Optional | No description in OpenAPI contract. |
| options.auto_classify_task_types | boolean | Optional | No description in OpenAPI contract. |
| options.use_prefix_classification | boolean | Optional | Detect task type from name prefix (e.g., 'SM-Buffer', 'PP-FuturePh3', 'AE-Engineering'). Fires only when native P6 task_type is not already set. See Import API Common Patterns § Prefix Classification. |
| options.include_warnings | boolean | Optional | No description in OpenAPI contract. |
| options.use_activity_id | boolean | Optional | Use task_code (Activity ID) as task id instead of numeric task_id. |
Response example
json{
"status": "info",
"metadata": {
"task_count": 120,
"endpoint": "/api/v1/import/xer",
"api_version": "v0.2.0",
"processing_time_ms": 380
},
"data": {
"normalized_schedule": {
"tasks": [
{
"id": "A1000",
"name": "Project Kickoff",
"duration_days": 0,
"predecessors": [],
"task_type": "milestone"
}
],
"start_task_ids": [
"A1000"
],
"finish_task_ids": [
"A9900"
]
},
"parse_summary": {
"source_format": "p6-xer",
"tasks_imported": 120,
"dependencies_imported": 145
},
"mapping_stats": {},
"warnings": [],
"processing_metadata": {
"import_timestamp": "2026-05-27T12:00:00Z",
"processing_time_ms": 380,
"api_version": "v0.2.0",
"parser_version": "1.1.0"
}
}
}Response fields from OpenAPI contract
This table is generated from the endpoint response schema in openapi.json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | Required | Top-level result status — always present in every response. |
| metadata | object | Required | Audit trail and processing context — always present, never null. |
| metadata.task_count | integer | Required | Number of tasks in the submitted schedule |
| metadata.endpoint | string | Required | Endpoint path e.g. /api/v1/health/score |
Schema
{
"$ref": "#/components/schemas/BellatorResponse_ImportData_"
}Authentication
- x-api-key header
Reference details
- Operation ID
- import_xer_api_v1_import_xer_post
- Section
- Import
- Tags
- Import
- Playground link
- /playground?endpoint=%2Fapi%2Fv1%2Fimport%2Fxer&method=post
Was this page helpful?
Your feedback helps us improve docs, reference pages, and Playground flows.
Topic: Import Primavera P6 XER Schedule · Page: /docs/api-reference/import_xer_api_v1_import_xer_post