Skip to main content
These endpoints control per-user defaults and callbacks.

GET /recording-config

Get your default recording configuration.
curl -H "X-API-Key: $API_KEY" \
  "$API_BASE/recording-config"
{
  "enabled": true,
  "capture_modes": ["audio"]
}

PUT /recording-config

Set your default recording configuration. These defaults apply to all new bots unless overridden per-request via recording_enabled in POST /bots. Request body:
FieldTypeDefaultDescription
enabledboolfalseEnable recording for new bots by default
capture_modesstring[]["audio"]Capture modes. Currently supported: ["audio"]
Per-meeting override: Pass recording_enabled: true (or false) in the POST /bots request body to override the user-level default for a specific meeting.
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"]
}

PUT /user/webhook

Set a webhook URL for events (for example, when a meeting completes processing). See also: Notes:
  • The URL must be publicly reachable (private/internal URLs are rejected for SSRF prevention).
  • If you set webhook_secret, Vexa will send Authorization: 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"
}