Files
trezor-suite/suite-common/earn-api/openapi.yaml

5482 lines
218 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
openapi: 3.0.0
paths:
/v1/yields:
get:
operationId: YieldsController_getYields
summary: List all yield opportunities
description: >-
Retrieve a paginated list of available yield opportunities across all
supported networks and protocols.
parameters:
- name: offset
required: false
in: query
description: Offset for pagination
example: 0
schema:
minimum: 0
default: 0
type: number
- name: limit
required: false
in: query
description: Number of items per page
example: 20
schema:
minimum: 1
maximum: 100
default: 20
type: number
- name: network
required: false
in: query
description: Filter by network
schema:
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
type: string
- name: chainId
required: false
in: query
description: 'Filter by EVM chain ID (Ethereum: 1, Polygon: 137)'
example: '1'
schema:
type: string
- name: networks
required: false
in: query
description: Filter by multiple networks (comma separated)
schema:
type: string
- name: yieldId
required: false
in: query
example: optimism-usdt-aave-v3-lending
schema:
maxLength: 200
type: string
- name: yieldIds
required: false
in: query
example:
- optimism-usdt-aave-v3-lending
schema:
maxItems: 100
maxLength: 200
type: array
items:
type: string
- name: type
required: false
in: query
description: Filter by yield type
schema:
enum:
- staking
- restaking
- lending
- vault
- fixed_yield
- real_world_asset
- concentrated_liquidity_pool
- liquidity_pool
type: string
- name: types
required: false
in: query
description: Filter by multiple yield types (comma separated)
schema:
type: array
items:
type: string
enum:
- staking
- restaking
- lending
- vault
- fixed_yield
- real_world_asset
- concentrated_liquidity_pool
- liquidity_pool
- name: hasCooldownPeriod
required: false
in: query
description: Filter by cooldown period
example: true
schema:
type: boolean
- name: hasWarmupPeriod
required: false
in: query
description: Filter by warmup period
example: true
schema:
type: boolean
- name: token
required: false
in: query
description: Filter by token symbol or address
schema:
type: string
- name: inputToken
required: false
in: query
description: Filter by input token symbol or address
schema:
type: string
- name: inputTokens
required: false
in: query
description: Filter by multiple input token symbol or address (comma separated)
schema:
type: array
items:
type: string
- name: provider
required: false
in: query
description: Filter by provider ID
schema:
type: string
- name: providers
required: false
in: query
description: Filter by multiple provider IDs (comma separated)
schema:
type: array
items:
type: string
- name: search
required: false
in: query
description: Search by yield name
schema:
type: string
- name: sort
required: false
in: query
description: Sort by yield status
schema:
enum:
- statusEnterAsc
- statusEnterDesc
- statusExitAsc
- statusExitDesc
type: string
responses:
'200':
description: Returns a paginated list of yield opportunities
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDto'
- properties:
items:
type: array
items:
$ref: '#/components/schemas/YieldDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Discovery
/v1/yields/balances:
post:
operationId: YieldsController_getAggregateBalances
summary: Get balances across multiple yields and networks
description: >-
Retrieve balances for multiple wallet addresses across different
networks and yield opportunities. Send an array of balance requests -
each request can specify a yieldId (optional for chain scanning),
address, network, and custom arguments. This is the same format as the
single yield balance endpoint but in array form. Duplicate requests
(same yieldId + address + network) are automatically deduplicated, with
specific yield requests taking precedence over chain scans.
parameters: []
requestBody:
required: true
description: >-
Request containing an array of balance queries. Each query contains:
yieldId (optional), address (required), network (required), and
arguments (optional). When yieldId is omitted, all yields for that
network will be scanned. You can mix chain scans with specific yield
queries - duplicates are automatically deduplicated with specific
queries taking precedence.
content:
application/json:
schema:
$ref: '#/components/schemas/BalancesRequestDto'
responses:
'200':
description: >-
Returns balances grouped by yield with detailed error information
for failed yields. Only yields with non-zero balances are included
in the response.
content:
application/json:
schema:
$ref: '#/components/schemas/BalancesResponseDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Portfolio
/v1/yields/{yieldId}:
get:
operationId: YieldsController_getYield
summary: Get yield metadata
description: >-
Retrieve detailed information about a specific yield opportunity
including APY, tokens, protocol details, and more.
parameters:
- name: yieldId
required: true
in: path
description: The unique identifier of the yield
example: ethereum-eth-lido-staking
schema:
type: string
responses:
'200':
description: >-
Returns yield metadata including network, APR, TVL, and token
information
content:
application/json:
schema:
$ref: '#/components/schemas/YieldDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'404':
description: Yield not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Discovery
/v1/yields/{yieldId}/risk:
get:
operationId: YieldsController_getYieldRisk
summary: Get risk metadata for a yield
description: Retrieve risk metadata associated with a specific yield.
parameters:
- name: yieldId
required: true
in: path
description: The unique identifier of the yield
example: ethereum-eth-lido-staking
schema:
type: string
responses:
'200':
description: Risk metadata retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RiskParameterDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'404':
description: Yield not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Risk
/v1/yields/{yieldId}/balances:
post:
operationId: YieldsController_getYieldBalances
summary: Get balances for a specific yield
description: >-
Retrieve all balances associated with a yield opportunity for a specific
wallet address, including active, pending, claimable, and withdrawable
balances. The network is automatically determined from the yield
configuration.
parameters:
- name: yieldId
required: true
in: path
description: The unique identifier of the yield opportunity
example: ethereum-eth-lido-staking
schema:
type: string
requestBody:
required: true
description: >-
Balance request with address and optional arguments for advanced
balance queries
content:
application/json:
schema:
$ref: '#/components/schemas/YieldBalancesRequestDto'
responses:
'200':
description: >-
Returns balance information including different balance types
(active, entering, exiting, withdrawable, claimable, locked) with
amounts and available actions
content:
application/json:
schema:
$ref: '#/components/schemas/YieldBalancesDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'404':
description: Yield not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Portfolio
/v1/yields/{yieldId}/validators:
get:
operationId: YieldsController_getYieldValidators
summary: Get yield validators
description: >-
Retrieve a paginated list of validators available for staking or
delegation for this yield opportunity.
parameters:
- name: yieldId
required: true
in: path
description: The unique identifier of the yield
example: cosmos-staking
schema:
type: string
- name: offset
required: false
in: query
description: Offset for pagination
example: 0
schema:
minimum: 0
default: 0
type: number
- name: limit
required: false
in: query
description: Number of items per page
example: 20
schema:
minimum: 1
maximum: 100
default: 20
type: number
- name: name
required: false
in: query
description: Filter by validator name (case-insensitive, partial match)
schema:
type: string
- name: address
required: false
in: query
description: Filter by validator address
schema:
type: string
- name: provider
required: false
in: query
description: Filter by provider ID
schema:
type: string
- name: status
required: false
in: query
description: Filter by validator status
schema:
type: string
- name: preferred
required: false
in: query
description: Filter by preferred flag
schema:
type: boolean
responses:
'200':
description: >-
Returns paginated list of available validators with detailed
information
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDto'
- properties:
items:
type: array
items:
$ref: '#/components/schemas/ValidatorDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'404':
description: Yield not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Discovery
/v1/actions:
get:
operationId: ActionsController_getActions
summary: Get user actions
description: >-
Retrieve all actions performed by a user, with optional filtering by
yield, status, category, etc. In the future, this may include
personalized action recommendations.
parameters:
- name: offset
required: false
in: query
description: Offset for pagination
example: 0
schema:
minimum: 0
default: 0
type: number
- name: limit
required: false
in: query
description: Maximum number of items to return
example: 20
schema:
minimum: 1
maximum: 100
default: 20
type: number
- name: address
required: true
in: query
description: User wallet address to get actions for
example: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e'
schema:
type: string
- name: status
required: false
in: query
description: Filter actions by status
schema:
enum:
- pending
- completed
- failed
type: string
- name: intent
required: false
in: query
description: Filter actions by intent
schema:
enum:
- enter
- exit
- manage
type: string
- name: type
required: false
in: query
description: Filter by action type
schema:
enum:
- STAKE
- UNSTAKE
- CLAIM_REWARDS
- RESTAKE_REWARDS
- WITHDRAW
- WITHDRAW_ALL
- RESTAKE
- CLAIM_UNSTAKED
- UNLOCK_LOCKED
- STAKE_LOCKED
- VOTE
- REVOKE
- VOTE_LOCKED
- REVOTE
- REBOND
- MIGRATE
- VERIFY_WITHDRAW_CREDENTIALS
- DELEGATE
type: string
- name: yieldId
required: false
in: query
description: Filter actions by specific yield
example: ethereum-eth-lido-staking
schema:
type: string
responses:
'200':
description: Returns a paginated list of user actions
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDto'
- properties:
items:
type: array
items:
$ref: '#/components/schemas/ActionDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Actions
/v1/actions/{actionId}:
get:
operationId: ActionsController_getAction
summary: Get action details
description: >-
Retrieve detailed information about a specific action including current
status, transactions, and execution details.
parameters:
- name: actionId
required: true
in: path
description: The unique identifier of the action
example: action_123abc
schema:
type: string
responses:
'200':
description: Action details retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ActionDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'404':
description: Action not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Actions
/v1/actions/enter:
post:
operationId: ActionsController_enterYield
summary: Enter a yield
description: >-
Generate the transactions needed to enter a yield position with the
provided parameters.
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateActionDto'
responses:
'201':
description: Returns action with array of transactions to execute
content:
application/json:
schema:
$ref: '#/components/schemas/ActionDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'403':
description: Access denied due to geolocation restrictions
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Access denied from US (US-CA)
error:
type: string
example: Forbidden
statusCode:
type: number
example: 403
'404':
description: Yield not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Actions
/v1/actions/exit:
post:
operationId: ActionsController_exitYield
summary: Exit a yield
description: >-
Generate the transactions needed to exit a yield position with the
provided parameters.
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateActionDto'
responses:
'201':
description: Returns action with array of transactions to execute
content:
application/json:
schema:
$ref: '#/components/schemas/ActionDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'403':
description: Access denied due to geolocation restrictions
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Access denied from US (US-CA)
error:
type: string
example: Forbidden
statusCode:
type: number
example: 403
'404':
description: Yield not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Actions
/v1/actions/manage:
post:
operationId: ActionsController_manageYield
summary: Manage a yield
description: >-
Generate the transactions needed to perform management actions on a
yield position.
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateManageActionDto'
responses:
'201':
description: Returns action with array of transactions to execute
content:
application/json:
schema:
$ref: '#/components/schemas/ActionDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'403':
description: Access denied due to geolocation restrictions
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Access denied from US (US-CA)
error:
type: string
example: Forbidden
statusCode:
type: number
example: 403
'404':
description: Yield not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Actions
/v1/transactions/{transactionId}/submit-hash:
put:
operationId: TransactionsController_submitTransactionHash
summary: Submit transaction hash
description: >-
Submit the transaction hash after broadcasting a transaction to the
blockchain. This updates the transaction status and enables tracking.
parameters:
- name: transactionId
required: true
in: path
description: The unique identifier of the transaction
example: 21f5fd15-cf80-4b9a-804f-062c40dc3740
schema: {}
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SubmitHashDto'
responses:
'200':
description: Transaction successfully updated with hash
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionDto'
'400':
description: Invalid transaction hash format
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'404':
description: Transaction not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Actions
/v1/transactions/{transactionId}/submit:
post:
operationId: TransactionsController_submitTransaction
summary: Submit transaction
description: Submit the transaction to the blockchain.
parameters:
- name: transactionId
required: true
in: path
description: The unique identifier of the transaction
example: 21f5fd15-cf80-4b9a-804f-062c40dc3740
schema: {}
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SubmitTransactionDto'
responses:
'200':
description: Transaction successfully submitted
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionDto'
'400':
description: Invalid transaction format
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'404':
description: Transaction not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Actions
/v1/transactions/{transactionId}:
get:
operationId: TransactionsController_getTransaction
summary: Get transaction details
description: >-
Retrieve detailed information about a specific transaction including
current status, hash, and execution details.
parameters:
- name: transactionId
required: true
in: path
description: The unique identifier of the transaction
example: 21f5fd15-cf80-4b9a-804f-062c40dc3740
schema: {}
responses:
'200':
description: Transaction details retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'404':
description: Transaction not found with the specified ID
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Actions
/v1/networks:
get:
operationId: NetworksController_getNetworks
summary: List all available networks
description: >-
Retrieve a list of all supported networks that can be used for filtering
yields and other operations.
parameters: []
responses:
'200':
description: Returns a list of all available networks
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/NetworkDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Discovery
/v1/providers:
get:
operationId: ProvidersController_getProviders
summary: Get all providers
description: >-
Returns a paginated list of all providers, including both protocol and
validator providers.
parameters:
- name: offset
required: false
in: query
description: Offset for pagination
example: 0
schema:
minimum: 0
default: 0
type: number
- name: limit
required: false
in: query
description: Number of items per page
example: 20
schema:
minimum: 1
maximum: 100
default: 20
type: number
responses:
'200':
description: List of providers
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDto'
- properties:
items:
type: array
items:
$ref: '#/components/schemas/ProviderDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Discovery
/v1/providers/{providerId}:
get:
operationId: ProvidersController_getProvider
summary: Get provider by ID
description: Returns detailed information about a specific provider.
parameters:
- name: providerId
required: true
in: path
schema:
type: string
responses:
'200':
description: Provider details
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Validation failed
error:
type: string
example: Bad Request
statusCode:
type: number
example: 400
'401':
description: Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Invalid API key
error:
type: string
example: Unauthorized
statusCode:
type: number
example: 401
'429':
description: Rate limit exceeded
headers:
x-ratelimit-limit:
description: Request limit per window
schema:
type: string
x-ratelimit-remaining:
description: Remaining requests (will be 0)
schema:
type: string
x-ratelimit-reset:
description: Unix timestamp when window resets
schema:
type: string
retry-after:
description: Seconds to wait before retrying
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit exceeded
error:
type: string
example: Too Many Requests
statusCode:
type: number
example: 429
retryAfter:
type: number
example: 30
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal server error
error:
type: string
example: Internal Server Error
statusCode:
type: number
example: 500
security:
- ApiKey: []
tags:
- Discovery
/health:
get:
operationId: HealthController_health
summary: Health check
description: Get the health status of the yield API with current timestamp
parameters: []
responses:
'200':
description: Health check status with timestamp
content:
application/json:
schema:
$ref: '#/components/schemas/HealthStatusDto'
tags:
- Health
info:
title: Yield.xyz API
description: API Documentation
version: '1.0'
contact: {}
tags:
- name: Discovery
description: Browse and discover yield opportunities, networks, and providers
- name: Portfolio
description: User-specific balances, activity, and rewards
- name: Actions
description: Generate transactions to enter, exit, and manage yields
servers:
- url: https://api.yield.xyz
description: Production environment
components:
securitySchemes:
ApiKey:
type: apiKey
in: header
name: x-api-key
schemas:
TokenDto:
type: object
properties:
symbol:
type: string
description: Token symbol
example: ETH
name:
type: string
description: Token name
example: Ethereum
decimals:
type: number
description: Token decimal places
example: 18
network:
type: string
description: Token network
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
example: Ethereum
address:
type: string
description: Token address (if applicable)
example: 0x...
logoURI:
type: string
description: Token logo URI
example: https://...
isPoints:
type: boolean
description: Token is points
example: true
coinGeckoId:
type: string
description: Token CoinGecko ID
example: ethereum
required:
- symbol
- name
- decimals
- network
RewardDto:
type: object
properties:
rate:
type: number
description: Reward rate as a decimal (e.g. 0.04 = 4%)
example: 0.04
rateType:
type: string
description: Whether this rate is APR or APY
example: APR
token:
description: Token received as reward
allOf:
- $ref: '#/components/schemas/TokenDto'
yieldSource:
type: string
description: Structured source of yield (e.g. staking, protocol incentive)
enum:
- staking
- restaking
- protocol_incentive
- points
- lending_interest
- mev
- real_world_asset_yield
- vault
example: protocol_incentive
description:
type: string
description: Optional human-readable description of this reward
example: LDO distributed to incentivize stETH adoption via Lido Boost
required:
- rate
- rateType
- token
- yieldSource
RewardRateDto:
type: object
properties:
total:
type: number
description: Estimated reward rate across all sources (e.g. staking, points)
example: 6.5
rateType:
type: string
description: Whether this reward rate is APR or APY
example: APR
components:
description: Breakdown of reward rates by source
type: array
items:
$ref: '#/components/schemas/RewardDto'
required:
- total
- rateType
- components
YieldStatisticsDto:
type: object
properties:
tvlUsd:
type: string
description: Total value locked in USD
example: 1,200,000
nullable: true
tvl:
type: string
description: Total value locked in primary underlying token
example: '500.25'
nullable: true
tvlRaw:
type: string
description: Raw total value locked (full precision)
example: '500250000000000000000'
nullable: true
uniqueUsers:
type: number
description: Number of users with active positions in the yield
example: 348
nullable: true
averagePositionSizeUsd:
type: string
description: Average position size in USD
example: 3,448.27
nullable: true
averagePositionSize:
type: string
description: Average position size in primary underlying token
example: '1.44'
nullable: true
YieldRiskExponentialDto:
type: object
properties:
poolRating:
type: object
description: Exponential pool rating
poolScore:
type: object
description: Exponential pool score (1-5)
ratingDescription:
type: object
description: Exponential rating description
url:
type: object
description: Exponential pool URL
YieldRiskCredoraDto:
type: object
properties:
rating:
type: object
description: Credora rating
score:
type: object
description: Credora score (1-5)
psl:
type: object
description: Probability of Significant Loss (annualized)
publishDate:
type: object
description: Credora publish date
curator:
type: object
description: Credora curator name
YieldRiskDto:
type: object
properties:
updatedAt:
type: string
description: Risk data last update timestamp
exponentialFi:
$ref: '#/components/schemas/YieldRiskExponentialDto'
credora:
$ref: '#/components/schemas/YieldRiskCredoraDto'
required:
- updatedAt
YieldStatusDto:
type: object
properties:
enter:
type: boolean
description: Whether the user can currently enter this yield
example: true
exit:
type: boolean
description: Whether the user can currently exit this yield
example: true
required:
- enter
- exit
ERCStandards:
type: string
description: Supported standards for this yield
enum:
- ERC20
- ERC4626
- ERC721
- ERC1155
YieldMetadataDto:
type: object
properties:
name:
type: string
description: Display name of the yield opportunity
example: Lido Staking
logoURI:
type: string
description: Yield opportunity logo URI
example: https://lido.fi/logo.png
description:
type: string
description: >-
Markdown-supported short description of this yield opportunity,
including where rewards come from.
example: >-
Stake ETH with Lido to earn auto-compounding validator rewards via
stETH.
documentation:
type: string
description: Link to documentation or integration guide
example: https://docs.lido.fi
underMaintenance:
type: boolean
description: Whether this yield is currently under maintenance
example: false
deprecated:
type: boolean
description: Whether this yield is deprecated and will be discontinued
example: false
supportedStandards:
type: array
items:
$ref: '#/components/schemas/ERCStandards'
required:
- name
- logoURI
- description
- documentation
- underMaintenance
- deprecated
- supportedStandards
YieldType:
type: string
description: Type of yield mechanism (staking, restaking, LP, vault, etc.)
enum:
- staking
- restaking
- lending
- vault
- fixed_yield
- real_world_asset
- concentrated_liquidity_pool
- liquidity_pool
RewardSchedule:
type: string
description: How often rewards are distributed (e.g. continuously, epoch-based)
enum:
- block
- hour
- day
- week
- month
- era
- epoch
- campaign
RewardClaiming:
type: string
description: 'How rewards are claimed: auto, manual, or mixed'
enum:
- auto
- manual
TimePeriodDto:
type: object
properties:
seconds:
type: number
description: Duration in seconds
example: 86400
required:
- seconds
YieldFeeDto:
type: object
properties:
deposit:
type: string
description: Deposit fee percentage
example: '0.00'
withdrawal:
type: string
description: Withdrawal fee percentage
example: '0.00'
management:
type: string
description: Management fee percentage (annual)
example: '2.00'
performance:
type: string
description: Performance fee percentage
example: '20.00'
YieldEntryLimitsDto:
type: object
properties:
minimum:
type: string
description: >-
Minimum amount required to enter this yield in token units (null if
no minimum)
example: '0.01'
nullable: true
maximum:
type: string
description: >-
Maximum amount allowed to enter this yield in token units (null if
no limit)
example: '1000.0'
nullable: true
required:
- minimum
- maximum
ArgumentFieldDto:
type: object
properties:
name:
type: string
description: Field name
enum:
- amount
- amounts
- validatorAddress
- validatorAddresses
- receiverAddress
- providerId
- duration
- inputToken
- inputTokenNetwork
- outputToken
- outputTokenNetwork
- subnetId
- tronResource
- feeConfigurationId
- cosmosPubKey
- tezosPubKey
- cAddressBech
- pAddressBech
- executionMode
- ledgerWalletApiCompatible
- useMaxAmount
- useInstantExecution
- rangeMin
- rangeMax
- percentage
- tokenId
example: amount
type:
type: string
description: Field type
example: string
enum:
- string
- number
- address
- enum
- boolean
label:
type: string
description: Field label
example: Amount to Enter
description:
type: string
description: Field description
required:
type: boolean
description: Whether the field is required
example: true
options:
description: Options for enum fields
example:
- individual
- batched
type: array
items:
type: string
optionsRef:
type: string
description: Reference to API endpoint that provides options dynamically
example: /api/v1/validators?integrationId=eth-lido
default:
type: object
description: Default value for the field
placeholder:
type: string
description: Placeholder text for the field
minimum:
type: string
description: Minimum allowed value for number fields (null if no minimum)
example: '1.0'
nullable: true
maximum:
type: string
description: Maximum allowed value for number fields (null if no maximum)
example: '100.0'
nullable: true
isArray:
type: boolean
description: Whether the field is an array
example: false
required:
- name
- type
- label
ArgumentSchemaDto:
type: object
properties:
fields:
description: List of argument fields
type: array
items:
$ref: '#/components/schemas/ArgumentFieldDto'
notes:
type: string
description: Notes or instructions for these arguments
required:
- fields
YieldMechanicsArgumentsDto:
type: object
properties:
enter:
$ref: '#/components/schemas/ArgumentSchemaDto'
exit:
$ref: '#/components/schemas/ArgumentSchemaDto'
manage:
type: object
description: >-
Manage action schemas. Each yield supports different ActionTypes
(CLAIM_UNSTAKED, CLAIM_REWARDS, etc.). Keys are ActionTypes enum
values.
additionalProperties:
$ref: '#/components/schemas/ArgumentSchemaDto'
balance:
description: >-
Arguments for the balances endpoint (e.g., alternative addresses,
chain-specific fields)
allOf:
- $ref: '#/components/schemas/ArgumentSchemaDto'
PossibleFeeTakingMechanismsDto:
type: object
properties:
depositFee:
type: boolean
description: User can take (earn) a deposit fee
example: false
managementFee:
type: boolean
description: User can take (earn) a management fee
example: false
performanceFee:
type: boolean
description: User can take (earn) a performance fee
example: false
validatorRebates:
type: boolean
description: User can take (earn) validator rebates
example: false
required:
- depositFee
- managementFee
- performanceFee
- validatorRebates
YieldMechanicsDto:
type: object
properties:
type:
$ref: '#/components/schemas/YieldType'
requiresValidatorSelection:
type: boolean
description: Indicates whether this yield requires validator selection
example: true
rewardSchedule:
$ref: '#/components/schemas/RewardSchedule'
rewardClaiming:
$ref: '#/components/schemas/RewardClaiming'
gasFeeToken:
description: Token used for gas fees (typically native)
allOf:
- $ref: '#/components/schemas/TokenDto'
lockupPeriod:
description: Lockup period - minimum time before exit can be initiated
allOf:
- $ref: '#/components/schemas/TimePeriodDto'
cooldownPeriod:
description: Cooldown period required before exit is allowed
allOf:
- $ref: '#/components/schemas/TimePeriodDto'
warmupPeriod:
description: Warmup period before rewards start accruing
allOf:
- $ref: '#/components/schemas/TimePeriodDto'
fee:
description: >-
Fees charged to the user for this yield (e.g., deposit, management,
performance).
allOf:
- $ref: '#/components/schemas/YieldFeeDto'
entryLimits:
description: Entry amount limits for this yield
allOf:
- $ref: '#/components/schemas/YieldEntryLimitsDto'
supportsLedgerWalletApi:
type: boolean
description: Supports Ledger Wallet API (connect via Ledger Live)
extraTransactionFormatsSupported:
type: array
description: Additional transaction formats supported (e.g. safe, batch)
items:
type: string
enum:
- raw
- default
arguments:
description: Arguments required for each action (enter, exit, manage, etc.)
allOf:
- $ref: '#/components/schemas/YieldMechanicsArgumentsDto'
possibleFeeTakingMechanisms:
description: >-
Possible fee-taking mechanisms for the user or integrator (i.e.,
what fees the user/integrator can potentially earn from this yield).
allOf:
- $ref: '#/components/schemas/PossibleFeeTakingMechanismsDto'
required:
- type
- rewardSchedule
- rewardClaiming
- gasFeeToken
PricePerShareStateDto:
type: object
properties:
price:
type: number
description: >-
Price per share for the yield (e.g., LP token price, vault share
price)
example: 1.05
shareToken:
description: Share token (the token you own shares of)
allOf:
- $ref: '#/components/schemas/TokenDto'
quoteToken:
description: Quote token (the token the price is denominated in)
allOf:
- $ref: '#/components/schemas/TokenDto'
required:
- price
- shareToken
- quoteToken
ConcentratedLiquidityPoolStateDto:
type: object
properties:
baseApr:
type: number
description: Full-range trading APR (24h or rolling)
example: 0.12
price:
type: number
description: Current mid-price from the AMM (token1 per token0)
example: 3950.42
tickSpacing:
type: number
description: Tick spacing required so UI can snap ranges
example: 50
minTick:
type: number
description: Minimum tick bound for the pool
example: -887272
maxTick:
type: number
description: Maximum tick bound for the pool
example: 887272
volume24hUsd:
type: number
description: 24-hour trading volume in USD
example: 149550871.99
nullable: true
fee24hUsd:
type: number
description: 24-hour fees earned by LPs in USD
example: 14955.09
nullable: true
tvlUsd:
type: number
description: Total value locked in USD
example: 9213550.2
nullable: true
feeTier:
type: number
description: Pool fee tier as a decimal (e.g., 0.0005 for 0.05%)
example: 0.0005
baseToken:
description: Base token (token0)
allOf:
- $ref: '#/components/schemas/TokenDto'
quoteToken:
description: Quote token (token1)
allOf:
- $ref: '#/components/schemas/TokenDto'
required:
- baseApr
- price
- tickSpacing
- minTick
- maxTick
- volume24hUsd
- fee24hUsd
- tvlUsd
- feeTier
- baseToken
- quoteToken
CapacityDto:
type: object
properties:
current:
type: string
description: Current total assets in the yield
max:
type: string
nullable: true
description: Maximum capacity of the yield
remaining:
type: string
nullable: true
description: Remaining capacity available for deposits
required:
- current
AllocationRewardRateDto:
type: object
properties:
total:
type: number
description: Total reward rate
example: 5.25
rateType:
type: string
description: Whether this rate is APR or APY
example: APY
required:
- total
- rateType
AllocationDto:
type: object
properties:
address:
type: string
description: Contract address of the underlying strategy
example: '0x1234567890abcdef1234567890abcdef12345678'
network:
type: string
description: Network the underlying strategy is on
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
example: base
name:
type: string
description: Display name of the underlying strategy
example: Morpho Moonwell USDC
yieldId:
type: string
description: >-
Yield ID if this strategy is supported as a separate yield
opportunity
example: base-usdc-morpho-moonwell-usdc
providerId:
type: string
description: Provider ID for this strategy (e.g., morpho, aave, lido)
example: morpho
allocation:
type: string
description: Amount allocated to this strategy in input token units
example: '50000.00'
allocationUsd:
type: string
description: USD value of the allocation
example: '50000.00'
nullable: true
weight:
type: number
description: Current weight of this strategy as a percentage (0-100)
example: 50.5
targetWeight:
type: number
description: Target weight of this strategy as a percentage (0-100)
example: 50
rewardRate:
description: Reward rate of the underlying strategy
nullable: true
allOf:
- $ref: '#/components/schemas/AllocationRewardRateDto'
tvl:
type: string
description: Total value locked in the underlying strategy in input token units
example: '500.25'
nullable: true
tvlUsd:
type: string
description: Total value locked in USD for the underlying strategy
example: '10000000.00'
nullable: true
maxCapacity:
type: string
description: Maximum capacity of the underlying strategy
example: '1000000.00'
nullable: true
remainingCapacity:
type: string
description: Remaining capacity in the underlying strategy
example: '500000.00'
nullable: true
required:
- address
- network
- name
- allocation
- allocationUsd
- weight
- targetWeight
- rewardRate
- tvl
- tvlUsd
- maxCapacity
- remainingCapacity
YieldStateDto:
type: object
properties:
pricePerShareState:
description: Price per share state metadata
allOf:
- $ref: '#/components/schemas/PricePerShareStateDto'
concentratedLiquidityPoolState:
description: Concentrated liquidity pool state metadata
allOf:
- $ref: '#/components/schemas/ConcentratedLiquidityPoolStateDto'
capacityState:
description: Capacity state metadata
allOf:
- $ref: '#/components/schemas/CapacityDto'
allocations:
description: >-
Allocations to underlying strategies for vault yields (e.g., OAV,
Morpho). Includes allocation, APY, TVL, and capacity per strategy.
type: array
items:
$ref: '#/components/schemas/AllocationDto'
YieldDto:
type: object
properties:
id:
type: string
description: Unique identifier for this yield opportunity
example: ethereum-eth-lido-staking
network:
type: string
description: Network this yield opportunity is on
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
chainId:
type: string
description: EVM chain ID for this network (only for EVM networks)
example: '1'
inputTokens:
description: Accepted input tokens (auto-converted as needed)
type: array
items:
$ref: '#/components/schemas/TokenDto'
outputToken:
description: Token received from the protocol
allOf:
- $ref: '#/components/schemas/TokenDto'
token:
description: Canonical deposit token - used for balances
allOf:
- $ref: '#/components/schemas/TokenDto'
tokens:
description: Canonical deposit tokens - used for balances
type: array
items:
$ref: '#/components/schemas/TokenDto'
rewardRate:
description: Total effective yield broken down by source and token.
allOf:
- $ref: '#/components/schemas/RewardRateDto'
statistics:
description: Key statistics and analytics for this yield opportunity
allOf:
- $ref: '#/components/schemas/YieldStatisticsDto'
risk:
description: Risk scores and provider ratings for this yield
allOf:
- $ref: '#/components/schemas/YieldRiskDto'
status:
description: Current availability of user actions like enter, exit, claim
allOf:
- $ref: '#/components/schemas/YieldStatusDto'
metadata:
description: >-
Descriptive metadata including name, logo, description, and
documentation
allOf:
- $ref: '#/components/schemas/YieldMetadataDto'
mechanics:
description: Operational mechanics including constraints, fees, and capabilities
allOf:
- $ref: '#/components/schemas/YieldMechanicsDto'
providerId:
type: string
description: The provider ID this yield belongs to
example: lido
tags:
description: Optional tags for filtering or categorization
example:
- restaking
- ETH
- LST
type: array
items:
type: string
state:
description: >-
Dynamic, real-time protocol-level state values that affect entering
or exiting a yield (e.g., pool price, capacity, price per share,
liquidity, queue depth)
allOf:
- $ref: '#/components/schemas/YieldStateDto'
required:
- id
- network
- inputTokens
- token
- tokens
- rewardRate
- status
- metadata
- mechanics
- providerId
BalanceType:
type: string
description: Type of balance
enum:
- active
- entering
- exiting
- withdrawable
- claimable
- locked
PendingActionDto:
type: object
properties:
intent:
type: string
description: High-level action intent
enum:
- enter
- manage
- exit
example: manage
type:
type: string
description: Specific action type
enum:
- STAKE
- UNSTAKE
- CLAIM_REWARDS
- RESTAKE_REWARDS
- WITHDRAW
- WITHDRAW_ALL
- RESTAKE
- CLAIM_UNSTAKED
- UNLOCK_LOCKED
- STAKE_LOCKED
- VOTE
- REVOKE
- VOTE_LOCKED
- REVOTE
- REBOND
- MIGRATE
- VERIFY_WITHDRAW_CREDENTIALS
- DELEGATE
example: CLAIM_REWARDS
passthrough:
type: string
description: >-
Server-generated passthrough that must be included when executing
the action
example: eyJhZGRyZXNzZXMiOnsiYWRkcmVzcyI6ImNvc21vczF5ZXk...
arguments:
description: Argument schema required to execute this action
nullable: true
allOf:
- $ref: '#/components/schemas/ArgumentSchemaDto'
amount:
type: string
description: Amount involved in the action
example: '0.1'
nullable: true
required:
- intent
- type
- passthrough
RevShareDetailsDto:
type: object
properties:
minRevShare:
type: number
description: Minimum revenue share percentage (0-1)
example: 0.3
maxRevShare:
type: number
description: Maximum revenue share percentage (0-1)
example: 0.7
required:
- minRevShare
- maxRevShare
RevShareTiersDto:
type: object
properties:
trial:
description: Trial tier revenue share details
allOf:
- $ref: '#/components/schemas/RevShareDetailsDto'
standard:
description: Standard tier revenue share details
allOf:
- $ref: '#/components/schemas/RevShareDetailsDto'
pro:
description: Pro tier revenue share details
allOf:
- $ref: '#/components/schemas/RevShareDetailsDto'
ValidatorProviderDto:
type: object
properties:
name:
type: string
description: Provider name
example: Morpho
id:
type: string
description: Provider ID
example: morpho
logoURI:
type: string
description: Provider logo URI
example: https://morpho.xyz/logo.png
description:
type: string
description: Short description of the provider
example: A peer-to-peer DeFi lending protocol
website:
type: string
description: Provider website
example: https://morpho.xyz
tvlUsd:
type: object
description: Total TVL across the entire provider in USD
example: 10,200,000
nullable: true
type:
type: string
description: Type of provider (protocol or validator provider)
enum:
- protocol
- validator_provider
example: protocol
references:
description: Optional social/media references or audit links
nullable: true
type: array
items:
type: string
rank:
type: number
description: Provider ranking (lower numbers indicate higher preference)
example: 1
preferred:
type: boolean
description: Whether this provider is marked as preferred
example: true
revshare:
description: Revenue sharing details by tier
example:
standard:
minRevShare: 0.3
maxRevShare: 0.7
pro:
minRevShare: 0.4
maxRevShare: 0.8
allOf:
- $ref: '#/components/schemas/RevShareTiersDto'
uniqueId:
type: string
description: Provider ID (deprecated, use `id` instead)
example: luganodes
deprecated: true
createdAt:
format: date-time
type: string
description: Creation timestamp (deprecated)
deprecated: true
updatedAt:
format: date-time
type: string
description: Last update timestamp (deprecated)
deprecated: true
required:
- name
- id
- logoURI
- description
- website
- tvlUsd
- type
- rank
- preferred
ValidatorDto:
type: object
properties:
address:
type: string
description: Validator address or ID
example: cosmosvaloper1abc...
name:
type: string
description: Validator display name
example: StakeKit Validator
logoURI:
type: string
description: Validator logo URI
example: https://stakekit.com/logo.png
website:
type: string
description: Link to validator website
example: https://stakekit.com
rewardRate:
description: >-
Detailed reward rate breakdown by source (emissions, MEV, fees,
etc.)
example:
total: 8.4
rateType: APR
components:
- rate: 6.8
rateType: APR
token:
symbol: SOL
name: Solana
yieldSource: staking
description: Solana network inflation rewards
- rate: 1.2
rateType: APR
token:
symbol: SOL
name: Solana
yieldSource: validator_commission
description: Transaction fees from processed transactions
- rate: 0.4
rateType: APR
token:
symbol: SOL
name: Solana
yieldSource: mev
description: MEV from Jito block space auctions
allOf:
- $ref: '#/components/schemas/RewardRateDto'
provider:
description: Provider information for this validator
allOf:
- $ref: '#/components/schemas/ValidatorProviderDto'
commission:
type: number
description: Commission rate charged by validator
example: 0.05
tvlUsd:
type: string
description: Total value locked with this validator in USD
example: 18,340,000
tvl:
type: string
description: Total value locked with this validator in native token
example: '8250.45'
tvlRaw:
type: string
description: Raw total value locked with this validator (full precision)
example: '8250450000000000000000'
votingPower:
type: number
description: Validator's voting power share (01)
example: 0.013
preferred:
type: boolean
description: Whether this validator is flagged as preferred
example: true
minimumStake:
type: string
description: Minimum stake allowed in native token
example: '1.0'
remainingPossibleStake:
type: string
description: Maximum available stake before hitting cap in native token
example: 285,714.28
remainingSlots:
type: number
description: Number of remaining nominator/delegator slots (for capped chains)
example: 8
nominatorCount:
type: number
description: Number of current nominators
example: 321
status:
type: string
description: Validator status description (active, jailed, unbonding, etc.)
example: active
providerId:
type: string
description: ID of the provider backing this validator
example: provider-1
pricePerShare:
type: string
description: Price per share of the validator
example: '1.0'
subnetId:
type: number
description: Subnet ID
example: 1
subnetName:
type: string
description: Subnet name
example: Apex
marketCap:
type: string
description: Market cap of the subnet
example: '1000000'
tokenSymbol:
type: string
description: Token symbol of the subnet
example: α
required:
- address
BalanceDto:
type: object
properties:
address:
type: string
description: User wallet address that owns this balance
example: 0x1234...
type:
$ref: '#/components/schemas/BalanceType'
amount:
type: string
description: Balance amount in underlying token
example: '2.625'
amountRaw:
type: string
description: Raw balance amount (full precision)
example: '2625000000000000000'
date:
format: date-time
type: string
description: Date relevant to this balance state
nullable: true
example: '2025-04-23T08:00:00Z'
feeConfigurationId:
type: string
description: Fee configuration ID (if applicable)
example: fee-config-1
pendingActions:
description: Pending actions for this balance
type: array
items:
$ref: '#/components/schemas/PendingActionDto'
token:
description: Token used for balance amounts
allOf:
- $ref: '#/components/schemas/TokenDto'
validator:
description: Validator information (if applicable)
nullable: true
allOf:
- $ref: '#/components/schemas/ValidatorDto'
validators:
description: >-
Multiple validators information (when balance is distributed across
multiple validators)
nullable: true
type: array
items:
$ref: '#/components/schemas/ValidatorDto'
amountUsd:
type: string
description: Value of the balance in USD
example: 2,500.00
nullable: true
isEarning:
type: boolean
description: Whether this balance is currently earning rewards
example: true
priceRange:
type: object
description: >-
Price range for concentrated liquidity positions in
tokens[1]/tokens[0] format (e.g., if tokens[0]=WETH and
tokens[1]=USDC, then priceRange represents USDC/WETH)
example:
min: '2700'
max: '3310'
tokenId:
type: string
description: >-
NFT token ID for liquidity positions (e.g., PancakeSwap V3 position
NFT ID)
example: '12345'
required:
- address
- type
- amount
- amountRaw
- pendingActions
- token
- isEarning
YieldBalancesDto:
type: object
properties:
yieldId:
type: string
description: Unique identifier of the yield
example: ethereum-eth-lido-staking
balances:
description: List of balances for this yield
type: array
items:
$ref: '#/components/schemas/BalanceDto'
outputTokenBalance:
description: Balance for the output token
nullable: true
allOf:
- $ref: '#/components/schemas/BalanceDto'
required:
- yieldId
- balances
YieldErrorDto:
type: object
properties:
yieldId:
type: string
description: Unique identifier of the yield that failed
example: ethereum-compound-usdc
error:
type: string
description: Error message describing what went wrong
example: 'Failed to fetch data from blockchain: RPC timeout'
required:
- yieldId
- error
BalancesResponseDto:
type: object
properties:
items:
description: Successful yield balance results
type: array
items:
$ref: '#/components/schemas/YieldBalancesDto'
errors:
description: Errors encountered while fetching balances
type: array
items:
$ref: '#/components/schemas/YieldErrorDto'
required:
- items
- errors
Networks:
type: string
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
GetBalancesArgumentsDto:
type: object
properties:
cAddressBech:
type: string
description: Avalanche C-chain address
example: 0x123...
pAddressBech:
type: string
description: Avalanche P-chain address
example: P-avax1...
BalancesQueryDto:
type: object
properties:
yieldId:
type: string
description: The unique identifier of the yield (optional for chain scanning)
example: ethereum-eth-lido-staking
address:
type: string
description: User wallet address to check balances for
example: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e'
network:
example: ethereum
$ref: '#/components/schemas/Networks'
arguments:
description: Arguments for balance queries
allOf:
- $ref: '#/components/schemas/GetBalancesArgumentsDto'
required:
- address
- network
BalancesRequestDto:
type: object
properties:
queries:
description: Array of balance queries
example:
- yieldId: ethereum-eth-lido-staking
address: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e'
network: ethereum
type: array
items:
$ref: '#/components/schemas/BalancesQueryDto'
required:
- queries
YieldBalancesRequestDto:
type: object
properties:
address:
type: string
description: User wallet address to check balances for
example: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e'
arguments:
description: Optional arguments for advanced or protocol-specific balance queries
allOf:
- $ref: '#/components/schemas/GetBalancesArgumentsDto'
required:
- address
ValidatorQueryDto:
type: object
properties:
offset:
type: number
description: Offset for pagination
default: 0
minimum: 0
example: 0
limit:
type: number
description: Maximum number of items to return
default: 20
minimum: 1
maximum: 100
example: 20
name:
type: string
description: Filter by validator name (case-insensitive, partial match)
address:
type: string
description: Filter by validator address
provider:
type: string
description: Filter by provider ID
status:
type: string
description: Filter by validator status
preferred:
type: boolean
description: Filter by preferred flag
TransactionDto:
type: object
properties:
id:
type: string
description: Unique transaction identifier
example: tx_123abc
title:
type: string
description: Display title for the transaction
example: Approve USDC
network:
type: string
description: Network this transaction is for
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
example: ethereum
status:
type: string
description: Current status of the transaction
enum:
- NOT_FOUND
- CREATED
- BLOCKED
- WAITING_FOR_SIGNATURE
- SIGNED
- BROADCASTED
- PENDING
- CONFIRMED
- FAILED
- SKIPPED
example: PENDING
type:
type: string
description: Type of transaction operation
enum:
- SWAP
- DEPOSIT
- APPROVAL
- STAKE
- CLAIM_UNSTAKED
- CLAIM_REWARDS
- RESTAKE_REWARDS
- UNSTAKE
- SPLIT
- MERGE
- LOCK
- UNLOCK
- SUPPLY
- ADD_LIQUIDITY
- REMOVE_LIQUIDITY
- BRIDGE
- VOTE
- REVOKE
- RESTAKE
- REBOND
- WITHDRAW
- WITHDRAW_ALL
- CREATE_ACCOUNT
- REVEAL
- MIGRATE
- DELEGATE
- UNDELEGATE
- UTXO_P_TO_C_IMPORT
- UTXO_C_TO_P_IMPORT
- WRAP
- UNWRAP
- UNFREEZE_LEGACY
- UNFREEZE_LEGACY_BANDWIDTH
- UNFREEZE_LEGACY_ENERGY
- UNFREEZE_BANDWIDTH
- UNFREEZE_ENERGY
- FREEZE_BANDWIDTH
- FREEZE_ENERGY
- UNDELEGATE_BANDWIDTH
- UNDELEGATE_ENERGY
- P2P_NODE_REQUEST
- CREATE_EIGENPOD
- VERIFY_WITHDRAW_CREDENTIALS
- START_CHECKPOINT
- VERIFY_CHECKPOINT_PROOFS
- QUEUE_WITHDRAWALS
- COMPLETE_QUEUED_WITHDRAWALS
- LZ_DEPOSIT
- LZ_WITHDRAW
- LUGANODES_PROVISION
- LUGANODES_EXIT_REQUEST
- INFSTONES_PROVISION
- INFSTONES_EXIT_REQUEST
- INFSTONES_CLAIM_REQUEST
example: STAKE
hash:
type: string
description: Transaction hash (available after broadcast)
nullable: true
example: 0x1234567890abcdef...
createdAt:
format: date-time
type: string
description: When the transaction was created
broadcastedAt:
format: date-time
type: string
description: When the transaction was broadcasted to the network
nullable: true
signedTransaction:
type: string
description: Signed transaction data (ready for broadcast)
nullable: true
unsignedTransaction:
description: The unsigned transaction data to be signed by the wallet
oneOf:
- type: string
description: Serialized transaction data
- type: object
description: Transaction object (for non-EVM chains)
nullable: true
example: >-
0x02f87082012a022f2f83018000947a250d5630b4cf539739df2c5dacb4c659f2488d880de0b6b3a764000080c080a0ef0de6c7b46fc75dd6cb86dccc3cfd731c2bdf6f3d736557240c3646c6fe01a6a07cd60b58dfe01847249dfdd7950ba0d045dded5bbe410b07a015a0ed34e5e00d
annotatedTransaction:
type: object
description: Human-readable breakdown of the transaction for display purposes
nullable: true
example:
method: stake
inputs:
amount: '1000000000000000000'
structuredTransaction:
type: object
description: Detailed transaction data for client-side validation or simulation
nullable: true
stepIndex:
type: number
description: Zero-based index of the step in the action flow
example: 0
description:
type: string
description: User-friendly description of what this transaction does
example: Approve USDC for staking
error:
type: string
description: Error message if the transaction failed
nullable: true
gasEstimate:
type: string
description: Estimated gas cost for the transaction
example: '21000'
explorerUrl:
type: string
description: Link to the blockchain explorer for this transaction
nullable: true
example: https://etherscan.io/tx/0x1234...
isMessage:
type: boolean
description: Whether this transaction is a message rather than a value transfer
example: false
required:
- id
- title
- network
- status
- type
- hash
- createdAt
- broadcastedAt
- signedTransaction
- unsignedTransaction
ActionArgumentsDto:
type: object
properties:
amount:
type: string
description: Amount to stake/unstake
example: '1000000000000000000'
amounts:
description: Amounts to stake/unstake
example:
- '1000000000000000000'
- '2000000000000000000'
type: array
items:
type: string
validatorAddress:
type: string
description: Validator address for single validator selection
example: cosmosvaloper1...
validatorAddresses:
description: Multiple validator addresses
example:
- cosmosvaloper1...
- cosmosvaloper2...
type: array
items:
type: string
providerId:
type: string
description: Provider ID for Ethereum native staking
example: kiln
duration:
type: number
description: Duration for Avalanche native staking (in seconds)
example: 1209600
inputToken:
type: string
description: >-
Token for deposits. Use "0x" for native token or provide the token
address. For cross-chain deposits, also provide inputTokenNetwork.
example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
inputTokenNetwork:
type: string
description: >-
Network for the input token. Required for cross-chain deposits when
the token is on a different network than the vault.
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
outputToken:
type: string
description: >-
Token for withdrawals. Use "0x" for native token or provide the
token address. For cross-chain withdrawals, also provide
outputTokenNetwork.
example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
outputTokenNetwork:
type: string
description: >-
Network for the output token. Required for cross-chain withdrawals
when the destination is on a different network than the vault.
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
subnetId:
type: number
description: Subnet ID for Bittensor staking
example: 1
tronResource:
type: string
description: Tron resource type for Tron staking
enum:
- BANDWIDTH
- ENERGY
feeConfigurationId:
type: string
description: Fee configuration ID for custom fee settings
example: custom-fee-config-1
cosmosPubKey:
type: string
description: Cosmos public key for Cosmos staking
example: cosmospub1...
tezosPubKey:
type: string
description: Tezos public key for Tezos staking
example: edpk...
cAddressBech:
type: string
description: Avalanche C-chain address
example: 0x123...
pAddressBech:
type: string
description: Avalanche P-chain address
example: P-avax1...
executionMode:
type: string
description: Transaction execution mode
enum:
- individual
- batched
example: individual
ledgerWalletApiCompatible:
type: boolean
description: >-
Transactions should have Ledger wallet API compatibility for
hardware wallet users
example: true
useMaxAmount:
type: boolean
description: Use max amount for ERC4626 withdraw
example: true
useInstantExecution:
type: boolean
description: Use instant execution for exit (faster but may have fees)
example: true
rangeMin:
type: string
description: >-
Minimum price bound for concentrated liquidity pools (as decimal
string). Must be non-negative (can be 0) and less than rangeMax.
example: '0.0'
rangeMax:
type: string
description: >-
Maximum price bound for concentrated liquidity pools (as decimal
string). Must be positive and greater than rangeMin.
example: '1.0'
percentage:
type: number
description: >-
Percentage of liquidity to exit (0-100). Required for partial exits
from liquidity positions.
example: 50
minimum: 0
maximum: 100
tokenId:
type: string
description: >-
NFT token ID for concentrated liquidity positions. Required for
exiting specific positions.
example: '12345'
ActionDto:
type: object
properties:
id:
type: string
description: Unique action identifier
example: action_123abc
intent:
type: string
description: High-level action intent
enum:
- enter
- manage
- exit
example: manage
type:
type: string
description: Specific action type
enum:
- STAKE
- UNSTAKE
- CLAIM_REWARDS
- RESTAKE_REWARDS
- WITHDRAW
- WITHDRAW_ALL
- RESTAKE
- CLAIM_UNSTAKED
- UNLOCK_LOCKED
- STAKE_LOCKED
- VOTE
- REVOKE
- VOTE_LOCKED
- REVOTE
- REBOND
- MIGRATE
- VERIFY_WITHDRAW_CREDENTIALS
- DELEGATE
example: CLAIM_REWARDS
yieldId:
type: string
description: Yield ID this action belongs to
example: ethereum-eth-lido-staking
address:
type: string
description: User wallet address
example: 0x1234...
amount:
type: string
description: Amount involved in the action
example: '1000000000000000000'
nullable: true
amountRaw:
type: string
description: Raw wei amount (full precision)
example: '1000000000000000000'
nullable: true
amountUsd:
type: string
description: USD value of the amount
example: '1500.50'
nullable: true
transactions:
description: Array of transactions for this action
type: array
items:
$ref: '#/components/schemas/TransactionDto'
executionPattern:
type: string
description: >-
Transaction execution pattern - synchronous (submit one by one, wait
for each), asynchronous (submit all at once), or batch (single
transaction with multiple operations)
enum:
- synchronous
- asynchronous
- batch
example: synchronous
rawArguments:
description: Raw arguments exactly as submitted by the user for this action
nullable: true
allOf:
- $ref: '#/components/schemas/ActionArgumentsDto'
createdAt:
format: date-time
type: string
description: When the action was created
completedAt:
format: date-time
type: string
description: When the action was completed
nullable: true
status:
type: string
description: Current status of the action
enum:
- CANCELED
- CREATED
- WAITING_FOR_NEXT
- PROCESSING
- FAILED
- SUCCESS
- STALE
required:
- id
- intent
- type
- yieldId
- address
- amount
- amountRaw
- amountUsd
- transactions
- executionPattern
- rawArguments
- createdAt
- completedAt
- status
PaginatedResponseDto:
type: object
properties:
total:
type: number
description: Total number of items available
example: 100
offset:
type: number
description: Offset of the current page
example: 0
limit:
type: number
description: Limit of the current page
example: 20
required:
- total
- offset
- limit
YieldQueryDto:
type: object
properties:
offset:
type: number
description: Offset for pagination
default: 0
minimum: 0
example: 0
limit:
type: number
description: Maximum number of items to return
default: 20
minimum: 1
maximum: 100
example: 20
network:
type: string
description: Filter by network
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
chainId:
type: string
description: 'Filter by EVM chain ID (Ethereum: 1, Polygon: 137, etc)'
example: '1'
networks:
type: string
description: Filter by multiple networks (comma separated)
yieldId:
type: string
example: optimism-usdt-aave-v3-lending
maxLength: 200
yieldIds:
example:
- optimism-usdt-aave-v3-lending
maxItems: 100
type: array
items:
type: string
maxLength: 200
type:
type: string
description: Filter by yield type
enum:
- staking
- restaking
- lending
- vault
- fixed_yield
- real_world_asset
- concentrated_liquidity_pool
- liquidity_pool
types:
type: array
description: Filter by multiple yield types (comma separated)
items:
type: string
enum:
- staking
- restaking
- lending
- vault
- fixed_yield
- real_world_asset
- concentrated_liquidity_pool
- liquidity_pool
hasCooldownPeriod:
type: boolean
description: Filter by cooldown period
hasWarmupPeriod:
type: boolean
description: Filter by warmup period
token:
type: string
description: Filter by token symbol or address
inputToken:
type: string
description: Filter by input token symbol or address
inputTokens:
description: Filter by multiple input token symbol or address (comma separated)
type: array
items:
type: string
provider:
type: string
description: Filter by provider ID
providers:
description: Filter by multiple provider IDs (comma separated)
type: array
items:
type: string
search:
type: string
description: Search by yield name
sort:
type: string
description: Sort by yield status
enum:
- statusEnterAsc
- statusEnterDesc
- statusExitAsc
- statusExitDesc
PaginationQueryDto:
type: object
properties:
offset:
type: number
description: Offset for pagination
default: 0
minimum: 0
example: 0
limit:
type: number
description: Maximum number of items to return
default: 20
minimum: 1
maximum: 100
example: 20
RiskParameterDto:
type: object
properties:
id:
type: string
category:
type: string
item:
type: string
isDynamic:
type: boolean
value:
type: object
network:
$ref: '#/components/schemas/Networks'
asset:
type: object
protocol:
type: object
integrationId:
type: object
createdAt:
format: date-time
type: string
updatedAt:
format: date-time
type: string
required:
- id
- category
- item
- isDynamic
- createdAt
- updatedAt
CreateActionDto:
type: object
properties:
yieldId:
type: string
description: Yield ID to perform the action on
example: ethereum-eth-lido-staking
address:
type: string
description: User wallet address
example: 0x1234...
arguments:
description: Arguments for the action
allOf:
- $ref: '#/components/schemas/ActionArgumentsDto'
required:
- yieldId
- address
CreateManageActionDto:
type: object
properties:
yieldId:
type: string
description: Yield ID to perform the action on
example: ethereum-eth-lido-staking
address:
type: string
description: User wallet address
example: 0x1234...
arguments:
description: Arguments for the action
allOf:
- $ref: '#/components/schemas/ActionArgumentsDto'
action:
type: string
description: Pending action type (required for manage actions)
enum:
- STAKE
- UNSTAKE
- CLAIM_REWARDS
- RESTAKE_REWARDS
- WITHDRAW
- WITHDRAW_ALL
- RESTAKE
- CLAIM_UNSTAKED
- UNLOCK_LOCKED
- STAKE_LOCKED
- VOTE
- REVOKE
- VOTE_LOCKED
- REVOTE
- REBOND
- MIGRATE
- VERIFY_WITHDRAW_CREDENTIALS
- DELEGATE
example: CLAIM_REWARDS
passthrough:
type: string
description: >-
Server-generated passthrough from the balances endpoint (required
for manage actions)
example: eyJhZGRyZXNzZXMiOnsiYWRkcmVzcyI6ImNvc21vczF5ZXk...
required:
- yieldId
- address
- action
- passthrough
ActionsQueryDto:
type: object
properties:
offset:
type: number
description: Offset for pagination
default: 0
minimum: 0
example: 0
limit:
type: number
description: Maximum number of items to return
default: 20
minimum: 1
maximum: 100
example: 20
address:
type: string
description: User wallet address to filter actions for
example: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e'
status:
type: string
description: Filter by action status
enum:
- CANCELED
- CREATED
- WAITING_FOR_NEXT
- PROCESSING
- FAILED
- SUCCESS
- STALE
intent:
type: string
description: Filter by action intent
enum:
- enter
- manage
- exit
type:
type: string
description: Filter by action type
enum:
- STAKE
- UNSTAKE
- CLAIM_REWARDS
- RESTAKE_REWARDS
- WITHDRAW
- WITHDRAW_ALL
- RESTAKE
- CLAIM_UNSTAKED
- UNLOCK_LOCKED
- STAKE_LOCKED
- VOTE
- REVOKE
- VOTE_LOCKED
- REVOTE
- REBOND
- MIGRATE
- VERIFY_WITHDRAW_CREDENTIALS
- DELEGATE
yieldId:
type: string
description: Filter by yield ID
example: ethereum-eth-lido-staking
required:
- address
SubmitHashDto:
type: object
properties:
hash:
type: string
description: Transaction hash from the blockchain
example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
required:
- hash
SubmitTransactionDto:
type: object
properties:
signedTransaction:
type: string
description: Encoded signed transaction to submit to the blockchain
example: >-
0aba010aa0010a232f636f736d6f732e7374616b696e672e763162657461312e4d736744656c656761746512790a2a696e6a316a61366664646e6e33727272677137646d6a757a6b71363279376d68346675346b6e656d37791231696e6a76616c6f7065723167346436646d766e706737773779756779366b706c6e6470376a70666d66336b7274736368701a180a03696e6a121131303030303030303030303030303030301215766961205374616b654b6974204349442d31303039129e010a7e0a740a2d2f696e6a6563746976652e63727970746f2e763162657461312e657468736563703235366b312e5075624b657912430a41042aec99dce37ea3d8f11b44da62bce0e885f0ba5b309382954babec76eb138cb0bb84f4f24b9f63143f2ce66923b2dd3ee55475e680a7b992b9cbc17941f6486312040a0208011802121c0a160a03696e6a120f31383732303030303030303030303010d0b4471a0b696e6a6563746976652d312092c35b
required:
- signedTransaction
NetworkDto:
type: object
properties:
id:
type: string
description: The network identifier
example: ethereum
enum:
- ethereum
- ethereum-goerli
- ethereum-holesky
- ethereum-sepolia
- ethereum-hoodi
- arbitrum
- base
- base-sepolia
- gnosis
- optimism
- polygon
- polygon-amoy
- starknet
- zksync
- linea
- unichain
- monad-testnet
- monad
- avalanche-c
- avalanche-c-atomic
- avalanche-p
- binance
- celo
- fantom
- harmony
- moonriver
- okc
- viction
- core
- sonic
- plasma
- katana
- hyperevm
- agoric
- akash
- axelar
- band-protocol
- bitsong
- canto
- chihuahua
- comdex
- coreum
- cosmos
- crescent
- cronos
- cudos
- desmos
- dydx
- evmos
- fetch-ai
- gravity-bridge
- injective
- irisnet
- juno
- kava
- ki-network
- mars-protocol
- nym
- okex-chain
- onomy
- osmosis
- persistence
- quicksilver
- regen
- secret
- sentinel
- sommelier
- stafi
- stargaze
- stride
- teritori
- tgrade
- umee
- sei
- mantra
- celestia
- saga
- zetachain
- dymension
- humansai
- neutron
- polkadot
- kusama
- westend
- bittensor
- aptos
- binancebeacon
- cardano
- near
- solana
- solana-devnet
- stellar
- stellar-testnet
- sui
- tezos
- tron
- ton
- ton-testnet
- hyperliquid
name:
type: string
description: Human-readable display name of the network
example: Ethereum
category:
type: string
description: The category of the network
example: evm
enum:
- evm
- cosmos
- substrate
- misc
logoURI:
type: string
description: Logo URI for the network
example: https://assets.stakek.it/networks/ethereum.svg
required:
- id
- name
- category
- logoURI
ProviderDto:
type: object
properties:
name:
type: string
description: Provider name
example: Morpho
id:
type: string
description: Provider ID
example: morpho
logoURI:
type: string
description: Provider logo URI
example: https://morpho.xyz/logo.png
description:
type: string
description: Short description of the provider
example: A peer-to-peer DeFi lending protocol
website:
type: string
description: Provider website
example: https://morpho.xyz
tvlUsd:
type: object
description: Total TVL across the entire provider in USD
example: 10,200,000
nullable: true
type:
type: string
description: Type of provider (protocol or validator provider)
enum:
- protocol
- validator_provider
example: protocol
references:
description: Optional social/media references or audit links
nullable: true
type: array
items:
type: string
required:
- name
- id
- logoURI
- description
- website
- tvlUsd
- type
HealthStatus:
type: string
description: The health status of the service
enum:
- OK
- FAIL
HealthStatusDto:
type: object
properties:
status:
example: OK
$ref: '#/components/schemas/HealthStatus'
timestamp:
type: string
format: date-time
example: '2024-01-15T10:30:00.000Z'
description: Timestamp when the health check was performed
required:
- status
- timestamp
externalDocs:
description: For more information
url: https://docs.yield.xyz