Quickstart

View as Markdown

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

If you are using a ShipBob sandbox account, make sure to update your endpoint to https://sandbox-api.shipbob.com/2026-01/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-01/channel
1{
2 "items": [
3 {
4 "id": 100102,
5 "name": "Privileged Access Token Wednesday, September 20, 2025",
6 "application_name": "API",
7 "scopes": [
8 "fulfillments_write",
9 "webhooks_read",
10 "returns_read",
11 "orders_read",
12 "inventory_write",
13 "inventory_read",
14 "returns_write",
15 "products_read",
16 "webhooks_write",
17 "receiving_write",
18 "receiving_read",
19 "channels_read",
20 "products_write",
21 "locations_read",
22 "orders_write",
23 "fulfillments_read",
24 "locations_write"
25 ]
26 },
27 {
28 "id": 100101,
29 "name": "ShipBob Default",
30 "application_name": "ShipBob",
31 "scopes": [
32 "webhooks_read",
33 "returns_read",
34 "orders_read",
35 "inventory_read",
36 "products_read",
37 "receiving_read",
38 "channels_read",
39 "locations_read",
40 "fulfillments_read"
41 ]
42 }
43 ]
44}

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-01/product
1{
2 "name": "Light Roast Coffee",
3 "type_id": 1,
4 "variants": [
5 {
6 "name": "Light Roast Coffee",
7 "sku": "LIGHT-ROAST",
8 "packaging_requirement_id": 1,
9 "packaging_material_type_id": 1
10 }
11 ]
12}

Below is a sample request to create a order:

Make sure to pass the shipbob_channel_id in the header.

POST /2026-01/order
1{
2 "shipping_method": "Standard",
3 "recipient": {
4 "name": "John Doe",
5 "address": {
6 "address1": "100 Nowhere Blvd",
7 "address2": "Suite 100",
8 "city": "Gotham City",
9 "state": "NJ",
10 "country": "US",
11 "zip_code": "07093"
12 },
13 "email": "john@example.com",
14 "phone_number": "555-555-5555"
15 },
16 "products": [
17 {
18 "reference_id": "LIGHT-ROAST",
19 "name": "Light Roast Coffee",
20 "quantity": 1
21 },
22 {
23 "reference_id": "DARK-ROAST",
24 "name": "Dark Roast Coffee",
25 "quantity": 1
26 }
27 ],
28 "reference_id": "840343901234", // the reference_id can be the same as the order_number
29 "order_number": "1001",
30 "type": "DTC"
31}

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-01/receiving
1{
2 "fulfillment_center": {
3 "id": 8
4 },
5 "package_type": "Package",
6 "box_packaging_type": "EverythingInOneBox",
7 "boxes": [
8 {
9 "tracking_number": "860C8CDC8F0B4FC7AB69AC86C20539EC",
10 "box_items": [
11 {
12 "quantity": 1,
13 "inventory_id": 0 // get the inventory_id by making request to GET Products /2026-01/product?search=LIGHT-ROAST
14 }
15 ]
16 }
17 ],
18 "expected_arrival_date": "2025-11-24T14:15:22Z",
19 "purchase_order_number": "PO123"
20}

4. Use Cases

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