List webhook events
curl --request GET \
--url https://api.bachs.io/v1/webhooks/eventsconst options = {method: 'GET'};
fetch('https://api.bachs.io/v1/webhooks/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.bachs.io/v1/webhooks/events"
response = requests.get(url)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bachs.io/v1/webhooks/events"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"items": [
{
"event_id": "evt_5d50b401e3e47948235c374ae57b8807",
"event_type": "customer.created",
"entity_type": "customer",
"entity_id": "cust_9ae63038729d2d6b793423bdbc27c19a",
"created_at": "2026-03-09T10:00:00.000Z",
"account": "acct_MxIFSNnNbZ1N4jaP",
"attempts": 2,
"success": 1,
"failed": 1,
"last_attempt_status": "succeeded",
"last_attempt_http_status": 200,
"last_attempt_error": null,
"last_attempt_at": "2026-03-09T10:02:41.000Z"
},
{
"event_id": "evt_2a960a1d977989742bbdceee5c7cc398",
"event_type": "checkout.completed",
"entity_type": "checkout",
"entity_id": "9d7c1f0b-4a52-4f0e-9d3b-6b8e2c11a4f7",
"created_at": "2026-03-09T09:41:07.000Z",
"account": "acct_MxIFSNnNbZ1N4jaP",
"attempts": 1,
"success": 0,
"failed": 1,
"last_attempt_status": "failed",
"last_attempt_http_status": null,
"last_attempt_error": "Connection timed out after 10s",
"last_attempt_at": "2026-03-09T09:41:18.000Z"
}
],
"total": 2,
"limit": 50,
"offset": 0
}{
"detail": "Invalid API key",
"error_code": "UNAUTHORIZED"
}{
"detail": "API key does not have permission for this operation",
"error_code": "FORBIDDEN"
}{
"detail": "Rate limit exceeded. Please retry after a few seconds.",
"error_code": "TOO_MANY_REQUESTS"
}Endpoint API
List webhook events
List all webhook events for your account, across every endpoint. Requires the webhooks:read scope.
GET
/
v1
/
webhooks
/
events
List webhook events
curl --request GET \
--url https://api.bachs.io/v1/webhooks/eventsconst options = {method: 'GET'};
fetch('https://api.bachs.io/v1/webhooks/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.bachs.io/v1/webhooks/events"
response = requests.get(url)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bachs.io/v1/webhooks/events"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"items": [
{
"event_id": "evt_5d50b401e3e47948235c374ae57b8807",
"event_type": "customer.created",
"entity_type": "customer",
"entity_id": "cust_9ae63038729d2d6b793423bdbc27c19a",
"created_at": "2026-03-09T10:00:00.000Z",
"account": "acct_MxIFSNnNbZ1N4jaP",
"attempts": 2,
"success": 1,
"failed": 1,
"last_attempt_status": "succeeded",
"last_attempt_http_status": 200,
"last_attempt_error": null,
"last_attempt_at": "2026-03-09T10:02:41.000Z"
},
{
"event_id": "evt_2a960a1d977989742bbdceee5c7cc398",
"event_type": "checkout.completed",
"entity_type": "checkout",
"entity_id": "9d7c1f0b-4a52-4f0e-9d3b-6b8e2c11a4f7",
"created_at": "2026-03-09T09:41:07.000Z",
"account": "acct_MxIFSNnNbZ1N4jaP",
"attempts": 1,
"success": 0,
"failed": 1,
"last_attempt_status": "failed",
"last_attempt_http_status": null,
"last_attempt_error": "Connection timed out after 10s",
"last_attempt_at": "2026-03-09T09:41:18.000Z"
}
],
"total": 2,
"limit": 50,
"offset": 0
}{
"detail": "Invalid API key",
"error_code": "UNAUTHORIZED"
}{
"detail": "API key does not have permission for this operation",
"error_code": "FORBIDDEN"
}{
"detail": "Rate limit exceeded. Please retry after a few seconds.",
"error_code": "TOO_MANY_REQUESTS"
}Query Parameters
Maximum results to return (1–100, default 50).
Required range:
1 <= x <= 100Number of results to skip.
Required range:
x >= 0Response
Your webhook events.
A paginated list of webhook events.
How many events exist across your account and the accounts you own, ignoring limit and offset. Use it to decide whether another page is worth requesting.
Example:
2
The page size actually applied, which is clamped to between 1 and 100 whatever you request.
Example:
50
How many events were skipped before this page. Add limit to it to request the next page.
Example:
0

