DocsGet started01
Build with Lixrl, from link to insight.
Lixrl is an open URL shortener built on Cloudflare's edge: short links, click analytics, and a developer-first REST API and CLI — for any app you ship, Elixpo or not.
- Base URL
- https://lixrl.com
- API prefix
- /api
- Auth
- Bearer API key
Get started
Choose the dashboard, Developer CLI, or API depending on how you work. Every section is listed here and in the sidebar.
- Get startedQuickstartSign in, mint a key, and shorten your first URL in minutes.
- Get startedDeveloper CLIShorten links, export analytics, and generate QR codes from a terminal.
- BuildShortening APICreate, list, update, and delete short links over REST.
- BuildAPI KeysCreate, scope, rotate, and revoke keys for programmatic access.
- BuildClick AnalyticsPull clicks, countries, devices, and referrers for any window.
- BuildBranded SubdomainsPublish links under your own name at brand.lixrl.com.
- BuildWebhooksHTTP callbacks for link events. Coming on the Growth tier.
- ReferenceError ReferenceStatus codes, error bodies, and retry guidance.
- ReferenceSelf-HostingRun your own instance on Cloudflare Pages, D1, and KV.
What you get
- Edge-native redirects — short links resolve through Cloudflare's global network.
- Click analytics — counts, geo, referrers, devices, browsers; no third-party script.
- REST API + API keys with scoped permissions.
- Custom slugs, bulk deletion, activation controls, and link expiry.
- Sign in via Elixpo Accounts SSO — no separate password.
How sign-in works
Lixrl doesn't store passwords. Every user signs in through Elixpo Accounts SSO — the same login that opens chat, art, blogs, and the rest of the ecosystem. Hit /api/auth/login to start the OAuth flow; we handle the callback, set the session cookie, and bounce you to your dashboard.
For machine-to-machine access, mint an API key from your dashboard and send it in the Authorization header.
Conventions
- Base URL:
https://lixrl.com - API path prefix:
/api - All requests/responses are JSON unless stated otherwise.
- Errors follow the format
{ "error": "Human-readable message" }— use the HTTP status for program flow and see the Error Reference.