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

# API reference overview

> REST API for Endl partners: wallets, quotes, recipients, accounts, and transactions

The Endl Partner API is a JSON REST API. Every endpoint is authenticated with your partner key and secret, scoped to the partner that owns the credential, and returns [the standard response envelope](/api-reference/errors).

<Columns cols={2}>
  <Card title="Authentication" icon="key" href="/api-reference/authentication">
    Send your key and secret on every request.
  </Card>

  <Card title="Errors" icon="triangle-exclamation" href="/api-reference/errors">
    The response envelope and what each status means.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/webhooks/overview">
    Receive events instead of polling for state.
  </Card>

  <Card title="Reference data" icon="table-list" href="/api-reference/reference/list-currencies">
    Currencies, countries, rates, rails, and codes.
  </Card>
</Columns>

## Base URL

| Environment | Base URL                  |
| ----------- | ------------------------- |
| QA          | `https://qa-api.endl.xyz` |
| Production  | Provided at onboarding    |

All partner endpoints live under `/api/v0`.

## Resources

| Group                                                              | What it covers                                            |
| ------------------------------------------------------------------ | --------------------------------------------------------- |
| [Wallets](/api-reference/wallets/list-wallets)                     | Create wallets and provision them on additional networks. |
| [Quotes](/api-reference/quotes/generate-quote)                     | Price a transfer before you commit to it.                 |
| [Recipients](/api-reference/recipients/add-recipient)              | Manage the parties a user pays out to.                    |
| [Accounts](/api-reference/accounts/open-account)                   | Open accounts and read balances and activity.             |
| [Transactions](/api-reference/transactions/create-pre-transaction) | Fund, submit, and track transfers.                        |
| [Reference](/api-reference/reference/list-currencies)              | Static catalogues you should cache rather than re-fetch.  |

## A typical payout

<Steps>
  <Step title="Prepare the recipient">
    Call [Get recipient required fields](/api-reference/reference/get-recipient-required-fields) for the destination currency, collect exactly those fields, then [Add recipient](/api-reference/recipients/add-recipient).
  </Step>

  <Step title="Price the transfer">
    [Generate a quote](/api-reference/quotes/generate-quote). The quote fixes the rate and fees for a short window.
  </Step>

  <Step title="Fund it">
    [Create a pre-transaction](/api-reference/transactions/create-pre-transaction) to confirm the quote and receive deposit instructions.
  </Step>

  <Step title="Submit and track">
    [Submit the transaction](/api-reference/transactions/submit-transaction), then track it with [Get transaction](/api-reference/transactions/get-transaction) — or subscribe to [`payout.completed` and `payout.failed`](/webhooks/reference#event-types) and let Endl tell you.
  </Step>
</Steps>

## Conventions

<ResponseField name="Identity" type="from your credential">
  Your partner identity comes from the API key, so you only ever see and manage your own resources. A resource belonging to another partner returns `404`, never `403`.
</ResponseField>

<ResponseField name="Timestamps" type="ISO-8601 UTC">
  Three fraction digits — `2026-09-02T12:34:56.789Z`.
</ResponseField>

<ResponseField name="Money" type="decimal strings">
  Amounts are strings, not floats — `"1500.00"`. Parse them with a decimal type, never a binary float.
</ResponseField>

<ResponseField name="Permissions" type="per key">
  Endpoints are gated by permissions such as `quotes`, `recipients`, and `accounts`. A key without the required permission fails with `400`, not `403`.
</ResponseField>

<Warning>
  **Response payloads are not fully specified yet.** Request bodies, parameters, and status codes on these pages are accurate, but the shape of `data` in a successful response has not yet been captured from a live environment. Treat the `data` object in the playground as a placeholder and confirm field names against a real QA call before you depend on them. See [what's missing](#whats-missing) below.
</Warning>

## What's missing

This reference was generated from the Endl Partner API Postman collection, which carries no saved response examples. Two things still need filling in:

* **Response schemas** for all 36 endpoints. The envelope is right; the contents of `data` are not yet described.
* **Per-endpoint permission names**, which are documented only where the collection recorded them.

Capturing one successful response per endpoint from QA is enough to close both gaps.
