API Reference
The Emberly REST API — upload, manage, and serve files programmatically.
The Emberly REST API lets you upload files, shorten URLs, manage metadata, and configure custom domains from any language or tool.
Files API
Upload, update, delete, and serve files.
URL Shortener API
Create and manage short links.
Domains API (Cloud only)
Manage custom domains for your uploads.
Billing API (Cloud only)
Checkout, portal, purchases, and subscription sync.
Analytics API
Storage stats, top files, and activity data.
Profile API
Manage security, tokens, linked accounts, and perks.
Discovery API (Cloud only)
Nexium profiles, squads, opportunities, and applications.
User API Reference
Comprehensive reference for all user-facing endpoints.
Staff & Admin API
Admin-only endpoints for user management and moderation.
Health Check
GET /api/health — works identically on cloud and self-hosted instances, no authentication required. Reports database, Redis, storage, and event-queue status, plus overall instance uptime and version:
status is ok, degraded (a non-critical check failing), or down (database unreachable — responds 503). Point an uptime monitor or reverse-proxy health check at this endpoint.
Base URL
Authentication
All endpoints require a Bearer token:
Get your token from Dashboard → Settings → Profile → Upload Token.
Some endpoints (domains, profile, analytics) require a session cookie from a browser login rather than a token. These are noted per-endpoint.
Response Format
All responses return JSON:
Error responses:
Rate Limits
There's no general per-plan API rate limit — file uploads, listing, and most other endpoints aren't rate-limited beyond your plan's storage/upload-size caps. A small number of security-sensitive endpoints (registration, password reset, resend-verification, contact form, domain verification) have flat, IP-scoped limits regardless of plan. See the User API Reference for the full list.
Exceeding a limited endpoint's limit returns 429 Too Many Requests with a Retry-After header.
Status Codes
| Code | Meaning |
|---|---|
200 | Success |
400 | Bad request — see error field |
401 | Unauthenticated |
403 | Forbidden (insufficient permissions or unverified resource) |
404 | Resource not found |
409 | Conflict (duplicate, already exists) |
413 | File too large or quota exceeded |
429 | Rate limited |
500 | Server error |