Developers

Put your app on QR Worlds

Build games, interactive experiences, or productivity tools? List them here and creators can drop your app straight onto the page behind their QR code — in front of every scan.

New distribution

Every creator on RepLinkQR can add your app to their World — apparel drops, events, restaurants, classrooms, and more.

You keep your product

Your app stays hosted by you at your own URL. We embed it (or launch it) — no migration, no lock-in.

Premium slots

Mark your app premium and it becomes a paid-plan perk — a built-in upsell that can share revenue.

Reviewed & safe

Every submission is human-reviewed before it goes live, so the catalog stays high-quality.

Submit your app

Your app stays on your servers — make sure it allows embedding, or it'll open in "launch" mode.

Build for QR Worlds

What your app needs

A QR World app is just a web app we embed on the page. Meet these four requirements and it runs beautifully in front of every scan.

Hosted at an HTTPS URL

Any stack — plain JS, React, Phaser, Unity/Godot WebGL. It just has to load at a public https:// URL.

Allow embedding

Don't send X-Frame-Options: DENY/SAMEORIGIN. Ideally set Content-Security-Policy: frame-ancestors https://replinkqr.com. (Sites that block framing open in "launch" mode instead.)

Mobile-first & responsive

Almost every scan is a phone. Fit any width, be touch-friendly, load fast, and work for anonymous visitors — no forced login.

Self-contained

Start instantly, keep state client-side or on your own backend. No pop-ups that break inside a frame.

The Embed SDK optional, recommended

One script tag gives you auto-resize (no inner scrollbars), the World's theme/context, and engagement reporting.

<script src="https://replinkqr.com/assets/js/repqr-embed.js"></script>
<script>
  RepLinkQR.ready();                    // "I'm loaded" + start auto-resize
  RepLinkQR.onContext(function (ctx) {
    // ctx = { page, premium, theme, accent }
    // e.g. match your colors to ctx.accent
  });
  RepLinkQR.track('play');              // report engagement
  RepLinkQR.track('score', 1200);       // any event + value
</script>

Opened in its own tab instead of embedded? Every call is a safe no-op — ship the same build everywhere.

Under the hood

The SDK is a thin wrapper over postMessage. If you'd rather talk to the host directly, post these to window.parent:

MessageEffect
repqr:readyMarks the app loaded
repqr:resize {height}Grows the frame to fit
repqr:track {event,value}Records engagement
repqr:open {url}Opens a link in a new tab

Every payload carries __repqr:1. The World replies with repqr:context. Ready? Submit your app above — premium apps become a paid-plan upsell.

REST API

Create & re-point QR codes from your own app

Partners and integrations can mint dynamic QR codes and change their destinations programmatically — no reprint, no dashboard. Every call is scoped to your own account.

Endpoints

MethodPathWhat it does
GET/api/v1/pingVerify your key & see your plan
POST/api/v1/qrCreate a dynamic QR (name, destination_url, style)
GET/api/v1/qr/{slug}Fetch a QR + its lifetime scan count
PATCH/api/v1/qr/{slug}Re-point its destination — printed codes keep working

Authenticate with an x-api-key header. Create an account, then mint keys in Settings → API access.

Quick start

# Create a dynamic QR code
curl -X POST https://replinkqr.com/api/v1/qr \
  -H "x-api-key: rlq_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"Summer drop","destination_url":"https://your.site/drop",
       "style":{"fg":"#6b38d4","bg":"#ffffff"}}'

# Later: re-point it without reprinting
curl -X PATCH https://replinkqr.com/api/v1/qr/summer-drop \
  -H "x-api-key: rlq_live_..." \
  -H "Content-Type: application/json" \
  -d '{"destination_url":"https://your.site/fall-drop"}'

Responses are JSON and include the short_url your QR encodes. Destination URLs pass the same safety screening as the dashboard.