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

# Verify Signature

> This endpoint verifies the signature of a request to ensure its integrity and authenticity.

<Note>
  For the full signature verification walkthrough, including webhook callback validation, see the [Authentication Guide](/authentication/basics).
</Note>


## OpenAPI

````yaml post /api/niobi-verify
openapi: 3.0.0
info:
  title: Niobi API
  description: >-
    REST API for collecting payments, sending payouts, and managing
    multi-currency wallets across Africa and global corridors. All requests
    require IP whitelisting and a unique per-request HMAC SHA-256 signature.
  version: 4.0.0
servers:
  - url: https://sandbox.users.niobi.co
    description: Sandbox, Development and Testing
security: []
tags:
  - name: Niobi
    description: API Endpoints of Niobi
paths:
  /api/niobi-verify:
    post:
      tags:
        - Verification
      summary: Verify Signature
      description: >-
        Confirms that a signed payload is authentic and unmodified. Use this to
        validate responses or webhook callbacks received from Niobi before
        acting on them. See the [Authentication Basics
        guide](/authentication/basics) for prerequisites, then the [Signature
        Verification
        Guide](/authentication/signature-generation#verifying-response-signatures)
        for the full walkthrough.
      operationId: verifySignature
      requestBody:
        description: The complete signed payload to verify, exactly as received from Niobi.
        required: true
        content:
          application/json:
            schema:
              required:
                - client_id
                - sender
                - timestamp
                - salt
                - signature
                - params
              properties:
                client_id:
                  description: >-
                    Your Client ID from the Niobi Dashboard under Workspace >
                    Integrations.
                  type: string
                  example: K1PoY1WYricSpXh6Wm24txxxxxxxxxx
                sender:
                  description: >-
                    The exact title of your integration as registered in the
                    Dashboard. Case-sensitive.
                  type: string
                  example: First Integration
                timestamp:
                  description: >-
                    Unix timestamp (in seconds) from the original signed
                    request.
                  type: integer
                  example: 1709291964
                salt:
                  description: >-
                    The same salt value used when the request was originally
                    signed.
                  type: string
                  example: salt00494
                signature:
                  description: >-
                    The SHA-256 signature to verify, exactly as received in the
                    Niobi response or webhook.
                  type: string
                  example: >-
                    x21120d4ca274ce462e6415e571xxxxx1b87f462a802221595ed870bf8fxxxx
                params:
                  description: >-
                    The original params object from the signed payload,
                    unmodified.
                  properties:
                    amount:
                      description: Transaction amount
                      type: integer
                      example: 10000
                    currency:
                      description: ISO 4217 currency code
                      type: string
                      example: KES
                  type: object
              type: object
      responses:
        '200':
          description: Request verified successfully.
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    description: Success message
                    type: string
                    example: Request verified successfully.
                type: object
        '403':
          description: >-
            Entity integration record not found, Client ID not matched, or
            Request was not verified.
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    description: >-
                      Error message when the entity integration record is not
                      found, client ID does not match, or the request could not
                      be verified
                    type: string
                    example: Entity integration record not found.
                type: object
        default:
          description: An unexpected error occurred.

````