Optional analytics on public pages. No session recording. Support works either way. Privacy details
API reference
Catch up on everything sent to webhooks.
/eventsEvery event for the key's environment, newest first, kept 30 days. Use it to catch up after receiver downtime.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
| type | query | string | No | One event type or a comma-separated list. |
| createdAfter | query | string | No | ISO 8601, inclusive. |
| createdBefore | query | string | No | ISO 8601, exclusive. |
| limit | query | integer | No · 50 | 1–100. |
| cursor | query | string | No | nextCursor from the previous page. |
const response = await fetch(`${process.env.BOSPAY_API_BASE}/events?type=invoice.paid&createdAfter=2026-09-23T00:00:00Z&limit=50`, {
method: "GET",
headers: {
"Content-Type": "application/json",
"BOSPay-Version": "2026-09-23",
"X-API-Key": process.env.BOSPAY_API_KEY,
}
});
if (!response.ok) {
throw new Error(`BOSPay request failed: ${response.status}`);
}
const data = await response.json();Success
{
"object": "list",
"data": [
{
"id": "evt_7Qx2mK9pL4sT8vW1yZ3aB6cD",
"object": "event",
"type": "invoice.paid"
}
],
"hasMore": false,
"nextCursor": null
}Validation error
{
"error": {
"type": "invalid_request_error",
"code": "validation_error",
"message": "A valid fiatAmount is required.",
"field": "fiatAmount",
"requestId": "req_3f0c9a1b2c4d5e6f7a8b9c0d"
}
}