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

# Create webhook endpoint

> Creates a subscriber URL and signing secret. The **`secret`** is returned **once** in this response; store it securely for [signature verification](/webhooks). Requires **organization owner** or **admin**; otherwise the API may return **500** `INTERNAL_ERROR` with an explanatory message. See [Webhooks](/webhooks).



## OpenAPI

````yaml /api-reference/openapi.json POST /webhook/endpoints
openapi: 3.0.3
info:
  title: API 2.0
  version: 1.0.0
  contact: {}
servers:
  - url: https://platform.inklink.com/api/v1
security: []
tags: []
paths:
  /webhook/endpoints:
    post:
      summary: Create webhook endpoint
      description: >-
        Creates a subscriber URL and signing secret. The **`secret`** is
        returned **once** in this response; store it securely for [signature
        verification](/webhooks). Requires **organization owner** or **admin**;
        otherwise the API may return **500** `INTERNAL_ERROR` with an
        explanatory message. See [Webhooks](/webhooks).
      operationId: createWebhookEndpoint
      parameters:
        - name: api-key
          in: header
          schema:
            type: string
            example: secret_live_xxx
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - url
              properties:
                url:
                  type: string
                  format: uri
                  description: >-
                    HTTPS URL that will receive **POST** webhook deliveries
                    (HTTP allowed only in development on the server).
                name:
                  type: string
                  maxLength: 120
                  description: Optional label for your reference.
                enabled:
                  type: boolean
                  description: Defaults to **true** if omitted.
                event_types:
                  type: array
                  minItems: 1
                  items:
                    $ref: '#/components/schemas/webhookEventType'
                  description: >-
                    Event types to subscribe to. If omitted, the server defaults
                    to **all** supported types.
      responses:
        '201':
          description: >-
            Endpoint created. Body includes **`secret`** (`whsec_…`) exactly
            once.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhookEndpointWithSecret'
        '400':
          description: Validation error (`VALIDATION_ERROR`).
        '401':
          description: Not authenticated (`UNAUTHORIZED`).
        '500':
          description: >-
            Server error or permission denied for non-owner/non-admin
            (`INTERNAL_ERROR`). See [Error handling](/error-handling).
components:
  schemas:
    webhookEventType:
      type: string
      description: InkLink webhook event type (KYC or Web inquiry result status).
      enum:
        - kyc.result.pending
        - kyc.result.manual_review
        - kyc.result.approved
        - kyc.result.rejected
        - kyc.result.failed
        - web.result.pending
        - web.result.manual_review
        - web.result.approved
        - web.result.rejected
        - web.result.failed
    webhookEndpointWithSecret:
      allOf:
        - $ref: '#/components/schemas/webhookEndpoint'
        - type: object
          required:
            - secret
          properties:
            secret:
              type: string
              description: Signing secret (`whsec_` + base64). Shown only on create.
    webhookEndpoint:
      type: object
      description: Webhook endpoint without signing secret.
      properties:
        id:
          type: string
          description: Endpoint id (`wh_end_…`).
        name:
          type: string
          nullable: true
        url:
          type: string
          format: uri
        enabled:
          type: boolean
        event_types:
          type: array
          items:
            $ref: '#/components/schemas/webhookEventType'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time

````