Loam Customer API · Preview

Developer Hub

Start here to build on the Loam Customer API.

Both paths need credentials. Start by creating an API client.

A first request

One HTTPS call with a bearer token. Authentication is OAuth 2.0 client credentials, so there is no redirect to handle and no SDK to install.

GET /api/v1/balances
curl --fail-with-body --silent --show-error \  --header "Authorization: Bearer $LOAM_TOKEN" \  "$LOAM_API_BASE/balances" | jq# Response{  "ok": true,  "data": [    {      "account_id": "6f9619ff-8b86-d011-b42d-00c04fc964ff",      "balance": 4250000,      "currency": "USD",      "last_settled_at": "2026-07-14T09:12:04.118Z"    }  ]}

What the API covers today

Preview access is deliberately narrower than the published contract. Everything below is callable now or names the grant it is waiting on.

Open in preview Scopes read and write

  • Trades and their invoices · Marketplace capability (404 unless enabled; requires payments + invoicing) GET /api/v1/trades
  • Settled balances GET /api/v1/balances
  • Treasury vault terms GET /api/v1/vaults
  • Marketplace listings · Marketplace capability (404 unless enabled; requires payments + invoicing) GET /api/v1/listings
  • Offers, listed and created · Marketplace capability (404 unless enabled; requires payments + invoicing) POST /api/v1/offers
  • Foreign-exchange quotes POST /api/v1/fx/quotes

Closed in preview Scope money.write

  • Payments to an approved destination POST /api/v1/payments
  • Funds in from a bank account POST /api/v1/onramp
  • Funds out to a bank account POST /api/v1/offramp
  • Vault deposits and withdrawals POST /api/v1/vaults/…

Money movement needs a human organisation owner to grant the scope under step-up authentication, set a per-transaction limit, and approve the destination in advance. Those endpoints stay closed until preview ends.

How the API behaves

  • OAuth 2.0

    Client credentials grant

    Exchange a client id and secret for a short-lived bearer token with one form-encoded request. Scopes are read from the client per request, so narrowing one applies at once.

  • Envelope

    One shape for every route

    Success is ok then data; failure is ok: false with a machine-readable error code.

  • Idempotency

    Retries cost nothing

    Every write requires an Idempotency-Key. The same key with the same body replays the first outcome instead of writing twice.

  • Pagination

    Cursors, not offsets

    List routes return page.next_cursor. Pass it back as cursor until it comes back null.

Pick a path from here: the quickstart if you want a working request in front of you first, the reference if you already know the call you need.

Loam © 2026 Loam.

Loam is operated by Agridex Limited, company no. 13184186, registered in England and Wales, with registered office at Thomas House, 84 Eccleston Square, London, England, SW1V 1PX