Quickstart

View as MarkdownOpen in Claude

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.

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/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

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 2026-07/channel
{
"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.

Below is a sample request to create a product:

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
}
]
}

Below is a sample request to create a order:

Make sure to pass the shipbob_channel_id in the header.

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
}
}

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.

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.