Euler Finance Oracles API
Oracle routing, adapter, and price-source inspection endpoints. These expose pricing/oracle internals that were previously harder to inspect externally.
Oracle routing, adapter, and price-source inspection endpoints. These expose pricing/oracle internals that were previously harder to inspect externally.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/euler-oracles-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Euler Data API (V3) Oracles API
version: 3.0.0
description: API specification for Euler Data v3.
servers:
- url: /
description: Current environment
security: []
tags:
- name: Oracles
description: Oracle routing, adapter, and price-source inspection endpoints. These expose pricing/oracle internals that were previously harder to inspect externally.
paths:
/v3/oracles/prices:
get:
tags:
- Oracles
summary: Vault-scoped oracle prices
description: 'Supports exact mode (`chainId + vault + asset`) and list mode (`chainId` + pagination).
- Exact mode requires the full key.
- Exact mode returns `200` with `price: null` when the tuple is known but currently unpriced.
- Non-null `price` values are exact contract-derived prices encoded as 18-decimal bigint strings in `unitOfAccount` terms.
- Exact mode returns `404` only when the `(chainId, vault, asset)` tuple is unknown.
- Partial exact key requests return `400`.
- List mode returns flat rows sorted by `vault ASC, asset ASC`.'
x-status: implemented
x-cache-ttl: 60
parameters:
- name: chainId
in: query
required: true
schema:
type: integer
- name: vault
in: query
required: false
schema:
type: string
- name: asset
in: query
required: false
schema:
type: string
- $ref: '#/components/parameters/OffsetParam'
- $ref: '#/components/parameters/LimitParam'
responses:
'200':
description: Oracle prices
headers:
Cache-Control:
$ref: '#/components/headers/Cache-Control'
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/json:
schema:
type: object
properties:
data:
oneOf:
- type: object
properties:
chainId:
type: integer
vault:
type: string
asset:
type: string
price:
type: string
nullable: true
unitOfAccount:
type: string
nullable: true
unitOfAccountDecimals:
type: integer
nullable: true
source:
type: string
nullable: true
timestamp:
type: string
format: date-time
nullable: true
- type: array
items:
type: object
properties:
chainId:
type: integer
vault:
type: string
asset:
type: string
price:
type: string
nullable: true
unitOfAccount:
type: string
nullable: true
unitOfAccountDecimals:
type: integer
nullable: true
source:
type: string
nullable: true
timestamp:
type: string
format: date-time
nullable: true
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/Error400'
'404':
$ref: '#/components/responses/Error404'
'429':
$ref: '#/components/responses/Error429'
'500':
$ref: '#/components/responses/Error500'
'502':
$ref: '#/components/responses/Error502'
operationId: getOraclesPrices
/v3/oracles/routers:
get:
tags:
- Oracles
summary: Oracle router state
description: 'Factory-deployed EulerRouter list with latest indexed config and resolved-vault state.
- `chainId` is required.
- Optional filters: `vault`, `adapter`, `offset`, `limit`.'
x-status: implemented
x-cache-ttl: 300
parameters:
- name: chainId
in: query
required: true
schema:
type: integer
- name: vault
in: query
required: false
schema:
type: string
- name: adapter
in: query
required: false
schema:
type: string
- $ref: '#/components/parameters/OffsetParam'
- $ref: '#/components/parameters/LimitParam'
responses:
'200':
description: Router states
headers:
Cache-Control:
$ref: '#/components/headers/Cache-Control'
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/Error400'
'404':
$ref: '#/components/responses/Error404'
'429':
$ref: '#/components/responses/Error429'
'500':
$ref: '#/components/responses/Error500'
operationId: getOraclesRouters
/v3/oracles/historical-adapters:
get:
tags:
- Oracles
summary: Historical oracle adapters
description: 'Distinct oracle adapter addresses ever configured through `ConfigSet` events
on any EulerRouter deployed by OracleRouterFactory for the requested chain.
- `chainId` is required.
- Supports `offset` and `limit`.'
x-status: implemented
x-cache-ttl: 300
parameters:
- name: chainId
in: query
required: true
schema:
type: integer
- $ref: '#/components/parameters/OffsetParam'
- $ref: '#/components/parameters/LimitParam'
responses:
'200':
description: Historical adapter addresses
headers:
Cache-Control:
$ref: '#/components/headers/Cache-Control'
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
chainId:
type: integer
adapter:
type: string
firstSeenTimestamp:
type: string
format: date-time
lastSeenTimestamp:
type: string
format: date-time
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/Error400'
'404':
$ref: '#/components/responses/Error404'
'429':
$ref: '#/components/responses/Error429'
'500':
$ref: '#/components/responses/Error500'
operationId: getOraclesHistoricalAdapters
components:
headers:
Cache-Control:
description: Cache policy for this response.
schema:
type: string
X-Request-Id:
description: Request identifier for tracing.
schema:
type: string
schemas:
ErrorResponse:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
- requestId
properties:
code:
type: string
description: 'Domain error code. Examples:
- INVALID_ADDRESS
- CHAIN_NOT_SUPPORTED
- VAULT_NOT_FOUND
- TOKEN_NOT_FOUND
- ACCOUNT_NOT_FOUND
- VALIDATION_ERROR
- RATE_LIMIT_EXCEEDED
- UNSUPPORTED_MEDIA_TYPE
- UNAUTHORIZED
- FORBIDDEN
- INTERNAL_ERROR
'
message:
type: string
requestId:
type: string
details:
type: object
additionalProperties: true
PaginationMeta:
type: object
required:
- timestamp
properties:
total:
type: integer
description: Exact total count when the endpoint provides one.
hasMore:
type: boolean
description: Indicates whether another page exists beyond the current page.
offset:
type: integer
limit:
type: integer
description: Echoed page size after endpoint-side clamping.
timestamp:
type: string
format: date-time
chainId:
type: string
description: Comma-separated chain IDs for multi-chain responses.
responses:
Error502:
description: Upstream dependency failure
headers:
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Error400:
description: Bad request
headers:
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Error500:
description: Internal server error
headers:
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Error429:
description: Rate limited
headers:
Retry-After:
description: Seconds until next request is allowed.
schema:
type: integer
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Error404:
description: Not found
headers:
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
parameters:
LimitParam:
name: limit
in: query
required: false
description: Requested page size. Values above the endpoint cap are clamped; the default shared cap is 100.
schema:
type: integer
default: 20
maximum: 100
OffsetParam:
name: offset
in: query
required: false
schema:
type: integer
default: 0
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key authentication (optional; higher rate limits).
BearerAuth:
type: http
scheme: bearer
bearerFormat: API key
description: 'Alternative to X-API-Key using Authorization: Bearer <key>'
AdminSecret:
type: apiKey
in: header
name: X-Admin-Secret
description: Admin secret (server-to-server) for API key management.
PlatformSession:
type: apiKey
in: cookie
name: euler_platform_session
description: Signed, httpOnly platform-operator browser session cookie.
PlatformCsrf:
type: apiKey
in: header
name: X-CSRF-Token
description: Double-submit CSRF token required for unsafe cookie-authenticated methods.