Documentation

Public API

Read-only JSON endpoints for featured stores, store profiles, and verified events. No API key required for published data.

Base URL

Production app host (override with RECENTLY_API_URL in brand deploys):

https://app.recently.cloud

All routes below are under /api/public. Responses are JSON. CORS is enabled for browser clients. These endpoints never expose unpublished or private merchant data.

GET /api/public/stores

Featured stores that opted into the public directory.

{
  "stores": [
    {
      "handle": "acme",
      "name": "Acme Goods",
      "url": "https://acme.example",
      "blurb": "Outdoor gear with live proof.",
      "featured": true,
      "sampleEventId": "evt_01H…"
    }
  ]
}

GET /api/public/stores/:handle

Public profile for one store, plus a page of recent public events. Optional query: ?cursor= for pagination.

{
  "store": {
    "handle": "acme",
    "name": "Acme Goods",
    "url": "https://acme.example",
    "blurb": "Outdoor gear with live proof.",
    "usesRecently": true
  },
  "events": [
    {
      "publicId": "evt_01H…",
      "message": "Jamie in Austin bought Trail Pack",
      "imageUrl": "https://…",
      "productTitle": "Trail Pack",
      "eventType": "order",
      "occurredAt": "2026-08-31T14:22:00.000Z"
    }
  ],
  "pagination": {
    "hasMore": false,
    "nextCursor": null
  }
}

GET /api/public/events/:id

Single verified event — the payload behind a Verified badge link.

{
  "publicId": "evt_01H…",
  "replay": {
    "message": "Jamie in Austin bought Trail Pack",
    "imageUrl": "https://…",
    "productTitle": "Trail Pack"
  },
  "meta": {
    "eventType": "order",
    "eventTypeLabel": "Order created",
    "date": "31 Aug 2026",
    "time": "14:22",
    "timezone": "UTC",
    "source": "Shopify",
    "store": {
      "handle": "acme",
      "name": "Acme Goods",
      "url": "https://acme.example"
    }
  },
  "verifiedLabel": "Verified purchase"
}

Errors

  • 404 — unknown handle or event id, or profile / proof not enabled
  • 204OPTIONS preflight succeeds with CORS headers

This API is intentionally narrow: public marketing and verification surfaces only. Admin GraphQL and merchant-private data stay inside the Shopify-authenticated app.