Manifests, invoices and other documents
Besides the label, each booking has a manifest and an invoice. You can also print labels and manifests for up to 50 bookings in one PDF, create a link that lets someone without your API key download a label, and regenerate a label for some couriers.
Every endpoint on this page requires your API key in the api-key header and works only on bookings that belong to your account.
| Document | Endpoint | Returns |
|---|---|---|
| Manifest | GET /api/v5/bookings/{id}/manifest | |
| Invoice | GET /api/v5/bookings/{id}/invoice | PDF, or a redirect to it |
| Shareable label link | GET /api/v5/bookings/{id}/public_url | JSON with a signed URL |
| Labels for many bookings | POST /api/v5/bookings/labels/batch | One merged PDF |
| Manifests for many bookings | POST /api/v5/bookings/manifests/batch | One merged PDF |
| Regenerate a label | GET /api/v5/bookings/{id}/tntregeneralabel, /tgeregeneralabel, /northlineregeneralabel |
A not-ready response is JSON unless the request sends Accept: text/html, in which case it is a readable HTML page.
Manifest
Section titled “Manifest”GET /api/v5/bookings/{id}/manifestThe manifest lists the consignment for the driver. It is ready at the same point as the label’s HEAD check (see when a label is ready), so a Couriers Please manifest needs the booking to be confirmed. Allied (allied) bookings do not have a manifest.
curl https://api.transdirect.com.au/api/v5/bookings/623630/manifest \ -H "api-key: $TD_API_KEY" \ -o manifest-623630.pdfSDK function: getApiV5BookingsByIdManifest. Not ready returns 400:
{ "error": "manifest_not_ready", "message": "The manifest is not ready for this booking.", "booking_id": 623630, "status": "new"}Invoice
Section titled “Invoice”GET /api/v5/bookings/{id}/invoiceThe tax invoice for the booking, available once it is paid. The response is the PDF, or a 302 redirect to it, so use curl -L.
curl -L https://api.transdirect.com.au/api/v5/bookings/623630/invoice \ -H "api-key: $TD_API_KEY" \ -o invoice-623630.pdfSDK function: getApiV5BookingsByIdInvoice. Before payment it returns 409:
{ "error": "invoice_not_ready", "message": "The invoice is not available until the booking is paid.", "booking_id": 623630, "status": "new"}Shareable label link
Section titled “Shareable label link”GET /api/v5/bookings/{id}/public_urlCreates a signed link to the booking’s label that works without an API key, for example to send to a warehouse or to the person handing over the parcel. Each call creates a new link. Links work for 7 days.
curl https://api.transdirect.com.au/api/v5/bookings/623630/public_url \ -H "api-key: $TD_API_KEY"SDK function: getApiV5BookingsByIdPublicUrl.
200 OK
{ "success": true, "url": "https://www.transdirect.com.au/api/signed/label/3f9c2a7e5b1d48c0a6e2f4b8d7c1e9a05b3f6d2c8e4a1b7f9d0c3e5a2b6f8d1c", "expires_at": "2026-10-23 04:20:11"}expires_at is in UTC, formatted YYYY-MM-DD HH:MM:SS. Use url exactly as returned. Anyone who has the link can download the label until it expires, so share it only with people who need it.
| Status | Body | Cause |
|---|---|---|
400 | {"error":"Label not ready","status":"paid"} | The label is not ready for this booking’s status. |
400 | {"error":"ParcelPoint Id not found. Please try again after some time"} | The booking goes to a collection point that has not been assigned yet. |
Labels and manifests for many bookings
Section titled “Labels and manifests for many bookings”POST /api/v5/bookings/labels/batchPOST /api/v5/bookings/manifests/batchMerge the labels (or manifests) of up to 50 bookings into one PDF, in the order you list them.
| Field | Type | Description |
|---|---|---|
ids | array of integers | 1 to 50 booking ids, all on your account. |
format | string | Labels only: standard (A4, the default) or a6. |
curl -X POST https://api.transdirect.com.au/api/v5/bookings/labels/batch \ -H "api-key: $TD_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ids": [623630, 623631, 623632], "format": "a6" }' \ -D headers.txt \ -o labels.pdfimport { client, postApiV5BookingsLabelsBatch } from '@transdirect/api-sdk';
client.setConfig({ headers: { 'api-key': process.env.TD_API_KEY! } });
const { data, response } = await postApiV5BookingsLabelsBatch({ body: { ids: [623630, 623631, 623632], format: 'a6' },});const skipped = response.headers.get('x-transdirect-skipped-bookings');The SDK function for manifests is postApiV5BookingsManifestsBatch.
Bookings whose label or manifest is not ready are left out of the PDF and listed, comma-separated, in the x-transdirect-skipped-bookings response header. Check it every time: a 200 does not mean every booking was included.
| Status | Body | Cause |
|---|---|---|
400 | {"error":"No labels are ready for the selected bookings"} or {"error":"No manifests available for the selected bookings"} | None of the bookings has a document ready. |
400 | ZodError body | ids is empty, has more than 50 entries, or format is not standard or a6. |
403 | {"error":"One or more bookings do not belong to your account"} | At least one id is not on your account. Nothing is returned. |
404 | {"error":"No bookings found"} | None of the ids is on your account. |
Regenerate a label
Section titled “Regenerate a label”GET /api/v5/bookings/{id}/tntregeneralabelGET /api/v5/bookings/{id}/tgeregeneralabelGET /api/v5/bookings/{id}/northlineregeneralabelDiscards the stored label and builds a new one, then returns it as a PDF. Use the endpoint that matches the booking’s courier: TNT, Team Global Express or Northline. Reach for it only when the stored label is wrong or will not download. For everyday downloads use get a label.
curl https://api.transdirect.com.au/api/v5/bookings/623630/tntregeneralabel \ -H "api-key: $TD_API_KEY" \ -o label-623630.pdfSDK functions: getApiV5BookingsByIdTntregeneralabel, getApiV5BookingsByIdTgeregeneralabel and getApiV5BookingsByIdNorthlineregeneralabel.
Common errors
Section titled “Common errors”| Status | Body | Cause |
|---|---|---|
401 | {"error":"missing_api_key"} or {"error":"invalid_api_key"} | No key, or a key that is not active. |
404 | {"error":"booking_not_found"} | No booking with that id belongs to your account. |
429 | {"error":"rate_limited"} | More than 600 requests a minute on this key. Wait for the retry-after seconds. |
Try it
Section titled “Try it”Open the API Explorer, add your key, and look under the booking PDF operations.