POST/api/v1/webhooks/clerk
Clerk Webhook
Handle Clerk webhook events (user lifecycle).
Authentication
Public endpoint: no key required. Anonymous quotas still apply (see Rate limits).
Headers
| Name | Type | Required | Description |
|---|---|---|---|
svix-id | string | null | - | |
svix-timestamp | string | null | - | |
svix-signature | string | null | - |
Responses
| Status | Description | Schema |
|---|---|---|
200 | Successful Response | WebhookEventResponse |
422 | Validation Error | HTTPValidationError |
See the standard error codes documented in the Error codes.
Code samples
Three ready-to-paste implementations. Replace $TRINITY_API_KEY with your API key (generated from the dashboard under Profile → API keys).
cURL
curl -X POST \
'https://api.trinityinsights.io/api/v1/webhooks/clerk' \
-H 'svix-id: value' \
-H 'svix-timestamp: value' \
-H 'svix-signature: value'Python
import os
import requests
BASE = "https://api.trinityinsights.io"
headers = {
"svix-id": "value",
"svix-timestamp": "value",
"svix-signature": "value",
}
response = requests.post(f"{BASE}/api/v1/webhooks/clerk", headers=headers, timeout=10)
response.raise_for_status()
data = response.json()JavaScript
const apiKey = process.env.TRINITY_API_KEY;
const response = await fetch(
"https://api.trinityinsights.io/api/v1/webhooks/clerk",
{
method: "POST",
headers: {
"svix-id": "value",
"svix-timestamp": "value",
"svix-signature": "value",
},
},
);
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
const data = await response.json();Institutional disclaimer
Trinity Insights is an educational and analytical tool. Values returned by this endpoint do not constitute investment advice. Trinity Insights is not a Crypto-Asset Service Provider (CASP) registered under MiCA Regulation (EU) 2023/1114. See the full disclaimer.