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

# Quickstart

> Make your first ShipPeek API request in under 5 minutes.

This guide walks you through getting your API credentials and making your first rate request.

## Prerequisites

You need an active ShipPeek account with at least one carrier configured. If you don't have an account, sign up at [shippeek.com](https://shippeek.com).

## Step 1: Get your API credentials

Your API token is a combination of your client ID and client secret in the format `client_id.client_secret`. You can find these in your ShipPeek dashboard.

## Step 2: Make your first rate request

Use the sandbox environment to test without affecting live shipments.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.shippeek.dev/rates \
    -H "Authorization: Bearer YOUR_CLIENT_ID.YOUR_CLIENT_SECRET" \
    -H "Content-Type: application/json" \
    -d '{
      "originPostalCode": "60601",
      "originType": "business dock",
      "destPostalCode": "90210",
      "destType": "business dock",
      "items": [
        {
          "weight": 500,
          "freightClass": 70,
          "length": 48,
          "width": 40,
          "height": 48,
          "quantity": 1,
          "package": "Pallets_48x40"
        }
      ]
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.shippeek.dev/rates', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_CLIENT_ID.YOUR_CLIENT_SECRET',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      originPostalCode: '60601',
      originType: 'business dock',
      destPostalCode: '90210',
      destType: 'business dock',
      items: [
        {
          weight: 500,
          freightClass: 70,
          length: 48,
          width: 40,
          height: 48,
          quantity: 1,
          package: 'Pallets_48x40',
        },
      ],
    }),
  });

  const data = await response.json();
  console.log(data.rates);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.shippeek.dev/rates',
      headers={
          'Authorization': 'Bearer YOUR_CLIENT_ID.YOUR_CLIENT_SECRET',
          'Content-Type': 'application/json',
      },
      json={
          'originPostalCode': '60601',
          'originType': 'business dock',
          'destPostalCode': '90210',
          'destType': 'business dock',
          'items': [
              {
                  'weight': 500,
                  'freightClass': 70,
                  'length': 48,
                  'width': 40,
                  'height': 48,
                  'quantity': 1,
                  'package': 'Pallets_48x40',
              }
          ],
      },
  )

  data = response.json()
  print(data['rates'])
  ```
</CodeGroup>

## Step 3: Read the response

A successful response returns a quote ID and an array of rates from each carrier:

```json theme={null}
{
  "id": "570665116d0bfce422911668",
  "rates": [
    {
      "id": "34575116d0afce4229116467",
      "status": "ok",
      "mode": "LTL",
      "total": 123.45,
      "days": 3,
      "carrier": "Estes Express Lines",
      "carrierCode": "exla",
      "serviceType": "Standard",
      "charges": [
        { "name": "linehaul", "amount": 1000 },
        { "name": "discount", "amount": -900 },
        { "name": "fuel", "amount": 23.45 }
      ]
    }
  ]
}
```

Key fields:

* **`id`** -- Save this quote ID. You need it to book a shipment.
* **`rates[].id`** -- The rate ID. Pass this when booking to select a specific carrier and price.
* **`rates[].total`** -- Total cost in USD.
* **`rates[].days`** -- Estimated transit days.
* **`rates[].charges`** -- Itemized breakdown (linehaul, fuel, discounts, accessorials).

## Step 4: Book a shipment

Once you have a rate, book it by passing the quote ID and rate ID:

```bash theme={null}
curl -X POST https://api.shippeek.dev/book \
  -H "Authorization: Bearer YOUR_CLIENT_ID.YOUR_CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "570665116d0bfce422911668",
    "rateId": "34575116d0afce4229116467",
    "schedulePickup": true,
    "originCompany": "Acme Warehouse",
    "originAddress": "123 Main St",
    "originContactName": "John Smith",
    "originContactPhone": "312-555-0100",
    "originDockHoursOpen": "9:00 AM",
    "originDockHoursClose": "5:00 PM",
    "destCompany": "West Coast Distribution",
    "destAddress": "456 Oak Ave",
    "destContactName": "Jane Doe",
    "destContactPhone": "310-555-0200"
  }'
```

The response includes a PRO number, BOL, and pickup confirmation.

## Next steps

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/authentication">
    Understand API key formats and token management.
  </Card>

  <Card title="Rate shopping examples" icon="code" href="/examples/rate-shopping">
    See more rate request examples with accessorials, parcel, and streaming.
  </Card>

  <Card title="Carrier guides" icon="truck" href="/guides/carriers">
    Learn about carrier-specific requirements and features.
  </Card>

  <Card title="API Reference" icon="book" href="/api-reference">
    Full endpoint documentation with request/response schemas.
  </Card>
</CardGroup>
