? Full API Documentation: https://app.shedsuite.com/api/docs/index.html#/
Overview
The Shed Suite Public API lets you programmatically access your Shed Suite data, including contacts, customer orders, and inventory. All API requests go through:
https://app.shedsuite.com/api/publicStep 1: Get Your API Token
Before you can use any endpoint, you need to create an API token. This is a one-time setup step.
What You'll Need
- Your Shed Suite username (email) and password
- A tool to make HTTP requests (we'll show examples using cURL and Claude Code)
Create a Token (cURL)
curl -X POST https://app.shedsuite.com/api/public/tokens/v1 \
-u "your-email@example.com:your-password" \
-H "Content-Type: application/json" \
-d '{
"tokenName": "My Integration Token",
"expiresAt": "2027-01-01T00:00:00.000Z",
"scopes": ["api:read", "api:write"]
}'What each field means:
| Field | Required? | Description |
|---|---|---|
tokenName | Yes | A friendly name so you can identify this token later (e.g., "Website Sync") |
expiresAt | No | When the token should stop working (format: YYYY-MM-DDTHH:mm:ss.sssZ (ISO 8601)) |
scopes | Yes | Limit what the token can access. Available scopes: api:read, api:write. Include both for full access. |
userId | No | Associate the token with a specific user. |
Create a Token (Claude Code)
In Claude Code, you can ask Claude to create your API token by providing the cURL command above. Claude will run it and return your token. Alternatively, paste the cURL command directly into your terminal from within Claude Code.
Save Your Token
The response will include your API token string. Copy and save it somewhere secure — you'll use it for every future API request.
Step 2: Use Your Token in Requests
For all subsequent API calls, include your token in the Authorization header as a Bearer token:
Authorization: Bearer YOUR_TOKEN_HEREExample: Fetch Your Contacts
curl -X GET "https://app.shedsuite.com/api/public/contacts/v1?limit=10&offset=0" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"In Claude Code, include the Authorization header in your cURL commands or ask Claude to make the request for you.
Available Endpoints
Tokens (Authentication)
| Action | Method | Endpoint |
|---|---|---|
| List all tokens | GET | /tokens/v1 |
| Create a new token | POST | /tokens/v1 |
| Revoke a token | DELETE | /tokens/v1/{tokenId} |
Contacts
| Action | Method | Endpoint | Key Parameters |
|---|---|---|---|
| List all contacts | GET | /contacts/v1 | limit (max 100), offset |
| Get a single contact | GET | /contacts/v1/{id} | — |
| Create a contact | POST | /contacts/v1 | firstName, lastName, email, phone, zipCode |
Customer Orders
| Action | Method | Endpoint | Key Parameters |
|---|---|---|---|
| List orders | GET | /customer-orders/v1 | limit (max 100), offset, sortBy, dateFrom, dateTo |
| Get a single order | GET | /customer-orders/v1/{id} | — |
Sorting options for orders: dateOrdered, dateDelivered, dateCancelled, dateFinished, dateProcessed, dateScheduledForDelivery
Date filtering: Use dateField, dateFrom, and dateTo together. Dates can be YYYY-MM-DD or relative expressions like now-30d (last 30 days) or now/M (start of current month).
Inventory
| Action | Method | Endpoint | Key Parameters |
|---|---|---|---|
| List inventory items | GET | /inventory/v1 | limit (max 100), offset, sortBy, hideDeleted |
| Get a single item | GET | /inventory/v1/{id} | — |
Sorting options for inventory: date_finish, date_removed, date_ordered, date_delivered
Common Examples
Get orders from the last 30 days
curl -X GET "https://app.shedsuite.com/api/public/customer-orders/v1?dateField=dateOrdered&dateFrom=now-30d&dateTo=now&limit=100" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"Get all active inventory (excluding deleted)
curl -X GET "https://app.shedsuite.com/api/public/inventory/v1?hideDeleted=true&limit=100&offset=0" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"Create a new contact
curl -X POST https://app.shedsuite.com/api/public/contacts/v1 \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{
"firstName": "Jane",
"lastName": "Smith",
"email": "jane@example.com",
"phone": "555-123-4567",
"zipCode": "30301"
}'Paginate through large result sets
Results are limited to 100 items per request. Use offset to page through:
# Page 1
curl "https://app.shedsuite.com/api/public/contacts/v1?limit=100&offset=0" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
# Page 2
curl "https://app.shedsuite.com/api/public/contacts/v1?limit=100&offset=100" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"Troubleshooting
| Error Code | Meaning | What to Do |
|---|---|---|
| 401 | Unauthorized | Your token is missing, expired, or invalid. Create a new one. |
| 403 | Forbidden | Your token doesn't have the required scope for this endpoint. |
| 400 | Bad Request | Check your request body or query parameters for typos/bad values. |
| 404 | Not Found | The ID you requested doesn't exist. |
| 500 | Internal Server Error | Something went wrong on the server. Try again or contact support. |
Managing Your Tokens
- List tokens:
GET /tokens/v1— see all active tokens for your company. - Revoke a token:
DELETE /tokens/v1/{tokenId}— immediately disables that token. Use this if a token is compromised or no longer needed.
Quick Reference
| Item | Value |
|---|---|
| Base URL | https://app.shedsuite.com/api/public |
| Auth method | Bearer token in Authorization header |
| Max per page | 100 |
| Date format | Token expiry: YYYY-MM-DDTHH:mm:ss.sssZ (ISO 8601). Date filters: YYYY-MM-DD or relative (e.g., now-30d) |
| Full docs | https://app.shedsuite.com/api/docs/index.html#/ |