Inspect an event and every delivery attempt
curl --request GET \
--url https://api.paywithlocus.com/api/credits/webhooks/events/{eventId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"event": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "credits.topup.completed",
"api_version": "2026-08-13",
"created_at": "2023-11-07T05:31:56Z",
"sequence": "<string>",
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"data": {
"externalUserId": "<string>",
"amountUsd": "<string>",
"balanceUsd": "<string>",
"reference": "<string>",
"source": "checkout_session",
"metadata": {},
"bonusUsd": "<string>"
},
"retained_until": "2023-11-07T05:31:56Z",
"deliveries": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attempt": 2,
"destination_url": "<string>",
"status": "pending",
"manual_replay": true,
"scheduled_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"finished_at": "2023-11-07T05:31:56Z",
"http_status": 123,
"response_body": "<string>",
"error": "<string>"
}
]
}
}Webhooks
Inspect an event and every delivery attempt
Returns one webhook event with its immutable envelope and every delivery attempt. Use it to debug failed deliveries. Returns 404 when the event belongs to another workspace.
GET
/
credits
/
webhooks
/
events
/
{eventId}
Inspect an event and every delivery attempt
curl --request GET \
--url https://api.paywithlocus.com/api/credits/webhooks/events/{eventId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywithlocus.com/api/credits/webhooks/events/{eventId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"event": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "credits.topup.completed",
"api_version": "2026-08-13",
"created_at": "2023-11-07T05:31:56Z",
"sequence": "<string>",
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"data": {
"externalUserId": "<string>",
"amountUsd": "<string>",
"balanceUsd": "<string>",
"reference": "<string>",
"source": "checkout_session",
"metadata": {},
"bonusUsd": "<string>"
},
"retained_until": "2023-11-07T05:31:56Z",
"deliveries": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attempt": 2,
"destination_url": "<string>",
"status": "pending",
"manual_replay": true,
"scheduled_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"finished_at": "2023-11-07T05:31:56Z",
"http_status": 123,
"response_body": "<string>",
"error": "<string>"
}
]
}
}Authorizations
dashboardSessionsecretKey
Locus Pro dashboard session (Cognito). High-risk workspace administration requires an owner or admin role and fresh MFA/passkey step-up.