TAPTICKS
REST · v1 · stable

Tapticks API.
Tickets as primitives.

A boring, predictable REST API for events, orders, tickets, and wallet passes. Bearer tokens, idempotent writes, JSON in and JSON out — the same rails that power every storefront on Tapticks.

curl · v1
$ curl https://api.tapticks.app/v1/events \
    -H "Authorization: Bearer sk_live_…"

{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "id": "evt_4Ywu2…",
      "name": "Reggae Sumfest 2026",
      "venue": "Catherine Hall",
      "starts_at": "2026-07-18T20:00:00-05:00",
      "status": "on_sale"
    }
  ]
}
Base URL
api.tapticks.app
Auth
Bearer
Versioning
v1
Median p50
84 ms
01 · Authentication

Bearer tokens. Two environments.

Every request carries a bearer token in the Authorization header. Sandbox keys never touch real money or live wallet passes. Rotate keys at any time — old keys keep working for a 30-minute grace window.

Sandbox
sk_sandbox_

Fake payments. Wallet passes are watermarked. Webhooks fire normally.

Live
sk_live_

Real money, real settlements. Issued after storefront verification.

GET/v1/events
$ curl https://api.tapticks.app/v1/events \
    -H "Authorization: Bearer sk_live_4ZqT…" \
    -H "Tapticks-Version: 2026-05-01"

Missing or malformed tokens return 401 unauthorized. Tokens scoped to a different storefront return 403 forbidden.

Key rotation

Roll a key from the dashboard. Old key stays valid for 30 minutes so deploys land cleanly.

IP allow-list

Optional per-key allow-list — pin live keys to your production egress ranges.

Scoped tokens

Read-only or write-scoped tokens for analytics jobs and partner integrations.

02 · Events

List, read, and create events.

An event is the top-level object — a show on a date at a venue. Events hold tiers, gates, and the inventory you'll sell against.

GET/v1/events
$ curl https://api.tapticks.app/v1/events?limit=10 \
    -H "Authorization: Bearer sk_live_…"

{
  "object": "list",
  "data": [
    {
      "id": "evt_4Ywu2",
      "name": "Reggae Sumfest 2026",
      "venue": "Catherine Hall, Montego Bay",
      "starts_at": "2026-07-18T20:00:00-05:00",
      "capacity": 32000,
      "sold": 18443,
      "currency": "JMD",
      "status": "on_sale"
    }
  ]
}
03 · Orders

Create orders with idempotent writes.

POST /v1/orders takes a fan reference, the line items, and a payment method. Pass an Idempotency-Key header to safely retry on network blips — duplicate requests return the original order.

POST/v1/orders
RequestJSON
POST /v1/orders
Authorization: Bearer sk_live_…
Idempotency-Key: ord_req_8t2…
Content-Type: application/json

{
  "event_id": "evt_4Ywu2",
  "fan": {
    "email": "asha@fanmail.jm",
    "phone": "+18761234567"
  },
  "line_items": [
    {
      "tier_id": "tier_vip_b",
      "quantity": 2
    }
  ],
  "payment_method": "card"
}
201created
ResponseJSON
HTTP/1.1 201 Created

{
  "id": "ord_Hx8q21",
  "event_id": "evt_4Ywu2",
  "status": "paid",
  "currency": "JMD",
  "total": 37000,
  "tickets": [
    { "id": "tkt_91Aa", "tier": "VIP · B14", "wallet_pass_url": "https://wp.tapticks.app/…" },
    { "id": "tkt_91Ab", "tier": "VIP · B15" }
  ],
  "created": 1747700400
}

Supported payment_method values: card, apple_pay, google_pay, mobile_money_jm.

04 · Tickets

Inspect, transfer, and void tickets.

A ticket is a single seat under an order. Transfers are first-class — move a ticket to a new fan by email or phone, and the wallet pass on the old device deactivates within a second.

POST/v1/tickets/{id}/transfer
POST /v1/tickets/tkt_91Aa/transfer

{
  "to": {
    "email": "jordan@fanmail.jm",
    "name": "Jordan B."
  },
  "message": "See you at the gate."
}
05 · Wallet passes

Apple Wallet & Google Wallet, in one call.

Tickets ship with a pass URL by default. If you want to mint a custom pass — partner artwork, an extra back-field, or a sponsor strip — call /v1/wallet/passes directly.

POST/v1/wallet/passes
RequestJSON
POST /v1/wallet/passes

{
  "ticket_id": "tkt_91Aa",
  "platform": "apple",
  "strip_image_url": "https://cdn.example/strip.png",
  "back_fields": [
    {
      "label": "Gate",
      "value": "Gate 4 · West"
    }
  ]
}
200ok
ResponseJSON
HTTP/1.1 200 OK

{
  "id": "pass_a31m",
  "platform": "apple",
  "install_url": "https://wp.tapticks.app/a/…",
  "refresh_ms": 250,
  "status": "ready"
}

Passes refresh within 250ms when the underlying ticket changes — gate moves, set-time slips, or section swaps push live to every installed device.

06 · Webhooks

Eight event types. Signed and retried.

We POST a JSON envelope to your endpoint with an HMAC-SHA256 signature in Tapticks-Signature. Non-2xx responses are retried with exponential backoff for 24 hours.

  • order.created

    Fired the moment payment captures. Includes line items, fees, and a fan reference.

  • order.refunded

    Full or partial refund settled to the original payment method.

  • ticket.transferred

    A fan moved one or more tickets to another account by email or phone.

  • ticket.scanned

    A door scanner validated the pass — includes gate, staff id, and timestamp.

  • pass.installed

    Apple Wallet or Google Wallet acknowledged the install on the fan's device.

  • pass.scanned

    NFC tap or QR read at the gate. Sent within 250ms of the scan event.

  • event.rescheduled

    An event date, gate, or set time changed — passes auto-refresh.

  • payout.settled

    Funds landed in your bank. Includes payout id and net amount in JMD or USD.

POSThttps://your-app.com/webhooks/tapticks
POST /webhooks/tapticks
Tapticks-Signature: t=1747700400,v1=8a92…
Content-Type: application/json

{
  "id": "evt_whk_2k1p",
  "type": "order.created",
  "created": 1747700400,
  "data": {
    "id": "ord_Hx8q21",
    "event_id": "evt_4Ywu2",
    "total": 37000,
    "currency": "JMD"
  }
}
Start building

Ship a checkout
before lunch.

Sandbox keys are free and instant. Live keys get issued the same day after storefront verification. No credit card required.