> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryoto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OTO API Postman collection

> Call the OTO API from Postman against the sandbox before you write code, with a ten-minute first run from access token to first request.

The fastest way to understand an API is to call it. The published collection lets you do that against the sandbox before you write a line of your own code.

## The collection

The full reference lives at [apis.tryoto.com](https://apis.tryoto.com). It is generated from the Postman collection itself, which means it does not drift from the API: every endpoint carries its real request body, a live example response, and runnable code in more than thirty languages.

| What you get | Why it matters |
| - | - |
| **Request and response schemas** | Every field, its type, and whether it is required. |
| **Worked examples** | Real payloads rather than field lists — including the awkward ones, like a multi-box shipment. |
| **Code in your language** | cURL, JavaScript, Python, PHP, Java, Go, C#, Ruby, Swift and more, generated from the request. |
| **An AI assistant** | Built into the portal, for asking which endpoint does what rather than reading all of them. |

## Working against the sandbox

Point the collection at `https://staging-api.tryoto.com` and it behaves exactly as production does, with test carriers instead of real ones. Same paths, same payloads, same responses — no parcels, no invoices.

> [!TIP]
>
> **Set the base URL as a variable on day one**
>
> The only difference between sandbox and production is the host and the token. If both are collection variables from the start, switching environments is a dropdown.
>
> If they are typed into each request instead, switching means editing every request and missing one. The one you miss is usually the one that creates something.

## A ten-minute first run

1. Get a sandbox account, and its `refresh_token` from **Settings → API Integrations**.
2. Call `POST /rest/v2/refreshToken`. Save the `access_token` into a variable.
3. Call `GET /rest/v2/healthCheck` to confirm the token and the host are both right.
4. Call `POST /rest/v2/createOrder` with the example body, changing the address to somewhere your test carriers cover.
5. Call `POST /rest/v2/checkOTODeliveryFee` for that route and look at what comes back — prices, delivery estimates and cut-off times per carrier.
6. Call `POST /rest/v2/createShipment`. You now have an AWB you can print.

That sequence is the whole integration in miniature. Everything else is a variation on it.

> [!NOTE]
>
> **Use a real address in the sandbox**
>
> Carrier coverage is checked even in the sandbox, so an invented city produces “no carriers available” and looks like a broken integration rather than a bad test fixture.
>
> Pick a city you can see in `availableCities` and keep using it.

## Related

* [Authentication](https://docs.tryoto.com/developers/authentication.md) — getting the token this all depends on.
* [REST API reference](https://docs.tryoto.com/developers/rest-api-reference.md) — what else is there.
* [apis.tryoto.com](https://apis.tryoto.com) — the collection itself.


## Related topics

- [OTO API overview](https://docs.tryoto.com/developers/overview.md)
- [REST API reference](https://docs.tryoto.com/developers/rest-api-reference.md)
- [Driver pickup in OTO FLEX](https://docs.tryoto.com/modules/oto-flex/pickup.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.