Euler Finance Changes API

Change requests for managed data. Every data area (token images, price sources, and later ones) goes through the same routes, with server-side checks, a per-domain policy that applies or proposes, admin review, revert, and an auto-apply kill switch.

Operations 8

GET /v3/changes/targets/price-sources/{chainId}/{address} Read a token's price sources before proposing a change #
GET /v3/changes/targets/{domain} Read one target of any domain before proposing a change #
GET /v3/changes List changes in a domain #
POST /v3/changes Submit a change in any registered domain #
GET /v3/changes/{id} Read a change with its events #
POST /v3/changes/{id}/withdraw Withdraw an open proposal #
GET /v3/changes/domains List the data domains that changes go through #
POST /v3/work-items/{type}/{id}/dismiss Review a work item ("reviewed, no action") #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/euler:euler-changes-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

euler-changes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Euler Data API (V3) Changes API
  version: 3.0.0
  description: 'API specification for Euler Data v3. This spec defines the current

    resource-oriented contract for the platform, with emphasis on consistent

    schemas, predictable REST semantics, caching, observability, and a uniform

    developer experience. This public document covers unauthenticated endpoints and integrations that

    use API keys, including capability-scoped keys. Browser-session Toolbox

    operations, admin-secret operations, and the Prometheus endpoint are served

    separately and are intentionally omitted. Migration notes

    - Euler Data v3 is not a path-for-path clone of v1/v2. Some endpoints map

    directly, some require multiple v3 calls, and some legacy aggregates were

    intentionally removed. - The live migration guide explains how legacy v1/v2

    endpoints and payloads map into the v3 resource model. - Important semantic changes:

    - Vault base APY and rewards APY are exposed separately in v3. - Account positions are flattened into account-vault rows instead of the

    legacy nested sub-account shape. - All supported API paths live under `/v3`; legacy paths return `410`. - Summary endpoints prefer smaller, focused resources over large

    BFF-style payloads. Base path: /v3


    Conventions

    - JSON field naming: camelCase

    - Addresses: accept lowercase or checksum; responses are EIP-55 checksummed

    - Public APY values (`*Apy`, `apy*`): percent numbers with 6 decimal places (e.g., 5.123456 = 5.123456%)

    - Contract interest-rate fields (`borrowAPY`, `supplyAPY` in `interestRates`): decimal strings in contract fraction units

    - Ratios (utilization, LTV, etc.): numbers with 6 decimal places

    - Response timestamps: ISO-8601 strings (UTC). Some legacy fields still expose unix

    seconds for compatibility and include `*Iso` companions. - Query time ranges: unix seconds (from/to)


    Unit policy

    - v3 separates market metadata from contract verdicts by both name and type. - Market-normalized USD prices and USD values are JSON numbers. These are values

    derived from off-chain pricing, cached price snapshots, or API-level market math. This includes `/v3/prices`, token price routes, vault/earn/protocol USD totals,

    portfolio market values, portfolio USD liquidation/risk fields such as

    `liabilityValueUsd`, `totalCollateralValueUsd`, `borrowLiquidationPriceUsd`,

    and `collateralLiquidationPricesUsd`, and vault holder `assetsUsd`. - Contract-derived oracle and raw account-liquidity verdict values are exact strings. These preserve the integer value used by contracts, normalized to 18 decimals

    for API exposure. Oracle prices are quoted in the vault unit of account, which

    can be USD, ETH, or another asset. This includes `/v3/oracles/prices`, raw

    account-liquidity `liabilityValue` and `totalCollateralValue` objects,

    `liabilityValueBorrowing`, `liabilityValueLiquidation`, and collateral verdict

    values. - On-chain token quantities are bigint strings in their native unit scale. This

    includes amounts, balances, shares, assets, borrows, reward amounts, liquidation

    repay/yield amounts, and block numbers. - Caps are also bigint strings, but EVK caps are exposed as resolved underlying

    asset-unit amounts rather than packed contract config words; an unlimited EVK cap is

    type(uint256).max and `0` is a zero cap. The exceptions are

    cap-history and config-history, which carry the raw uint16 encodings. - LTV config values use canonical basis-point strings. Legacy decimal aliases

    may remain on config-history payloads for compatibility when explicitly named. Rate limiting

    - Optional API keys for higher limits

    - Standard limits are 1000 req/min for unauthenticated callers (IP-based)

    and 10000 req/min for authenticated callers (per API key), with a 60s window. Individual API keys can carry a custom limit. - By default, proxy headers are not trusted for IP identity unless explicitly enabled. - Redis failures default to fail-closed (503) for strict enforcement; fail-open is opt-in. - RateLimit-* (IETF draft-6) and legacy X-RateLimit-* headers are returned.'
servers:
- url: /
  description: Current environment
security: []
tags:


# --- truncated at 32 KB (50 KB total) ---
# Full source: https://artifacts.apis.io/euler/openapi/euler-changes-api-openapi.yml