API Versioning
The API reference shows/v2 only where the current contract requires it. Unified routes such as
GET /strategies, strategy bytecode, and strategy status use unversioned paths. Version-specific
strategy detail, wallet, and swap routes include /v2, and the prefix is a required part of those
URLs. Cross-resource routes such as /actions are also unversioned.
2026
October 2026
API- Strategy quote and bytecode requests reuse compiled routing topology for up to one hour. Customer access, strategy availability, fees and provider quotes remain current for each request.
- With strategy routing enabled, bytecode requests overlap independent metadata and admission reads to reduce response latency. Current strategy validation, workflow ownership checks and required settlement acknowledgements still complete before funding instructions are returned.
-
Added Pods Hosted KYC:
POST /api/v1/kyc/hosted/sessionscreates a verification on a page Pods hosts and returns a link, andPOST /api/v1/kyc/hosted/resetrestarts a retryable rejection from the first step.GET /api/v1/kyc/statusreturnsverificationLinkandverificationLinkExpiresAtfor these profiles. Available per account on request. New rejection reason codesADDRESS_INVALID(retryable) andREGION_NOT_SUPPORTED(final). -
Brazil Pix ↔ USDT0 on Stable (
stable, chain 988) throughGET /v2/swap/quote, in both directions. The offramp can be paid with the quote’stransactionDatabatch or with a plain USDT0 transfer to itsdepositAddress. -
UnblockPay USD wire quotes list UnblockPay’s flat wire fee as a
paymentRailcharge (USD). USD onramp quotes, Avenia included, no longer count the rail fee a second time inbridgeAndSlippage. USD offramp quotes no longer returnrawQuote. -
UnblockPay USD wire offramp:
POST /api/v1/kyc/currency-unlockaccepts optionalisThirdParty(defaultfalse) and only registers a wire External Account for a US beneficiary address (beneficiaryCountry=USA; otherwiseUNBLOCKPAY_WIRE_BENEFICIARY_COUNTRY_UNSUPPORTED). Offramp quotes returnUNBLOCKPAY_WIRE_EXTERNAL_ACCOUNT_NOT_APPROVEDuntil the account is approved, andRAMP_RAIL_TEMPORARILY_UNAVAILABLE(503) while the provider has the rail disabled. - Aave deposit-address fee accounting now uses the same scaled-share basis as direct deposits and withdrawals. Public funding amounts remain in token units; partial and full withdrawals preserve the accepted fee caps and customer minimum.
- Added partial and full quoted-balance Aave Polygon withdrawals through deposit-address funding without a helper deployment. Send the quoted aToken amount once; the withdrawal redeems that position and its accrued interest. Fee-bearing withdrawals redeem into the address before paying fees and the customer remainder. Completion requires verified delivery and an empty receipt position. Full quoted withdrawals may leave interest in the source wallet.
- Universal Router deposit addresses require one exact customer funding transfer. Underpayments and overpayments are refunded to the verified source, with completion recorded after refund confirmation. Wrong tokens and additional transfers are flagged for review. This policy applies to SettlementWorkflow-owned addresses; older Quote-based deposit-address routes retain their existing behavior.
-
With strategy routing enabled, the strategy bytecode route supports same-chain swaps and cross-chain bridge/swaps into the Aave or supported Morpho investment selected by
strategyId. Deposits use verified actual proceeds while preserving the accepted minimum and a single entry fee. Supported customer-wallet execution and deposit-address funding retain their custody and recipient boundaries. Existing underlying-asset deposit addresses remain available. -
Ondo stock strategies on BSC and Ethereum accept optional
slippageonGET /strategies/:id/bytecode(fraction of 1, same range as swap quotes). It sets the CoW or primary order tolerance. Omitted, BSC market orders stay at 100 bps, BSC client limits stay at 10 bps, and Ethereum primary orders stay at 60 bps.order.buyAmount,tokenOut.expectedAmountOut, andtokenOut.minAmountOutstay equal. Other strategies returnSLIPPAGE_NOT_SUPPORTED.
- Pods Hosted KYC: new guide for the Pods-hosted verification flow (session, link, polling, retry and reset); Error codes: hosted session errors; KYC overview and Set up Pods KYC point to it; Backend example:
sumsub-hostedmode - Ramp quotes: Pix ↔ USDT0 on Stable, including the two offramp payment paths
- Foreign USD KYC and ramps: registering the UnblockPay wire External Account and when to send
isThirdParty - Ondo Global Markets:
spotPosition.avgPurchasePrice, the USDC price paid per share still held, including when the field isnull - Ondo Global Markets:
maxAmountPerTradeorder-size ceilings for the open Ethereum session and the BSC $15,000 cap - Ondo Global Markets: order slippage parameter
- Deposit and Withdraw:
slippageis not accepted outside Ondo stock strategies
September 2026
API-
Added an operator-controlled Universal Router swap kill switch, disabled by default (explicit
UNIVERSAL_ROUTER_SWAPS_ENABLED=trueenables it). When disabled, new crypto swaps use legacy provider-direct execution and Actions, including requests for deposit-address mode. Existing workflows continue; previously issued router quotes require a fresh quote for new execution. -
Standardized swap quote and bytecode mode selection on
settlementMode(directordepositAddress). Existing bytecodeautobehavior is unchanged. - Deposit-address swap preparation now starts Alchemy registration before provider quotation and waits for source monitoring acknowledgement before issuing funding instructions. Independent transfer discovery remains active.
- Fixed Arbitrum native deposit discovery through the independent RPC scanner by preserving the configured trace method through ingress verification. Failed RPC evidence retains retryable coverage and sanitized diagnostics.
-
Swap quotes accept explicit
settlementMode: direct | depositAddress. Provider instructions are generated for the selected wallet or predicted workflow Safe and reused while valid. A conflicting bytecode mode rejects; omitted-mode behavior is unchanged. -
Ondo BSC CoW (
Ondo-*-bsc)GET /strategies/:id/bytecodeaccepts independentpriceInUsd(integer USD cents) andexpireAt(UTC Unix seconds) onrequest-lend/request-withdraw. Client limits use 10 bps slippage; market quotes stay at 100 bps. Other strategies returnPRICE_IN_USD_NOT_SUPPORTED/EXPIRE_AT_NOT_SUPPORTED. -
GET /actions/:id/cancel?wallet=refunds a funded, unfilled client-limit Ondo BSC order. ExpireAt-only orders are not cancellable. HTTP 200 means the refund outbox was queued;ACTION_CANCEL_REFUND_QUEUE_FAILED(502) if queueing fails afterREFUNDED.
- Ondo Global Markets: limit price, expiry matrix, quote fields (
clientLimitPriceUsd,spotPriceUsd,distanceBps), and cancel - OpenAPI:
priceInUsd/expireAton strategy bytecode;GET /actions/{id}/cancel
August 2026
API- Public Brazil Pix rails via
GET /v2/swap/quote(+ bytecode): Pix↔USDC on Base and Monad; Pix↔BRLA on Polygon (mint-to-user onramp / user-send offramp); Pix BRL ↔ BRS Solana (1:1 BRLA inventory; user never holds BRLA); Pix BRL ↔ BRZ Polygon (1:1 BRLA inventory; offramp is bridge-direct + Track); Pix↔Morpho hyperUSDCa on Monad. BRLA, BRS, and BRZ rails charge no Pods/customer swap markup — amounts pass through Avenia / inventory. Deframe-solver Pix rails use two-stepON_RAMP_FIAT/OFF_RAMP_FIATActions with Moralis TRANSFER suppression. - Ramp KYC
walletAddressaccepts a checksummed EVM address or a Solana public key on Sumsub share-token and BigDataCorp session routes. - Solana-origin swap bytecode supports
output=instructions({ instructions, lutsByAddress? }). BRS offramp Memo V1 carriesquote.quoteId(UUID).
- Foreign USD KYC and ramps: Sumsub share token for non-Brazil users, USD currency unlock, and USD↔USDC quote patterns (bank fields resolve-or-create beneficiary on offramp quote)
- OpenAPI:
POST /api/v1/kyc/foreign/sumsub-share-token,POST /api/v1/kyc/currency-unlock;KycStatusResponseaddsusdEnabledandeurEnabled - Move money with Pods Ramp: supported-route matrix, USDC addresses for Base/Monad, Pix↔BRLA Polygon examples, Pix↔BRS Solana, Pix↔BRZ Polygon, and Morpho hyperUSDCa Monad onramp/offramp
- Set up Pods KYC: KYC
walletAddressmay be a Solana public key - Ramp, KYC money-movement, and Swap guides now treat
GET /v2/swap/quotewith addresses/pixKeyas the only recommended path;POST /v2/swap/bytecodeis documented as legacy/optional - OpenAPI (
GET /v2/swap/quote/POST /v2/swap/bytecode): one-call quote preference; bytecode marked legacy/optional;WalletAddressschema for EVM or Solana
July 2026
API — breakingnetAPYnow deducts the integrator markup fee in addition to the performance fee:grossAPY × (1 − (performanceFeeBps + markupFeeBps) / 10000). Previously only the performance fee was subtracted, so customers on a markup agreement were shown a net APY higher than they would actually earn.grossAPYis now consistently the raw protocol rate on every endpoint. It was previously understated on Aave and Morpho strategies.apyAfterFeeshas been removed from position responses. It was undocumented, absent on Aave and Morpho strategies, and duplicatednetAPY.
- Fees: new APY Fields section documenting which figures include Pods
fees and the
netAPYformula - OpenAPI: gross/net semantics documented on every APY field
May 2026
APIGET /v2/swap/quote: optionalpreferredProviderquery parameter to pin which swap provider’s quote is persisted when multiple providers support the route; response remains a single{ quote }object (bestexpectedAmountOutwhen omitted)
- Get a Quote:
preferredProvider, multi-route aggregation, and related error codes - OpenAPI (
/v2/swap/quote):preferredProviderparameter and updated endpoint description
April 2026
Documentation- Documented canonical chain fields (
chainIdIn,chainIdOut,chainId) across OpenAPI, swap quote guide, architecture overview, and Cursor route rules—aligned with enriched swap, strategy, and tracking responses - Documented success-response contract (2xx JSON body, 204, no
successflag) in OpenAPI intro, Architecture, and Cursor rules - Documented unified error envelope (removed redundant
httpStatusin body); aligned Error Codes examples and rate-limit payload to live behavior - OpenAPI and Architecture: document ISO deadlines and strategy quote timestamps; aligned
scripts/generate-docs.jsstrategy quote response schema.
- Added
/transfer/bytecodeto API Reference with canonicaloriginAddress/destinationAddressand deprecated alias fields (walletOrigin,walletDestination) - Standardized success responses: removed
{ success: true/false }envelopes; invalid API key onGET /customers/by-api-keyis now 401; Supabase signup webhook returns 400/409/500 withHttpErrorshape; member delete returns 204; health and fulfill endpoints return JSON objects instead of bare strings - Standardized error JSON to
{ error: { code, message, details? } }acrossresponser, auth middlewares, 404/500 handlers, rate limits, and OpenAPI - Standardized date/time fields in JSON responses to ISO 8601 (UTC):
GET /v2/swap/quotequote.deadlineDate; wallet history DTOs; top-level dates onGET /actions/:id.
March 2026
Documentation- Added Why Pods page with competitive differentiation and build-vs-buy comparison
- Added Fees page documenting swap fees (25 BPS), yield performance fees (5%), and integrator markup
- Added Error Codes reference with 20+ error codes organized by category
- Added
llms.txtfor AI agent discoverability - Published OpenAPI spec at
docs.pods.finance/openapi.yaml - Linked status page from Architecture and API Reference pages
- Fixed rate limit documentation: aligned to 100 req/min, 1,000 req/hr per API key across all pages
- Added
.envtemplate andwalletAddresssetup to Quickstart - Fixed strategy response shapes in docs to match live API (
datapagination, flatassetfield, compositeid) - Aligned list-pagination docs across OpenAPI, Quickstart, yield guide, and examples:
paginationnow documentstotal,totalPages, andhasMore(replacing mongoose-styletotalRecords/hasNextPageon public responses) - Updated all swap code examples to use
/v2/endpoints
- Added cross-chain investment support
- Added Lido staking strategies (ETH and USD)
- Added covered savings xDAI strategy
- Added fee administration endpoints for integrators
- Fixed Lido addresses and ABIs
- Fixed withdraw history tracking
- Removed
request-lendaction
February 2026
Documentation- Added iframe integration guides (Privy, wagmi/viem)
- Added EarnWidget and SwapWidget documentation
- Added LLM playbook for AI tool integration
- Added external integration guides (Privy, Fireblocks, Dynamic)
January 2026
API- Launched v2 swap endpoints (
/v2/swap/quote,/v2/swap/bytecode,/v2/swap/status/{id}) - Added strategy analytics endpoint
- Added wallet transaction history endpoint (
/wallets/{wallet}/history/{strategyId}) - Added Sepolia testnet support for Aave strategies
- Added Base network strategies
- Migrated documentation to Mintlify
- Added yield guides (check protocol info, deposit, check positions, withdraw)
- Added swap guides (get quote, execute swap)
- Added JavaScript code examples (strategy deposit, same-chain swap, cross-chain swap)