# Introduction

import { Mermaid } from "zudoku/mermaid";

The TMS API lets your systems work with the Reconex TMS directly: get quotes, create and update loads, rate and book
them, and check on them as they move. Everything the API does, it does as a TMS user from your company, so it sees
the same customers, divisions and accounts that user is assigned in the TMS.

## How onboarding works

**You always start in our test environment.** You build and test your whole integration there, with a test API key.
When you're ready to go live, you tell us, and we set you up in production, where you generate a separate production key.

<Mermaid
  chart={`flowchart LR
  A[We invite you to<br/>the test environment] --> B[First sign-in:<br/>set your password,<br/>generate your test API key]
  B --> C[Build and test against<br/>tmstest.reconex.io]
  C --> D[Ready? Contact your<br/>Reconex contact]
  D --> E[We invite you to production;<br/>generate your production key]
  E --> F[Live on tms.reconex.io]`}
/>

1. **We invite you to the test environment.** Your Reconex contact sends an invitation to someone on your team. A shared
   team address (for example `integrations@yourcompany.com`) lets more than one person reach it.
2. **Sign in for the first time and generate your test API key.** Confirm your email, choose your password, then
   generate an API key on Your Profile. See [Authentication](/authentication).
3. **Build and test in the test environment.** Send **every** request to `https://tmstest.reconex.io`, with your test key.
   See [Environments](/environments) and [Workflows](/workflows).
4. **Tell us when you're ready to go live.** Contact your Reconex contact; see [Going live](/going-live).
5. **We invite you to production.** You sign in there and generate your production API key, then point your
   integration at `https://tms.reconex.io` with that key.

:::caution{title="Test keys don't work in production"}
Each environment has its own sign-in and its own keys. A key you generate in the test environment only works in the
test environment, and a production key only works in production.
:::

## What you can do

| You want to | Call |
|---|---|
| Price a shipment before creating it | `GetQuote` |
| Create a load, or update one you created | `CreateLoad`, `UpdateLoad` |
| Create a load and rate or book it in one call | `CreateRateOrBookLoad` |
| Change a load and get new rates for it | `UpdateAndReRateLoad` |
| Book a load with the best-value carrier | `BookBestwayCarrier` |
| Look up loads by id, reference or status | `GetLoadInfo` |

Every call is a `POST` with a JSON body, authenticated with your API key in the `apikey` header. The
[API Reference](/api) lists every field, with examples, and lets you try calls against the test environment.

Questions about your integration go to your Reconex contact.
