Stream API
The Stream API lets your own system do what your team does in the client portal: price a shipment with each carrier, book it, get the carrier's waybill, book the collection and follow the shipment to delivery. We can also tell your system when a shipment changes, through webhooks.
Every example on the reference pages is one the API really sent, recorded by the API's own tests, so what you read is what you get back. The guides' examples are shortened and use made-up prices.
Reference pages show each call in the language you pick on the site.
curl comes with macOS, Linux and Windows 10 and later. Nothing to install.Environments
| Environment | Base URL | Use it for |
|---|---|---|
| Sandbox | https://sandbox-api.vatit-stream.com/client_api/v2 | Building and testing. The carriers are stand-ins, so nothing is really shipped or charged. |
| Production | https://orders-production.vatit-stream.com/client_api/v2 | Real shipments. |
The two environments have separate logins and separate data. Build against the sandbox first, then switch the base URL and your login when you go live.
Making requests
- Every request goes over HTTPS, and sends and receives JSON. Send
Content-Type: application/jsonwith a body. - Sign in once for a token, then send it on every other call as
Authorization: Bearer <token>. - Ids are numbers. Take the ids a call needs, such as a country or a purpose of shipment, from the reference data calls.
Your first shipment
- Sign in for a token.
- Create a quote: describe the shipment, and we price it with each carrier that can take it.
- Create an order from the estimate you choose.
- Create a waybill once the order's documents are in.
- List pickup slots, then book a pickup.
- Follow the shipment with Get an order and List tracking events, or have us call you with a webhook.
Conventions
Errors. Every error has the same shape, { "success": false, "error": "...", "errors": [...] }. See Errors.
Dates and times. All times are UTC. Most dates come as YYYY/MM/DD HH:MM:SS UTC, for example 2026/10/23 07:14:46 UTC. The exceptions:
| Field | Format |
|---|---|
A pickup's scheduled_date | YYYY/MM/DD HH:MM:SS UTC, but the time is always midnight, so read only the date |
A pickup's time_from and time_to | HH:MM:SS |
An order's pickup_date | YYYY-MM-DD |
| Webhook payloads | ISO 8601 with milliseconds, for example 2026-10-23T07:14:46.345Z |
Pages. List orders answers ten orders at a time, newest first. Ask for another page with ?page=2, or for more per page with ?items_per_page=50. The answer's meta gives page_count and record_count.
Rate limits. Some calls take 20 requests a minute. Retrying safely says which, and what to do at 429.
Retries. A second Create a waybill books the carrier again. Read Retrying safely before retrying any call.
For AI tools
Building an integration with an AI agent? Start with the LLM Integration Guide.
Every page has a Markdown version: add .md to its address, or use Copy for LLM at the top of the page. /llms.txt lists every page, and /llms-full.txt has all of them in one file. The OpenAPI file describes every call.