> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.shipbob.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.shipbob.com/_mcp/server.

# Quickstart

This quickstart guide intends to walk you through a few common scenarios to let you understand how to use the ShipBob API.

## 1. Get Personal Access Token (PAT)

ShipBob verifies a user's request by using a Bearer token in the header. We call this a Personal Access Token.

On the ShipBob dashboard, go to **Integrations** > **API Tokens**. Click Generate New Token. Copy this token as we will use in next step. If you do not have a ShipBob account yet, you can create a sandbox account by following [this link](https://webstage.shipbob.dev/app/merchant/#/SignUp).

## 2. Make your first API request

Use your PAT token to make a request to the [GET Channels](/api/channels/get-channels?explorer=true) endpoint. You will need the channel ID to create products, orders and returns with the ShipBob API.

```
GET https://api.shipbob.com/2026-07/channel
```

If you are using a ShipBob sandbox account, make sure to update your endpoint to `https://sandbox-api.shipbob.com/2026-07/channel`

#### Example response

The channel ID to use when creating products, orders and returns would be `100102` since this is the channel that has scopes with `_write` access.

```javascript GET Channel 2026-07/channel {4-25}
{
  "items": [
    {
      "id": 100102,
      "name": "Privileged Access Token Wednesday, September 20, 2025",
      "application_name": "API",
      "scopes": [
        "fulfillments_write",
        "webhooks_read",
        "returns_read",
        "orders_read",
        "inventory_write",
        "inventory_read",
        "returns_write",
        "products_read",
        "webhooks_write",
        "receiving_write",
        "receiving_read",
        "channels_read",
        "products_write",
        "locations_read",
        "orders_write",
        "fulfillments_read",
        "locations_write"
      ]
    },
    {
      "id": 100101,
      "name": "ShipBob Default",
      "application_name": "ShipBob",
      "scopes": [
        "webhooks_read",
        "returns_read",
        "orders_read",
        "inventory_read",
        "products_read",
        "receiving_read",
        "channels_read",
        "locations_read",
        "fulfillments_read"
      ]
    }
  ]
}

```

## 3. Common scenarios

A few common scenarios to get started with the ShipBob API. All endpoints are only accessible via `HTTPS`.

#### Create product

Below is a sample request to create a product:

```javascript POST /2026-07/product
{
  "name": "Light Roast Coffee",
  "type_id": 1,
  "variants": [
    {
      "name": "Light Roast Coffee",
      "sku": "LIGHT-ROAST",
      "packaging_requirement_id": 1,
      "packaging_material_type_id": 1
    }
  ]
}
```

#### Create order

Below is a sample request to create a order:

Make sure to pass the `shipbob_channel_id` in the header.

```javascript POST /2026-07/order
{
  "shipping_method": "Standard",
  "recipient": {
    "name": "John Doe",
    "address": {
      "address1": "100 Nowhere Blvd",
      "address2": "Suite 100",
      "city": "Gotham City",
      "state": "NJ",
      "country": "US",
      "zip_code": "07093"
    },
    "email": "john@example.com",
    "phone_number": "555-555-5555"
  },
  "products": [
    {
      "reference_id": "LIGHT-ROAST",
      "name": "Light Roast Coffee",
      "quantity": 1,
      "unit_price": 19.99
    },
    {
      "reference_id": "DARK-ROAST",
      "name": "Dark Roast Coffee",
      "quantity": 1,
      "unit_price": 19.99
    }
  ],
  "reference_id": "840343901234", // the reference_id can be the same as the order_number
  "order_number": "1001",
  "type": "DTC",
  "financials": {
    "total_price": 45.99
  }
}
```

#### Create warehouse receiving order

Here is a sample request to create a warehouse receiving order. If testing on sandbox you can use `fulfillment_center` id 8 or id 10

When you create warehouse receiving orders with the ShipBob API, you do not need to pass the `shipbob_channel_id`.

```javascript POST /2026-07/receiving
{
  "fulfillment_center": {
    "id": 8
  },
  "package_type": "Package",
  "box_packaging_type": "EverythingInOneBox",
  "boxes": [
    {
      "tracking_number": "860C8CDC8F0B4FC7AB69AC86C20539EC",
      "box_items": [
        {
          "quantity": 1,
          "inventory_id": 0 // get the inventory_id by making request to GET Products /2026-07/product?search=LIGHT-ROAST
        }
      ]
    }
  ],
  "expected_arrival_date": "2025-11-24T14:15:22Z",
  "purchase_order_number": "PO123"
}
```

## 4. Use Cases

Get started with the ShipBob API with detailed guides for your use case.

#### [Build Orders integration](/guides/build-orders-integration)

Learn how to build an orders integration

#### [Manage Products](/guides/products)

Set up your catalog

#### [Track Shipments](/guides/tracking)

Get delivery updates.

#### [Sync Inventory](/guides/inventory)

Keep stock in check.

#### [Warehouse Receiving Orders](/guides/receiving)

Send stock to ShipBob.

#### [Returns](/guides/returns)

Create and manage returns