Shipment Documents & Proof of Delivery
Retrieve customer-visible shipment paperwork, pickup and delivery photos, and the latest signature through one read-only API.
Authentication is required. Results are limited to orders belonging to accounts authorized by your credential. A tracking number alone does not grant access.
Endpoint & authentication
GET https://www.jetdelivery.com/api/v1/order/docs/?control_no=1234567
Authorization: Bearer YOUR_API_KEY
Use HTTPS and call from your server. Send your API key in the Authorization header, or use form POST with key in the body. Raw JSON request bodies are not supported.
Legacy query-string key, apikey, and token inputs remain supported, but avoid keys in URLs because URLs may be logged. A supplied Authorization header takes precedence; an invalid header never falls back to a form or query key.
Test keys are not a document sandbox. Both authorized production and test keys can retrieve real documents for their account. Treat all responses and download links as confidential. Disabled, blank, or unknown key statuses are denied; legacy Test-Debug access accepts the test key only.
Request examples
# Recommended: key in header
curl "https://www.jetdelivery.com/api/v1/order/docs/?control_no=1234567" \
-H "Authorization: Bearer YOUR_API_KEY"
# Alternative: form POST, not JSON
curl "https://www.jetdelivery.com/api/v1/order/docs/" \
--data-urlencode "key=YOUR_API_KEY" \
--data-urlencode "control_no=1234567"
# Find documents by your billing reference
curl "https://www.jetdelivery.com/api/v1/order/docs/" \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "search_field=customer_reference" \
--data-urlencode "search_value=PO-EXAMPLE-100"
These are fictional examples. Supply your own key and order number; never paste real keys or downloaded paperwork into public documentation or support logs.
Lookup parameters
control_nostringRecommended
Your Jet Delivery order number. Use this for an unambiguous order lookup. Comma-separated order numbers are supported.
search_field + search_valuestrings
Legacy explicit searches support control_no, customer_reference, or invoice_no. References use at most 23 characters. Values may be comma-separated; commas are separators, not literal reference characters.
idstring
Legacy alias for search_value. Without a search_field, legacy searches may match an order number, customer reference, or invoice number. Prefer control_no for new integrations.
Provide one lookup style. If mixed, search_value takes priority, followed by id, then control_no. Requests allow up to 100 values, 4,096 total search characters, and 100 matching orders. Narrow the search if a limit is exceeded; results are not silently truncated.
Response
{
"error": null,
"data": {
"orders": [{
"control_no": "1234567",
"reference": "PO-EXAMPLE-100",
"requested_by": "Example Contact",
"invoice": "123456",
"documents": [{
"type": "bol",
"page": "1",
"id": "EXAMPLE-DOCUMENT-ID",
"uri": "https://www.jetdelivery.com/api/v1/order/docs/download/?ticket=EXAMPLE_ONLY"
}, {
"type": "signature",
"page": "1",
"id": "Example Recipient",
"uri": "https://www.jetdelivery.com/api/v1/order/docs/download/?ticket=EXAMPLE_ONLY"
}]
}]
}
}
type: commonly bol, pickedup-package, delivered-package, or signature. Other document types may appear.
page: one-based sequence as a string. It is not a unique document identifier across batches.
id: source identifier; for a signature this can contain the recipient name.
uri: temporary download URL. Treat it as opaque; do not construct it, extract a storage filename, or append image-transform parameters.
Results include all attachment batches in the current order version plus the latest signature independently of attachment version. Files marked hidden from customers or removed are excluded. A hidden latest signature does not cause an older signature to reappear. Supported downloads are PDF, JPEG, PNG, GIF, and TIFF.
An authorized order with no available documents is returned with documents: []. An unknown or unauthorized order returns the same No records found. error without revealing another customer's metadata.
Download files within 15 minutes
Perform a GET on the exact returned uri to download the file; no extra API-key header is needed for that temporary link. HEAD is also supported. The response is the file content, not JSON. Saved image rotation is applied automatically.
Links expire 15 minutes after issuance. Each download also rechecks the original credential, current order ownership, and document visibility. Rotating that credential, disabling access, hiding/removing the document, or replacing its current version can invalidate a link sooner.
A temporary link is a bearer credential for that one document: anyone holding it may download it while it remains valid. Do not put links in public pages, analytics, or logs. Download and securely store the file if your workflow needs a permanent copy; otherwise request a fresh link when needed. Responses use Cache-Control: no-store.
Errors & troubleshooting
Always inspect the JSON error field on metadata responses, even with HTTP 200.
- 200 + error: missing/invalid credential, or no matching authorized orders.
- 400: missing lookup, unsupported search field, request limits exceeded, or HTTPS required.
- 403: blocked calling IP. On downloads, also an invalid/expired ticket or lost credential access.
- 404 on download: the document is no longer available to that credential or the file is missing.
- 405: unsupported method (metadata: GET/POST; download: GET/HEAD).
- 503: temporary service/storage problem. Retry with backoff; request fresh links if they expire.
Download errors are plain text, not the metadata JSON envelope. No download retries are automatic. After pickup or delivery, uploads may still be processing; poll conservatively or request documents after a relevant webhook.
Upgrading an existing integration
The JSON field names remain unchanged, but document URIs now expire. Do not persist them as permanent links. Existing query/form authentication and explicit search fields remain supported. Signed links require the updated download endpoint to be deployed alongside the metadata endpoint.
This change protects links issued by this API. It does not revoke previously distributed legacy storage URLs or delete copies already downloaded.