---
title: "User Webhooks Create"
method: POST
path: "/user/webhooks/"
tags: ["users"]
---

# User Webhooks Create

`POST /user/webhooks/`

POST handler with superadmin-only field protection.

Strips superadmin-only fields from non-superadmin requests before
delegating to OrganizationInjectionMixin.post() for org injection.

## Headers

- `Authorization` string, required

## Request body

- WebhookCreateRequest — For create operations - auto-generates secret. Security: ``organization``/``project`` are server-stamped (read_only) via ``OrganizationInjectionMixin.get_create_save_kwargs`` — never taken from the request body. ``organization_key`` must belong to the same target org.
  - `url` string, uri, required
  - `name` string
  - `created` string, date-time
  - `event_type` union
    - 'request_log' | 'on_eval_result_ingested' | 'trace_completed' | 'customer_budget_limit_reached' | 'credit_low_balance_threshold_reached' | 'spend_cap_warning_threshold_reached' | 'limit_policy_soft_triggered' | 'limit_policy_hard_triggered' — * `request_log` - Request Log * `on_eval_result_ingested` - Evaluation Result * `trace_completed` - Trace Completed * `customer_budget_limit_reached` - Customer Budget Limit Reached * `credit_low_balance_threshold_reached` - Credit Low Balance Threshold Reached * `spend_cap_warning_threshold_reached` - Spend Cap Warning Threshold Reached * `limit_policy_soft_triggered` - Limit Policy Soft Triggered * `limit_policy_hard_triggered` - Limit Policy Hard Triggered
    - ''
  - `active` boolean
  - `organization_key` string, nullable

## Response `201`

- WebhookCreate — For create operations - auto-generates secret. Security: ``organization``/``project`` are server-stamped (read_only) via ``OrganizationInjectionMixin.get_create_save_kwargs`` — never taken from the request body. ``organization_key`` must belong to the same target org.
  - `id` integer, required
  - `secrets` string, required
  - `project` string, nullable, required
  - `url` string, uri, required
  - `name` string
  - `created` string, date-time
  - `event_type` union
    - 'request_log' | 'on_eval_result_ingested' | 'trace_completed' | 'customer_budget_limit_reached' | 'credit_low_balance_threshold_reached' | 'spend_cap_warning_threshold_reached' | 'limit_policy_soft_triggered' | 'limit_policy_hard_triggered' — * `request_log` - Request Log * `on_eval_result_ingested` - Evaluation Result * `trace_completed` - Trace Completed * `customer_budget_limit_reached` - Customer Budget Limit Reached * `credit_low_balance_threshold_reached` - Credit Low Balance Threshold Reached * `spend_cap_warning_threshold_reached` - Spend Cap Warning Threshold Reached * `limit_policy_soft_triggered` - Limit Policy Soft Triggered * `limit_policy_hard_triggered` - Limit Policy Hard Triggered
    - ''
  - `active` boolean
  - `organization` integer, required
  - `organization_key` string, nullable

---

[API](https://skmtc.net/keywordsai/apis/api-reference.md) · [All operations](https://skmtc.net/keywordsai/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/keywordsai/api-reference/versions/c26d550029f8/schema)
