| title | User Settings API |
|---|
These endpoints control per-user defaults and callbacks. All are accessible via the API gateway using your X-API-Key.
Get your default recording configuration.
curl -H "X-API-Key: $API_KEY" \
"$API_BASE/recording-config"{
"enabled": true,
"capture_modes": ["audio"]
}Set your default recording configuration. These defaults apply to all new bots unless overridden per-request via recording_enabled in POST /bots.
Request body:
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool | false |
Enable recording for new bots by default |
capture_modes |
string[] | ["audio"] |
Capture modes. Currently supported: ["audio"] |
curl -X PUT "$API_BASE/recording-config" \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{
"enabled": true,
"capture_modes": ["audio"]
}'Returns the updated configuration.
{
"enabled": true,
"capture_modes": ["audio"]
}Set a webhook URL for events (for example, when a meeting completes processing).
See also:
- Webhooks
- Local dev: Local webhook development
Notes:
- The URL must be publicly reachable (private/internal URLs are rejected for SSRF prevention).
- If you set
webhook_secret, Vexa will sendAuthorization: Bearer <secret>on webhook requests.
curl -X PUT "$API_BASE/user/webhook" \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{
"webhook_url": "https://your-service.com/webhook",
"webhook_secret": "optional-shared-secret"
}'Returns the updated user record. For security, webhook_secret is never returned.
{
"email": "you@company.com",
"name": "Your Name",
"image_url": null,
"max_concurrent_bots": 2,
"data": {
"webhook_url": "https://your-service.com/webhook",
"recording_config": {
"enabled": true,
"capture_modes": ["audio"]
}
},
"id": 1,
"created_at": "2026-02-01T10:00:00Z"
}