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

# Health check

> Always returns 200 while the API is up. No auth.



## OpenAPI

````yaml /openapi/ensc-2026-09-15.json get /health
openapi: 3.1.0
info:
  title: ENSC API
  version: '2026-09-15'
  description: >-
    The ENSC stablecoin platform API: conversions through the ENSC converter
    (pair token or Naira in, ENSC out, and back), ENSC transfers, balances, bank
    directory and account resolution.


    **Versioning**: URL major (`/v1`) + date-pinned header (`X-ENSC-API-Version:
    2026-09-15`). Version 2026-09-15 introduces mandatory payload encryption.


    **Authentication**: API key (Bearer) + mandatory IP allowlist on live keys.


    **Request encryption**: every mutating merchant-key call carries an
    ENSC-ENC-V1 envelope (AES-256-GCM under the merchant encryption key,
    request-bound AAD). Plaintext bodies are refused.


    **Request signing**: Ed25519 over a canonical string that includes the
    SHA-256 of the envelope bytes, a timestamp (300s window) and a one-time
    nonce.


    **Sealed responses**: every 2xx body to a merchant sk/rk key is an
    ENSC-RESP-V1 envelope (HPKE RFC 9180, X25519 + ChaCha20-Poly1305) sealed to
    the merchant signing key and signed by ENSC.


    **Error envelope** (never encrypted): `{ "error": { "code": "ENSC_...",
    "message": "...", "requestId": "req_..." } }`.


    **Amounts**: every amount you send is a decimal string in the asset's own
    units (`"0.1"` CELO, `"100"` USDC, `"1000.00"` NGN; fiat amounts take at
    most 2 decimals). Every amount the API returns is a base-unit integer string
    (`amountIn`, `amountOut`, `balance`) with a decimal twin
    (`amountInFormatted`, `amountOutFormatted`, `formatted`) already divided by
    the asset's decimals: ENSC 18, CELO 18, USDC and USDT 6, NGN legs 18 (stored
    as ENSC units). Never do arithmetic on the formatted strings; use the base
    units with a big-integer type.


    **Unsigned transactions**: `{ from, to, data, value: "0", chainId }`. ENSC
    never holds a wallet key and never broadcasts. Sign with the wallet named in
    `from` (the conversion's wallet), on the chain named in `chainId`, and
    estimate gas with an explicit limit before sending. For a voucher, send
    `approvalTransaction` first when it is present, then `transaction`, then
    report the hash on `/v1/conversions/{reference}/events`.


    **Webhooks**: register a public https endpoint on your backend (`POST
    /v1/webhook-endpoints` or the dashboard). Every delivery is signed with
    ENSC's Ed25519 key (`ENSC-WH-V1` over the webhook id, the timestamp and the
    SHA-256 of the raw body; key published at
    `/v1/.well-known/ensc-public-keys.json`), retried after 1 min, 5 min, 15
    min, 1 h, 2 h, 4 h and 8 h (8 attempts in total over about 15 hours) when
    your endpoint does not answer 2xx within 15 s, and delivered at least once;
    de-duplicate on the event `id`. Ordering is not guaranteed: act on the
    status carried by the event.
  contact:
    name: ENSC Support
  license:
    name: Proprietary
servers:
  - url: https://api.ensc.prosperavest.com
    description: >-
      ENSC API (Sandbox and Live share one host; the key prefix selects the
      environment)
security: []
tags:
  - name: Health
  - name: Banks
  - name: Balance
  - name: Conversions
  - name: Transfer
  - name: Webhooks
  - name: Events
  - name: Test Data
  - name: API Keys
  - name: Signing Keys
  - name: Encryption Keys
  - name: Origins
paths: {}

````