Cryptocurrency — entry 032 of 53

dYdX

Verified Jul 2026

dYdX is a decentralized perpetuals exchange that migrated from its StarkEx-based v3 to a Cosmos-chain v4 architecture, replacing the old exchange API with an open-source Indexer exposing markets, orderbooks, trades, and candles over REST and WebSocket. Anyone can run their own Indexer instance, but the public one at indexer.dydx.trade needs no signup for market-data reads — it's rate-limited rather than API-key gated.

dYdX v4's Indexer is a keyless, read-only REST and WebSocket service that mirrors on-chain state for the dYdX Cosmos appchain — markets, orderbooks, trades, and candles all live here, built by parsing the chain rather than sitting in the trading path itself.

perpetualsdexderivativescosmosmarket-data
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSON, WebSocketResponses can be requested as JSON or WebSocket.

GreatAPIs Score

Score100out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats15/15Supports 2 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 100 on greatapis.com
<a href="https://greatapis.com/api/dydx/"><img src="https://greatapis.com/badge/dydx.svg" alt="Scored 100 on greatapis.com"></a>

Auth quickstart

  1. No API key required — the public Indexer at indexer.dydx.trade is a keyless, read-only, eventually-consistent view. Every response carries live ratelimit-limit/ratelimit-remaining/ratelimit-reset headers (a live response showed ratelimit-limit: 100 per short rolling per-IP window) rather than a fixed number published in the docs, so track those headers instead of assuming a hardcoded ceiling.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

addresses5
GET/addresses/{address}
Parameters
NameInRequiredType
addresspathyesstring
Responses
StatusDescriptionSchema
200OkAddressResponse
GET/addresses/{address}/parentSubaccountNumber/{parentSubaccountNumber}
Parameters
NameInRequiredType
addresspathyesstring
parentSubaccountNumberpathyesnumber
Responses
StatusDescriptionSchema
200OkParentSubaccountResponse
POST/addresses/{address}/registerToken
Parameters
NameInRequiredType
addresspathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
204No content
GET/addresses/{address}/subaccountNumber/{subaccountNumber}
Parameters
NameInRequiredType
addresspathyesstring
subaccountNumberpathyesnumber
Responses
StatusDescriptionSchema
200OkSubaccountResponseObject
POST/addresses/{address}/testNotification
Parameters
NameInRequiredType
addresspathyesstring
Responses
StatusDescriptionSchema
204No content
affiliates5
GET/affiliates/address
Parameters
NameInRequiredType
referralCodequeryyesstring
Responses
StatusDescriptionSchema
200OkAffiliateAddressResponse
GET/affiliates/metadata
Parameters
NameInRequiredType
addressqueryyesstring
Responses
StatusDescriptionSchema
200OkAffiliateMetadataResponse
POST/affiliates/referralCode
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OkCreateReferralCodeResponse
GET/affiliates/snapshot
Parameters
NameInRequiredType
addressFilterquerynoarray
offsetquerynonumber
limitquerynonumber
sortByAffiliateEarningquerynoboolean
Responses
StatusDescriptionSchema
200OkAffiliateSnapshotResponse
GET/affiliates/total_volume
Parameters
NameInRequiredType
addressqueryyesstring
Responses
StatusDescriptionSchema
200OkAffiliateTotalVolumeResponse
assetPositions2
GET/assetPositions
Parameters
NameInRequiredType
addressqueryyesstring
subaccountNumberqueryyesnumber
Responses
StatusDescriptionSchema
200OkAssetPositionResponse
GET/assetPositions/parentSubaccountNumber
Parameters
NameInRequiredType
addressqueryyesstring
parentSubaccountNumberqueryyesnumber
Responses
StatusDescriptionSchema
200OkAssetPositionResponse
candles1
GET/candles/perpetualMarkets/{ticker}
Parameters
NameInRequiredType
tickerpathyesstring
resolutionqueryyes
limitquerynonumber
fromISOquerynostring
toISOquerynostring
Responses
StatusDescriptionSchema
200OkCandleResponse
compliance1
GET/compliance/screen/{address}
Parameters
NameInRequiredType
addresspathyesstring
Responses
StatusDescriptionSchema
200OkComplianceV2Response
fills2
GET/fills
Parameters
NameInRequiredType
addressqueryyesstring
subaccountNumberqueryyesnumber
marketquerynostring
marketTypequeryno
includeTypesquerynoarray
excludeTypesquerynoarray
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
pagequerynonumber
Responses
StatusDescriptionSchema
200OkFillResponse
GET/fills/parentSubaccount
Parameters
NameInRequiredType
addressqueryyesstring
parentSubaccountNumberqueryyesnumber
includeTypesquerynoarray
excludeTypesquerynoarray
limitquerynonumber
pagequerynonumber
Responses
StatusDescriptionSchema
200OkFillResponse
fundingPayments2
GET/fundingPayments
Parameters
NameInRequiredType
addressqueryyesstring
subaccountNumberqueryyesnumber
limitquerynonumber
tickerquerynostring
afterOrAtqueryno
pagequerynonumber
zeroPaymentsquerynoboolean
Responses
StatusDescriptionSchema
200OkFundingPaymentResponse
GET/fundingPayments/parentSubaccount
Parameters
NameInRequiredType
addressqueryyesstring
parentSubaccountNumberqueryyesnumber
limitquerynonumber
afterOrAtqueryno
pagequerynonumber
zeroPaymentsquerynoboolean
Responses
StatusDescriptionSchema
200OkFundingPaymentResponse
height1
GET/height
Responses
StatusDescriptionSchema
200OkHeightResponse
historical-pnl2
GET/historical-pnl
Parameters
NameInRequiredType
addressqueryyesstring
subaccountNumberqueryyesnumber
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
createdOnOrAfterHeightquerynonumber
createdOnOrAfterqueryno
pagequerynonumber
Responses
StatusDescriptionSchema
200OkHistoricalPnlResponse
GET/historical-pnl/parentSubaccountNumber
Parameters
NameInRequiredType
addressqueryyesstring
parentSubaccountNumberqueryyesnumber
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
createdOnOrAfterHeightquerynonumber
createdOnOrAfterqueryno
Responses
StatusDescriptionSchema
200OkHistoricalPnlResponse
historicalBlockTradingRewards1
GET/historicalBlockTradingRewards/{address}
Parameters
NameInRequiredType
addresspathyesstring
limitquerynonumber
startingBeforeOrAtqueryno
startingBeforeOrAtHeightquerynostring
Responses
StatusDescriptionSchema
200OkHistoricalBlockTradingRewardsResponse
historicalFunding1
GET/historicalFunding/{ticker}
Parameters
NameInRequiredType
tickerpathyesstring
limitquerynonumber
effectiveBeforeOrAtHeightquerynonumber
effectiveBeforeOrAtqueryno
Responses
StatusDescriptionSchema
200OkHistoricalFundingResponse
historicalTradingRewardAggregations1
GET/historicalTradingRewardAggregations/{address}
Parameters
NameInRequiredType
addresspathyesstring
periodqueryyes
limitquerynonumber
startingBeforeOrAtqueryno
startingBeforeOrAtHeightquerynostring
Responses
StatusDescriptionSchema
200OkHistoricalTradingRewardAggregationsResponse
orderbooks1
GET/orderbooks/perpetualMarket/{ticker}
Parameters
NameInRequiredType
tickerpathyesstring
Responses
StatusDescriptionSchema
200OkOrderbookResponseObject
orders3
GET/orders
Parameters
NameInRequiredType
addressqueryyesstring
subaccountNumberqueryyesnumber
limitquerynonumber
tickerquerynostring
sidequeryno
typequeryno
includeTypesquerynoarray
excludeTypesquerynoarray
statusquerynoarray
goodTilBlockBeforeOrAtquerynonumber
goodTilBlockAfterquerynonumber
goodTilBlockTimeBeforeOrAtqueryno
goodTilBlockTimeAfterqueryno
returnLatestOrdersquerynoboolean
Responses
StatusDescriptionSchema
200Ok
GET/orders/parentSubaccountNumber
Parameters
NameInRequiredType
addressqueryyesstring
parentSubaccountNumberqueryyesnumber
limitquerynonumber
tickerquerynostring
sidequeryno
typequeryno
includeTypesquerynoarray
excludeTypesquerynoarray
statusquerynoarray
goodTilBlockBeforeOrAtquerynonumber
goodTilBlockAfterquerynonumber
goodTilBlockTimeBeforeOrAtqueryno
goodTilBlockTimeAfterqueryno
returnLatestOrdersquerynoboolean
Responses
StatusDescriptionSchema
200Ok
GET/orders/{orderId}
Parameters
NameInRequiredType
orderIdpathyesstring
Responses
StatusDescriptionSchema
200OkOrderResponseObject
perpetualMarkets1
GET/perpetualMarkets
Parameters
NameInRequiredType
limitquerynonumber
tickerquerynostring
marketquerynostring
Responses
StatusDescriptionSchema
200OkPerpetualMarketResponse
perpetualPositions2
GET/perpetualPositions
Parameters
NameInRequiredType
addressqueryyesstring
subaccountNumberqueryyesnumber
statusquerynoarray
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
Responses
StatusDescriptionSchema
200OkPerpetualPositionResponse
GET/perpetualPositions/parentSubaccountNumber
Parameters
NameInRequiredType
addressqueryyesstring
parentSubaccountNumberqueryyesnumber
statusquerynoarray
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
Responses
StatusDescriptionSchema
200OkPerpetualPositionResponse
pnl2
GET/pnl
Parameters
NameInRequiredType
addressqueryyesstring
subaccountNumberqueryyesnumber
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
createdOnOrAfterHeightquerynonumber
createdOnOrAfterqueryno
pagequerynonumber
dailyquerynoboolean
Responses
StatusDescriptionSchema
200OkPnlResponse
GET/pnl/parentSubaccountNumber
Parameters
NameInRequiredType
addressqueryyesstring
parentSubaccountNumberqueryyesnumber
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
createdOnOrAfterHeightquerynonumber
createdOnOrAfterqueryno
dailyquerynoboolean
Responses
StatusDescriptionSchema
200OkPnlResponse
screen1
GET/screen
Parameters
NameInRequiredType
addressqueryyesstring
Responses
StatusDescriptionSchema
200OkComplianceResponse
sparklines1
GET/sparklines
Parameters
NameInRequiredType
timePeriodqueryyes
Responses
StatusDescriptionSchema
200OkSparklineResponseObject
time1
GET/time
Responses
StatusDescriptionSchema
200OkTimeResponse
tradeHistory2
GET/tradeHistory
Parameters
NameInRequiredType
addressqueryyesstring
subaccountNumberqueryyesnumber
marketquerynostring
marketTypequeryno
limitquerynonumber
pagequerynonumber
Responses
StatusDescriptionSchema
200OkTradeHistoryResponse
GET/tradeHistory/parentSubaccountNumber
Parameters
NameInRequiredType
addressqueryyesstring
parentSubaccountNumberqueryyesnumber
marketquerynostring
marketTypequeryno
limitquerynonumber
pagequerynonumber
Responses
StatusDescriptionSchema
200OkTradeHistoryResponse
trader1
GET/trader/search
Parameters
NameInRequiredType
searchParamqueryyesstring
Responses
StatusDescriptionSchema
200OkTraderSearchResponse
trades1
GET/trades/perpetualMarket/{ticker}
Parameters
NameInRequiredType
tickerpathyesstring
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
pagequerynonumber
Responses
StatusDescriptionSchema
200OkTradeResponse
transfers3
GET/transfers
Parameters
NameInRequiredType
addressqueryyesstring
subaccountNumberqueryyesnumber
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
pagequerynonumber
Responses
StatusDescriptionSchema
200OkTransferResponse
GET/transfers/between
Parameters
NameInRequiredType
sourceAddressqueryyesstring
sourceSubaccountNumberqueryyesnumber
recipientAddressqueryyesstring
recipientSubaccountNumberqueryyesnumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
Responses
StatusDescriptionSchema
200OkTransferBetweenResponse
GET/transfers/parentSubaccountNumber
Parameters
NameInRequiredType
addressqueryyesstring
parentSubaccountNumberqueryyesnumber
limitquerynonumber
createdBeforeOrAtHeightquerynonumber
createdBeforeOrAtqueryno
pagequerynonumber
Responses
StatusDescriptionSchema
200OkParentSubaccountTransferResponse
turnkey3
POST/turnkey/appleLoginRedirect
Request body

application/jsonAppleLoginRedirectRequest (required)

Responses
StatusDescriptionSchema
200OkAppleLoginResponse
POST/turnkey/signin
Request body

application/jsonSignInRequest (required)

Responses
StatusDescriptionSchema
200OkTurnkeyAuthResponse
POST/turnkey/uploadAddress
Request body

application/json (required)

Responses
StatusDescriptionSchema
200Ok
vault3
GET/vault/v1/megavault/historicalPnl
Parameters
NameInRequiredType
resolutionqueryno
Responses
StatusDescriptionSchema
200OkMegavaultHistoricalPnlResponse
GET/vault/v1/megavault/positions
Responses
StatusDescriptionSchema
200OkMegavaultPositionResponse
GET/vault/v1/vaults/historicalPnl
Parameters
NameInRequiredType
resolutionqueryno
Responses
StatusDescriptionSchema
200OkVaultsHistoricalPnlResponse

Try it

Developer reference

Base URLhttps://indexer.dydx.trade/v4
Rate limit

100 requests per short rolling per-IP window, per the live `ratelimit-limit`/`ratelimit-remaining`/`ratelimit-reset` response headers on indexer.dydx.trade — docs.dydx.xyz does not publish a fixed public number itself.

Key endpoints
  • GET/perpetualMarkets
  • GET/time
  • GET/height

Gotchas & limits

  • The response nests a single market under markets, keyed by ticker (e.g. markets["BTC-USD"]) — even a ?ticker=-filtered request still returns an object, not a flat record or an array.
  • v3 (the original StarkEx-based exchange API) is gone — v4's open-source Indexer is the only public dYdX market-data API today; v3 endpoint paths and client code won't work against it.
  • Almost every numeric-looking field (oraclePrice, priceChange24H, volume24H, the margin fractions, openInterest) is a JSON string; only a handful like trades24H, atomicResolution, and stepBaseQuantums come through as real numbers.
  • A live response carried a geo-origin-status: restricted header alongside geo-origin-country/geo-origin-region — the Indexer geo-tags requests and can restrict access by jurisdiction, so don't assume every caller gets identical responses regardless of origin.

Availability

Uptime100%
Median latency358 ms
Last checkUp · 200 · Sep 2026

4 checks since Aug 2026. A person runs this check by hand, not an automated monitor.

Changelog

Spec versionv1.0.0
Tracked paths49
  • Aug 2026gained an OpenAPI spec

Tracking since Sep 2026. See every tracked change ↗ ·Subscribe with RSS ↗