API docs
Events
GET /v1/events is the catch-up feed for webhooks. It holds the last 30 days of events the shop generated, in the same envelope webhooks deliver. Use it to recover after your receiver was down, or to reconcile.
- What's in it. The feed only includes events for resources your key can read. An events-only key needs no permission of its own, but it'll only see events of readable types. Events at locations outside the key's limit are left out.
- Only subscribed types are recorded. An event is recorded when at least one of the shop's active webhook endpoints subscribes to its type. If no endpoint wants
customer.updated, those events don't exist in the feed. To poll a type, have the owner add an endpoint for it (it can point at your receiver). - Date of birth is removed from payloads unless your key has
customer_dob:read. - Customer details. Unless your key has
customers:read, a customer embedded in an event (the buyer on asale.*event, for example) is reduced to{"object": "customer", "id": …}, the same as onGET /v1/orders.
| Filter | |
|---|---|
type |
One event type, e.g. inventory.changed |
updated_since |
Events created at or after this time |
limit, cursor |
Oldest first; follow next_cursor |
curl "https://app.ironregister.com/api/v1/events?type=sale.completed&updated_since=2026-09-24T00:00:00Z" \
-H "Authorization: Bearer $KEY"
{
"status": "ok",
"data": [
{
"id": "evt_c0fbcf88fbafc06b1677ba1e",
"object": "event",
"type": "sale.completed",
"api_version": "2026-09-24",
"created_at": "2026-09-24T18:03:11Z",
"livemode": true,
"data": { "object": { "object": "order", "id": 5521, "status": "completed", "...": "…" } }
}
],
"meta": { "limit": 50, "has_more": false, "next_cursor": null }
}
Dedupe by the event id, which is the same one the webhook delivery carried.