PayKunda API (2026-08-06)

Download OpenAPI specification:

Introduction

PayKunda is API infrastructure for emerging markets. One integration lets you send money to mobile money wallets, bank accounts and cash pickup points, and sell airtime, data bundles and prepaid electricity.

The API is organised around REST. It has predictable resource-oriented URLs, accepts and returns JSON, and uses standard HTTP response codes and verbs.

Base URL

https://api.paykunda.com/v3

Authentication

Authenticate with your secret API key in the Authorization header:

curl https://api.paykunda.com/v3/balances \
  -H "Authorization: Bearer sk_live_9fL2mQz8Kx7Yw3kQ2"
  • sk_test_… keys hit the sandbox — identical behaviour, simulated settlement.
  • sk_live_… keys move real money.
  • Keys are created and managed in the PayKunda dashboard — not via the API. There you can restrict a key by IP address / CIDR range and by scope (e.g. payouts:write), set an expiry, roll it, or revoke it instantly.
  • Keep keys secret. They are shown once at creation and stored hashed.

Amounts

All amounts are decimal strings in the major units of an ISO-4217 currency — {"amount": "1500.00", "currency": "NGN"} is ₦1,500.00. Amounts are strings (never JSON floats) to avoid floating-point rounding errors; include two decimal places, e.g. "100.00".

Idempotency

Pass an Idempotency-Key header (any unique string, e.g. a UUID) on every POST. Retrying with the same key returns the original response instead of performing the action twice — a network timeout can never double-send money.

curl https://api.paykunda.com/v3/payouts \
  -H "Authorization: Bearer sk_live_…" \
  -H "Idempotency-Key: 0b7c9d4e-1f2a-4b3c-8d5e-6f7a8b9c0d1e" \
  -d '{...}'

Errors

PayKunda returns a consistent error envelope. The code is machine-readable and stable; message is for humans; param names the offending field.

{
  "error": {
    "type": "invalid_request_error",
    "code": "amount_below_minimum",
    "message": "Amount must be at least NGN 100.00.",
    "param": "amount",
    "doc_url": "https://docs.paykunda.com/errors#amount_below_minimum",
    "request_id": "req_7Hs92kL"
  }
}
Status Type Meaning
400 invalid_request_error Malformed or invalid parameters
401 authentication_error Bad key, revoked key, or IP not allowed
402 insufficient_funds_error Balance too low for the operation
403 permission_error Key lacks the required scope
404 invalid_request_error Resource does not exist
409 idempotency_error Same idempotency key, different payload
429 rate_limit_error Too many requests — honour Retry-After
5xx api_error Something failed on our side — safe to retry with the same idempotency key

Pagination

All list endpoints are cursor-paginated:

GET /v3/payouts?limit=25&starting_after=po_9Ks82mQz

Responses have the shape {"object": "list", "data": [...], "has_more": true}.

Webhooks

Register webhook endpoints to receive events (payout.paid, electricity_token.delivered, …). Every delivery is signed:

Webhook-Signature: t=1754901120,v1=5257a869e7…

v1 = HMAC_SHA256(signing_secret, t + "." + raw_body). Reject deliveries where |now - t| > 5 minutes. As a financial best practice, treat webhooks as notifications — confirm by fetching the resource by id.

Balances

Your available and pending balances per currency.

List balances

Authorizations:
secretKey

Responses

Response Schema: application/json
object
string
Value: "list"
has_more
boolean
Array of objects (Balance)

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    • {
      },
    • {
      }
    ],
  • "has_more": false
}

Payouts

Send money to mobile money wallets, bank accounts, or cash pickup points. Creating a payout debits your wallet for the amount plus fee immediately.

A payout moves through a simple lifecycle:

pending → processing → paid — or failed (funds are returned to your wallet; a payout is never left in limbo).

Create a payout

Debits your wallet for amount plus the fee and sends the money to the given destination. By default the wallet matching currency is debited; pass wallet (ids from GET /balances) to debit a specific wallet/account. A 402 insufficient_funds error is returned if the balance cannot cover amount + fee. Always pass an Idempotency-Key header.

The recipient is described by destination.holder (name, contact, address) plus the account details for the destination type. The sender carries the originator's compliance details — some corridors additionally require purpose, source_of_funds, or the sender's address and identity document (see GET /payout-providers).

Authorizations:
secretKey
header Parameters
Idempotency-Key
required
string
Example: 0b7c9d4e-1f2a-4b3c-8d5e-6f7a8b9c0d1e

Unique per logical request. Retries with the same key return the original response.

Request Body schema: application/json
required
amount
required
string

Decimal amount, e.g. "100.00". Debited from your wallet along with the fee.

currency
required
string

Must match a wallet balance you hold.

required
object (PayoutDestination)

For CASH_PICKUP no extra block is needed — the recipient collects with the withdrawal_code and the identity matching holder.name.

required
object (PayoutSender)

The originating party (compliance). address, contact, date_of_birth and identity_document are required in some corridors — see GET /payout-providers for what each corridor needs.

wallet
string

Optional — the wallet/account to debit (ids from GET /balances). When omitted, your wallet in currency is used. Must hold currency when given.

purpose
string
Enum: "goods_purchase" "services_payment" "invoice_payment" "loan_repayment" "bills_payment" "salary_and_wages" "p2p_transfer" "remittance" "donation" "travel_and_accommodation" "tax_payment" "insurance_premium"

Why the money is being sent. Required in some corridors.

source_of_funds
string
Enum: "salary" "business_income" "savings" "pension" "investment_income" "inheritance" "gift" "loan" "asset_sale" "government" "ngo" "other"

Where the money came from. Required in some corridors.

reference
string

Your reference; shown to the recipient where the corridor supports it.

object (Metadata)

Up to 40 of your own key–value pairs, echoed back verbatim.

Responses

Response Schema: application/json
id
string
object
string
Value: "payout"
status
string
Enum: "pending" "processing" "paid" "failed" "returned"

pending → processing → paid, or failed. returned when funds bounce after paid.

amount
string

Decimal amount.

currency
string
wallet
string

The wallet that was debited.

object

Debited from your wallet together with amount.

object (PayoutDestination)

For CASH_PICKUP no extra block is needed — the recipient collects with the withdrawal_code and the identity matching holder.name.

object (PayoutSender)

The originating party (compliance). address, contact, date_of_birth and identity_document are required in some corridors — see GET /payout-providers for what each corridor needs.

purpose
string or null
source_of_funds
string or null
reference
string
withdrawal_code
string or null

Cash pickup only — the code the recipient presents at the till.

object or null
estimated_delivery
string or null <date-time>
object (Metadata)

Up to 40 of your own key–value pairs, echoed back verbatim.

created_at
string <date-time>

Request samples

Content type
application/json
Example
{
  • "amount": "500000.00",
  • "currency": "NGN",
  • "destination": {
    • "type": "MOBILE_MONEY",
    • "country": "NG",
    • "holder": {
      },
    • "mobile_money": {
      }
    },
  • "sender": {
    • "type": "individual",
    • "name": "Pa Essa Jabang",
    • "country": "GB",
    • "address": {
      },
    • "contact": {
      },
    • "date_of_birth": "1988-04-12",
    • "identity_document": {
      }
    },
  • "purpose": "remittance",
  • "source_of_funds": "salary",
  • "reference": "INV-2031",
  • "metadata": {
    • "order_id": "9912"
    }
}

Response samples

Content type
application/json
{
  • "id": "po_9Ks82mQz",
  • "object": "payout",
  • "status": "pending",
  • "amount": "500000.00",
  • "currency": "NGN",
  • "wallet": "wal_9Xk20aQ",
  • "fee": {
    • "amount": "2500.00",
    • "currency": "NGN"
    },
  • "destination": {
    • "type": "MOBILE_MONEY",
    • "country": "NG",
    • "holder": {
      },
    • "mobile_money": {
      },
    • "bank_account": {
      }
    },
  • "sender": {
    • "type": "individual",
    • "name": "Pa Essa Jabang",
    • "country": "GB",
    • "address": {
      },
    • "contact": {
      },
    • "date_of_birth": "1988-04-12",
    • "identity_document": {
      },
    • "business_registration": {
      }
    },
  • "purpose": "remittance",
  • "source_of_funds": "salary",
  • "reference": "INV-2031",
  • "withdrawal_code": "PK-4829-1173",
  • "failure": {
    • "code": "recipient_account_blocked",
    • "message": "string"
    },
  • "estimated_delivery": "2019-08-24T14:15:22Z",
  • "metadata": {
    • "order_id": "9912"
    },
  • "created_at": "2019-08-24T14:15:22Z"
}

List payouts

Authorizations:
secretKey
query Parameters
limit
integer [ 1 .. 100 ]
Default: 25
starting_after
string

Cursor — the id of the last item on the previous page.

status
string
Enum: "pending" "processing" "paid" "failed" "returned"
destination_type
string
Enum: "MOBILE_MONEY" "BANK" "CASH_PICKUP"

Responses

Response Schema: application/json
object
string
Value: "list"
has_more
boolean
Array of objects (Payout)

Response samples

Content type
application/json
{
  • "object": "list",
  • "has_more": true,
  • "data": [
    • {
      }
    ]
}

Retrieve a payout

Authorizations:
secretKey
path Parameters
payout_id
required
string
Example: po_9Ks82mQz

Responses

Response Schema: application/json
id
string
object
string
Value: "payout"
status
string
Enum: "pending" "processing" "paid" "failed" "returned"

pending → processing → paid, or failed. returned when funds bounce after paid.

amount
string

Decimal amount.

currency
string
wallet
string

The wallet that was debited.

object

Debited from your wallet together with amount.

object (PayoutDestination)

For CASH_PICKUP no extra block is needed — the recipient collects with the withdrawal_code and the identity matching holder.name.

object (PayoutSender)

The originating party (compliance). address, contact, date_of_birth and identity_document are required in some corridors — see GET /payout-providers for what each corridor needs.

purpose
string or null
source_of_funds
string or null
reference
string
withdrawal_code
string or null

Cash pickup only — the code the recipient presents at the till.

object or null
estimated_delivery
string or null <date-time>
object (Metadata)

Up to 40 of your own key–value pairs, echoed back verbatim.

created_at
string <date-time>

Response samples

Content type
application/json
{
  • "id": "po_9Ks82mQz",
  • "object": "payout",
  • "status": "pending",
  • "amount": "500000.00",
  • "currency": "NGN",
  • "wallet": "wal_9Xk20aQ",
  • "fee": {
    • "amount": "2500.00",
    • "currency": "NGN"
    },
  • "destination": {
    • "type": "MOBILE_MONEY",
    • "country": "NG",
    • "holder": {
      },
    • "mobile_money": {
      },
    • "bank_account": {
      }
    },
  • "sender": {
    • "type": "individual",
    • "name": "Pa Essa Jabang",
    • "country": "GB",
    • "address": {
      },
    • "contact": {
      },
    • "date_of_birth": "1988-04-12",
    • "identity_document": {
      },
    • "business_registration": {
      }
    },
  • "purpose": "remittance",
  • "source_of_funds": "salary",
  • "reference": "INV-2031",
  • "withdrawal_code": "PK-4829-1173",
  • "failure": {
    • "code": "recipient_account_blocked",
    • "message": "string"
    },
  • "estimated_delivery": "2019-08-24T14:15:22Z",
  • "metadata": {
    • "order_id": "9912"
    },
  • "created_at": "2019-08-24T14:15:22Z"
}

Cancel a payout

Only possible while status is pending. Funds are released back to your balance.

Authorizations:
secretKey
path Parameters
payout_id
required
string

Responses

Response Schema: application/json
id
string
object
string
Value: "payout"
status
string
Enum: "pending" "processing" "paid" "failed" "returned"

pending → processing → paid, or failed. returned when funds bounce after paid.

amount
string

Decimal amount.

currency
string
wallet
string

The wallet that was debited.

object

Debited from your wallet together with amount.

object (PayoutDestination)

For CASH_PICKUP no extra block is needed — the recipient collects with the withdrawal_code and the identity matching holder.name.

object (PayoutSender)

The originating party (compliance). address, contact, date_of_birth and identity_document are required in some corridors — see GET /payout-providers for what each corridor needs.

purpose
string or null
source_of_funds
string or null
reference
string
withdrawal_code
string or null

Cash pickup only — the code the recipient presents at the till.

object or null
estimated_delivery
string or null <date-time>
object (Metadata)

Up to 40 of your own key–value pairs, echoed back verbatim.

created_at
string <date-time>

Response samples

Content type
application/json
{
  • "id": "po_9Ks82mQz",
  • "object": "payout",
  • "status": "pending",
  • "amount": "500000.00",
  • "currency": "NGN",
  • "wallet": "wal_9Xk20aQ",
  • "fee": {
    • "amount": "2500.00",
    • "currency": "NGN"
    },
  • "destination": {
    • "type": "MOBILE_MONEY",
    • "country": "NG",
    • "holder": {
      },
    • "mobile_money": {
      },
    • "bank_account": {
      }
    },
  • "sender": {
    • "type": "individual",
    • "name": "Pa Essa Jabang",
    • "country": "GB",
    • "address": {
      },
    • "contact": {
      },
    • "date_of_birth": "1988-04-12",
    • "identity_document": {
      },
    • "business_registration": {
      }
    },
  • "purpose": "remittance",
  • "source_of_funds": "salary",
  • "reference": "INV-2031",
  • "withdrawal_code": "PK-4829-1173",
  • "failure": {
    • "code": "recipient_account_blocked",
    • "message": "string"
    },
  • "estimated_delivery": "2019-08-24T14:15:22Z",
  • "metadata": {
    • "order_id": "9912"
    },
  • "created_at": "2019-08-24T14:15:22Z"
}

Verify a payout account

Name-enquiry before sending — resolve a bank account or a mobile money wallet to its registered account holder, so you can confirm it belongs to the person you expect. Provide the block matching type.

Authorizations:
secretKey
Request Body schema: application/json
required
type
required
string
Enum: "BANK" "MOBILE_MONEY"
country
required
string

ISO 3166 alpha-2.

provider
required
string

Bank code (BANK) or mobile money provider (MOBILE_MONEY). From GET /payout-providers.

account_number
required
string

Bank account number (BANK) or msisdn (MOBILE_MONEY).

Responses

Request samples

Content type
application/json
Example
{
  • "type": "BANK",
  • "country": "NG",
  • "provider": "058",
  • "account_number": "0123456789"
}

Response samples

Content type
application/json
{
  • "object": "payout_account",
  • "type": "BANK",
  • "country": "NG",
  • "provider": "058",
  • "account_number": "0123456789",
  • "account_name": "EBRIMA SAIDY"
}

Payout Providers

Directory of supported providers, corridors and their limits.

List payout providers

Authorizations:
secretKey
query Parameters
country
string
Example: country=NG
type
string
Enum: "MOBILE_MONEY" "BANK" "CASH_PICKUP"

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    • {
      }
    ],
  • "has_more": false
}

Airtime

Top up any supported mobile number. Providers are auto-detected from the number.

Send an airtime top-up

The mobile network is auto-detected from the number. Pass an Idempotency-Key.

Authorizations:
secretKey
header Parameters
Idempotency-Key
required
string
Example: 0b7c9d4e-1f2a-4b3c-8d5e-6f7a8b9c0d1e

Unique per logical request. Retries with the same key return the original response.

Request Body schema: application/json
required
msisdn
required
string
amount
required
string

Decimal amount, e.g. "100.00".

currency
required
string
wallet
string

Optional — the wallet to debit. Defaults to your wallet in currency.

object (Metadata)

Up to 40 of your own key–value pairs, echoed back verbatim.

Responses

Response Schema: application/json
id
string
object
string
Value: "airtime_topup"
status
string
Enum: "processing" "delivered" "failed"
msisdn
string
provider
string
amount
string

Decimal amount.

currency
string
wallet
string

The wallet that was debited.

object (Metadata)

Up to 40 of your own key–value pairs, echoed back verbatim.

created_at
string <date-time>

Request samples

Content type
application/json
{
  • "msisdn": "+2207834567",
  • "amount": "100.00",
  • "currency": "GMD",
  • "wallet": "wal_3Km72dP",
  • "metadata": {
    • "order_id": "9912"
    }
}

Response samples

Content type
application/json
{
  • "id": "at_7Hs92k",
  • "object": "airtime_topup",
  • "status": "processing",
  • "msisdn": "+2207834567",
  • "provider": "africell_gm",
  • "amount": "100.00",
  • "currency": "GMD",
  • "wallet": "wal_3Km72dP",
  • "metadata": {
    • "order_id": "9912"
    },
  • "created_at": "2019-08-24T14:15:22Z"
}

List airtime top-ups

Authorizations:
secretKey
query Parameters
limit
integer [ 1 .. 100 ]
Default: 25
starting_after
string

Cursor — the id of the last item on the previous page.

Responses

Response Schema: application/json
object
string
Value: "list"
has_more
boolean
Array of objects (AirtimeTopup)

Response samples

Content type
application/json
{
  • "object": "list",
  • "has_more": true,
  • "data": [
    • {
      }
    ]
}

List airtime providers

Authorizations:
secretKey
query Parameters
country
string
Example: country=GM

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    • {
      }
    ],
  • "has_more": false
}

Data Bundles

List and purchase mobile data bundles.

List data bundles

Authorizations:
secretKey
query Parameters
country
string
Example: country=GM
msisdn
string
Example: msisdn=+2207834567

When given, bundles are filtered to the number's network.

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    • {
      }
    ],
  • "has_more": false
}

Purchase a data bundle

Authorizations:
secretKey
header Parameters
Idempotency-Key
required
string
Example: 0b7c9d4e-1f2a-4b3c-8d5e-6f7a8b9c0d1e

Unique per logical request. Retries with the same key return the original response.

Request Body schema: application/json
required
msisdn
required
string
bundle
required
string
wallet
string

Optional — the wallet to debit. Defaults to your wallet in the bundle's currency.

object (Metadata)

Up to 40 of your own key–value pairs, echoed back verbatim.

Responses

Request samples

Content type
application/json
{
  • "msisdn": "+2207834567",
  • "bundle": "africell_gm_1gb_7d",
  • "wallet": "wal_3Km72dP",
  • "metadata": {
    • "order_id": "9912"
    }
}

Response samples

Content type
application/json
{
  • "id": "db_5Qw83nZ",
  • "object": "data_bundle",
  • "status": "delivered",
  • "msisdn": "+2207834567",
  • "bundle": "africell_gm_1gb_7d",
  • "amount": "50.00",
  • "currency": "GMD",
  • "wallet": "wal_3Km72dP",
  • "created_at": "2026-08-06T10:12:00Z"
}

Electricity

Validate meters and vend prepaid electricity (STS) tokens.

Validate a meter

Always validate before vending — the response shows who the meter belongs to.

Authorizations:
secretKey
Request Body schema: application/json
required
provider
required
string
meter_number
required
string

Responses

Request samples

Content type
application/json
{
  • "provider": "nawec_gm",
  • "meter_number": "01234567890"
}

Response samples

Content type
application/json
{
  • "object": "meter",
  • "provider": "nawec_gm",
  • "meter_number": "01234567890",
  • "customer_name": "MSJ Bureau De Change Ltd",
  • "address": "Sayerrjobe Ave, Serrekunda"
}

Vend an electricity token

Vends a prepaid (STS) token. Synchronous providers return the token immediately; asynchronous ones return status: processing and deliver the token via electricity_token.delivered webhook + on the resource.

Authorizations:
secretKey
header Parameters
Idempotency-Key
required
string
Example: 0b7c9d4e-1f2a-4b3c-8d5e-6f7a8b9c0d1e

Unique per logical request. Retries with the same key return the original response.

Request Body schema: application/json
required
provider
required
string
meter_number
required
string
amount
required
string

Decimal amount, e.g. "500.00".

currency
required
string
wallet
string

Optional — the wallet to debit. Defaults to your wallet in currency.

object (Metadata)

Up to 40 of your own key–value pairs, echoed back verbatim.

Responses

Response Schema: application/json
id
string
object
string
Value: "electricity_token"
status
string
Enum: "processing" "delivered" "failed"
provider
string
meter_number
string
token
string or null

The STS token. Null while processing.

units
string or null
units_type
string or null
amount
string

Decimal amount.

currency
string
wallet
string

The wallet that was debited.

object (Metadata)

Up to 40 of your own key–value pairs, echoed back verbatim.

created_at
string <date-time>

Request samples

Content type
application/json
{
  • "provider": "nawec_gm",
  • "meter_number": "01234567890",
  • "amount": "500.00",
  • "currency": "GMD",
  • "wallet": "wal_3Km72dP",
  • "metadata": {
    • "order_id": "9912"
    }
}

Response samples

Content type
application/json
{
  • "id": "el_3Fk29s",
  • "object": "electricity_token",
  • "status": "processing",
  • "provider": "nawec_gm",
  • "meter_number": "01234567890",
  • "token": "1234-5678-9012-3456-7890",
  • "units": "38.4",
  • "units_type": "kWh",
  • "amount": "500.00",
  • "currency": "GMD",
  • "wallet": "wal_3Km72dP",
  • "metadata": {
    • "order_id": "9912"
    },
  • "created_at": "2019-08-24T14:15:22Z"
}

List electricity tokens

Authorizations:
secretKey
query Parameters
limit
integer [ 1 .. 100 ]
Default: 25
starting_after
string

Cursor — the id of the last item on the previous page.

Responses

Response Schema: application/json
object
string
Value: "list"
has_more
boolean
Array of objects (ElectricityToken)

Response samples

Content type
application/json
{
  • "object": "list",
  • "has_more": true,
  • "data": [
    • {
      }
    ]
}

Events

Immutable stream of everything that happened on your account.

List events

Authorizations:
secretKey
query Parameters
limit
integer [ 1 .. 100 ]
Default: 25
starting_after
string

Cursor — the id of the last item on the previous page.

type
string
Example: type=payout.paid

Filter by event type. Supports a trailing wildcard (payout.*).

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    • {
      }
    ],
  • "has_more": true
}

Webhook Endpoints

Manage webhook endpoints and their signing secrets. Register a URL and the event types you care about; PayKunda then POSTs a signed JSON event to your URL whenever the state of a payout, airtime top-up, data bundle or electricity token changes.

Verifying the signing key

Every delivery includes a Webhook-Signature header:

Webhook-Signature: t=1754901120,v1=5257a869e7c3…
  • t — the UNIX timestamp when the event was signed.
  • v1HMAC_SHA256(signing_secret, t + "." + raw_request_body), hex-encoded.

The signing_secret (whsec_…) is returned once when you create the endpoint. Store it securely — it is never shown again (rotate the endpoint to get a new one).

To verify a delivery on your server:

  1. Read the raw request body exactly as received (do not re-serialize it).
  2. Parse t and v1 from the Webhook-Signature header.
  3. Compute expected = HMAC_SHA256(signing_secret, t + "." + raw_body).
  4. Compare expected to v1 using a constant-time comparison.
  5. Reject if |now - t| > 5 minutes (replay protection).
// Node.js (Express raw body)
const crypto = require("crypto");
function verify(rawBody, header, secret) {
  const parts = Object.fromEntries(header.split(",").map(p => p.split("=")));
  const expected = crypto.createHmac("sha256", secret)
    .update(parts.t + "." + rawBody).digest("hex");
  const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
  const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) <= 300;
  return ok && fresh;
}

Return 2xx quickly to acknowledge receipt; PayKunda retries non-2xx deliveries with exponential backoff. As a financial best practice, treat a webhook as a notification and confirm the final state by fetching the resource by id (e.g. GET /payouts/{payout_id}) before acting on it.

Create a webhook endpoint

The signing secret (whsec_…) is returned once.

Authorizations:
secretKey
Request Body schema: application/json
required
url
required
string
events
required
Array of strings

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": "we_4Rt29xP",
  • "object": "webhook_endpoint",
  • "events": [
    • "payout.*",
    • "electricity_token.delivered"
    ],
  • "secret": "whsec_8Kd02mYq71Zw",
  • "status": "active",
  • "created_at": "2026-08-06T10:12:00Z"
}

List webhook endpoints

Authorizations:
secretKey

Responses

Response samples

Content type
application/json
{}

Delete a webhook endpoint

Authorizations:
secretKey
path Parameters
endpoint_id
required
string
Example: we_4Rt29xP

Responses

Response samples

Content type
application/json
{
  • "id": "we_4Rt29xP",
  • "object": "webhook_endpoint",
  • "status": "deleted"
}