ScanStack — QR Infrastructure API

QR codes
that think

SmartRoute adapts every scan by time, device, location, and visitor history. One QR code. Infinite contexts. Powered by a developer-first API.

Plans from $19/mo. 30-day money-back guarantee.

50K+

API requests/day on Pro plan

100

QR codes per bulk request

10

SmartRoute condition types

Real-time

Webhook notifications

Built for developers

Conditional Redirects

Route scans by device, OS, country, or language. iOS → App Store. Android → Play Store. Desktop → fallback. Automatically.

curl -X POST https://api.scanstack.dev/v2/qr/:id/rules \
  -H "x-api-key: qr_your_key" \
  -d '{
  "condition_type": "os",
  "condition_value": "ios",
  "target_url": "https://apps.apple.com"
}'

Self-Optimizing A/B Tests

Enable auto_optimize and traffic automatically shifts toward your best-performing variant using Thompson Sampling. Record conversions, watch it learn.

curl -X POST https://api.scanstack.dev/v2/qr/:id/ab-test \
  -H "x-api-key: qr_your_key" \
  -d '{
  "auto_optimize": true,
  "variants": [
    { "target_url": "/landing-a", "weight": 50 },
    { "target_url": "/landing-b", "weight": 50 }
  ]
}'

Bulk Generation

Generate up to 100 QR codes in a single request. Perfect for events, inventory, packaging, and print runs.

curl -X POST https://api.scanstack.dev/v2/bulk \
  -H "x-api-key: qr_your_key" \
  -d '{
  "items": [
    { "type": "url", "label": "..." },
    { "type": "url", "label": "..." }
  ]
}'

Scan Automations

Trigger actions when scan milestones hit, visitors return, or scans come from specific cities. Auto-swap URLs, fire webhooks, or send alerts.

curl -X POST https://api.scanstack.dev/v2/qr/:id/automations \
  -H "x-api-key: qr_your_key" \
  -d '{
  "name": "100-scan celebration",
  "trigger_type": "scan_milestone",
  "trigger_config": { "scan_count": 100 },
  "action_type": "redirect_swap",
  "action_config": { "target_url": "/promo/100" }
}'

SmartRoute

One QR code.
Infinite contexts.

SmartRoute turns every QR code into an intelligent endpoint. The same code adapts what it shows based on who scans it, when, where, and how often.

Time-aware routing

Lunch menu at noon, happy hour at 5pm, dinner at 7pm. Same QR code on the table.

Returning visitor detection

First scan → welcome page. Second scan → reorder with discount. Loyalty for regulars.

Geo-fencing

Route by city, state, or GPS radius. Food truck in Austin shows Austin menu, scanned in Houston shows Houston menu.

Compound conditions

Combine device + time + location + scan count in a single rule. Mobile users on weekends in NYC see a different page.

SmartRoute — same QR, different destinations
☀️

11am–3pm, Mon–Fri

/menu/lunch

Active
🌙

5pm–10pm, Mon–Sat

/menu/dinner

Standby

Returning visitor (2+ scans)

/loyalty/dashboard

Standby
📍

City = Austin, TX

/locations/austin

Standby
📱

Within 10km of 30.27, -97.74

/promo/downtown-austin

Standby
POST /v2/qr/:id/rules
{
  "conditions": [
    { "type": "city", "value": "Austin" },
    { "type": "time", "start": "11:00", "end": "15:00" }
  ],
  "target_url": "https://truck.com/austin/lunch",
  "priority": 10
}

Use cases

Event Apps

Ticketing, check-in, session tracking

Restaurants

Digital menus, table ordering

Logistics

Package tracking, inventory

Marketing

Campaigns, retargeting, attribution

Ready to build?

Plans start at $19/mo. Every plan includes a 30-day money-back guarantee.