# Events

Events are used to keep track of different actions related to your account. For example, when a transaction is authorized, an AuthorizationCompleted event is created.

A full list of available events and associated endpoints is available in the API reference (opens new window).

# Working with events

You can retrieve all existing events from the API. By default, you will see the most recent events that have occurred.

 




GET /v3/events

Content-Type: application/json
Authorization: Bearer <access_token>

In the response you will receive a list of events and a has_more field, which informs you if there are more events on the next page.

 

















HTTP 200 OK

{
  "data": [
    {
      "created_at": "2022-08-16T12:45:33.000Z"
      "id": "b1ded866-79cc-44d2-aa61-69c26a2f580a",
      "name": "ExampleEvent",
      "payload": {
        "individual_id": "bd4af0ff-0a72-4e09-b247-c6d8c2391496",
        "example_field": "Example value"
      }
    },
    ...
  ],
  "has_more": true
}

# Polling

In order to reliably process events and ensure data consistency, your system must integrate with events by polling the event listing endpoint.

Between each request, your system must retain the cursor (id of the last seen event) in order to retrieve events that occurred after.

 




GET /v3/events?sort_type=ASC&starting_after=0abfb90a-4d6d-451d-bd55-c3e064fb795a

Content-Type: application/json
Authorization: Bearer <access_token>

In this case we have chosen ascending order to retrieve the oldest events first, and we specify the last seen event id.

 















 







 


HTTP 200 OK

{
  "data": [
    {
      "created_at": "2022-08-16T12:45:33.000Z"
      "id": "b1ded866-79cc-44d2-aa61-69c26a2f580a",
      "name": "ExampleEvent",
      "payload": {
        "individual_id": "bd4af0ff-0a72-4e09-b247-c6d8c2391496",
        "example_field": "Example value"
      }
    },
    ...
    {
      "created_at": "2022-08-17T13:51:10.000Z"
      "id": "42943401-f3cb-4c33-a2ed-ffe87055d227",
      "name": "ExampleEvent",
      "payload": {
        "individual_id": "a04bb96a-0203-48a1-8dcf-00a13aaafec9",
        "example_field": "Example value"
      }
    }
  ],
  "has_more": true
}

We save the id of the last event in the list. Since the has_more field has the value true, your system should repeat this process until it is false. At that point, the next polling interval should start with the last saved cursor and begin the process again.

# Webhooks

Webhooks serve as a method of immediate notification about an event being created. They do not contain any data from event payload except for the id, name and created_at fields.

WARNING

Webhooks should be used as an addition to polling for events, never a replacement.

# Registering new url

In order to register a new webhook URL, make a request to the following endpoint:

 








POST /v3/webhooks

Content-Type: application/json
Authorization: Bearer <access_token>

{
  "url": "https://example.com/webhook-url"
}

You can register at most one webhook URL. Make sure the URL you are registering uses HTTPS.

# Listing webhooks

You can retrieve the webhooks you've registered to verify their URL.

 




GET /v3/webhooks

Content-Type: application/json
Authorization: Bearer <access_token>

Response:

 









HTTP 200 OK

[
  {
    "created_at": "2022-07-01T13:17:19.000Z",
    "id": "a6495db9-8d9d-417d-9918-c5b4a122e712",
    "url": "https://example.com/webhook-url"
  }
]

# Removing registered URL

In order to remove an existing webhook URL, you need to have the webhook ID, which is retrievable by listing webhooks.

 




DELETE /v3/webhooks/a6495db9-8d9d-417d-9918-c5b4a122e712

Content-Type: application/json
Authorization: Bearer <access_token>

# Receiving webhooks

When a new event is created, a webhook is dispatched to the specified URL.

Example webhook payload:

{
  "id": "b1ded866-79cc-44d2-aa61-69c26a2f580a",
  "name": "ExampleEvent",
  "created_at": "2022-08-16T12:45:33.000Z"
}

To retrieve the event associated with the webhook, use the id from the webhook's body.

 




GET /v3/events/b1ded866-79cc-44d2-aa61-69c26a2f580a

Content-Type: application/json
Authorization: Bearer <access_token>

In the response you will receive a payload field, which contains data relevant to the event.

 




 
 
 
 



HTTP 200 OK

{
  "id": "b1ded866-79cc-44d2-aa61-69c26a2f580a",
  "name": "ExampleEvent",
  "payload": {
  	"individual_id": "bd4af0ff-0a72-4e09-b247-c6d8c2391496",
  	"example_field": "Example value"
  },
  "created_at": "2022-08-16T12:45:33.000Z"
}

# Responding to webhooks

Whenever your system receives a request to the webhook URL, it should acknowledge it by responding with a 2XX HTTP code.

If your system fails to respond with a 2XX HTTP code or if there are any network disruptions, the request will be retried at most 5 times with an initial interval of 1 second and exponential backoff base of 2 seconds (retries will be sent after 1, 2, 4, 8 and 16 seconds).

If the request is not acknowledged with a 2XX HTTP code within those attempts, the webhook will not be sent again.

If your system is receiving an excess of webhook request which it can not handle at a specific time, it can start responding with a 503 HTTP response code. By doing so, the rate at which webhooks are sent will be temporarily slowed down, allowing your system to process them.