Every basic, done precisely.
Custom paths, editable destinations, redirect codes, expiring links via the API — the table stakes. The routing engine underneath is what's different; the basics just work.
Change where it goes. Never the link.
Every edit — a new destination, a different status code, a renamed path — reaches the routing layer the moment you save. Not a nightly sync: the same Redis engine that answers every request sees your change immediately.
The destination of go.example.com/summer changes from example.com/summer-2025 to example.com/summer-2026 and is live immediately.
Decide how long a link lives.
Account links never expire unless you say so — and an expiry ends a link cleanly, with a 410, never a silent 404.
Example of link expiry, set through the API or MCP: go.example.com/earlybird points at example.com/tickets with a 302 status code and expires on 30 September 2026. After that moment the link answers 410 Gone instead of redirecting, so nothing fails silently.
Link expiry
Set an expiry when you create or update a link through the API or your AI agent. After it, the link answers 410 Gone — an honest end state that browsers, crawlers and humans all understand — instead of quietly 404ing or, worse, still redirecting to a sale that ended.
Account links never expire unless you say so, on any plan. Expiry dates are set through the API or MCP on every plan; the dashboard doesn’t show them — see the plan matrix.
Five hundred links, still one screen.
Search by path, filter by domain or response type, and drag links into the order they match in — with the same instant sync a single edit gets.
Example of the link list filtered to go.example.com: four links in matching order — /launch, /keynote, /promo and /deck — each with its destination, status code and position.
- Search & filter
- Find a link by its path, narrow the list to one domain, or show only redirects — or only plain responses — then sort by order, path or creation date.
- Matching order
- Links on one domain match top to bottom. Drag one into place and the routing layer follows the new order straight away.
Example CSV import file with three columns — slug, destination, status — and three rows: launch, keynote and promo. Bulk import via CSV is on the roadmap.
- Bulk import
- One row per link — slug, destination, status. Collisions get flagged for review, never silently renamed. Ships Q4 2026; the date lives on the changelog until it does.
- Export
- Settings → Export downloads every link in the workspace in one file: a CSV with one row per link, or lossless JSON with the routing rules. Workspace owners and admins can run it, and your domain stays yours — custom domains covers re-pointing it.
The basics are covered. See what’s different.
On Premium, routing rules and dynamic responses are where rii.link stops being a shortener. Start free — account links never expire unless you set a date, and clicks are never metered.