Skip to main content

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
Contact us to receive your API credentials: suyash@usesticker.com

Available Endpoints

Request Format

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 '{ ... }'

Response Format

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

StatusDescription
200Success
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing API key
403Forbidden - Insufficient permissions
404Not Found - Resource doesn’t exist
409Conflict - Resource already exists
429Too Many Requests - Rate limited
500Server Error - Something went wrong

Rate Limits

EndpointRate Limit
/v1/organizations/setup100 requests/minute
/v1/partner/handshake300 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

EnvironmentBase URLAPI Keys
Productionhttps://api.usesticker.com/v1sk_live_*
Staging/Sandboxhttps://api.staging.usesticker.com/v1sk_test_*
Use sandbox credentials for development and testing. Never use production API keys in test environments.

Need Help?