API Documentation
Programmatic access to your Digital Product Certificates via RESTful API
Fast & Reliable
RESTful API with JSON responses. 99.9% uptime SLA. Rate limited to 100 requests/minute per tenant.
Secure by Default
API keys with role-based permissions. All requests over HTTPS. Multi-tenant isolation enforced at every endpoint.
Easy Authentication
Simple Bearer token authentication. Generate API keys from your dashboard with granular permissions.
Well Documented
Comprehensive docs with code examples in multiple languages. Interactive API explorer coming soon.
Getting Started
1. Generate an API Key
Log in to your Sustalium dashboard and navigate to Settings → API Keys. Create a new API key with the appropriate permissions.
2. Make Your First Request
All API requests must include your API key in the Authorization header:
curl https://api.sustalium.com/v1/products \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"3. Handle Responses
All successful responses return JSON with a data field:
{
"data": {
"id": "prod_abc123",
"sku": "TEE-001",
"name": "Organic Cotton T-Shirt",
"category": "Textiles",
"createdAt": "2025-12-01T10:00:00Z"
}
}Available Endpoints
Products
/v1/productsList all products
/v1/products/:idGet a specific product
/v1/productsCreate a new product
/v1/products/:idUpdate a product
/v1/products/:idDelete a product
Digital Product Certificates
/v1/certificatesList all certificates
/v1/certificates/:idGet a specific certificate
/v1/certificatesCreate a new certificate
/v1/certificates/:id/publishPublish a draft certificate
Analytics
/v1/analytics/overviewGet overview metrics
/v1/analytics/scansGet scan events over time
Rate Limiting
API requests are rate limited to 100 requests per minute per tenant. Rate limit headers are included in every response:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 2025-12-01T10:05:00ZIf you exceed the rate limit, you'll receive a 429 Too Many Requests response with a Retry-After header.
Error Handling
All errors return JSON with an error field and appropriate HTTP status code:
{
"error": {
"code": "NOT_FOUND",
"message": "Product not found",
"details": {
"productId": "prod_abc123"
}
}
}400Bad Request - Invalid input401Unauthorized - Invalid or missing API key403Forbidden - Insufficient permissions404Not Found - Resource doesn't exist429Too Many Requests - Rate limit exceeded500Internal Server Error - Something went wrongNeed Help?
Full API documentation with interactive examples is available to all Growth and Enterprise customers.