GET

/api/v1/assets

List canonical underlying assets

Complete metadata-only directory of canonical :Asset:Entity records. Each row has a stable UUID and assetKey, name, optional ticker, asset type, aliases, exact namespaced platform identifiers, and an active direct-market count. It deliberately omits linked markets, venue odds, Q probabilities, forecasts, and signals. Omit filters to return every Asset; use /assets/search for enriched prediction-market intelligence.

Price $0.005Auth x-quotient-api-key or x402Limit 20/s · 600/min · 20,000/day

Parameters

NameInTypeDescription
platformquerystringReturn Assets having at least one identifier in this case-insensitive platform namespace, such as hyperliquid or sec.

Minimum length: 1; Maximum length: 80

asset_typequerystringCase-insensitive canonical Asset type filter, such as company, commodity, crypto, index, fund, fx, or other.

Minimum length: 1; Maximum length: 80

Responses

200: Complete metadata-only Asset catalog under the supplied filters
FieldTypeDescription
assets
required
AssetListItem[]Complete metadata-only Asset catalog under the supplied filters.
assets fields
FieldTypeDescription
id
required
stringStable UUID for the canonical :Asset:Entity node.

Format: uuid

assetKey
required
stringGlobally unique namespaced identity, such as company:aapl, commodity:gold, or crypto:btc.
name
required
string
ticker
required
string | nullCommon ticker when one exists. Tickers are not globally unique; prefer assetKey or a platform identifier for exact identity.
asset_type
required
stringCanonical underlying type, such as company, commodity, crypto, index, fund, fx, or other.
aliases
required
string[]
identifiers
required
AssetIdentifier[]Namespaced external identifiers for the underlying. Venue market IDs remain on linked markets and are not reclassified as Asset identifiers.
identifiers fields
FieldTypeDescription
platform
required
stringIdentifier namespace, such as hyperliquid, sec, kalshi, or quotient.

Minimum length: 1

kind
required
stringIdentifier family inside the platform namespace, such as coin or cik.

Minimum length: 1

value
required
stringExact platform value. Preserve case and punctuation for routing or execution; normalization applies only to lookup.

Minimum length: 1

linked_market_count
required
integerCount of active, open prediction markets directly connected by HAS_MARKET. This count contains no forecast data.

Minimum: 0

401: Unauthorized
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.
402: Payment Required
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.
403: Insufficient credits for the requested route
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.
422: Invalid platform or asset_type filter
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.
429: The caller exceeded a per-second, per-minute, daily, or concurrency limit. No credits are debited and no x402 payment is settled for this response.
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.

Set QUOTIENT_API_KEY in your shell and replace example identifiers with returned IDs before running a request.

curl
curl --request GET \
  --header "x-quotient-api-key: $QUOTIENT_API_KEY" \
  'https://quotient-api-gateway.onrender.com/api/v1/assets'
200 · application/json
{
  "assets": [
    {
      "id": "13fe79af-6d3f-47fd-8e67-f0eb23cab4f9",
      "assetKey": "commodity:gold",
      "name": "Gold",
      "ticker": "GOLD",
      "asset_type": "commodity",
      "aliases": [
        "XAU"
      ],
      "identifiers": [
        {
          "platform": "hyperliquid",
          "kind": "coin",
          "value": "xyz:GOLD"
        }
      ],
      "linked_market_count": 7
    }
  ]
}