Skip to content

API

The Venus Protocol API exposes indexed lending-market, pool, and governance data. The OpenAPI specification embedded below currently documents two endpoint families:

  • Market and pool data — listed markets, pool configuration, historical market snapshots, and aggregate TVL
  • Governance data — proposals, votes, and voter activity

The live Swagger playground and OpenAPI JSON are the source of truth for the currently published request parameters and response schemas. The checked-in specification rendered on this page is a snapshot and should be resynchronized when the live JSON changes.

The documented read endpoints are available without authentication at these origins. Endpoint paths are appended directly to the origin; there is no /api prefix.

mainnet: https://api.venus.io
testnet: https://testnetapi.venus.io

For example, a BNB Chain mainnet request to the default stable pools route is:

Terminal window
curl --get 'https://api.venus.io/pools' \
--data-urlencode 'chainId=56'

Routes that declare the accept-version request header support stable and next. Omitting the header selects stable; an unsupported value is rejected. Do not assume every API route is versioned—check the OpenAPI entry for the specific path.

stable and next can have different required query parameters and response shapes. In the published specification, this is material for /markets and /pools; read the schema for the selected version instead of deserializing both as the same object.

The current stable responses for those routes include an HTTP Warning: 299 header instructing clients to migrate to accept-version: next. Test the next schema before switching and monitor response warnings during every rollout:

Terminal window
curl --get 'https://api.venus.io/markets' \
--header 'accept-version: next' \
--data-urlencode 'chainId=56' \
--data-urlencode 'limit=1'

When next is promoted, the server can make both header values resolve to the newly stable implementation and warn clients to remove accept-version: next. Removing that opt-in after promotion avoids silently receiving a later preview. Pin client expectations with contract tests; the header name is not a permanent schema version identifier.

This page was checked against the live v1.73.0 specification. Live service behavior and the live OpenAPI document take precedence over the checked-in snapshot rendered below.

Returns pool data for all listed pools, optionally filterable by the pool’s comptroller address.

Versioning (controlled via accept-version header):

  • stable (default): chainId is required. Returns a paginated list of pools with embedded markets (filtered to isListed: true) and a top-level tokens array of TokenMetadata.
  • next: chainId is optional; accepts a JSON array string for multi-chain queries (e.g. ["56","1"]). Returns pools grouped by chainId alongside a separately paginated markets list with underlyingTokenMetadata embedded in each market. No top-level tokens field.
ParameterInTypeRequiredDescription
accept-versionheaderstable | nextnoSelects the API version. stable (default) requires chainId and returns a paginated list with embedded markets and a top-level tokens array. next supports multi-chain queries and returns pools grouped by chainId with markets in a separate paginated block.
addressquerystringno[both] Filter by pool comptroller address.
namequerystringno[both] Filter by pool name.
priceOracleAddressquerystringno[both] Filter by price oracle address.
chainIdquerystringno[stable] Required. [next] Optional; accepts a JSON array string for multi-chain queries (e.g. ["56","1"]).
orderquerystringno[both] Columns to sort by. Default is descending. Prepend + for ascending (e.g. +name).
limitqueryintegerno[both] Maximum number of results to return.
pagequeryintegerno[both] Page number for pagination.

Responses: 200 Returns Pool data for all listed pools. · 400 Malformed Query

Returns market data for listed markets, optionally filterable by asset address, name, symbol, underlying address, underlying name or underlying symbol.

Versioning (controlled via accept-version header):

  • stable (default): chainId is required. Response includes a top-level tokens array of TokenMetadata objects. Markets include rewardsDistributors and pointsDistributions.
  • next: chainId is optional for cross-chain queries. Token metadata is embedded inside each market as underlyingTokenMetadata with nested tokenPrices. Supports accountAddress for Prime APY data. No top-level tokens field.
ParameterInTypeRequiredDescription
accept-versionheaderstable | nextnoSelects the API version. stable (default) requires chainId and returns a top-level tokens array. next supports cross-chain queries and embeds token data inside each market as underlyingTokenMetadata.
chainIdquerystringno[stable] Required. [next] Optional. Blockchain chain ID to filter results.
addressquerystringno[both] Filter by vToken address.
symbolquerystringno[both] Filter by asset symbol.
namequerystringno[both] Filter by asset name.
underlyingAddressquerystringno[both] Filter by underlying token address.
underlyingNamequerystringno[both] Filter by underlying token name.
underlyingSymbolquerystringno[both] Filter by underlying token symbol.
orderquerystringno[both] Columns to sort by. Default is descending. Prepend + for ascending (e.g. +underlyingName).
limitqueryintegerno[both] Maximum number of results to return.
pagequeryintegerno[both] Page number for pagination.
accountAddressquerystringno[next only] Account address to embed personalised Prime APY boosts into each market.

Responses: 200 Returns Market data for all listed markets. · 400 Malformed Query

Fetch an array of daily snapshots of supply and borrow totals and supply and borrow apy over the previous 365 days for a given asset.

ParameterInTypeRequiredDescription
assetquerystringyesvToken address to fetch history for.
chainIdquerystringyesChain ID of the network to query history for.
periodqueryyear | month | halfyearno

Responses: 200 Returns historical data for the requested asset. · 400 Unexpected error

Returns the total value locked by all markets in the requested chains.

ParameterInTypeRequiredDescription
chainIdquerystringnoComma-separated list of chain IDs to filter results. If omitted, all chains are included.

Responses: 200 Returns the TVL data for the requested chains. · 400 Unexpected error

GET /governance/proposals/{proposalId}/voteSummary

Section titled “GET /governance/proposals/{proposalId}/voteSummary”

Get vote summary for a given proposal, includes sums of for, against, abstain and total votes.

ParameterInTypeRequiredDescription
proposalIdpathintegeryesProposal Id for fetching a detailed proposal

Responses: 200 Proposal vote summary · 400 Unexpected error

Retrieve a summary of an account’s voter profile.

ParameterInTypeRequiredDescription
addresspathstringyesAccount address

Responses: 200 A summary of an account’s voter profile including latest governance transactions. · 400 Unexpected error

Retrieve the history of proposals a given account has voted on

ParameterInTypeRequiredDescription
addresspathstringyesAccount address

Responses: 200 Array of proposals in which the given account has voted · 400 Unexpected error

Query voter accounts ordered by votes.

ParameterInTypeRequiredDescription
limitqueryintegernoLimit used for pagination
pagequeryintegernoPage number to fetch

Responses: 200 Returns an array of voter accounts ordered by votes · 400 Unexpected error

Returns paginated array of proposals.

ParameterInTypeRequiredDescription
proposalIdqueryintegernoFilter by proposal ID
statequery0 | 1 | 2 | 3 | 4 | 5 | 6 | 7noFilter by proposal state
orderquerystringnoArray of columns to order results. Default sort is descending. If ’+’ is prepended to a column it will be sorted ascending.
limitqueryintegernoLimit used for pagination
pagequeryintegernoPage number to fetch

Responses: 200 Returns an array of proposals. · 400 Unexpected error

Get voter details for a given proposal.

ParameterInTypeRequiredDescription
proposalIdqueryintegernoFilter by proposal ID
addressquerystringnoAccount address
orderquerystringnoArray of columns to order results. Default sort is descending. If ’+’ is prepended to a column it will be sorted ascending.
limitqueryintegernoLimit used for pagination
pagequeryintegernoPage number to fetch

Responses: 200 Pagination object with paginated voter activity and a summary of proposal votes. · 400 Unexpected error

Returns paginated array of proposals. It takes an optional array of proposal ids to filter by.

ParameterInTypeRequiredDescription
proposalIdpathintegeryesProposal Id for fetching a detailed proposal

Responses: 200 Returns an array of proposals. · 400 Unexpected error