Error Response Format
All API errors return JSON with a consistent structure:Error Codes
| Code | HTTP Status | Description |
|---|---|---|
INVALID_REQUEST | 400 | Request validation failed — missing or invalid fields |
INVALID_PATH | 400 | File path validation failed (contains .., starts with /, etc.) |
INVALID_HASH | 400 | Hash is not a valid 64-character lowercase hex string |
UNAUTHORIZED | 401 | Missing, invalid, or expired API key |
NOT_FOUND | 404 | Resource not found or not owned by the authenticated user |
RATE_LIMITED | 429 | Rate limit exceeded — check X-RateLimit-Reset header |
FILE_TOO_LARGE | 413 | Individual file exceeds plan limit (250 MB free, 5 GB hobby) |
STORAGE_EXCEEDED | 413 | Total storage quota exceeded (10 GB free, 100 GB hobby) |
SITE_LIMIT_EXCEEDED | 403 | Maximum site count reached (500 for free plan) |
PLAN_LIMIT | 403 | Feature not available on current plan |
INTERNAL_ERROR | 500 | Unexpected server error |
Common Scenarios
Invalid API Key
sl_live_ and is complete (no truncation).
Rate Limited
X-RateLimit-Reset header. See Rate Limits.
Storage Exceeded
File Path Invalid
/), cannot contain .., and must be under 500 characters.