Discovery Endpoint

The Discovery endpoint returns the catalog of Data Streams, including each stream's ID, asset pair, report schema version, and status. Use it to look up stream IDs programmatically, to discover the hidden streams your account is entitled to, and to confirm which streams your account can access.

The response also surfaces useful metadata for each stream, such as the report schema version it uses, its market hours, and its expected decommission date, and more.

Endpoint

The Discovery endpoint is part of the Data Streams REST API and lives on the same host:

DescriptionTestnet URLMainnet URL
Discovery endpointhttps://api.testnet-dataengine.chain.link/api/v1/discoveryhttps://api.dataengine.chain.link/api/v1/discovery
Sample request
GET /api/v1/discovery

Authentication

Data Streams Authentication is optional for the Discovery endpoint. It returns stream metadata, including which streams exist and their schema, not report data. However, authentication provides additional access to streams valid for your API key:

  • Without authentication, the endpoint returns the streams Chainlink lists publicly.
  • With authentication, it also returns the streams your API key is entitled to, including any hidden streams provisioned for your account.

Authenticate the same way as any other Data Streams REST request, by sending the three HMAC headers described on the Data Streams Authentication page. If you use a Data Streams SDK, authentication is handled for you.

For example, this public request returns all live streams:

curl "https://api.dataengine.chain.link/api/v1/discovery?status=live"

Query parameters

Query parameters are how you search the catalog. Use them to filter the response down to the streams you care about, for example, by asset, status, or network. Every parameter is optional; omitting one means no restriction on that field.

  • String filters accept a comma-delimited list and match any of the supplied values, compared case-insensitively. For example, base_asset=btc,eth returns both BTC and ETH streams.
  • Different parameters combine with AND. For example, asset_class=Crypto&quote_asset=USD returns only crypto streams quoted in USD.
  • Unrecognized parameters are ignored.

Metadata filters

ParameterDescriptionExample
base_assetBase asset of the pair.base_asset=BTC,ETH
quote_assetQuote asset of the pair.quote_asset=USD
asset_classBroad asset category. See filter values below for the full list.asset_class=Crypto
feed_typeStream category. See filter values below for the full list.feed_type=Equities
attribute_typeThe kind of data reported. See filter values below for the full list.attribute_type=CexPrice
statusStream status. See Stream status below.status=live
network_typeDON network type.network_type=mainnet
hiddenBoolean. When true, includes the hidden streams your API key can reach.hidden=true

Filter values

The string filters accept the values the catalog currently uses. The lists below are not exhaustive — the catalog grows over time, so new values may appear.

Asset class

asset_class is a broad asset category. The catalog currently uses:

ValueDescription
CryptoCryptocurrencies. See Crypto streams.
EquitiesStocks and exchange-traded funds (ETFs). See RWA streams.
ForexForeign exchange currency pairs.
MacroeconomicsMacroeconomic indicators.
NAVNet Asset Value of tokenized funds or portfolios. See SmartData streams.
Tokenized AssetTokenized equities. See Tokenized Asset streams.
Tokenized CLOTokenized collateralized loan obligations.
Tokenized DebtTokenized debt instruments.
Tokenized TreasuriesTokenized US Treasury securities.

Feed type

feed_type is a stream category. The catalog currently uses:

ValueDescription
CryptoCryptocurrency price streams. See Crypto streams.
Crypto-DEXCryptocurrency prices derived from onchain liquidity pools. See DEX State Price streams.
DatalinkStreams delivered through the DataLink product.
EquitiesEquity price streams. See RWA streams.
ForexForeign exchange price streams.
MacroeconomicsMacroeconomic indicator streams.
Net Asset ValueNet Asset Value streams. See SmartData streams.
SmartDataSmartData streams, including NAV and Proof of Reserve. See SmartData streams.
Tokenized AssetTokenized equity streams. See Tokenized Asset streams.

Attribute type

attribute_type is the kind of data reported. The catalog currently uses:

ValueDescription
CexPriceCentralized exchange price.
DexPriceDecentralized exchange price.
EquityPriceEquity price.
ExchangeRateRedemption rate of a staked asset. See Exchange Rate streams.
ExtendedHoursEquityPriceEquity price during extended trading hours.
ForexPriceForeign exchange price.
NAVNet Asset Value. See SmartData streams.
OvernightHoursEquityPriceEquity price during overnight trading hours.
RegularHoursEquityPriceEquity price during regular trading hours.
SmartDataSmartData, including NAV and Proof of Reserve. See SmartData streams.
TopOfBookTop-of-book bid and ask prices. See Crypto Top-of-Book streams.

Stream status

The status filter distinguishes production streams from pre-production streams:

  • live - production streams that are ready for production use.
  • testing - pre-production streams used for validation.

Testing streams are visible without authentication. Omitting the status filter returns both live and testing streams, so filter explicitly with status=live to return only streams that are ready for production.

Date filters

Date filters take a YYYY-MM-DD date with no time component, and are strict: after and before exclude the date itself. A value that isn't a plain date returns HTTP 400.

ParameterDescription
created_afterStreams created strictly after this date.
created_beforeStreams created strictly before this date.
expected_decommission_afterStreams with an expected decommission strictly after this date.
expected_decommission_beforeStreams with an expected decommission strictly before this date.
decommissioned_afterStreams decommissioned strictly after this date.
decommissioned_beforeStreams decommissioned strictly before this date.

Examples

The following examples show common ways to filter the catalog.

All live streams

GET /api/v1/discovery?status=live

Crypto streams quoted in USD

GET /api/v1/discovery?asset_class=Crypto&quote_asset=USD&status=live

Multiple base assets

GET /api/v1/discovery?base_asset=BTC,ETH,SOL

Streams created after a date

GET /api/v1/discovery?created_after=2026-01-01&status=live

Live streams, including hidden ones your key can reach

GET /api/v1/discovery?status=live&hidden=true

Hidden streams

Chainlink often launches new streams privately, before they are announced or made generally available. These streams are marked as hidden: they are excluded from the public Chainlink documentation and from the default Discovery endpoint response, but they are fully functional for the accounts provisioned to use them.

For accounts entitled to these streams, the hidden parameter retrieves their metadata:

curl "https://api.dataengine.chain.link/api/v1/discovery?hidden=true&status=live" \
  -H "Authorization: $API_KEY" \
  -H "X-Authorization-Timestamp: $TIMESTAMP" \
  -H "X-Authorization-Signature-SHA256: $SIGNATURE"

Response

The response is a JSON object with a single feeds array:

{
  "feeds": [
    {
      "assetClass": "Crypto",
      "assetName": "Render",
      "baseAsset": "RENDER",
      "quoteAsset": "USD",
      "attributeType": "CexPrice",
      "feedType": "Crypto",
      "createdAt": "2024-09-19T17:05:44.554814Z",
      "decommissionedAt": null,
      "expectedDecommissionAt": null,
      "feedId": "0x00034e3ab3a1c0809fe3f56ffe755155ace8564512cbc3884e9463dba081c02a",
      "marketHours": "Crypto",
      "name": "RENDER/USD-Streams-CexPrice",
      "networkType": "mainnet",
      "schemaVersion": "V3",
      "serviceLevel": "Streams",
      "status": "live"
    }
  ]
}

Schema

FieldTypeDescription
feedIdstringThe stream ID, as a 32-byte hex value. Pass this to the report endpoints.
namestringThe full stream name, for example RENDER/USD-Streams-CexPrice.
assetNamestringHuman-readable name of the underlying asset, for example Render.
baseAssetstringBase asset of the pair, for example RENDER.
quoteAssetstringQuote asset of the pair, for example USD.
assetClassstringBroad asset category, for example Crypto, Equities, Forex, or Tokenized Asset.
feedTypestringStream category, for example Crypto, Crypto-DEX, Equities, or Net Asset Value.
attributeTypestringThe kind of data reported, for example CexPrice, DexPrice, ExchangeRate, or RegularHoursEquityPrice.
marketHoursstringThe market hours schedule that applies, for example Crypto or US Equities Regular.
schemaVersionstringThe report schema the stream uses, for example V3, V7, or V11.
serviceLevelstringThe product the stream belongs to, for example Streams or Datalink.
networkTypestringmainnet or testnet, matching the host you queried.
statusstringlive for production streams, testing for pre-production streams.
createdAtstringRFC 3339 timestamp for when the stream was created.
expectedDecommissionAtstring | nullRFC 3339 timestamp for a scheduled decommission. null if none is scheduled.
decommissionedAtstring | nullRFC 3339 timestamp for when the stream was decommissioned. null if the stream is still available.

The Discovery endpoint returns the schema version a stream uses, not the report schema itself. To find the fields a given schemaVersion contains and how to decode them, see the Report Schemas page.

Errors and caching

Errors return a JSON object with a single error field describing the problem.

StatusMeaning
200Success. A filter that matches nothing returns an empty feeds array, not an error.
400A parameter failed to parse — for example, a date that isn't in YYYY-MM-DD form or a non-boolean hidden value.
500The service could not fetch the DON or stream data. Retry the request.

Successful responses are cacheable and are served with Cache-Control: public, max-age=300. Expect a newly launched stream to take up to five minutes to appear.

What's next

Get the latest Chainlink content straight to your inbox.