Register Webhook Endpoint
curl --request POST \
--url https://test-api-kore.kravata.co/api/v1/integration-endpoints \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "operation.status_updated",
"direction": "OUTBOUND",
"url": "https://your-server.example.com/webhooks/kravata",
"httpMethod": "POST",
"authType": "NONE",
"triggerEvent": "operation.status_updated",
"timeoutMs": 30000,
"retryConfig": {
"max_attempts": 3,
"initial_delay_ms": 1000,
"multiplier": 4
},
"requestHeaders": null,
"payloadMapping": null,
"isActive": true
}
'import requests
url = "https://test-api-kore.kravata.co/api/v1/integration-endpoints"
payload = {
"name": "operation.status_updated",
"direction": "OUTBOUND",
"url": "https://your-server.example.com/webhooks/kravata",
"httpMethod": "POST",
"authType": "NONE",
"triggerEvent": "operation.status_updated",
"timeoutMs": 30000,
"retryConfig": {
"max_attempts": 3,
"initial_delay_ms": 1000,
"multiplier": 4
},
"requestHeaders": None,
"payloadMapping": None,
"isActive": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'operation.status_updated',
direction: 'OUTBOUND',
url: 'https://your-server.example.com/webhooks/kravata',
httpMethod: 'POST',
authType: 'NONE',
triggerEvent: 'operation.status_updated',
timeoutMs: 30000,
retryConfig: {max_attempts: 3, initial_delay_ms: 1000, multiplier: 4},
requestHeaders: null,
payloadMapping: null,
isActive: true
})
};
fetch('https://test-api-kore.kravata.co/api/v1/integration-endpoints', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"isActive": true,
"registerDate": "2026-05-14T06:07:59.016726"
}Webhooks
Register Webhook Endpoint
Registers an endpoint on your server that Kravata will call whenever the configured triggerEvent occurs (for example, a user accepting the Terms and Conditions inside the Widget SDK, or an OTP being requested).
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Descriptive name for the webhook. Must be unique. |
| direction | string (enum) | Yes | "OUTBOUND" |
| url | string | Yes | URL on your server that will receive the event (max 500 chars). |
| httpMethod | string (enum) | Yes | "POST" |
| authType | string (enum) | No — default "NONE" | "NONE" |
| triggerEvent | string | No | Event that fires this webhook. Events with real listeners today: “user.accepted_terms”, “auth.otp_requested”, “user.canceled”, “user.created”, “user.updated”, “operation.created”, “operation.status_updated”, “operation.transfer.created”, “operation.transfer.status_updated”, “wallet.created”, “fiat.payin.completed”, “fiat.payout.completed”, “fiat.payment.completed”, “fiat.payin.rejected”, “fiat.payout.rejected” |
| timeoutMs | number | No — default 30000 | Timeout for the call to your server, in milliseconds. |
| retryConfig | object | No | Retry policy — max_attempts (default 3), and on failure, initial_delay_ms (default 1000) / multiplier (default 4) for exponential backoff. |
Response
| Field | Description |
|---|---|
| id | Internal UUID of the created Integration Endpoint. |
| isActive | Whether the webhook is currently active. |
| registerDate | Timestamp set automatically on creation. |
POST
/
api
/
v1
/
integration-endpoints
Register Webhook Endpoint
curl --request POST \
--url https://test-api-kore.kravata.co/api/v1/integration-endpoints \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "operation.status_updated",
"direction": "OUTBOUND",
"url": "https://your-server.example.com/webhooks/kravata",
"httpMethod": "POST",
"authType": "NONE",
"triggerEvent": "operation.status_updated",
"timeoutMs": 30000,
"retryConfig": {
"max_attempts": 3,
"initial_delay_ms": 1000,
"multiplier": 4
},
"requestHeaders": null,
"payloadMapping": null,
"isActive": true
}
'import requests
url = "https://test-api-kore.kravata.co/api/v1/integration-endpoints"
payload = {
"name": "operation.status_updated",
"direction": "OUTBOUND",
"url": "https://your-server.example.com/webhooks/kravata",
"httpMethod": "POST",
"authType": "NONE",
"triggerEvent": "operation.status_updated",
"timeoutMs": 30000,
"retryConfig": {
"max_attempts": 3,
"initial_delay_ms": 1000,
"multiplier": 4
},
"requestHeaders": None,
"payloadMapping": None,
"isActive": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'operation.status_updated',
direction: 'OUTBOUND',
url: 'https://your-server.example.com/webhooks/kravata',
httpMethod: 'POST',
authType: 'NONE',
triggerEvent: 'operation.status_updated',
timeoutMs: 30000,
retryConfig: {max_attempts: 3, initial_delay_ms: 1000, multiplier: 4},
requestHeaders: null,
payloadMapping: null,
isActive: true
})
};
fetch('https://test-api-kore.kravata.co/api/v1/integration-endpoints', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"isActive": true,
"registerDate": "2026-05-14T06:07:59.016726"
}Authorizations
Access token from POST /api/v1/client/token.
Body
application/json

