API

The Venus Protocol API providing access to indexed protocol data.

Venus Protocol API provides three groups of endpoints

Market Data - Endpoints relating to lending markets

Activity - Endpoints relating to user interactions with markets

Governance - Endpoints providing information about proposals and voter activity

Base URL

The API is available without authentication for testnet and mainnet.

mainnet: https://api.venus.ioarrow-up-right testnet: https://testnetapi.venus.ioarrow-up-right

Versioning

Endpoints are versioned using the accept-version header. The values for this header can be stable or next. By default the stable version is returned. When a next version is available, a Warning - 299 header will be added to the stable version with a message of breaking changes. To receive this new version the accept-version header can be set to next.

When the latest next version is made stable and the previous stable version is deprecated, both values for accept-version will return the latest version. Using the next header at this point will add a Warning - 299 header alerting the client to remove accept-version: next to avoid receiving unexpected changes in the future.

Versioning Choreography

These steps describe the process of upgrading endpoints to new versions as they are released

  1. A next version is made available, accessible with the accept-version: next header. A Warning - 299 header is added to the stable version with details about breaking changes.

  2. Clients will be given adequate time to upgrade to use the next version.

  3. The previous stable version will be deprecated, the next version becomes stable and using the accept-version: next header will add a warning to remove the header or use the stable version.

  4. Clients remove the accept-version: next header to avoid receiving unexpected changes.

  5. The endpoint is now ready to release another version.

Pool Endpoints

get

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.
Query parameters
addressstringOptional

[both] Filter by pool comptroller address.

namestringOptional

[both] Filter by pool name.

priceOracleAddressstringOptional

[both] Filter by price oracle address.

chainIdstringOptional

[stable] Required. [next] Optional; accepts a JSON array string for multi-chain queries (e.g. ["56","1"]).

orderstringOptional

[both] Columns to sort by. Default is descending. Prepend + for ascending (e.g. +name).

limitintegerOptional

[both] Maximum number of results to return.

Default: 20
pageintegerOptional

[both] Page number for pagination.

Default: 0
Header parameters
accept-versionstring · enumOptional

Selects 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.

Possible values:
Responses
chevron-right
200

Returns Pool data for all listed pools.

application/json
or
get
/pools

Market Endpoints

get

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.
Query parameters
chainIdstringOptional

[stable] Required. [next] Optional. Blockchain chain ID to filter results.

addressstringOptional

[both] Filter by vToken address.

symbolstringOptional

[both] Filter by asset symbol.

namestringOptional

[both] Filter by asset name.

underlyingAddressstringOptional

[both] Filter by underlying token address.

underlyingNamestringOptional

[both] Filter by underlying token name.

underlyingSymbolstringOptional

[both] Filter by underlying token symbol.

orderstringOptional

[both] Columns to sort by. Default is descending. Prepend + for ascending (e.g. +underlyingName).

limitintegerOptional

[both] Maximum number of results to return.

Default: 20
pageintegerOptional

[both] Page number for pagination.

Default: 0
accountAddressstringOptional

[next only] Account address to embed personalised Prime APY boosts into each market.

Header parameters
accept-versionstring · enumOptional

Selects 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.

Possible values:
Responses
chevron-right
200

Returns Market data for all listed markets.

application/json
or
get
/markets
get

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.

Query parameters
assetstringRequired

vToken address to fetch history for.

chainIdstringRequired

Chain ID of the network to query history for.

periodstring · enumOptionalDefault: yearPossible values:
Responses
chevron-right
200

Returns historical data for the requested asset.

application/json
get
/markets/history
get

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

Query parameters
chainIdstringOptional

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

Responses
chevron-right
200

Returns the TVL data for the requested chains.

application/json
suppliedSumCentsstringOptional
borrowedSumCentsstringOptional
liquiditySumCentsstringOptional
marketCountintegerOptional
poolCountintegerOptional
chainCountintegerOptional
get
/markets/tvl

Governance Endpoints

get

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

Path parameters
proposalIdintegerRequired

Proposal Id for fetching a detailed proposal

Responses
chevron-right
200

Proposal vote summary

application/json
forstringRequired
againststringRequired
abstainstringRequired
totalstringRequired
get
/governance/proposals/{proposalId}/voteSummary
get

Retrieve a summary of an account's voter profile.

Path parameters
addressstringRequired

Account address

Responses
chevron-right
200

A summary of an account's voter profile including latest governance transactions.

application/json
delegateCountnumberOptional
votesstringOptional
balancestringOptional
delegatesstringOptional
get
/governance/voters/{address}/summary
get

Retrieve the history of proposals a given account has voted on

Path parameters
addressstringRequired

Account address

Responses
chevron-right
200

Array of proposals in which the given account has voted

application/json
pagenumberOptional
limitnumberOptional
totalnumberOptional
get
/governance/voters/{address}/history
get

Query voter accounts ordered by votes.

Query parameters
limitintegerOptional

Limit used for pagination

Default: 20
pageintegerOptional

Page number to fetch

Default: 0
Responses
chevron-right
200

Returns an array of voter accounts ordered by votes

application/json
offsetnumberOptional
limitnumberOptional
totalnumberOptional
get
/governance/voters
get

Returns paginated array of proposals.

Query parameters
proposalIdintegerOptional

Filter by proposal ID

statestring · enumOptional

Filter by proposal state

Possible values:
orderstringOptional

Array of columns to order results. Default sort is descending. If '+' is prepended to a column it will be sorted ascending.

limitintegerOptional

Limit used for pagination

Default: 20
pageintegerOptional

Page number to fetch

Default: 0
Responses
chevron-right
200

Returns an array of proposals.

application/json
offsetnumberOptional
limitnumberOptional
totalnumberOptional
get
/governance/proposals
get

Get voter details for a given proposal.

Query parameters
proposalIdintegerOptional

Filter by proposal ID

addressstringOptional

Account address

orderstringOptional

Array of columns to order results. Default sort is descending. If '+' is prepended to a column it will be sorted ascending.

limitintegerOptional

Limit used for pagination

Default: 20
pageintegerOptional

Page number to fetch

Default: 0
Responses
chevron-right
200

Pagination object with paginated voter activity and a summary of proposal votes.

application/json
offsetnumberOptional
limitnumberOptional
totalnumberOptional
get
/governance/proposals/votes
get

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

Path parameters
proposalIdintegerRequired

Proposal Id for fetching a detailed proposal

Responses
chevron-right
200

Returns an array of proposals.

application/json
proposalIdintegerRequired
descriptionstringRequired
createdBlockintegerRequired
createdTxHashstringRequired
createdTimestampintegerRequired
startBlockintegerRequired
startTimestampintegerRequired
cancelBlockinteger · nullableRequired
cancelTxHashstring · nullableRequired
cancelTimestampinteger · nullableRequired
endBlockintegerRequired
endTimestampintegerRequired
queuedBlockinteger · nullableRequired
queuedTxHashstring · nullableRequired
queuedTimestampinteger · nullableRequired
executedBlockinteger · nullableRequired
executedTxHashstring · nullableRequired
executedTimestampinteger · nullableRequired
proposerstringRequired
etaintegerRequired
forVotesstringOptional
againstVotesstringOptional
canceledbooleanOptional
executedbooleanOptional
stateintegerRequired
voterCountintegerOptional
abstainedVotesstringOptional
governorNamestringRequired
proposalTypeintegerOptional
get
/governance/proposals/{proposalId}

Last updated