> For a complete index of Agora Finance documentation, fetch https://docs.agora.finance/llms.txt

# Changelog

This page tracks all additions, changes, and removals to the Agora Public API.

## October 26, 2026

## Convert Stablecoins and the Quotes API (Beta)

You can now let your users convert between AUSD and USDC or USDT without leaving your product. Convert Stablecoins is in a closed beta; contact your Agora representative to request access.

The flow is non-custodial. You request a quote, your user's wallet executes its steps onchain, and you track the conversion through the Transactions API. Funds move directly between your user and the provider filling the quote, never through Agora. The [Convert Stablecoins guide](/api/production/guides/convert-stablecoins/overview) covers the model, and the [Quickstart](/api/production/guides/convert-stablecoins/quickstart) walks through one conversion end to end.

**Quotes**

* [`POST /v0/quotes`](/api/production/quotes/create): quote a same-chain conversion. A quote returns both amounts, a USD `fees` breakdown, the ordered `executionSteps` your user's wallet signs, and an `expiresAt`. The deposit must land onchain by then, 180 seconds after the quote is priced.
* [`GET /v0/quotes/{quoteId}`](/api/production/quotes/getbyid): retrieve a quote exactly as it was returned.

**Transactions**

Each conversion appears in [`GET /v0/transactions`](/api/production/transactions/list) and [`GET /v0/transactions/{txnId}`](/api/production/transactions/getbyid) as `type: "tokenConversion"`. Unlike other types, it moves through `pending` and `submitted` before ending `settled`, `refunded`, or `failed`, and a failed conversion carries `failureReason` and `refundFailureReason`.

USDT is available on Ethereum only. See [Support](/api/production/guides/convert-stablecoins/overview#support) for the full chain and stablecoin matrix.

## September 23, 2026

## Transactions: `INBOUND` and `OUTBOUND` legs

Leg `direction` on [`GET /v0/transactions/{txnId}`](/api/production/transactions/getbyid) is now `INBOUND` (value arriving) or `OUTBOUND` (value leaving), replacing `FROM_AGORA` and `TO_AGORA` on every transaction type. Update any code that matches on the old values.

## August 12, 2026

## Routes: `direction` replaces `from`, and creation is idempotent

* A route now returns **`direction`** (`mint-fiat`, `mint-stablecoin`, `redeem-fiat`, `redeem-stablecoin`) instead of echoing `from`, and `GET /v0/routes` takes a `direction` filter.
* The `stablecoin` wildcard source currency is gone. Mint-from-stablecoin routes name the currency directly (today, `usdc`).
* `POST /v0/routes` is idempotent. A repeat call with the same inputs returns `200` with the existing route instead of `409 route_already_exists`, which is now reserved for a route id occupied by a row the call couldn't read back. See [200, 201, or 409](/api/production/routes/create#200-201-or-409).

## August 5, 2026

## Filters on the list endpoints

`GET /v0/accounts`, `GET /v0/routes`, and `GET /v0/transactions` now take filters alongside `cursor` and `limit`. Filters combine with AND, multi-value filters take a single comma-separated parameter (`?type=mint,redeem`), and date ranges use dotted bounds (`?initiatedAt.gte=2026-08-01T00:00:00Z&initiatedAt.lt=2026-09-01T00:00:00Z`). A filter is never silently dropped: an unknown parameter or an out-of-set value returns `400 parameter_invalid` naming the parameter. See [Filtering list endpoints](/api/production#filtering-list-endpoints).

* **Accounts**: `kind`, `network`, `createdAt.gt` / `.gte` / `.lt` / `.lte`.
* **Routes**: `fromCurrency`, `toCurrency`, `toChain`, `toAccountId`.
* **Transactions**: `type`, `sourceChain`, `recipientChain`, `isInstantSettlement`, `initiatedAt.gt` / `.gte` / `.lt` / `.lte`.

## Retrieve a single account

`GET /v0/accounts/{accountId}` returns one account by id, in the same shape its entry in `GET /v0/accounts` carries. An id from another organization reads as `404 account_not_found`, the same as an unknown id.

## Other changes

* Two new `403` codes on authenticated endpoints: `account_not_provisioned` (your organization isn't provisioned for the product the endpoint belongs to) and `account_verification_pending` (provisioned, verification not yet complete). Both are listed in the [Error Reference](/api/production/errors).

## August 3, 2026

## Self-serve API keys

API keys are no longer issued by Agora on request. Owners and Admins manage them under **API keys**, in the menu beneath your name in the [Agora dashboard](https://app.agora.finance): name a key, pick the roles it carries, and copy the secret once at creation. Keys can be paused, resumed, or revoked (revoking is Owner-only), and each change takes effect immediately, including on session JWTs already issued.

Two new `401` reasons come with it:

* `token_paused`: the key behind the session is paused. Resume it from the dashboard.
* `key_not_provisioned`: the key was not created through the dashboard and is no longer usable. Create a new one.

## Other changes

* **Transactions**: legs can now carry a `fee` detail type, a manual accounting entry with no rail reference.
* **Routes**: `binance-smart-chain`, `core`, `katana`, `mantle`, and `plume` are no longer supported destinations. Routes to those chains are omitted from list responses and their deposit instructions are no longer returned. Metrics still cover every chain AUSD is deployed on.
* **Routes**: every deposit instruction now carries at least one entry in `supportedCurrencies`.

## July 2, 2026

## Transactions and account management

The Public API adds a transactions history and endpoints to register and update accounts. All new endpoints are in **Beta**.

**Transactions**

* `GET /v0/transactions`: list your settled transactions, newest first, with the source and recipient counterparties and the amounts moved on each side. Paginated with `cursor` / `limit`.
* `GET /v0/transactions/{txnId}`: retrieve a single transaction with its full per-leg breakdown (direction, settlement rail, and rail reference).

**Accounts**

* `POST /v0/accounts`: register a wallet (on one or more networks) or a bank account. Registering a wallet starts the per-network entitlement flow; the API never auto-approves.
* `PUT /v0/accounts/{accountId}`: rename an account, add a network to a wallet, or request an entitlement (e.g. `instant_settlement`) on a network.
* `GET /v0/accounts` now returns per-network `entitlements` on wallets and the full `accountNumber` plus `beneficiary` on bank accounts.

## June 9, 2026

## Authentication, Accounts, and Routes

The Public API gains its first authenticated endpoints, beyond the existing supply metrics. These are in **Beta** and access is gated: API keys are issued by Agora on request, so reach out to the Agora team to inquire about one. The public metrics endpoints stay open and need no key.

**Authentication**

* `POST /v0/auth/token` — exchange a long-lived API key for a short-lived (15-minute) session JWT, attached as a bearer token on every authenticated request. See the [Authentication guide](/api/production/authentication).

**Accounts**

* `GET /v0/accounts` — list the bank accounts and blockchain wallets registered to your organization. Read-only; accounts are registered from the dashboard.

**Routes**

* `POST /v0/routes` — create a reusable mint or redeem route and receive settlement instructions: a wire memo for fiat sources, or a deposit address per chain for onchain sources.
* `GET /v0/routes` — list every route on your organization, each with its full instructions.
* `GET /v0/routes/{routeId}` — retrieve a single route by ID.

## May 4, 2026

## Public API Beta launch

Initial Beta release of the Agora Public API. Three unauthenticated endpoints for AUSD supply data:

* `GET /v0/metrics` — full per-chain breakdown plus aggregate totals
* `GET /v0/metrics/total-supply` — aggregate total supply as a plain-text decimal
* `GET /v0/metrics/circulating-supply` — aggregate circulating supply as a plain-text decimal