REST API

Webhook Endpoints API

Create, list, and manage webhook endpoint configurations programmatically. Requires the release_webhooks feature flag.

Overview#

Webhook endpoints define where Zazu sends outbound event notifications. For payload formats, signing, retries, and event semantics, see the Webhooks guide.

Required scopes#

EndpointScope
List / Get webhook endpointswebhook_endpoints:read
Create / Update / Delete webhook endpointswebhook_endpoints:write
Enable / Disable / Test / Regenerate secretwebhook_endpoints:write

Webhook endpoint object#

FieldTypeDescription
idstringUnique identifier (UUIDv7)
urlstringHTTPS destination URL
descriptionstringOptional internal label
eventsarrayEvent types this endpoint subscribes to
statusstringactive or disabled
disabled_atstringISO 8601 timestamp when disabled, or null
last_succeeded_atstringISO 8601 timestamp of the last successful delivery, or null
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp
signing_secret is shown once
The signing_secret is returned only when creating an endpoint or regenerating the secret. Store it immediately — it is never returned by list, get, update, enable, disable, or test responses.

List webhook endpoints#

GET /api/webhook_endpoints

Supports cursor pagination (cursor, limit 1–100, default 25).

request.sh
curl "https://zazu.africa/api/webhook_endpoints" \
  -H "Authorization: Bearer sk_live_..."
zazu
zazu webhook-endpoints list
app.js
import { Zazu } from "@getzazu/sdk";
const zazu = new Zazu({ apiKey: process.env.ZAZU_API_KEY });

await zazu.webhookEndpoints.list();
app.rb
require "zazu"
zazu = Zazu.new(api_key: ENV["ZAZU_API_KEY"])

zazu.webhook_endpoints.list
app.py
from zazu_sdk import Zazu
client = Zazu(api_key="sk_live_...")

client.webhook_endpoints.list()
main.go
import zazu "github.com/getzazu/zazu-go"

client, _ := zazu.New(zazu.WithAPIKey(os.Getenv("ZAZU_API_KEY")))

page, err := client.WebhookEndpoints.List(ctx, zazu.ListParams{})
main.rs
let client = zazu_sdk::Client::builder()
    .api_key(std::env::var("ZAZU_API_KEY")?)
    .build()?;

let page = client.webhook_endpoints().list(Default::default())?;
app.exs
{:ok, client} = Zazu.new(api_key: System.fetch_env!("ZAZU_API_KEY"))

{:ok, page} = Zazu.WebhookEndpoints.list(client)
app.cr
require "zazu"

client = Zazu::Client.new # reads ZAZU_API_KEY

page = client.webhook_endpoints.list
app.php
use Zazu\Client;

$client = new Client(apiKey: getenv('ZAZU_API_KEY'));

$page = $client->webhookEndpoints->list();
response.json
{
  "data": [
    {
      "id": "019dde72-02ed-7a23-aaca-98c40c48e6b6",
      "url": "https://example.com/webhooks/zazu",
      "description": "Production",
      "events": ["payment_link.paid", "transfer.executed"],
      "status": "active",
      "disabled_at": null,
      "last_succeeded_at": "2026-04-30T11:14:00Z",
      "created_at": "2026-04-30T10:30:00Z",
      "updated_at": "2026-04-30T10:30:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Create webhook endpoint#

POST /api/webhook_endpoints

Required: url (must be HTTPS; private, loopback, and link-local IPs are rejected) and events (must contain supported subscribable events). A signing secret is generated automatically and returned once.

request.sh
curl -X POST "https://zazu.africa/api/webhook_endpoints" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://example.com/webhooks/zazu",
  "description": "Production",
  "events": ["payment_link.paid", "transfer.executed"]
}'
zazu
zazu webhook-endpoints create --url https://example.com/webhooks/zazu --event payment_link.paid --event transfer.executed
app.js
import { Zazu } from "@getzazu/sdk";
const zazu = new Zazu({ apiKey: process.env.ZAZU_API_KEY });

await zazu.webhookEndpoints.create({
  url: "https://example.com/webhooks/zazu",
  events: ["payment_link.paid", "transfer.executed"],
});
app.rb
require "zazu"
zazu = Zazu.new(api_key: ENV["ZAZU_API_KEY"])

zazu.webhook_endpoints.create(
  url: "https://example.com/webhooks/zazu",
  events: ["payment_link.paid", "transfer.executed"],
)
app.py
from zazu_sdk import Zazu
client = Zazu(api_key="sk_live_...")

client.webhook_endpoints.create(
    url="https://example.com/webhooks/zazu",
    events=["payment_link.paid", "transfer.executed"],
)
main.go
import zazu "github.com/getzazu/zazu-go"

client, _ := zazu.New(zazu.WithAPIKey(os.Getenv("ZAZU_API_KEY")))

endpoint, err := client.WebhookEndpoints.Create(ctx, zazu.Attributes{
    "url":    "https://example.com/webhooks/zazu",
    "events": []string{"payment_link.paid", "transfer.executed"},
})
main.rs
let client = zazu_sdk::Client::builder()
    .api_key(std::env::var("ZAZU_API_KEY")?)
    .build()?;

let endpoint = client.webhook_endpoints().create(&serde_json::json!({
    "url": "https://example.com/webhooks/zazu",
    "events": ["payment_link.paid", "transfer.executed"],
}))?;
app.exs
{:ok, client} = Zazu.new(api_key: System.fetch_env!("ZAZU_API_KEY"))

{:ok, endpoint} =
  Zazu.WebhookEndpoints.create(client, %{
    "url" => "https://example.com/webhooks/zazu",
    "events" => ["payment_link.paid", "transfer.executed"]
  })
app.cr
require "zazu"

client = Zazu::Client.new # reads ZAZU_API_KEY

endpoint = client.webhook_endpoints.create(
  url: "https://example.com/webhooks/zazu",
  events: ["payment_link.paid", "transfer.executed"]
)
app.php
use Zazu\Client;

$client = new Client(apiKey: getenv('ZAZU_API_KEY'));

$endpoint = $client->webhookEndpoints->create([
    'url' => 'https://example.com/webhooks/zazu',
    'events' => ['payment_link.paid', 'transfer.executed'],
]);
created.json
{
  "id": "019dde72-02ed-7a23-aaca-98c40c48e6b6",
  "url": "https://example.com/webhooks/zazu",
  "description": "Production",
  "events": ["payment_link.paid", "transfer.executed"],
  "status": "active",
  "disabled_at": null,
  "last_succeeded_at": null,
  "created_at": "2026-04-30T10:30:00Z",
  "updated_at": "2026-04-30T10:30:00Z",
  "signing_secret": "whsec_..."
}
Copy the signing secret now
The signing_secret (a random whsec_ value) is shown only once in this response. Use it to verify webhook signatures — see the Webhooks guide.

Get webhook endpoint#

GET /api/webhook_endpoints/:id

Returns the webhook endpoint object without signing_secret.

request.sh
curl "https://zazu.africa/api/webhook_endpoints/019dde72-02ed-7a23-aaca-98c40c48e6b6" \
  -H "Authorization: Bearer sk_live_..."
zazu
zazu webhook-endpoints get 019dde72-02ed-7a23-aaca-98c40c48e6b6
app.js
import { Zazu } from "@getzazu/sdk";
const zazu = new Zazu({ apiKey: process.env.ZAZU_API_KEY });

await zazu.webhookEndpoints.retrieve("019dde72-02ed-7a23-aaca-98c40c48e6b6");
app.rb
require "zazu"
zazu = Zazu.new(api_key: ENV["ZAZU_API_KEY"])

zazu.webhook_endpoints.get("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.py
from zazu_sdk import Zazu
client = Zazu(api_key="sk_live_...")

client.webhook_endpoints.retrieve("019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.go
import zazu "github.com/getzazu/zazu-go"

client, _ := zazu.New(zazu.WithAPIKey(os.Getenv("ZAZU_API_KEY")))

endpoint, err := client.WebhookEndpoints.Get(ctx, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.rs
let client = zazu_sdk::Client::builder()
    .api_key(std::env::var("ZAZU_API_KEY")?)
    .build()?;

let endpoint = client.webhook_endpoints().get("019dde72-02ed-7a23-aaca-98c40c48e6b6")?;
app.exs
{:ok, client} = Zazu.new(api_key: System.fetch_env!("ZAZU_API_KEY"))

{:ok, endpoint} = Zazu.WebhookEndpoints.get(client, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.cr
require "zazu"

client = Zazu::Client.new # reads ZAZU_API_KEY

endpoint = client.webhook_endpoints.get("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.php
use Zazu\Client;

$client = new Client(apiKey: getenv('ZAZU_API_KEY'));

$endpoint = $client->webhookEndpoints->get('019dde72-02ed-7a23-aaca-98c40c48e6b6');

Update webhook endpoint#

PATCH /api/webhook_endpoints/:id

Update the destination url, description, or subscribed events. Returns the updated object without signing_secret.

request.sh
curl -X PATCH "https://zazu.africa/api/webhook_endpoints/019dde72-02ed-7a23-aaca-98c40c48e6b6" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://example.com/webhooks/zazu-v2",
  "description": "Production v2",
  "events": ["payment_link.paid"]
}'
zazu
zazu webhook-endpoints update 019dde72-02ed-7a23-aaca-98c40c48e6b6 --url https://example.com/webhooks/zazu-v2 --event payment_link.paid
app.js
import { Zazu } from "@getzazu/sdk";
const zazu = new Zazu({ apiKey: process.env.ZAZU_API_KEY });

await zazu.webhookEndpoints.update("019dde72-02ed-7a23-aaca-98c40c48e6b6", {
  url: "https://example.com/webhooks/zazu-v2",
  events: ["payment_link.paid"],
});
app.rb
require "zazu"
zazu = Zazu.new(api_key: ENV["ZAZU_API_KEY"])

zazu.webhook_endpoints.update("019dde72-02ed-7a23-aaca-98c40c48e6b6",
  url: "https://example.com/webhooks/zazu-v2",
  events: ["payment_link.paid"],
)
app.py
from zazu_sdk import Zazu
client = Zazu(api_key="sk_live_...")

client.webhook_endpoints.update("019dde72-02ed-7a23-aaca-98c40c48e6b6",
    url="https://example.com/webhooks/zazu-v2",
    events=["payment_link.paid"],
)
main.go
import zazu "github.com/getzazu/zazu-go"

client, _ := zazu.New(zazu.WithAPIKey(os.Getenv("ZAZU_API_KEY")))

endpoint, err := client.WebhookEndpoints.Update(ctx, "019dde72-02ed-7a23-aaca-98c40c48e6b6", zazu.Attributes{
    "url":    "https://example.com/webhooks/zazu-v2",
    "events": []string{"payment_link.paid"},
})
main.rs
let client = zazu_sdk::Client::builder()
    .api_key(std::env::var("ZAZU_API_KEY")?)
    .build()?;

let endpoint = client.webhook_endpoints().update("019dde72-02ed-7a23-aaca-98c40c48e6b6", &serde_json::json!({
    "url": "https://example.com/webhooks/zazu-v2",
    "events": ["payment_link.paid"],
}))?;
app.exs
{:ok, client} = Zazu.new(api_key: System.fetch_env!("ZAZU_API_KEY"))

{:ok, endpoint} =
  Zazu.WebhookEndpoints.update(client, "019dde72-02ed-7a23-aaca-98c40c48e6b6", %{
    "url" => "https://example.com/webhooks/zazu-v2",
    "events" => ["payment_link.paid"]
  })
app.cr
require "zazu"

client = Zazu::Client.new # reads ZAZU_API_KEY

endpoint = client.webhook_endpoints.update("019dde72-02ed-7a23-aaca-98c40c48e6b6",
  url: "https://example.com/webhooks/zazu-v2",
  events: ["payment_link.paid"]
)
app.php
use Zazu\Client;

$client = new Client(apiKey: getenv('ZAZU_API_KEY'));

$endpoint = $client->webhookEndpoints->update('019dde72-02ed-7a23-aaca-98c40c48e6b6', [
    'url' => 'https://example.com/webhooks/zazu-v2',
    'events' => ['payment_link.paid'],
]);

Disable webhook endpoint#

POST /api/webhook_endpoints/:id/disable

Disables delivery to the endpoint (returns the object with status: "disabled"). Existing delivery logs remain available in the dashboard.

request.sh
curl -X POST "https://zazu.africa/api/webhook_endpoints/019dde72-02ed-7a23-aaca-98c40c48e6b6/disable" \
  -H "Authorization: Bearer sk_live_..."
zazu
zazu webhook-endpoints disable 019dde72-02ed-7a23-aaca-98c40c48e6b6
app.js
import { Zazu } from "@getzazu/sdk";
const zazu = new Zazu({ apiKey: process.env.ZAZU_API_KEY });

await zazu.webhookEndpoints.disable("019dde72-02ed-7a23-aaca-98c40c48e6b6");
app.rb
require "zazu"
zazu = Zazu.new(api_key: ENV["ZAZU_API_KEY"])

zazu.webhook_endpoints.disable("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.py
from zazu_sdk import Zazu
client = Zazu(api_key="sk_live_...")

client.webhook_endpoints.disable("019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.go
import zazu "github.com/getzazu/zazu-go"

client, _ := zazu.New(zazu.WithAPIKey(os.Getenv("ZAZU_API_KEY")))

endpoint, err := client.WebhookEndpoints.Disable(ctx, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.rs
let client = zazu_sdk::Client::builder()
    .api_key(std::env::var("ZAZU_API_KEY")?)
    .build()?;

let endpoint = client.webhook_endpoints().disable("019dde72-02ed-7a23-aaca-98c40c48e6b6")?;
app.exs
{:ok, client} = Zazu.new(api_key: System.fetch_env!("ZAZU_API_KEY"))

{:ok, endpoint} = Zazu.WebhookEndpoints.disable(client, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.cr
require "zazu"

client = Zazu::Client.new # reads ZAZU_API_KEY

endpoint = client.webhook_endpoints.disable("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.php
use Zazu\Client;

$client = new Client(apiKey: getenv('ZAZU_API_KEY'));

$endpoint = $client->webhookEndpoints->disable('019dde72-02ed-7a23-aaca-98c40c48e6b6');

Enable webhook endpoint#

POST /api/webhook_endpoints/:id/enable

Re-enables delivery (returns the object with status: "active") and clears any in-progress failure window.

request.sh
curl -X POST "https://zazu.africa/api/webhook_endpoints/019dde72-02ed-7a23-aaca-98c40c48e6b6/enable" \
  -H "Authorization: Bearer sk_live_..."
zazu
zazu webhook-endpoints enable 019dde72-02ed-7a23-aaca-98c40c48e6b6
app.js
import { Zazu } from "@getzazu/sdk";
const zazu = new Zazu({ apiKey: process.env.ZAZU_API_KEY });

await zazu.webhookEndpoints.enable("019dde72-02ed-7a23-aaca-98c40c48e6b6");
app.rb
require "zazu"
zazu = Zazu.new(api_key: ENV["ZAZU_API_KEY"])

zazu.webhook_endpoints.enable("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.py
from zazu_sdk import Zazu
client = Zazu(api_key="sk_live_...")

client.webhook_endpoints.enable("019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.go
import zazu "github.com/getzazu/zazu-go"

client, _ := zazu.New(zazu.WithAPIKey(os.Getenv("ZAZU_API_KEY")))

endpoint, err := client.WebhookEndpoints.Enable(ctx, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.rs
let client = zazu_sdk::Client::builder()
    .api_key(std::env::var("ZAZU_API_KEY")?)
    .build()?;

let endpoint = client.webhook_endpoints().enable("019dde72-02ed-7a23-aaca-98c40c48e6b6")?;
app.exs
{:ok, client} = Zazu.new(api_key: System.fetch_env!("ZAZU_API_KEY"))

{:ok, endpoint} = Zazu.WebhookEndpoints.enable(client, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.cr
require "zazu"

client = Zazu::Client.new # reads ZAZU_API_KEY

endpoint = client.webhook_endpoints.enable("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.php
use Zazu\Client;

$client = new Client(apiKey: getenv('ZAZU_API_KEY'));

$endpoint = $client->webhookEndpoints->enable('019dde72-02ed-7a23-aaca-98c40c48e6b6');

Send test event#

POST /api/webhook_endpoints/:id/test

Queues a test.ping delivery to the endpoint. The endpoint must be active. Responds 202 Accepted.

request.sh
curl -X POST "https://zazu.africa/api/webhook_endpoints/019dde72-02ed-7a23-aaca-98c40c48e6b6/test" \
  -H "Authorization: Bearer sk_live_..."
zazu
zazu webhook-endpoints test 019dde72-02ed-7a23-aaca-98c40c48e6b6
app.js
import { Zazu } from "@getzazu/sdk";
const zazu = new Zazu({ apiKey: process.env.ZAZU_API_KEY });

await zazu.webhookEndpoints.test("019dde72-02ed-7a23-aaca-98c40c48e6b6");
app.rb
require "zazu"
zazu = Zazu.new(api_key: ENV["ZAZU_API_KEY"])

zazu.webhook_endpoints.test_endpoint("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.py
from zazu_sdk import Zazu
client = Zazu(api_key="sk_live_...")

client.webhook_endpoints.test("019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.go
import zazu "github.com/getzazu/zazu-go"

client, _ := zazu.New(zazu.WithAPIKey(os.Getenv("ZAZU_API_KEY")))

result, err := client.WebhookEndpoints.Test(ctx, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.rs
let client = zazu_sdk::Client::builder()
    .api_key(std::env::var("ZAZU_API_KEY")?)
    .build()?;

let result = client.webhook_endpoints().test("019dde72-02ed-7a23-aaca-98c40c48e6b6")?;
app.exs
{:ok, client} = Zazu.new(api_key: System.fetch_env!("ZAZU_API_KEY"))

{:ok, result} = Zazu.WebhookEndpoints.test(client, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.cr
require "zazu"

client = Zazu::Client.new # reads ZAZU_API_KEY

result = client.webhook_endpoints.test("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.php
use Zazu\Client;

$client = new Client(apiKey: getenv('ZAZU_API_KEY'));

$result = $client->webhookEndpoints->test('019dde72-02ed-7a23-aaca-98c40c48e6b6');
test.json
{
  "delivery_id": "019dde72-0538-7795-a0b2-48c7097e9827",
  "status": "queued"
}

Regenerate signing secret#

POST /api/webhook_endpoints/:id/regenerate_secret

Rotates the endpoint signing secret and returns the new value (the object includes signing_secret). Requests sent after rotation are signed with the new secret.

request.sh
curl -X POST "https://zazu.africa/api/webhook_endpoints/019dde72-02ed-7a23-aaca-98c40c48e6b6/regenerate_secret" \
  -H "Authorization: Bearer sk_live_..."
zazu
zazu webhook-endpoints regenerate-secret 019dde72-02ed-7a23-aaca-98c40c48e6b6
app.js
import { Zazu } from "@getzazu/sdk";
const zazu = new Zazu({ apiKey: process.env.ZAZU_API_KEY });

await zazu.webhookEndpoints.regenerateSecret("019dde72-02ed-7a23-aaca-98c40c48e6b6");
app.rb
require "zazu"
zazu = Zazu.new(api_key: ENV["ZAZU_API_KEY"])

zazu.webhook_endpoints.regenerate_secret("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.py
from zazu_sdk import Zazu
client = Zazu(api_key="sk_live_...")

client.webhook_endpoints.regenerate_secret("019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.go
import zazu "github.com/getzazu/zazu-go"

client, _ := zazu.New(zazu.WithAPIKey(os.Getenv("ZAZU_API_KEY")))

endpoint, err := client.WebhookEndpoints.RegenerateSecret(ctx, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.rs
let client = zazu_sdk::Client::builder()
    .api_key(std::env::var("ZAZU_API_KEY")?)
    .build()?;

let endpoint = client.webhook_endpoints().regenerate_secret("019dde72-02ed-7a23-aaca-98c40c48e6b6")?;
app.exs
{:ok, client} = Zazu.new(api_key: System.fetch_env!("ZAZU_API_KEY"))

{:ok, endpoint} = Zazu.WebhookEndpoints.regenerate_secret(client, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.cr
require "zazu"

client = Zazu::Client.new # reads ZAZU_API_KEY

endpoint = client.webhook_endpoints.regenerate_secret("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.php
use Zazu\Client;

$client = new Client(apiKey: getenv('ZAZU_API_KEY'));

$endpoint = $client->webhookEndpoints->regenerateSecret('019dde72-02ed-7a23-aaca-98c40c48e6b6');

Delete webhook endpoint#

DELETE /api/webhook_endpoints/:id

Deletes the endpoint and its delivery records. Responds 204 No Content.

request.sh
curl -X DELETE "https://zazu.africa/api/webhook_endpoints/019dde72-02ed-7a23-aaca-98c40c48e6b6" \
  -H "Authorization: Bearer sk_live_..."
zazu
zazu webhook-endpoints delete 019dde72-02ed-7a23-aaca-98c40c48e6b6
app.js
import { Zazu } from "@getzazu/sdk";
const zazu = new Zazu({ apiKey: process.env.ZAZU_API_KEY });

await zazu.webhookEndpoints.del("019dde72-02ed-7a23-aaca-98c40c48e6b6");
app.rb
require "zazu"
zazu = Zazu.new(api_key: ENV["ZAZU_API_KEY"])

zazu.webhook_endpoints.delete("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.py
from zazu_sdk import Zazu
client = Zazu(api_key="sk_live_...")

client.webhook_endpoints.delete("019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.go
import zazu "github.com/getzazu/zazu-go"

client, _ := zazu.New(zazu.WithAPIKey(os.Getenv("ZAZU_API_KEY")))

_, err := client.WebhookEndpoints.Delete(ctx, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
main.rs
let client = zazu_sdk::Client::builder()
    .api_key(std::env::var("ZAZU_API_KEY")?)
    .build()?;

client.webhook_endpoints().delete("019dde72-02ed-7a23-aaca-98c40c48e6b6")?;
app.exs
{:ok, client} = Zazu.new(api_key: System.fetch_env!("ZAZU_API_KEY"))

{:ok, _} = Zazu.WebhookEndpoints.delete(client, "019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.cr
require "zazu"

client = Zazu::Client.new # reads ZAZU_API_KEY

client.webhook_endpoints.delete("019dde72-02ed-7a23-aaca-98c40c48e6b6")
app.php
use Zazu\Client;

$client = new Client(apiKey: getenv('ZAZU_API_KEY'));

$client->webhookEndpoints->delete('019dde72-02ed-7a23-aaca-98c40c48e6b6');

Supported events#

EventTrigger
checkout_session.completedFires when a checkout session receives a confirmed payment
checkout_session.settledFires when the provider settles a checkout session payment
payment_link.paidFires when a payment link receives a payment
payment_link.payment_settledFires when the provider settles a payment link payment
transfer.executedFires when an outgoing transfer is executed

The test.ping event can be sent with the test endpoint, but it is not a subscribable event.

Error responses#

ScenarioStatusTypeParam
Missing or invalid API key401authentication_error
Missing required scope403insufficient_scope
Webhooks not enabled403forbidden_error
Endpoint not found404not_found_error
Non-HTTPS URL422validation_errorurl
Private IP URL422validation_errorurl
Unknown event name422validation_errorevents
Test disabled endpoint422state_error