> ## Documentation Index
> Fetch the complete documentation index at: https://langwatch.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a webhook endpoint

> Create a webhook endpoint. The signing secret is returned ONCE in this response and never again; roll it to get a new one. Send `Idempotency-Key` to make a retry safe: a replay returns the original response including its `secret`, which is the only way to recover a secret whose response was lost in transit.



## OpenAPI

````yaml POST /api/webhooks/v1/endpoints
openapi: 3.1.0
info:
  title: LangWatch API
  version: 1.0.0
  description: LangWatch openapi spec
servers:
  - url: https://app.langwatch.ai
security:
  - project_api_key: []
paths:
  /api/webhooks/v1/endpoints:
    post:
      tags:
        - Webhooks
      summary: Create a webhook endpoint
      description: >-
        Create a webhook endpoint. The signing secret is returned ONCE in this
        response and never again; roll it to get a new one. Send
        `Idempotency-Key` to make a retry safe: a replay returns the original
        response including its `secret`, which is the only way to recover a
        secret whose response was lost in transit.
      operationId: postApiWebhooksV1Endpoints
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            A caller-chosen key, 8 to 255 characters, that makes this create
            safe to retry. The first request to use a key runs normally and its
            response is stored for 24 hours. A later request with the same key
            and the same body is not executed again: it returns the stored
            response, marked with `X-Idempotent-Replay: true`. The same key with
            a different body is refused 409 `idempotency_error`, as is a retry
            sent while the original is still running. Only successful responses
            are stored, so a create that failed can simply be retried with the
            same key.
          schema:
            type: string
            minLength: 8
            maxLength: 255
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  minLength: 1
                  maxLength: 2000
                enabled_events:
                  type: array
                  items:
                    type: string
                    minLength: 1
                    maxLength: 200
                  minItems: 1
                  maxItems: 100
                max_batch_size:
                  type: integer
                max_batch_delay_ms:
                  type: integer
                max_in_flight:
                  type: integer
              required:
                - url
                - enabled_events
      responses:
        '201':
          description: The endpoint, with the signing secret this body alone carries
          headers:
            X-Idempotent-Replay:
              description: >-
                Present and `true` only when this body came from a stored
                response rather than a fresh execution. Absent on the first use
                of a key, and on every request that carries no key.
              schema:
                type: string
                enum:
                  - 'true'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      url:
                        type: string
                      enabled_events:
                        type: array
                        items:
                          type: string
                      status:
                        type: string
                        enum:
                          - active
                          - disabled
                      disabled_reason:
                        type:
                          - string
                          - 'null'
                      disabled_at:
                        type:
                          - string
                          - 'null'
                      failing_since:
                        type:
                          - string
                          - 'null'
                      last_success_at:
                        type:
                          - string
                          - 'null'
                      last_failure_at:
                        type:
                          - string
                          - 'null'
                      max_batch_size:
                        type: integer
                      max_batch_delay_ms:
                        type: integer
                      max_in_flight:
                        type: integer
                      created_at:
                        type: string
                      updated_at:
                        type: string
                      secret:
                        type: string
                    required:
                      - id
                      - url
                      - enabled_events
                      - status
                      - disabled_reason
                      - disabled_at
                      - failing_since
                      - last_success_at
                      - last_failure_at
                      - max_batch_size
                      - max_batch_delay_ms
                      - max_in_flight
                      - created_at
                      - updated_at
                      - secret
                required:
                  - data
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      meta:
                        type: object
                        additionalProperties: {}
                      trace_id:
                        type: string
                      span_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                required:
                  - error
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      meta:
                        type: object
                        additionalProperties: {}
                      trace_id:
                        type: string
                      span_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                required:
                  - error
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      meta:
                        type: object
                        additionalProperties: {}
                      trace_id:
                        type: string
                      span_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                required:
                  - error
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      meta:
                        type: object
                        additionalProperties: {}
                      trace_id:
                        type: string
                      span_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                required:
                  - error
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      meta:
                        type: object
                        additionalProperties: {}
                      trace_id:
                        type: string
                      span_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                required:
                  - error
components:
  securitySchemes:
    project_api_key:
      type: apiKey
      in: header
      name: X-Auth-Token
      description: >-
        Project API key for sending traces and accessing project-scoped
        resources. Format: sk-lw-... (no underscore). Obtain one by creating a
        project via the Admin API or the LangWatch UI.

````