Document Endpoint
Updated today
File the document in the request against the order named in native_system_load_id, and against the stop when native_system_stop_id is set. We send proofs of delivery (PODs): one whenever a tracker uploads a POD in TrackFlo, or a POD collected from the carrier or driver is approved. Other document types are sent only if you ask for them.
Suggested path: POST /trackflo/documents. Authentication, the shared fields, responses and retries are in Build Write-Back Endpoints for TrackFlo.
Fields
Every request carries the shared fields plus these. event_type is document.
Field | Type | Description |
|---|---|---|
| string | The kind of document. See Document types below. |
| string | The file's name, for example |
| string |
|
| integer | The file's size before encoding. |
| string | The hex SHA-256 of the file. Check it after you decode |
| string | The file, base64-encoded. Up to 20 MB before encoding. |
| string or null | The stop the document belongs to, such as the pickup for a BOL. Null for order-level documents like a POD. |
| string or null | The tracker's note about the document, up to 1,000 characters. |
Example
{
"event_id": "9b2e6d14-7f3a-4c58-a1e9-0d84c5b7f2a6",
"event_type": "document",
"native_system_load_id": "1089520",
"native_system_load_leg_id": "2330158",
"entered_by_name": "Jordan Ellis",
"entered_by_email": "[email protected]",
"entered_by_tms_user_id": "JELLIS",
"entered_at_utc": "2026-10-25T18:20:03Z",
"trackflo_load_url": "https://app.trackflo.tech/public_load_details/4b6e…",
"doc_type": "pod",
"file_name": "Order_1089520_POD.pdf",
"content_type": "application/pdf",
"file_size_bytes": 412883,
"file_sha256": "a3f1c9…",
"file_base64": "JVBERi0xLjcKJeLjz9MK…",
"native_system_stop_id": null,
"note": null
}Respond with your document's id:
{ "id": "img-55120-1" }Document types
| Document | Filed against |
|---|---|---|
| Proof of delivery | The order |
| Bill of lading | The stop |
| Lumper receipt | The stop |
| Scale ticket | The stop |
| Pallet photo | The stop |
| Reefer unit photo | The leg |
| In-transit photo | The leg |
| Any other document | The order |
We send pod by default. Tell us which other types you want, and which of your TMS's document types each one maps to.
Things to know
Accept bodies up to 30 MB. A 20 MB file grows by about a third when base64-encoded. Reject a larger body with
413and we alert our team.A second POD for the same order is a new document. It means a tracker uploaded a replacement or missing pages. Store it alongside the first; don't treat it as a duplicate. A retry of the same document carries the same
event_id.Your team gets the POD by email too. If your team already receives PODs by email from TrackFlo, that keeps happening. The endpoint adds the POD to the order in your TMS; it doesn't replace the email.