Skip to main content
GET
/
events
/
{event_id}
Get one event by id
curl --request GET \
  --url https://api.zopay.cash/connect/v1/events/{event_id} \
  --header 'Authorization: Bearer <token>'
{
  "id": "<string>",
  "object": "<string>",
  "type": "<string>",
  "livemode": true,
  "api_version": "<string>",
  "created_at": "2023-11-07T05:31:56Z",
  "data": {},
  "related_to": "<string>",
  "related_to_kind": "<string>"
}
Devuelve el evento con el evt_… indicado. Cross-tenant devuelve 404 con el mismo envelope que un id que no existe — la existencia de eventos en otras orgs no es enumerable.

Authorizations

Authorization
string
header
required

Paste your Connect API key (sk_live_… for production, sk_test_… for sandbox) without the Bearer prefix. Mint and rotate keys from the admin panel.

Headers

authorization
string | null

Path Parameters

event_id
string
required

Event id as returned from list, beginning with evt_. Malformed ids that don't match an event return 404, NOT 400 -- the check is value-level, not format-level.

Response

Successful Response

A single event row in the partner-facing shape.

Stripe-style envelope: every event carries object='event' so a polymorphic partner-side handler can dispatch on the discriminator. The data field is the business payload verbatim (the JSONB column on connect_events) -- no transformation between storage and wire shape.

related_to and related_to_kind together identify the principal object the event is about. They move as a pair (both set or both null), enforced at the schema level by a CHECK constraint in the migration; partner-side handlers can safely use one to branch on the other.

id
string
required

ULID-shaped event id (evt_<26 base32 chars>). Stable for the lifetime of the event; safe to use as a client-side dedupe key alongside the polymorphic object discriminator.

object
string
required

Always event. The Stripe-style discriminator -- if a future API surface returns mixed object types in one envelope, partner handlers branch on this without having to parse the id prefix.

type
string
required

Event type, e.g. payment_intent.completed or address.deposit.received. The full v1 vocabulary lives in CONNECT.md; unknown values from a forward-compat newer API version should be ignored, not failed.

livemode
boolean
required

True for events produced in the live environment (sk_live_* key minted the intent / addresses), False for sandbox. Maps verbatim to the wire body's livemode field. Partner-side handlers should branch on this when downstream side-effects differ between modes (e.g. crediting a real merchant balance vs. a test one).

api_version
string
required

Payload schema version. v1 for the entire lifetime of this PR sequence. When the partner-visible payload shape changes incompatibly, this field bumps to v2 and old events stay readable at their original version.

created_at
string<date-time>
required

Server timestamp when the event row was written. The ULID id's timestamp prefix gives approximate creation-order sort, but created_at is the authoritative wall-clock value for filtering and display.

data
Data · object
required

The business payload. Shape depends on type: payment_intent.completed carries ref_code, amount, currency, address_receiver, address_sender, network, hash, status, metadata; address.deposit.received (when shipped) carries the same set minus ref_code. The full type-by-type payload reference lives in CONNECT.md.

UUID (rendered as a string) of the principal object the event is about. Set for every event type we ship today; the column is nullable for forward-compat with future event types that have no natural principal (e.g. account-wide system notifications).

Names the table related_to resolves into. v1 vocabulary: payment_intent | address. Always present iff related_to is. Future kinds (e.g. subscription, payout) will be added in lock-step with the corresponding event types.