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

# Register an endpoint

> **Scope:** `webhooks:manage`

A public HTTPS URL on the default port. The `secret` is returned **only in this response** — store it now; it is never shown again.



## OpenAPI

````yaml api-reference/openapi.json POST /webhooks
openapi: 3.0.3
info:
  title: Rampa Pay API
  version: 1.0.0
  description: >-
    Hold a USDT balance at Rampa and pay Bolivian merchant QRs in bolivianos.
    Amounts are decimal strings.
servers:
  - url: https://examples.staging.rampapay.com/v1
    description: 'Example server: sample answers, nothing real moves'
security:
  - apiKey: []
tags:
  - name: Accounts
    description: Every balance you hold with Rampa, in one place.
  - name: Wallet
    description: Your USDT balance at Rampa, and how money gets into it.
  - name: Payouts
    description: >-
      Quote a BOB amount in USDT; once your end user accepts, pay it out at that
      quote from your USDT wallet — to a merchant QR today, to a bank account
      soon.
  - name: Webhooks
    description: Where we send events. Each endpoint gets its own signing secret.
paths:
  /webhooks:
    post:
      tags:
        - Webhooks
      summary: Register an endpoint
      description: >-
        **Scope:** `webhooks:manage`


        A public HTTPS URL on the default port. The `secret` is returned **only
        in this response** — store it now; it is never shown again.
      operationId: create-webhook
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - url
              properties:
                url:
                  type: string
                  description: >-
                    `https URL`. Required. Where we POST your events: public
                    HTTPS on the default port, with no credentials in it.
            example:
              url: https://api.example.com/rampa/webhooks
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  url:
                    type: string
                  status:
                    type: string
                  consecutive_failures:
                    type: integer
                  created_at:
                    type: string
                  secret:
                    type: string
              example:
                id: 0d9b7c1e-2f4a-4e8b-b6c3-5a1f9e2d7c40
                url: https://api.example.com/rampa/webhooks
                status: active
                consecutive_failures: 0
                created_at: '2026-09-27T13:55:00.000Z'
                secret: whsec_<shown only in this response>
        '400':
          description: The URL is not public HTTPS, or resolves to a private address.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          description: >-
            `WEBHOOK_LIMIT_REACHED` — You already have 10 endpoints. Delete one
            first.
components:
  responses:
    Unauthorized:
      description: >-
        `AUTHENTICATION_FAILED` — the key is missing, unknown, revoked or
        expired, or the tenant is suspended.
    Forbidden:
      description: '`SCOPE_REQUIRED` — your key lacks this endpoint''s scope. Ask Rampa.'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        On the example server, any key that starts with `rpk_mock_`, e.g.
        `rpk_mock_yourname`. Never your real key.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.