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

1. Get API key

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.

2. Make your first API request

Use your PAT token to make a request to the GET Channels endpoint. You will need the channel ID to create products, orders and returns with the ShipBob API.
GET https://api.shipbob.com/2025-07/channel
If you are using a ShipBob sandbox account, make sure to update your endpoint to sandbox-api.shipbob.com/2025-07/channel
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.
GET Channel 2025-07/channel
[
  {
  	"id": 100102,
  	"name": "Privileged Access Token Wednesday, September 20, 2025",
  	"application_name": "SMA",
  	"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.
Below is a sample request to create a product:
Make sure to pass the shipbob_channel_id in the header.
{
  "name": "Light Roast Coffee",
  "type_id": 1,
  "variants": [
    {
      "name": "Light Roast Coffee",
      "sku": "LIGHT-ROAST",
      "packaging_requirement_id": 1,
      "packaging_material_type_id": 1
    }
  ]
}
Below is a sample request to create a order:
Make sure to pass the shipbob_channel_id in the header.
{
  "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
    },
    {
      "reference_id": "DARK-ROAST",
      "name": "Dark Roast Coffee",
      "quantity": 1
    }
  ],
  "reference_id": "840343901234", // the reference_id can be the same as the order_number
  "order_number": "1001",
  "type": "DTC"
}
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.
{
  "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 /2025-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.
I