ShipBob has released a new API platform (summary is available here). This Legacy API will be continue to be available, but new development should focus on the new platform. Contact developers@shipbob.com for more information.
If you are getting rejected or challenged on our firewall, please direct a message to developers@shipbob.com with a static ip of the server to allow us to whitelist it.
You can use this API to import Orders.
If you have set Web Hook Url, we will post tracking updates to the Url you've provided.
Access Token should be taken under Account Settings and API tab on ShipBob Web page (This is required to use the API)
You can import your orders from your platforms.
API URL: https://shipbobapiv2.shipbob.com/api/Orders/PlaceNewWebOrder
{ "UserToken": "Shipbob_Provided_Token", "Name": "Mustafa Bayramoglu", "StreetAddressLine1": "2156 W Fulton St", "StreetAddressLine2": "Unit 1A", "City": "Chicago", "State": "IL", "Country": "US", "Zipcode": "60612", "Email": "test@shipbob.com", "PhoneNumber": "8444744726", "ShippingOption": 1, "InventoryDetails": [ { "Sku": "huuu1001", "Name": "Product A", "Quantity": 3 }, { "Sku": "huuu1004", "Name": "Product B", "Quantity": 2 }, { "Sku": "huuu3002", "Name": "Product C", "Quantity": 5 } ], "SpecialInstructions": "Some Instructions", "ReferenceId":"123456" }
Name | Type | Required/Optional | Description |
---|---|---|---|
UserToken | string | Required |
Please pass the UserToken with "Shipbob_Provided_Token" as shown above, else you will get authentication error. Set the header as "Content-Type: application/json; charset=utf-8". without quotes |
Name | string | Required | Full Name |
StreetAddressLine1 | string | Required | Street Address Line 1 |
City | string | Required | City Name |
State | string | Required | Two characters state code |
Country | string | Required | Country Code |
Zipcode | string | Optional | Zip Code |
string | Optional | ||
PhoneNumber | string | Optional | Phone Number |
ShippingOption | int | Required |
1: Overnight (FedEx & UPS overnight) 2: Expedited (FedEx 2 day, UPS 2nd Day Air, USPS Express) 3: Standard (USPS First Class & Priority, FedEx Ground, UPS Ground) |
InventoryDetails | Array | Required | List of Inventory Details. See InventoryDetail object for more information below. |
SpecialInstructions | string | Required | Instructions to be handled by our packaging team |
ReferenceId | string | Required | OrderId from your store. If cannot provide please pass null or empty string |
Name | Type | Required/Optional | Description |
---|---|---|---|
Sku | string | Required | SKU in your store |
Name | string | Required | Name of the product |
Quantity | int | Required | Quantity of the item |
{ "Success": true, "Error": "Please provide name", "PayLoad": 123456789 }
Name | Type | Description |
---|---|---|
Success | bool |
true: Imported successfully false: Please Check "Error" property |
Error | string | If "Success" property is set to false, Error message will be shown. |
PayLoad | int | If "Success" property is set to true, PayLoad will be the OrderId on ShipBob. |
You may request a list of products using this endpoint. It will return a list with paging information.
GET /api/Inventory/GetProducts?userToken=&showActiveProducts=true&showDigitalProducts=false&pageNo=1
Name | Type | Description |
---|---|---|
UserToken | string | Your Token |
ShowActiveProducts | bool | True will return active products. False will return inactive products |
ShowDigitalProducts | string | True will return digital products. Digital products are products that are sent and shipped with an order, however since they are digital these products will not be physically fulfilled. |
pageNo | string | The page number to request. |
recordsPerPage | string | Number of records per page. Max allowed value is 150. (This field is optional) |
{ "Success": true "Error": null "TotalPages": 1 "TotalRecords": 6 "CurrentPage": 1 "PayLoad": { "Id": 112131 "ItemName": "Product B" "SKU": "ABC-123B" "Barcode": "XYZ-980B" "QuantityOnHand": 10 "StockOutDays": "10" "QuantitiesPerFulfillmentCenter": [ { "FulfillmentCenterName": "Chicago Warehouse #1", "Quantity": 5 }, { "FulfillmentCenterName": "Los Angeles Warehouse #1", "Quanity": 5 } ] } { "Id": 112132 "ItemName": "Product C" "SKU": "ABC-123C" "Barcode": "XYZ-980C" "QuantityOnHand": 4 "StockOutDays": "20" "QuantitiesPerFulfillmentCenter": [ { "FulfillmentCenterName": "Chicago Warehouse #1", "Quantity": 2 }, { "FulfillmentCenterName": "Los Angeles Warehouse #1", "Quanity": 2 } ] } { "Id": 113589 "ItemName": "Product D" "SKU": "ABC-123D" "Barcode": "XYZ-980D" "QuantityOnHand": 10 "StockOutDays": "5" "QuantitiesPerFulfillmentCenter": [ { "FulfillmentCenterName": "Chicago Warehouse #1", "Quantity": 10 }, { "FulfillmentCenterName": "Los Angeles Warehouse #1", "Quanity": 0 } ] } { "Id": 228454 "ItemName": "Mustafa" "SKU": "ABC-123M" "Barcode": "XYZ-980M" "QuantityOnHand": 10 "StockOutDays": "5" "QuantitiesPerFulfillmentCenter": [ { "FulfillmentCenterName": "Chicago Warehouse #1", "Quantity": 5 }, { "FulfillmentCenterName": "Los Angeles Warehouse #1", "Quanity": 5 } ] } { "Id": 228483 "ItemName": "Product July" "SKU": "ABC-123J" "Barcode": "XYZ-980J" "QuantityOnHand": 11 "StockOutDays": "10" "QuantitiesPerFulfillmentCenter": [ { "FulfillmentCenterName": "Chicago Warehouse #1", "Quantity": 9 }, { "FulfillmentCenterName": "Los Angeles Warehouse #1", "Quanity": 2 } ] } { "Id": 242239 "ItemName": "PRODUCT TEST-12" "SKU": "ABC-12312" "Barcode": "XYZ-98012" "QuantityOnHand": 1 "StockOutDays": "1" "QuantitiesPerFulfillmentCenter": [ { "FulfillmentCenterName": "Chicago Warehouse #1", "Quantity": 1 } ] } }
You can import inventory from your platform
API URL: https://shipbobapiv2.shipbob.com/api/Inventory/PostNewWebInventory
{ "UserToken": "Shipbob_Provided_Token", "Items": [ { "ItemName": "TestItem1", "SKU": "123456", "Barcode": "3345672" }, { "ItemName": "TestItem2", "SKU": "098765" "Barcode": "558989" } ] }
Name | Type | Required/Optional | Description |
---|---|---|---|
UserToken | string | Required |
Please pass the UserToken with "Shipbob_Provided_Token" as shown above, else you will get authentication error. Set the header as "Content-Type: application/json; charset=utf-8". without quotes |
Items | Array | Required | List of InventoryItems. See InventoryItems object for more information below. |
Name | Type | Required/Optional | Description |
---|---|---|---|
ItemName | string | Required | Name of the product |
SKU | string | Optional | SKU in your store |
Barcode | string | Optional | Barcode for your item. (may be same as SKU) |
{ "Success": true, "Error": "Inventory items exceeded the allotted amount of 100. Please resend the request in batches of 100", "PayLoad": InventoryImportResult }
Name | Type | Description |
---|---|---|
Success | bool |
true: Imported successfully false: Please Check "Error" property |
Error | string | If "Success" property is set to false, Error message will be shown. |
PayLoad | array | If "Success" property is set to true, PayLoad will be a list of items that successfully imported and list of items that failed to import. NOTE: Failed items most likely means the SKU or ItemName already exists in the database. See InventoryImportResult object for more information below. |
Name | Type | Description |
---|---|---|
ItemName | string | Name of the product |
SKU | string | SKU Imported |
Barcode | string | Barcode Imported |
{ "SuccessInventory": [ { "ItemName": "TestItem1", "SKU": "123456", "Barcode": "8889888" }, { "ItemName": "TestItem2", "SKU": "09876", "Bacode": "999abc55h" } ], "FailedInventory": [ { "ItemName": "TestItem3", "SKU": "123456", "Barcode": "123456" }, { "ItemName": "TestItem4", "SKU": "09876", "Barcode": "09876" } ] }
Webhooks can be defined on the Shipbob Dashboard account settings for each of the following events.
This webhook is called for any order type when the order moved to Exception.
{ "shipbob_order_id":123123, "order_id":"TEST", "moved_at":"2018-02-05T16:42:33.0767475Z", "reason":"TEST" }
This webhook is called for any order type when the order moved to OnHold.
{ "shipbob_order_id":123123, "order_id":"TEST", "moved_at":"2018-02-05T16:42:33.0767475Z", "reason":"TEST" }
This webhook is called just once for any order type when the order is shipped.
{ "order_id":"TEST", "shipbob_order_id":123123, "shipped_at":"2018-02-02T19:24:49.3474114Z", "tracking_number":"TEST_TRACKING_NUMBER", "tracking_url":"https://tools.usps.com/go/TrackConfirmAction!input.action?tRef=qt&tLc=0&tLabels=345454533455444" "carrier":"USPS", "customer_email":"test@email.com", "invoice":1.23, "address":{ "name":"Test", "house_number":"", "street_address":"2156 W Fulton St", "street_address_2":"Unit 1A", "city":"Chicago", "state":"IL", "zip":"60612", "country":"US", "email":"test@test.com" } }
For all orders sent to us via API, we do a post back of the tracking details as soon as they are available, provided you share a web hook url with us. Our system will check for HttpStatusCode for the post request. If it returns OK(Status code=200), we will update our records and consider it as successful postback. If anything else comes as response, our platform will retry for few days and then give up.
{ "UserToken":"Shipbob_Provided_Token", "ReferenceId":"12345689", "OrderId":123456, "Carrier":"USPS", "TrackingId":"345454533455444", "TrackingUrl":"https://tools.usps.com/go/TrackConfirmAction!input.action?tRef=qt&tLc=0&tLabels=345454533455444" "Invoice":10.25, "FormatInvoice":"$10.25", "FulfilledFrom": "Chicago Warehouse #1" }
Name | Type | Description |
---|---|---|
UserToken | string | Your Token |
ReferenceId | string | Order Id from your store |
OrderId | int | Order Id on ShipBob |
Carrier | string | Carrier name |
TrackingId | string | Tracking Number |
TrackingUrl | string | Carrier specific Tracking URL |
Invoice | double | Invoice Amount |
FormatInvoice | string | Formatted invoice amount with "$" sign |
FulfilledFrom | string | Which city the order was fulfilled from. Will have the warehouse name and city. |
This webhook is called for any order type when an order could not be delivered.
{ "order_id":"TEST", "shipbob_order_id":123123, "tracking_number":"TEST_TRACKING_NUMBER", "last_message":"TEST" }
This webhook is called for any order type when an order is delivered.
{ "order_id":"TEST", "shipbob_order_id":123123, "tracking_number":"TEST_TRACKING_NUMBER", "delivered_at":"2018-02-05T18:11:55.9984025Z" }
This webhook is called when inventory count goes below the reorder point.
{ "sku":"TEST", "shipbob_inventory_id":1, "item_name":"TEST_ITEM", "quantity":123, "warehouse":"TEST" }
This webhook is called when a Spot Check Completed.
{ "shipbob_inventory_id":1, "spot_check_difference_quantity":10, "quantity":100, "sku":"TEST" }
This webhook is called anytime the credit card was declined.
{ "declined_at":"2018-02-05T18:03:04.0083364Z", "outstanding_amount":10.0 }
This webhook is called when a Warehouse Receiving Order's status changes.
{ "id":123123, "status":"processing", "changed_at":"2018-02-05T18:18:55.2976744Z" }
This webhook is called when a Return Order's status changes.
{ "id":123, "shipbob_source_order_id":123123, "comment":"TEST", "status":"processing", "tracking_number":"TEST_TRACKING_NUMBER" }
The webhooks can also be used in Zapier to manage events and actions through Zapier.