Authentication
ShipBob’s API supports two authentication methods: Personal Access Token (PAT) for single-user integrations and OAuth 2.0 for multi-user applications.
Prerequisites
Before you begin, you’ll need a ShipBob account. Choose your environment:
Choose Your Authentication Method
All API authentication operates against the root user of the account. When requesting a PAT token or installing an OAuth app, ensure you do so with the root user credentials.
Personal Access Token (PAT) Flow
This is best for single-user custom integrations and quick setup, no expiration and full account access.
Generate Your Token
Navigate to the ShipBob dashboard and create your PAT:
Production
Sandbox
Go to Integrations > API Tokens > Generate New Token
When you request your first PAT, ShipBob automatically creates a Single-Merchant Application (SMA) and channel to manage your tokens. You can generate multiple tokens and revoke them anytime.
PAT tokens do not expire. Store them securely and never commit them to version control.
For security best practices, we recommend rotating your Personal Access Token (PAT) periodically. Regular rotation helps reduce the risk of unauthorized access.
Retrieve Your Channel ID
Before making POST requests, get your channel ID using the GET Channel endpoint:
Response:
Use the channel ID with _write scopes when making POST requests. Include it in the shipbob_channel_id header.
OAuth Flow
OAuth is required for multi-user integrations and applications listed on the ShipBob App Store. It provides secure, granular access control with token expiration.
To authenticate via OAuth, follow these steps:
Step 1: Create App
Generate credentials from the ShipBob dashboard by going to Integrations > OAuth Apps > Create App. See more here.
Step 2: Request Permission to Access User Data
Once you have your client ID and secret, you can use them to get a user’s permission to access their account data. You start by making a request to the following endpoint:
Use https://authstage.shipbob.com/connect/authorize if on sandbox.
The following query parameters are allowed for this endpoint:
redirect_uri.A very basic example call to our integrate endpoint will look like this:
Interactive Authorization URL Builder
Fill in your details and the URL will be generated live:
Step 3: Implement Your Callback URI
When the user grants access, ShipBob redirects to your callback URI with the following parameters:
Response
Step 4: Obtain an Access Token
Exchange the authorization code for an access token by making a POST request:
Response
Use https://authstage.shipbob.com/connect/token if using sandbox.
Step 5: Refresh Token
If using offline_access, a refresh_token will also be provided.
Use it to obtain new tokens without requiring user login:
Access tokens expire in 1 hour. Refresh tokens are valid for 30 days.
A new refresh_token will be generated every time you create a new access_token.
Step 6: Retrieve Your Channel ID
Most of the POST requests on the ShipBob API require you to include a shipbob_channel_id in the header. Retrieve it via:
Example Response:
_write scopes.If you are using a ShipBob sandbox account, make sure to update your endpoint to https://sandbox-api.shipbob.com/2026-01/channel.
You’re now ready to make authenticated API requests using ShipBob!
Step 7: Test Your App (Optional)
- Verify the OAuth flow works end-to-end.
- Ensure scopes and permissions are correctly applied.
- Test with sandbox data before going live.
Step 8: Publish in ShipBob App Store (Optional)
Want to make your app available to all ShipBob merchants? Publishing to the App Store allows any ShipBob user to discover and install your integration.
Submit App for Review
In the ShipBob dashboard, navigate to Integrations > OAuth Apps, find your app, and click Publish in the Action column.
Required Information:
-
App Icon (500x500px, .png or .jpeg)
This image represents your app in the ShipBob App Store. Choose a clear, recognizable logo. -
Integration Description (max 500 characters)
Highlight key features, benefits, and use cases. Focus on what problems your app solves for merchants. -
Support Documentation Link
Provide a URL to help articles or guides that explain how to use your integration. -
Support Email
Enter a support email address where users can reach your team for questions or issues. -
Install URL
This is where users will be redirected when they click Get App in the ShipBob App Store. It should route to your OAuth authorization flow (Step 2).
Click Submit for Review.
Your app’s status will update to In Review.
Review Process
The ShipBob team will review your app within 1-3 business days.
They may contact the user listed under the Created By column if additional details or changes are needed.
Prepare for potential questions about your app’s functionality, security practices, and user experience.
Approval & Listing
Once approved, your app will be listed in the ShipBob App Store.
ShipBob merchants can now discover and install your app.
Monitor your support email for user questions and feedback after launch. A responsive support experience helps build trust with merchants.
App Store Listing Best Practices
- Clear Icon: Use a simple, recognizable logo that looks good at small sizes
- Compelling Description: Focus on merchant benefits, not just technical features
- Quality Documentation: Provide step-by-step setup guides and troubleshooting tips
- Responsive Support: Answer merchant questions promptly to build trust
- Test Thoroughly: Ensure your OAuth flow works flawlessly before submitting
Quick Reference
Environment URLs
Production
- Auth URL:
https://auth.shipbob.com - API Base:
https://api.shipbob.com - Dashboard:
https://web.shipbob.com
Sandbox
- Auth URL:
https://authstage.shipbob.com - API Base:
https://sandbox-api.shipbob.com - Dashboard:
https://webstage.shipbob.dev
Common Headers
Token Lifetimes
Security Best Practices
- ✅ Store tokens securely (e.g., encrypted database, secrets manager)
- ✅ Never commit tokens to version control
- ✅ Use HTTPS for all API requests
- ✅ Implement proper error handling for expired tokens
- ✅ Validate
stateparameter in OAuth callbacks - ✅ Use
offline_accessscope only when necessary - ✅ Regularly rotate PAT tokens
- ⛔ Don’t expose tokens in client-side code
- ⛔ Don’t share tokens between environments

