Webhooks
Get Audit Logs
Retrieve webhook delivery logs for your account.
Endpoint: (GET) https://api.lusha.com/api/audit-logs
What’s Logged:
- All webhook delivery attempts (success and failures)
- HTTP status codes and response times
- Error messages for failed deliveries
- Delivery timestamps and duration metrics
Filtering:
- Filter by subscription ID to see logs for specific subscriptions
- Filter by status to see only successes, failures, or permanent failures
Rate Limit: 100 requests/minute per account
Note: Logs are retained for 90 days (successful) and 180 days (failed/DLQ)
GET
/
api
/
audit-logs
Get Audit Logs
curl --request GET \
--url https://api.lusha.com/api/audit-logs \
--header 'api_key: <api-key>'import requests
url = "https://api.lusha.com/api/audit-logs"
headers = {"api_key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {api_key: '<api-key>'}};
fetch('https://api.lusha.com/api/audit-logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.get("https://api.lusha.com/api/audit-logs")
.header("api_key", "<api-key>")
.asString();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lusha.com/api/audit-logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api_key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"data": [
{
"id": "log-123",
"subscriptionId": "sub-123",
"payloadId": "payload-456",
"status": "success",
"statusCode": 200,
"url": "https://example.com/webhook",
"deliveredAt": "2024-01-01T00:00:00.000Z",
"durationMs": 150,
"error": null
}
],
"pagination": {
"total": 100,
"limit": 50,
"offset": 0,
"hasMore": true
}
}{
"statusCode": 400,
"message": "Invalid request parameters"
}{
"statusCode": 401,
"message": "Invalid API key"
}{
"statusCode": 500,
"message": "Internal server error. Please try again later."
}Authorizations
Your Lusha API key. You can find this in your Lusha dashboard under API settings.
Include this key in the api_key header for all requests.
Query Parameters
Filter by subscription ID
Filter by delivery status
Available options:
success, failed, permanent_failure Maximum number of results (1-100)
Required range:
1 <= x <= 100Number of results to skip
Required range:
x >= 0Was this page helpful?
⌘I
Get Audit Logs
curl --request GET \
--url https://api.lusha.com/api/audit-logs \
--header 'api_key: <api-key>'import requests
url = "https://api.lusha.com/api/audit-logs"
headers = {"api_key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {api_key: '<api-key>'}};
fetch('https://api.lusha.com/api/audit-logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.get("https://api.lusha.com/api/audit-logs")
.header("api_key", "<api-key>")
.asString();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lusha.com/api/audit-logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api_key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"data": [
{
"id": "log-123",
"subscriptionId": "sub-123",
"payloadId": "payload-456",
"status": "success",
"statusCode": 200,
"url": "https://example.com/webhook",
"deliveredAt": "2024-01-01T00:00:00.000Z",
"durationMs": 150,
"error": null
}
],
"pagination": {
"total": 100,
"limit": 50,
"offset": 0,
"hasMore": true
}
}{
"statusCode": 400,
"message": "Invalid request parameters"
}{
"statusCode": 401,
"message": "Invalid API key"
}{
"statusCode": 500,
"message": "Internal server error. Please try again later."
}