Boomi MFT - AFT Content API Reference (v1) - Upload
Download OpenAPI Specification: Download
For more information about Postman collections, forking, and making your first API call, refer to the Working with Boomi APIs on Postman page.
Delivery of file content into a flow endpoint. Small files go in a single request; larger files use a chunked upload session that can be resumed after an interruption. Call the pre-flight (OPTIONS) operation first to learn the maximum chunk size and pick the right path.
Pre-flight an upload and discover upload limits and URLs
Validates the target endpoint path and file attributes before any bytes are sent, and returns the maximum chunk size along with the URLs for the single-file and chunked (resumable) upload flows. Clients call this first to decide which upload path to use.
Required privilege: none beyond a valid credential.
Authorizations:
header Parameters
| X-Thru-Tracking-ThruNodeId | string Default: Optional. Identifier of the MFT node that originated the request, recorded for tracing. Sent as the |
Request Body schema: application/json
Target endpoint path and file attributes to validate.
| endpointPath | string or null Flow endpoint path the file is being uploaded to, in |
object (MetaInfo) Attributes describing a single file in an upload. |
Responses
Response Schema: application/json
| uploadMaxChunkSize | integer <int64> Largest number of bytes that may be sent in one request. Files at or below this size can go through the single-file upload; larger files must use a chunked upload session. |
| uploadSingleFileUrl | string or null Relative URL of the single-file upload endpoint. |
| uploadChunkedFileUrl | string or null Relative URL used to start a chunked upload session. |
Request samples
- Payload
{- "endpointPath": "/acme/invoices-inbound/partner-drop",
- "attributes": {
- "fileTime": "2026-08-21T09:14:37Z",
- "fileName": "invoices-2026-08-21.csv",
- "path": "/2026/08",
- "sourceFullPath": "/var/exports/2026/08/invoices-2026-08-21.csv",
- "size": 10485760,
- "fileId": "66c5a1f0e3b94a7d2c4f8b13",
- "actionId": "48219",
- "processingId": "7c1f2a44-08d5-4d1e-9a3b-51f0c2e9de77",
- "customerCode": "acme"
}
}Response samples
- 200
{- "uploadMaxChunkSize": 52428800,
- "uploadSingleFileUrl": "api/Files/1.0/Content/",
- "uploadChunkedFileUrl": "api/Files/1.0/Upload_Sessions/"
}Upload a whole file in a single request
Streams one complete file to its target flow endpoint in a single multipart request. Use this for files at or below the maximum chunk size reported by the pre-flight (OPTIONS) call; larger files should use the chunked upload-session flow. On success the response headers carry the transfer/activity tracking identifiers.
Required privilege: File Upload.
Authorizations:
header Parameters
| X-Thru-Tracking-RequestId | integer <int64> Default: 0 Optional. Caller-supplied identifier used to correlate this upload with the caller's own records. Sent as the |
| X-Thru-Tracking-ThruNodeId | string Default: Optional. Identifier of the MFT node that originated the request, recorded for tracing. Sent as the |
| ThruApplication | string Default: Optional. Name of the calling application, recorded for tracing. Sent as the |
Request Body schema: multipart/form-datarequired
Two-part multipart/form-data body. Send the JSON metadata part first, then the file bytes.
required | object JSON metadata for the upload, sent as a text part. |
| Model_1 required | string <binary> The complete file to upload. |
Responses
| X-Thru-Tracking-ActivityId | string Example: "66c5a1f0e3b94a7d2c4f8b13" MFT-generated identifier for the file this upload created. Use it to correlate with transfer tracking and audit records. |
Response samples
- 400
{- "type": "string",
- "title": "string",
- "status": 0,
- "detail": "string",
- "instance": "string",
- "property1": null,
- "property2": null
}Start a chunked (resumable) upload session
Opens an upload session for a large file, returning the session identifier in the response headers. Chunks are then sent with PUT to the session, finalised with Commit, or discarded with Abort. Use this flow when a file exceeds the single-request maximum chunk size.
Required privilege: File Upload.
Authorizations:
header Parameters
| X-Thru-Tracking-RequestId | integer <int64> Default: 0 Optional. Caller-supplied identifier used to correlate this upload with the caller's own records. Sent as the |
| X-Thru-Tracking-ThruNodeId | string Default: Optional. Identifier of the MFT node that originated the request, recorded for tracing. Sent as the |
| ThruApplication | string Default: Optional. Name of the calling application, recorded for tracing. Sent as the |
Request Body schema: application/json
Target endpoint path and file attributes for the session.
| endpointPath | string or null Flow endpoint path the file is being uploaded to, in |
object (MetaInfo) Attributes describing a single file in an upload. |
Responses
Request samples
- Payload
{- "endpointPath": "/acme/invoices-inbound/partner-drop",
- "attributes": {
- "fileTime": "2026-08-21T09:14:37Z",
- "fileName": "invoices-2026-08-21.csv",
- "path": "/2026/08",
- "sourceFullPath": "/var/exports/2026/08/invoices-2026-08-21.csv",
- "size": 10485760,
- "fileId": "66c5a1f0e3b94a7d2c4f8b13",
- "actionId": "48219",
- "processingId": "7c1f2a44-08d5-4d1e-9a3b-51f0c2e9de77",
- "customerCode": "acme"
}
}Response samples
- 400
- 403
{- "type": "string",
- "title": "string",
- "status": 0,
- "detail": "string",
- "instance": "string",
- "property1": null,
- "property2": null
}Set or update the file details on an open upload session
Updates the target endpoint path and file attributes for an in-progress chunked upload session before it is committed. The destination endpoint is re-validated against the caller's authorization on every call.
Required privilege: none beyond a valid credential.
Authorizations:
path Parameters
| uploadSession required | string Identifier of the open upload session. |
header Parameters
| X-Thru-Tracking-ThruNodeId | string Default: Optional. Identifier of the MFT node that originated the request, recorded for tracing. Sent as the |
Request Body schema: application/json
Updated target endpoint path and file attributes.
| endpointPath | string or null Flow endpoint path the file is being uploaded to, in |
object (MetaInfo) Attributes describing a single file in an upload. |
Responses
Request samples
- Payload
{- "endpointPath": "/acme/invoices-inbound/partner-drop",
- "attributes": {
- "fileTime": "2026-08-21T09:14:37Z",
- "fileName": "invoices-2026-08-21.csv",
- "path": "/2026/08",
- "sourceFullPath": "/var/exports/2026/08/invoices-2026-08-21.csv",
- "size": 10485760,
- "fileId": "66c5a1f0e3b94a7d2c4f8b13",
- "actionId": "48219",
- "processingId": "7c1f2a44-08d5-4d1e-9a3b-51f0c2e9de77",
- "customerCode": "acme"
}
}Response samples
- 400
- 403
{- "type": "string",
- "title": "string",
- "status": 0,
- "detail": "string",
- "instance": "string",
- "property1": null,
- "property2": null
}Upload the next chunk of an open upload session
Appends a chunk of bytes to an in-progress chunked upload session. The chunk's position and size are taken from the Content-Range of the request. Call repeatedly until every chunk has been sent, then finalise with Commit.
Required privilege: none beyond a valid credential.
Authorizations:
path Parameters
| uploadSession required | string Identifier of the open upload session. |
header Parameters
| X-Thru-Tracking-ThruNodeId | string Default: Optional. Identifier of the MFT node that originated the request, recorded for tracing. Sent as the |
Request Body schema: multipart/form-datarequired
Two-part multipart/form-data body. Send the JSON metadata part first, then the file bytes.
required | object JSON metadata for the upload, sent as a text part. |
| Model_1 required | string <binary> The bytes of this chunk. |
Responses
Commit an upload session and assemble the final file
Finalises a chunked upload: the uploaded chunks are assembled into the complete file at its destination. Assembly is asynchronous — the endpoint returns 202 (with a Retry-After header) while assembly is in progress and 201 once the file is fully assembled, so clients poll Commit until it reports completion.
Required privilege: File Upload.
Authorizations:
path Parameters
| uploadSession required | string Identifier of the upload session to commit. |
header Parameters
| X-Thru-Tracking-ThruNodeId | string Default: Optional. Identifier of the MFT node that originated the request, recorded for tracing. Sent as the |
Responses
Abort an open upload session and discard its chunks
Cancels an in-progress chunked upload, releasing the staged chunks and marking the transfer as cancelled. Use this when a client abandons an upload it will not commit.
Required privilege: File Upload.
Authorizations:
path Parameters
| uploadSession required | string Identifier of the upload session to abort. |
header Parameters
| X-Thru-Tracking-ThruNodeId | string Default: Optional. Identifier of the MFT node that originated the request, recorded for tracing. Sent as the |
Request Body schema: application/json
Optional reason/context for the cancellation.
| status | integer <int32> (CancellationStatus) Enum: 0 1 Outcome recorded when an upload session is aborted. |
| message | string or null Free-text explanation recorded against the aborted session. |
Responses
Request samples
- Payload
{- "status": 0,
- "message": "Cancelled by the user before the final chunk was sent."
}Get the status of an upload session
Returns the current state of a chunked upload session — file name, uploaded size, the byte ranges received so far, and start/complete timestamps — so a client can resume an interrupted upload by sending only the missing chunks.
Required privilege: none beyond a valid credential.
Authorizations:
path Parameters
| upload_session required | string Identifier of the upload session to inspect. |
Responses
Response Schema: application/json
| transferId | string or null Identifier of the upload session this status describes. |
| fileName | string or null Name of the file being uploaded. |
| fileSizeBytes | integer <int64> Total declared size of the file in bytes. |
Array of objects or null (RangeInfo) The chunks committed so far, in sequence order. Resume an interrupted upload by sending the first chunk not listed here. | |
| lastChunkSizeBytes | integer <int64> Size in bytes of the most recently committed chunk. |
| dateStartedUTC | string <date-time> UTC time the upload session was created. |
| dateCompletedUTC | string or null <date-time> UTC time the session was committed. Null while the upload is still open. |
Response samples
- 200
{- "transferId": "7c1f2a44-08d5-4d1e-9a3b-51f0c2e9de77",
- "fileName": "invoices-2026-08-21.csv",
- "fileSizeBytes": 10485760,
- "committedRangeInfos": [
- {
- "id": "a1b2c3d4e5f60718293a4b5c",
- "startWriteDateTime": "2026-08-21T09:14:37Z",
- "completeWriteDateTime": "2026-08-21T09:14:39Z",
- "seqNumber": 4,
- "attempt": 1,
- "size": 5242880,
- "hash": "d41d8cd98f00b204e9800998ecf8427e",
- "hashType": "MD5",
- "ver": "1.1"
}
], - "lastChunkSizeBytes": 5242880,
- "dateStartedUTC": "2026-08-21T09:14:30Z",
- "dateCompletedUTC": "2026-08-21T09:16:02Z"
}