Overview
The Sticker Partner API allows you to programmatically provision organizations, authenticate users, and manage the embedded procurement experience.
Base URL
https://api.usesticker.com/v1
All API endpoints are versioned under /v1.
Authentication
All API requests require authentication via API key.
Organization Setup
Uses Authorization: Bearer header:
Authorization: Bearer sk_live_your_api_key
Partner Handshake
Uses X-API-Key header:
X-API-Key: sk_live_your_api_key
Available Endpoints
All requests must:
- Use
Content-Type: application/json
- Send JSON-encoded request bodies
- Include proper authentication headers
curl -X POST https://api.usesticker.com/v1/organizations/setup \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{ ... }'
All responses are JSON with the following structure:
Success Response
{
"success": true,
"data": {
// Response data here
}
}
Error Response
{
"error": "Error Type",
"message": "Human-readable error message",
"code": "ERROR_CODE",
"details": [
// Validation errors or additional info
]
}
HTTP Status Codes
| Status | Description |
|---|
200 | Success |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid or missing API key |
403 | Forbidden - Insufficient permissions |
404 | Not Found - Resource doesn’t exist |
409 | Conflict - Resource already exists |
429 | Too Many Requests - Rate limited |
500 | Server Error - Something went wrong |
Rate Limits
| Endpoint | Rate Limit |
|---|
/v1/organizations/setup | 100 requests/minute |
/v1/partner/handshake | 300 requests/minute |
When rate limited, the response includes:
{
"error": "Rate limit exceeded",
"code": "RATE_LIMIT_EXCEEDED",
"retry_after": 60
}
Error Handling
We recommend implementing retry logic with exponential backoff:
async function apiCall(fn, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (error) {
if (error.status === 429 && i < maxRetries - 1) {
// Rate limited - wait and retry
const delay = Math.pow(2, i) * 1000;
await new Promise(r => setTimeout(r, delay));
continue;
}
if (error.status >= 500 && i < maxRetries - 1) {
// Server error - wait and retry
const delay = Math.pow(2, i) * 1000;
await new Promise(r => setTimeout(r, delay));
continue;
}
throw error;
}
}
}
Environments
| Environment | Base URL | API Keys |
|---|
| Production | https://api.usesticker.com/v1 | sk_live_* |
| Staging/Sandbox | https://api.staging.usesticker.com/v1 | sk_test_* |
Use sandbox credentials for development and testing. Never use production API keys in test environments.
Need Help?