Build on the link layer.

One REST API for links, smart routing and analytics — and it works right here. Type a destination, flip a rule, watch the request write itself.

Interactive example: you type a destination URL and toggle routing rules — iOS route, geo DE, expiry, QR code. A POST request to /v1/links writes itself with a routing block, expires_at and qr flag matching your choices, and a 201 Created response answers with the short link https://rii.link/x7q2, the echoed routing summary and a QR png URL. The panes are a simulation; the JSON shapes are the real API contract.

link forgePOST /v1/links
Developer API

Drop link superpowers into your stack.

A fast, predictable REST API with SDKs and webhooks. Create, route, brand and measure links from anywhere in your software — in a few lines.

POST/v1/linksCreate a link
GET/v1/links/:idFetch a link
PATCH/v1/links/:idUpdate routing
POST/v1/qrGenerate a QR
GET/v1/analytics/:idClick & geo data
DEL/v1/links/:idRemove a link
SDKs · Node / Python / RESTGet your API key
# Create a smart link
const res = await fetch("https://api.rii.link/v1/links", {
  method: "POST",
  headers: { Authorization: "Bearer rii_live_…" },
  body: JSON.stringify({
    slug: "summer-sale",
    routing: { ios: "apps.apple.com/id123",
              default: "myshop.com" },
  }),
});
# → 201 Created · rii.link/summer-sale
Versioned /v1

Breaking changes only ever land behind a new version prefix.

Errors you can parse

Every error is JSON with a stable machine-readable code.

Idempotency keys

Retry any POST safely — same key, same result, no dupes.

Honest rate limits

Limits live in response headers, not in surprise 429s.

Model Context Protocol

Let agents create, update & analyze links for you.

Connect https://mcp.rii.link/mcp with OAuth and your AI assistant manages links the way it manages files — each agent stays visible, scoped and revocable in your rii.link account.

Example conversation: the user asks the assistant to create a branded link for the summer sale that routes iPhone users to the App Store, and to show last week's clicks. The assistant calls the create_link tool to create rii.link/summer-sale with iOS traffic routed to the App Store, then calls link_stats, which returns 18,423 clicks over the last 7 days with Germany as the top geography, and confirms the link is live with those results. MCP link management is live — shipped August 2026, ahead of its promised date.

Links from a sentence

"Shorten this and route DE traffic to /de" becomes a real, live link — no dashboard clicks.

Update & route in place

Agents repoint destinations, add rules and rotate QR targets through typed tool calls.

Analytics on demand

Ask for clicks, geos or top links and get structured results back into the conversation.

create_linklist_linksupdate_linkdelete_linklist_domainsrender_qrlink_stats
Webhooks

Your stack hears every click.

Subscribe to link and click events and push them anywhere — CRMs, warehouses, Slack. Signed, retried with backoff, delivered at least once.

Example webhook event feed: link.created for rii.link/x7q2, click.recorded from Germany on iOS via Instagram, qr.scanned from a flyer in Berlin, link.expired for a retired promo link. Deliveries are signed (HMAC SHA-256 in the rii-signature header), retried with backoff, and delivered at least once.

verify-webhook.js
// Every delivery is signed — verify, then trust.
import crypto from "node:crypto";

export function verify(req) {
  const sig = req.headers["rii-signature"];
  const mac = crypto
    .createHmac("sha256", process.env.RII_WEBHOOK_SECRET)
    .update(req.rawBody)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(sig), Buffer.from(mac));
}

Ready to build smarter connections?

Branded links, visual routing and LLM-ready responses — start free, no credit card needed.

No credit cardFree forever tierGDPR / DSGVO compliantExport & leave anytime