ShipBob Logistics OpenAPI spec
Create an Account
To get started, you’ll need a ShipBob account. Sign up here. After signing up, reach out to your ShipBob representative and they’ll guide you through the process and provide the necessary credentials.Base URLs
- Production (Live)
- Sandbox (Testing)
Base URL
Authentication
Authentication depends on the API you’re calling:For logisticslabelprintingapi Endpoints
For logisticslabelprintingapi Endpoints
For
https://logisticslabelprintingapi-stage.shipbob.dev/ or https://logisticslabelprintingapi.shipbob.com/:Use an SBL_authToken provided by your ShipBob rep:For sandbox-api or api.shipbob.com Endpoints
For sandbox-api or api.shipbob.com Endpoints
For
https://sandbox-api.shipbob.com/ or https://api.shipbob.com/:Use a Personal Access Token (PAT), which you can generate in the ShipBob dashboard by going to Integrations > API Tokens > Generate new token.Create a Shipping Label
POST /api/order:createLabel
Generate a shipping label for an order. Labels default to ZPL format, but you can request PDF by adding a Label-Type header.
Headers
| Header | Value | Required? | Description |
|---|---|---|---|
Authorization | <SBL_authToken> | Yes | Your SBL authentication token |
Label-Type | application/pdf | No | Set to get a PDF label (optional) |
POST /api/order:createLabel
| Field | Type | Required | Description |
|---|---|---|---|
shipping_method | string | Yes | Shipping option (e.g., "Standard") |
recipient | object[] | Yes | Recipient details (see Recipient table) |
location_id | integer | Yes | ShipBob location ID. Sandbox: always use 33 or 19. Production: contact your ShipBob rep for your location ID. |
reference_id | string | Yes | Unique order identifier |
measurements | object | Yes | Package dimensions and weight. All values must be whole numbers. Weight in ounces. |
meta | object[] | Yes | Extra information for your records |
products | object[] | No | Pass products to print pick lists and use batching |
requires_signature | boolean | No | true / false |
insurance_amount | number | No | Amount in dollars. If >= 300, requires_signature automatically becomes true. |
packing_slip | boolean | No | true / false |
tags | object[] | No | Key/value tags |
label: ZPL string or PDF data (based onLabel-Type).
400: Bad request (check your JSON).401: Invalid or missingSBL_authToken.500: Server issue—try again later.
Bulk Cancel Labels
POST /api/order:bulk-cancel
You can use this endpoint to refund or cancel shipping labels. Additionally, it allows you to cancel and resubmit one or more orders using the same reference_id. Once an order is canceled through this endpoint, it can be resubmitted as needed. However, please note that canceled orders will no longer be accessible in the UI or via the API.
Headers
| Header | Value | Required? | Description |
|---|---|---|---|
Authorization | <SBL_authToken> | Yes | Your SBL authentication token |
Content-Type | application/json | No | Accepted content type |
POST /api/order:bulk-cancel
Sync Tracking Numbers
- Option 1 - Webhook
- Option 2 - Polling
To receive tracking updates, subscribe to the
order.shipment.tracking_received webhook that fires usually within 5 minutes after creating a shipping label.Learn how to subscribe here.Tips for Success
- Test in the sandbox first (use
location_id: 33orlocation_id: 19for label creation). - Generate your Personal Access Token in the ShipBob dashboard for
sandbox-apiorapi.shipbob.comcalls. - Contact your ShipBob rep for your production
location_idor if you hit a 401 error with yourSBL_authToken. - Poll at least every 30 minutes to avoid missing tracking updates.
Diagram
FAQs
How to sign up for a sandbox account?
How to sign up for a sandbox account?
Sign up for a sandbox by following this link.

