Create Unified Upload
create_unified_uploadCreate a project file upload in Procore, returning signed URLs for standard or multi-part uploads. Handles files up to 100 MB as a single segment and larger files via multiple segments.
Instructions
Creates a project-level file upload for the given company and project. Supports both standard (single-part) and segmented (multi-part) uploads with a unified request and response. Returns a segments array containing signed upload URL(s)—one segment for standard uploads, multiple for segmented—each with url, url_expires_at, and headers. The client uploads the file (or parts) to the returned URL(s), then completes via PATCH. Polling the upload status until it is available is mandatory before the file can be downloaded. company_id and project_id default to the values set by procore_set_config when omitted. Creates the unified upload and returns it with its new id (HTTP 201); calling it again creates another record. Failures come back as an error payload carrying the HTTP status — commonly 401 when the token has expired, 403 without tool permission, and 404 when an id does not resolve. Required parameters: company_id, project_id, file_name, file_size, content_type, segments. Procore API (v2.1): Core > File Access & Storage. Endpoint: POST /rest/v2.1/companies/{company_id}/projects/{project_id}/uploads
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| md5 | No | JSON request body field — the md5 for this File Access & Storage operation | |
| sha256 | No | JSON request body field — the sha256 for this File Access & Storage operation | |
| segments | Yes | JSON request body field — upload file segments. Files up to 104857600 bytes (100 MB) require a single segment, while larger files may be split into multiple segments. A maximum of 10000 segments is permitted per file. | |
| analytics | No | JSON request body field — the analytics for this File Access & Storage operation | |
| file_name | Yes | JSON request body field — the file name for this File Access & Storage operation | |
| file_size | Yes | JSON request body field — file size in bytes. Minimum: 1 byte. | |
| company_id | Yes | URL path parameter — unique identifier for the company. | |
| project_id | Yes | URL path parameter — unique identifier for the project. | |
| content_type | Yes | JSON request body field — the content type for this File Access & Storage operation | |
| url_expires_in | No | JSON request body field — the url expires in for this File Access & Storage operation | |
| custom_metadata | No | JSON request body field — the custom metadata for this File Access & Storage operation | |
| uploader_tool_name | No | JSON request body field — client-reported tool name matching one of the allowed tools |