{
  "data": {
    "a": {
      "slug": "bitfinex",
      "name": "Bitfinex API",
      "vendor": "iFinex Inc.",
      "vendorUrl": "https://www.bitfinex.com",
      "kind": "http-api",
      "category": "crypto-exchanges",
      "summary": "Bitfinex's v2 API for spot, margin, derivatives and peer-to-peer funding, with balances, deposits and withdrawals, through REST and WebSocket with scoped API keys, paper-trading sub-accounts and official Node, Python, Go and Ruby clients.",
      "url": "https://www.anchorterminal.com/tools/bitfinex",
      "markdownUrl": "https://www.anchorterminal.com/tools/bitfinex.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/bitfinex.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/bitfinex.json",
      "dns": "bitfinex.grade.anchorterminal.com",
      "repo": "https://github.com/bitfinexcom/bitfinex-api-node",
      "license": "Proprietary hosted API under Bitfinex's API Terms of Service, which our reader couldn't load. The official client libraries (Node, Python, Go, Ruby) are MIT or Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "bitfinex-api-node"
        },
        {
          "registry": "pypi",
          "name": "bitfinex-api-py"
        }
      ],
      "auth": "api-key",
      "authNotes": "API key and secret made at setting.bitfinex.com/api after a browser signup, with 2FA and an email confirmation, shown once. Each key carries read and write permissions per scope (account, history, orders, positions, funding, settings, wallets, withdraw, ui_withdraw, bfxpay), readable back from `POST /v2/auth/r/permissions`, and keys are revoked from the same page; a strictly increasing nonce per key. Bitfinex's support article on keys says a key can be bound to up to 20 IP addresses, per the search result's text, since the article itself answered 403 (https://docs.bitfinex.com/docs/requirements-and-limitations, https://docs.bitfinex.com/reference/key-permissions, checked 2026-11-03).",
      "pricing": "usage",
      "pricingNotes": "The API itself costs nothing. The fees page read on 3 November 2026 shows zero maker and zero taker fees for exchange, margin and derivatives order execution with no volume tiers, margin funding lender fees of 15% of interest (18% when the offer is hidden) with up to 5% off for LEO holders, a 5% takeover fee, free crypto deposits and bank wire 0.1% (minimum 60 for deposits, 100 for withdrawals, USD or EUR). Paper trading on a sub-account needs no money (https://www.bitfinex.com/fees, checked 2026-11-03).",
      "priceSummary": "0% fee",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs, llms.txt or fees page (checked 2026-11-03). Fees are taken from the account; onboarding is a browser signup.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 480,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://docs.bitfinex.com",
      "llmsTxt": "https://docs.bitfinex.com/llms.txt",
      "capabilities": [
        "exchange.market-data",
        "exchange.spot-trading",
        "exchange.derivatives",
        "exchange.balances",
        "exchange.transfers",
        "exchange.staking",
        "market.crypto"
      ],
      "tags": [
        "official",
        "hosted",
        "api-key",
        "llms-txt",
        "sandbox",
        "status-page",
        "javascript",
        "python",
        "go",
        "ruby",
        "usage-priced"
      ],
      "lastRelease": "2026-07-18",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.4,
        "grade": "C",
        "agentReady": false,
        "rank": 687,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 61,
          "maintenance": 41,
          "payments": 40,
          "reliability": 85,
          "schema": 48,
          "security": 62,
          "transparency": 49
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "Bitfinex gives an agent scoped keys with a separate withdraw permission, paper-trading sub-accounts on the production API, llms.txt and official clients in four languages. There is no official MCP server, responses are positional arrays with empty error bodies, rate limits run 10 to 90 a minute per IP, and the terms, API terms and privacy statement could not be read.",
        "bestFor": "An agent trading spot, margin or derivatives, or lending on the funding market, with scoped keys, official clients and paper trading.",
        "strengths": [
          "Per-scope read and write permissions on each key, including a separate `withdraw` scope, readable back from the permissions endpoint",
          "Paper trading on a sub-account against test symbols on the same production API, with no money at risk",
          "llms.txt with a Markdown twin of every docs page, and official Node, Python, Go and Ruby clients",
          "Rate limits, connection limits and the `ERR_RATE_LIMIT` response documented with numbers",
          "A Statuspage history going back to 2021 and a fees page without login"
        ],
        "weaknesses": [
          "No official MCP server, OpenAPI file or AsyncAPI file; the registry's Bitfinex servers are third parties proxying public market data",
          "Responses are positional arrays and authenticated errors answer 400 with an empty object, so an agent must map indexes and guess causes",
          "Rate limits of 10 to 90 requests a minute per IP with a 60-second block and no Retry-After",
          "The Exchange Terms, API Terms of Service, privacy statement and support articles could not be read, so the bot clauses, retention and restricted countries are unchecked",
          "The docs changelog stops at October 2024 and the v1 deprecation has no date"
        ],
        "agentNotes": [
          "Mint a key with read on the scopes the task needs and write only on `orders`; never grant `withdraw` to a trading key, and bind the key to known IPs",
          "Use one key per client process, since each key keeps its own strictly increasing nonce and a reused nonce is rejected",
          "Rehearse on a paper-trading sub-account with the TEST symbols before touching real balances; the sub-account cannot be converted later",
          "Plan requests against the per-endpoint limit of 10 to 90 a minute per IP; `ERR_RATE_LIMIT` blocks the IP for 60 seconds with no Retry-After",
          "Map each response by position from the docs' field tables and set a `cid` on orders, because responses are arrays and a 400 carries no reason"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.4
          }
        ],
        "editorialScores": {
          "ergonomics": 61,
          "maintenance": 41,
          "payments": 40,
          "reliability": 85,
          "schema": 48,
          "security": 62,
          "transparency": 13
        },
        "provenanceScore": 85,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install bitfinex-api-node",
        "http": "curl https://api-pub.bitfinex.com/v2/ticker/tBTCUSD"
      },
      "letme": {
        "capability": "https://letme.dev/exchange.market-data",
        "tool": "https://letme.dev/bitfinex"
      },
      "area": "payments",
      "unitPrices": [
        {
          "item": "Exchange maker fee, as shown on 3 November 2026",
          "unit": "pct",
          "usd": 0,
          "note": "no tiers or date shown; reads as a promotion"
        },
        {
          "item": "Exchange taker fee, as shown on 3 November 2026",
          "unit": "pct",
          "usd": 0,
          "note": "no tiers or date shown; reads as a promotion"
        },
        {
          "item": "Margin funding lender fee on interest earned",
          "unit": "pct",
          "usd": 15,
          "note": "18% when the offer is hidden, up to 5% off for LEO holders"
        }
      ],
      "provenance": {
        "legalEntity": "iFinex Inc.",
        "domain": "bitfinex.com",
        "domainRegistered": "2012-10-11",
        "endpointOnVendorDomain": true,
        "terms": "https://www.bitfinex.com/legal/exchange/terms/",
        "privacy": "https://www.bitfinex.com/legal/privacy/",
        "statusPage": "https://bitfinex.statuspage.io",
        "changelog": "https://docs.bitfinex.com/docs/changelog",
        "securityTxt": "none",
        "checked": "2026-11-03",
        "notes": [
          "iFinex Inc. is named only in the copyright line of bitfinex.com; the Exchange Terms, API Terms of Service and privacy statement pages draw their text by script and loaded only navigation, so the contracting entity and its jurisdiction are unconfirmed.",
          "RDAP gives bitfinex.com a registration date of 11 October 2012.",
          "https://www.bitfinex.com/.well-known/security.txt returns 404.",
          "www.bitfinex.com/robots.txt allows the pages read; docs.bitfinex.com allows all and points to llms.txt; bitfinex.statuspage.io disallows /api/ and /embed/, so the history feed was read. support.bitfinex.com's robots.txt allows articles but the articles answered 403.",
          "The docs changelog's latest entry is 16 October 2024; the API clients carry the recent releases."
        ],
        "score": 85
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/bitfinex.json",
      "live": {
        "slug": "bitfinex",
        "vendorStatus": {
          "page": "https://bitfinex.statuspage.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T20:04:41.688156046Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "bitfinexcom/bitfinex-api-node",
            "version": "4.0.15",
            "released": "2020-07-02",
            "seenAt": "2026-11-04T20:02:46.845797373Z"
          },
          {
            "registry": "npm",
            "name": "bitfinex-api-node",
            "version": "9.1.0",
            "seenAt": "2026-11-04T20:02:45.764784853Z"
          },
          {
            "registry": "pypi",
            "name": "bitfinex-api-py",
            "version": "4.0.0",
            "released": "2025-10-18",
            "seenAt": "2026-11-04T20:02:46.619664479Z"
          }
        ],
        "githubStars": 480,
        "npmWeekly": 6284,
        "pypiWeekly": 832,
        "securityTxt": {
          "url": "https://bitfinex.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:53:26.210646703Z"
        },
        "updatedAt": "2026-11-04T20:04:41.688156046Z"
      }
    },
    "answer": "dYdX scores 69.5 (B) on agent readiness against Bitfinex API's 58.4 (C), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "dydx",
      "name": "dYdX",
      "vendor": "dYdX Trading Inc.",
      "vendorUrl": "https://www.dydx.xyz",
      "kind": "http-api",
      "category": "crypto-exchanges",
      "summary": "dYdX is a perpetuals exchange on its own Cosmos chain. Agents read markets and accounts from the indexer REST and WebSocket API at indexer.dydx.trade and place orders as signed chain transactions through the official TypeScript, Python and Rust clients.",
      "url": "https://www.anchorterminal.com/tools/dydx",
      "markdownUrl": "https://www.anchorterminal.com/tools/dydx.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/dydx.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/dydx.json",
      "dns": "dydx.grade.anchorterminal.com",
      "repo": "https://github.com/dydxprotocol/v4-clients",
      "license": "The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc.",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@dydxprotocol/v4-client-js"
        },
        {
          "registry": "pypi",
          "name": "dydx-v4-client"
        }
      ],
      "auth": "mixed",
      "authNotes": "Indexer reads need no credential. Orders, cancels and transfers are chain messages signed with the account's key (a mnemonic or private key in the clients). Permissioned keys let an owner add an authenticator that lets another key act within limits, composed from SignatureVerification, MessageFilter (for example only /dydxprotocol.clob.MsgPlaceOrder), SubaccountFilter and ClobPairIdFilter under AllOf or AnyOf, and removed with remove_authenticator. The dydx.trade interface generates an API wallet with default permission to trade all cross-margin pairs and shows its private key once (https://docs.dydx.xyz/concepts/trading/authenticators, checked 2026-11-03).",
      "pricing": "usage",
      "pricingNotes": "The indexer and clients have no charge. Trading fees at the lowest tier (under $1 million of 30-day volume) are 5.0 bps taker and 1.0 bps maker, set by governance, uniform across markets, with gas on each transaction; fees flow to validators and stakers (https://docs.dydx.xyz/concepts/trading/rewards, checked 2026-11-03).",
      "priceSummary": "0.05% fee",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or clients (checked 2026-11-03). Accounts are funded with USDC through Noble or an onboarding partner.",
        "endpoints": []
      },
      "toolCount": 0,
      "popularity": {
        "githubStars": 119,
        "npmWeekly": 86394,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://docs.dydx.xyz/",
      "llmsTxt": "https://docs.dydx.xyz/llms.txt",
      "capabilities": [
        "exchange.derivatives",
        "exchange.market-data",
        "exchange.balances",
        "exchange.transfers",
        "exchange.staking",
        "market.crypto",
        "wallet.onchain"
      ],
      "tags": [
        "official",
        "hosted",
        "open-source",
        "llms-txt",
        "typescript",
        "python",
        "rust",
        "sandbox",
        "usage-priced",
        "status-page",
        "bug-bounty",
        "no-key",
        "rest"
      ],
      "lastRelease": "2026-10-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 69.5,
        "grade": "B",
        "agentReady": false,
        "rank": 221,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 60,
          "reliability": 83,
          "schema": 58,
          "security": 78,
          "transparency": 50
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "dYdX gives an agent keyless indexer reads, permissioned keys limited by message type, subaccount and market, a Statuspage with a clean 90 days, published fees and a testnet with a faucet. There is no official MCP server or OpenAPI file, orders are chain transactions signed by the clients, and no one entity operates the hosted endpoints.",
        "bestFor": "An agent trading perpetuals from its own Cosmos wallet or through a permissioned key on an owner's account, outside the US, Canada and UK.",
        "strengths": [
          "Permissioned keys limit a delegated key to chosen message types, subaccounts and markets, exclude withdrawals and transfers, and are removed with `remove_authenticator`",
          "status.dydx.trade lists Indexer, Chain, Order Gateway and Client Libraries components, with only maintenance windows and one partner deposit delay in the last 90 days",
          "Fees public at 5.0 bps taker and 1.0 bps maker at the lowest tier, with rate limits and block limits stated with numbers",
          "Official TypeScript, Python and Rust clients with CI and trusted publishing, and a testnet with a faucet",
          "A Cantina bug bounty up to $1,000,000 sponsored by dYdX Trading Inc. covering the protocol, indexer, web client and client SDKs"
        ],
        "weaknesses": [
          "No official MCP server; the one registry entry is a third party's analytics server",
          "No OpenAPI file for the indexer; error responses are described by HTTP status only, and chain rejections surface as transaction results",
          "No 429 handling or Retry-After documented for the indexer; permissioned keys cannot cap position or order size",
          "The hosted indexer and front end are run by unnamed third parties; dYdX Trading Inc. says it runs none of the components",
          "Restricted to persons outside the United States, Canada and the United Kingdom, with geo-blocking left to each integrator"
        ],
        "agentNotes": [
          "Ask the account owner for an authenticator limited to `/dydxprotocol.clob.MsgPlaceOrder` and `MsgCancelOrder` on one subaccount, and keep its private key out of prompts",
          "Set a unique 32-bit `clientId` on every order and look it up on `/v4/orders` after a timeout; short-term orders expire with `goodTilBlock` (at most 20 blocks ahead)",
          "Stay under 2 stateful orders a block and 20 per 100 blocks; failed placements count, so use short-term orders for active trading",
          "Enable permessage-deflate on the indexer WebSocket; since 26 October 2026 connections without compression may be refused with 426",
          "Check `/v4/geo` and the compliance screen before trading for a person, since the terms exclude the United States, Canada and the United Kingdom"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 69.5
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 60,
          "reliability": 83,
          "schema": 58,
          "security": 78,
          "transparency": 50
        },
        "provenanceScore": 50,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install @dydxprotocol/v4-client-js",
        "http": "curl https://indexer.dydx.trade/v4/orderbooks/perpetualMarket/ETH-USD"
      },
      "letme": {
        "capability": "https://letme.dev/exchange.derivatives",
        "tool": "https://letme.dev/dydx"
      },
      "area": "payments",
      "unitPrices": [
        {
          "item": "Taker fee, tier 1",
          "unit": "pct",
          "usd": 0.05,
          "note": "5.0 bps of notional; maker 1.0 bps"
        }
      ],
      "provenance": {
        "legalEntity": "dYdX Trading Inc.",
        "domain": "dydx.xyz",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "https://dydx.exchange/v4-terms",
        "privacy": "https://www.dydx.xyz/legal/privacy-policy",
        "statusPage": "https://status.dydx.trade",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-11-03",
        "notes": [
          "dYdX Trading Inc. is the entity in the v4 Terms of Use (last updated 12 March 2026), the clients' licence and the Cantina bug bounty. dydx.xyz's terms and privacy policy (6 June 2025) name dYdX International Ltd, Cayman Islands, and its footer reads dYdX International Ltd.",
          "The indexer at indexer.dydx.trade is not on dydx.xyz and the docs say dYdX Trading Inc. runs none of the hosted components, so the endpoint is recorded as off the vendor's domain.",
          "RDAP for dydx.trade answered 404 at the Identity Digital and rdap.org services, so the domain age is unchecked; the vendor domain dydx.xyz was not queried.",
          "status.dydx.trade is an Atlassian Statuspage with five components and an RSS history; its robots.txt disallows /api/ and /embed/, so the history was read from /history.rss.",
          "https://dydx.trade/.well-known/security.txt answered the app's HTML page, so security.txt is unknown. No API changelog; protocol upgrades appear as status maintenance entries."
        ],
        "score": 50
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/dydx.json",
      "live": {
        "slug": "dydx",
        "vendorStatus": {
          "page": "https://status.dydx.trade",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T20:05:06.117120724Z"
        },
        "securityTxt": {
          "url": "https://dydx.xyz/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:54:03.349495473Z"
        },
        "updatedAt": "2026-11-04T20:05:06.117120724Z"
      }
    },
    "edges": [
      {
        "by": 42,
        "category": "maintenance",
        "leads": "dydx",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Read as a closed service with open clients. The last dated change we could read is bitfinex-api-node 9.1.0 on 18 July 2026, 108 days before the check; the docs changelog stops in October 2024 (10). Not three dated releases in the last 90 days (0). The bitfinexcom organisation pushes often (bfx-report on 3 November 2026) and the clients have issue trackers, but support articles answered 403 and no reply times were read (10 of 25). Official clients current in four languages, Node 9.1.0 of July 2026 and Python 4.0.0 of October 2025; not in the MCP registry (15). The Node client has a dependency history of security fixes (its last GitHub release notes name two) and no CI was read (6 of 10). 10 + 0 + 10 + 15 + 6 = 41.",
          "b": "Read on the clients and the chain. v4-clients was pushed on 29 October 2026 and protocol v9.8.0 shipped on 12 October (30). Protocol v9.7 on 11 September, v9.8.0 on 12 October, v4-client-js tags 3.5.0 and 3.6.0, three or more in 90 days (20). A Discord, a help centre and 36 open issues on v4-clients whose replies couldn't be read (12 of 25). Official SDKs current, the TypeScript client at 3.6.0 and the Python client at 1.1.6 from February 2026 (12 of 15). CI workflows for lint, test, publish and audit, with trusted publishing and provenance on npm (9 of 10). Total 83."
        },
        "scores": {
          "a": 41,
          "b": 83
        }
      },
      {
        "by": 20,
        "category": "payments",
        "leads": "dydx",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No machine payment protocol (0). The fees page is public without login (20), though it shows zero maker and taker with no tiers or date. The API is free, public endpoints need no account, and paper trading needs no money (20). A person must sign up in a browser with identity checks and mint the key (0). 0 + 20 + 20 + 0 = 40.",
          "b": "No machine payment protocol (0). Fees public per tier without login (20). Testnet with a faucet and no card anywhere (20). No signup; an agent with a funded wallet trades, subject to the geographic terms (20). Total 60."
        },
        "scores": {
          "a": 40,
          "b": 60
        }
      },
      {
        "by": 16,
        "category": "security",
        "leads": "dydx",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Revocable keys with per-scope read and write flags, a permissions endpoint, 2FA and email confirmation at creation, strictly increasing nonces, and IP binding to 20 addresses per the support article's search text (the article answered 403); no key expiry (24 of 30). `withdraw` and `ui_withdraw` are separate scopes and read-only keys are possible, but the support text says keys from email-and-password accounts start with every permission enabled and no confirmation step is documented for API withdrawals (14 of 20). The API returns exchange data, not third-party text (10). Login history and an account changelog (audit) endpoint are documented (10 of 15). No security.txt, no readable disclosure policy and no certification page readable (4 of 20). 24 + 14 + 10 + 10 + 4 = 62.",
          "b": "Orders are signed by the account key or by a permissioned key the owner adds as an authenticator, limited by message type, subaccount and market with AllOf or AnyOf, and revoked by `remove_authenticator`; no shared secret and nothing in a URL (28 of 30). A key can be confined to placing and cancelling orders on one subaccount with withdrawals and transfers excluded, though not to a position or order size, and the interface's default API wallet trades all cross-margin pairs (16 of 20). The API returns no untrusted content (10). Every action is a chain transaction and the indexer lists fills, orders and transfers per subaccount, and authenticators can be listed; no per-key log (10 of 15). A Cantina bug bounty up to $1,000,000 sponsored by dYdX Trading Inc. over the protocol, indexer, web client and SDKs, an Informal Systems audit; no security.txt and no certification (14 of 20). Total 78."
        },
        "scores": {
          "a": 62,
          "b": 78
        }
      },
      {
        "by": 10,
        "category": "schema",
        "leads": "dydx",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI or AsyncAPI file was found on docs.bitfinex.com, in llms.txt or in the client repositories (0). llms.txt and a .md twin of every docs page (10). Each reference page states the endpoint's purpose and fields, and the introduction says when to use api-pub against api, but nothing says when not to use an endpoint (14 of 20). Responses are positional arrays described in field tables, inputs are typed in prose with some enumerations (wallet names, order types) and required fields marked; the withdrawal CODE field is work in progress (7 of 15). Signed-request recipes in five languages, but authenticated errors are documented as 400 with an empty object and there is no error reference (9 of 15). Version v2 in the path and a dated changelog, whose last entry is October 2024 and whose v1 deprecation has no date (8 of 15). 0 + 10 + 14 + 7 + 9 + 8 = 48.",
          "b": "No OpenAPI file found for the indexer; the docs publish a types reference of about 200 pages (OrderSide, TimeInForce, OrderStatus and the rest) and the chain's protobuf messages are in the clients (8 of 25). llms.txt and Markdown docs (10). Endpoint pages describe each call and the guides say when to use short-term against long-term orders and the indexer against the node, but descriptions are short (12 of 20). Enums and types on every field in the reference, with pagination and cursor parameters typed (11 of 15). Examples in Python, TypeScript and Rust for each step; errors are described by HTTP status (400 malformed, 404 not found) with no code list (9 of 15). A /v4 path, protocol releases dated on the status page, deprecated rate-limit fields marked, but no API changelog (8 of 15). Total 58."
        },
        "scores": {
          "a": 48,
          "b": 58
        }
      },
      {
        "by": 5,
        "category": "ergonomics",
        "leads": "dydx",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Graded on the REST API. Limits on trades, candles and book depth, and `pub:list` config endpoints keep responses small, but positional arrays make every field a lookup (14 of 25). `start`, `end`, `limit` and `sort` on history endpoints and per-symbol variants (16 of 20). `ERR_RATE_LIMIT` is actionable; authenticated 400s return `{}` and withdrawal status strings may change, so an agent cannot branch on causes (8 of 20). A client id on orders, order multi-op and cancel-multiple, but no idempotency key and no retry contract (8 of 20). Few required parameters and official clients in Node, Python, Go and Ruby (15). 14 + 16 + 8 + 8 + 15 = 61.",
          "b": "An API, read for response sizing. `limit` on list endpoints, candles by resolution, sparklines by period; the order book comes whole (16 of 25). `limit`, `page` on fills, transfers and funding, and height or time cursors (16 of 20). Indexer errors are a status and a sentence; order rejections come back from the chain as transaction results the clients surface (8 of 20). Unique 32-bit client IDs, `goodTilBlock` expiry on short-term orders, cancel by order ID; no MCP annotations apply (14 of 20). Few required fields with market parameters fetched for unit conversion, and official clients in TypeScript, Python and Rust (12 of 15). Total 66."
        },
        "scores": {
          "a": 61,
          "b": 66
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "iFinex Inc.",
        "b": "dYdX Trading Inc.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted API under Bitfinex's API Terms of Service, which our reader couldn't load. The official client libraries (Node, Python, Go, Ruby) are MIT or Apache-2.0",
        "b": "The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc.",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "0",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-07-18",
        "b": "2026-10-29",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "2026-03-12",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "2025-06-06",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "480 stars",
        "b": "119 stars, 86k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "dYdX scores 69.5 (B) on agent readiness against Bitfinex API's 58.4 (C), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Bitfinex API or dYdX?"
      },
      {
        "answer": "Bitfinex API needs an API key. dYdX takes an API key or an OAuth sign-in.",
        "question": "Do Bitfinex API and dYdX need an API key?"
      },
      {
        "answer": "No hosted endpoint is listed for Bitfinex API. No hosted endpoint is listed for dYdX.",
        "question": "Can an agent call Bitfinex API and dYdX without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Bitfinex API. dYdX is open source (The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc.).",
        "question": "Are Bitfinex API and dYdX open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "An agent trading spot, margin or derivatives, or lending on the funding market, with scoped keys, official clients and paper trading.",
        "slug": "bitfinex",
        "watchFor": "No official MCP server, OpenAPI file or AsyncAPI file; the registry's Bitfinex servers are third parties proxying public market data"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 58 against 48",
          "Agent ergonomics, 66 against 61",
          "Security \u0026 auth, 78 against 62",
          "Payments \u0026 pricing, 60 against 40",
          "Maintenance \u0026 community, 83 against 41"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "An agent trading perpetuals from its own Cosmos wallet or through a permissioned key on an owner's account, outside the US, Canada and UK.",
        "slug": "dydx",
        "watchFor": "No official MCP server; the one registry entry is a third party's analytics server"
      }
    ],
    "history": null,
    "job": {
      "capability": "exchange.market-data",
      "name": "Exchange market data"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-bitget.json",
        "title": "Bitfinex API vs Bitget",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-bitget"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-bithumb.json",
        "title": "Bitfinex API vs Bithumb Open API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-bithumb"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-bitstamp.json",
        "title": "Bitfinex API vs Bitstamp API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-bitstamp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-bybit.json",
        "title": "Bitfinex API vs Bybit",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-bybit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-advanced-trade.json",
        "title": "Bitfinex API vs Coinbase Advanced Trade API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-advanced-trade"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-mcp.json",
        "title": "Bitfinex API vs Coinbase MCP server (Coinbase for Agents)",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-crypto-com-exchange.json",
        "title": "Bitfinex API vs Crypto.com Exchange API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-crypto-com-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-deribit.json",
        "title": "Bitfinex API vs Deribit",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-deribit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-gate-io.json",
        "title": "Bitfinex API vs Gate",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-gate-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange.json",
        "title": "Bitfinex API vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-htx.json",
        "title": "Bitfinex API vs HTX trading API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-htx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-hyperliquid.json",
        "title": "Bitfinex API vs Hyperliquid",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-hyperliquid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-kraken.json",
        "title": "Bitfinex API vs Kraken API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-kraken"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-kucoin.json",
        "title": "Bitfinex API vs KuCoin",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-kucoin"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-mexc.json",
        "title": "Bitfinex API vs MEXC API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-mexc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-okx.json",
        "title": "Bitfinex API vs OKX API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-okx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-uniswap.json",
        "title": "Bitfinex API vs Uniswap Trading API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-uniswap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-upbit.json",
        "title": "Bitfinex API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitget-vs-dydx.json",
        "title": "Bitget vs dYdX",
        "url": "https://www.anchorterminal.com/compare/bitget-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bithumb-vs-dydx.json",
        "title": "Bithumb Open API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/bithumb-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitstamp-vs-dydx.json",
        "title": "Bitstamp API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/bitstamp-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bybit-vs-dydx.json",
        "title": "Bybit vs dYdX",
        "url": "https://www.anchorterminal.com/compare/bybit-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crypto-com-exchange-vs-dydx.json",
        "title": "Crypto.com Exchange API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/crypto-com-exchange-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-uniswap.json",
        "title": "dYdX vs Uniswap Trading API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-uniswap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-upbit.json",
        "title": "dYdX vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/binance-vs-bitfinex.json",
        "title": "Binance API vs Bitfinex API",
        "url": "https://www.anchorterminal.com/compare/binance-vs-bitfinex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/binance-vs-dydx.json",
        "title": "Binance API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/binance-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-dydx.json",
        "title": "Coinbase Advanced Trade API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deribit-vs-dydx.json",
        "title": "Deribit vs dYdX",
        "url": "https://www.anchorterminal.com/compare/deribit-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-gate-io.json",
        "title": "dYdX vs Gate",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-gate-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-gemini-exchange.json",
        "title": "dYdX vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-htx.json",
        "title": "dYdX vs HTX trading API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-htx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-hyperliquid.json",
        "title": "dYdX vs Hyperliquid",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-hyperliquid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-kraken.json",
        "title": "dYdX vs Kraken API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-kraken"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-kucoin.json",
        "title": "dYdX vs KuCoin",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-kucoin"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-mexc.json",
        "title": "dYdX vs MEXC API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-mexc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-okx.json",
        "title": "dYdX vs OKX API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-okx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coinbase-mcp-vs-dydx.json",
        "title": "Coinbase MCP server (Coinbase for Agents) vs dYdX",
        "url": "https://www.anchorterminal.com/compare/coinbase-mcp-vs-dydx"
      }
    ],
    "panel": null,
    "scores": [
      {
        "bitfinex": 85,
        "by": 2,
        "dydx": 83,
        "edge": "bitfinex",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "bitfinex": 48,
        "by": 10,
        "dydx": 58,
        "edge": "dydx",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "bitfinex": 61,
        "by": 5,
        "dydx": 66,
        "edge": "dydx",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "bitfinex": 62,
        "by": 16,
        "dydx": 78,
        "edge": "dydx",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "bitfinex": 40,
        "by": 20,
        "dydx": 60,
        "edge": "dydx",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "bitfinex": 41,
        "by": 42,
        "dydx": 83,
        "edge": "dydx",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "bitfinex": 49,
        "by": 1,
        "dydx": 50,
        "edge": "dydx",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "dYdX scores 69.5 (B) on agent readiness against Bitfinex API's 58.4 (C), and leads in 6 of 7 scored categories. Both do exchange market data.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "bitfinex": "Bitfinex gives an agent scoped keys with a separate withdraw permission, paper-trading sub-accounts on the production API, llms.txt and official clients in four languages. There is no official MCP server, responses are positional arrays with empty error bodies, rate limits run 10 to 90 a minute per IP, and the terms, API terms and privacy statement could not be read.",
      "dydx": "dYdX gives an agent keyless indexer reads, permissioned keys limited by message type, subaccount and market, a Statuspage with a clean 90 days, published fees and a testnet with a faucet. There is no official MCP server or OpenAPI file, orders are chain transactions signed by the clients, and no one entity operates the hosted endpoints."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/bitfinex-vs-dydx",
    "json": "https://www.anchorterminal.com/compare/bitfinex-vs-dydx.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/bitfinex-vs-dydx.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/bitfinex-vs-dydx.min.md"
  },
  "markdown": "dYdX scores 69.5 (B) on agent readiness against Bitfinex API's 58.4 (C), and leads in 6 of 7 scored categories. Both do exchange market data.\n\n- Bitfinex API: grade C, 58.4/100, rank #687 of 1349. Markdown https://www.anchorterminal.com/tools/bitfinex.md · JSON https://www.anchorterminal.com/api/v1/tools/bitfinex.json\n- dYdX: grade B, 69.5/100, rank #221 of 1349. Markdown https://www.anchorterminal.com/tools/dydx.md · JSON https://www.anchorterminal.com/api/v1/tools/dydx.json\n- Best crypto exchange APIs and MCP servers for AI agents: https://www.anchorterminal.com/best/crypto-exchanges/index.md\n- All 210 exchanges comparisons: https://www.anchorterminal.com/compare/crypto-exchanges/index.md\n\n## Which one, for what\n\n### Bitfinex API (C)\n\nGood for: An agent trading spot, margin or derivatives, or lending on the funding market, with scoped keys, official clients and paper trading.\n\nWatch for: No official MCP server, OpenAPI file or AsyncAPI file; the registry's Bitfinex servers are third parties proxying public market data\n\n### dYdX (B)\n\nGood for: An agent trading perpetuals from its own Cosmos wallet or through a permissioned key on an owner's account, outside the US, Canada and UK.\n\nAhead on:\n- Schema \u0026 documentation, 58 against 48\n- Agent ergonomics, 66 against 61\n- Security \u0026 auth, 78 against 62\n- Payments \u0026 pricing, 60 against 40\n- Maintenance \u0026 community, 83 against 41\n\nAlso in its favour:\n- Open source\n\nWatch for: No official MCP server; the one registry entry is a third party's analytics server\n\n\n## Why the edge\n\n### Maintenance \u0026 community: dYdX +42\n\n- Bitfinex API (41): Read as a closed service with open clients. The last dated change we could read is bitfinex-api-node 9.1.0 on 18 July 2026, 108 days before the check; the docs changelog stops in October 2024 (10). Not three dated releases in the last 90 days (0). The bitfinexcom organisation pushes often (bfx-report on 3 November 2026) and the clients have issue trackers, but support articles answered 403 and no reply times were read (10 of 25). Official clients current in four languages, Node 9.1.0 of July 2026 and Python 4.0.0 of October 2025; not in the MCP registry (15). The Node client has a dependency history of security fixes (its last GitHub release notes name two) and no CI was read (6 of 10). 10 + 0 + 10 + 15 + 6 = 41.\n- dYdX (83): Read on the clients and the chain. v4-clients was pushed on 29 October 2026 and protocol v9.8.0 shipped on 12 October (30). Protocol v9.7 on 11 September, v9.8.0 on 12 October, v4-client-js tags 3.5.0 and 3.6.0, three or more in 90 days (20). A Discord, a help centre and 36 open issues on v4-clients whose replies couldn't be read (12 of 25). Official SDKs current, the TypeScript client at 3.6.0 and the Python client at 1.1.6 from February 2026 (12 of 15). CI workflows for lint, test, publish and audit, with trusted publishing and provenance on npm (9 of 10). Total 83.\n\n### Payments \u0026 pricing: dYdX +20\n\n- Bitfinex API (40): No machine payment protocol (0). The fees page is public without login (20), though it shows zero maker and taker with no tiers or date. The API is free, public endpoints need no account, and paper trading needs no money (20). A person must sign up in a browser with identity checks and mint the key (0). 0 + 20 + 20 + 0 = 40.\n- dYdX (60): No machine payment protocol (0). Fees public per tier without login (20). Testnet with a faucet and no card anywhere (20). No signup; an agent with a funded wallet trades, subject to the geographic terms (20). Total 60.\n\n### Security \u0026 auth: dYdX +16\n\n- Bitfinex API (62): Revocable keys with per-scope read and write flags, a permissions endpoint, 2FA and email confirmation at creation, strictly increasing nonces, and IP binding to 20 addresses per the support article's search text (the article answered 403); no key expiry (24 of 30). `withdraw` and `ui_withdraw` are separate scopes and read-only keys are possible, but the support text says keys from email-and-password accounts start with every permission enabled and no confirmation step is documented for API withdrawals (14 of 20). The API returns exchange data, not third-party text (10). Login history and an account changelog (audit) endpoint are documented (10 of 15). No security.txt, no readable disclosure policy and no certification page readable (4 of 20). 24 + 14 + 10 + 10 + 4 = 62.\n- dYdX (78): Orders are signed by the account key or by a permissioned key the owner adds as an authenticator, limited by message type, subaccount and market with AllOf or AnyOf, and revoked by `remove_authenticator`; no shared secret and nothing in a URL (28 of 30). A key can be confined to placing and cancelling orders on one subaccount with withdrawals and transfers excluded, though not to a position or order size, and the interface's default API wallet trades all cross-margin pairs (16 of 20). The API returns no untrusted content (10). Every action is a chain transaction and the indexer lists fills, orders and transfers per subaccount, and authenticators can be listed; no per-key log (10 of 15). A Cantina bug bounty up to $1,000,000 sponsored by dYdX Trading Inc. over the protocol, indexer, web client and SDKs, an Informal Systems audit; no security.txt and no certification (14 of 20). Total 78.\n\n### Schema \u0026 documentation: dYdX +10\n\n- Bitfinex API (48): No OpenAPI or AsyncAPI file was found on docs.bitfinex.com, in llms.txt or in the client repositories (0). llms.txt and a .md twin of every docs page (10). Each reference page states the endpoint's purpose and fields, and the introduction says when to use api-pub against api, but nothing says when not to use an endpoint (14 of 20). Responses are positional arrays described in field tables, inputs are typed in prose with some enumerations (wallet names, order types) and required fields marked; the withdrawal CODE field is work in progress (7 of 15). Signed-request recipes in five languages, but authenticated errors are documented as 400 with an empty object and there is no error reference (9 of 15). Version v2 in the path and a dated changelog, whose last entry is October 2024 and whose v1 deprecation has no date (8 of 15). 0 + 10 + 14 + 7 + 9 + 8 = 48.\n- dYdX (58): No OpenAPI file found for the indexer; the docs publish a types reference of about 200 pages (OrderSide, TimeInForce, OrderStatus and the rest) and the chain's protobuf messages are in the clients (8 of 25). llms.txt and Markdown docs (10). Endpoint pages describe each call and the guides say when to use short-term against long-term orders and the indexer against the node, but descriptions are short (12 of 20). Enums and types on every field in the reference, with pagination and cursor parameters typed (11 of 15). Examples in Python, TypeScript and Rust for each step; errors are described by HTTP status (400 malformed, 404 not found) with no code list (9 of 15). A /v4 path, protocol releases dated on the status page, deprecated rate-limit fields marked, but no API changelog (8 of 15). Total 58.\n\n### Agent ergonomics: dYdX +5\n\n- Bitfinex API (61): Graded on the REST API. Limits on trades, candles and book depth, and `pub:list` config endpoints keep responses small, but positional arrays make every field a lookup (14 of 25). `start`, `end`, `limit` and `sort` on history endpoints and per-symbol variants (16 of 20). `ERR_RATE_LIMIT` is actionable; authenticated 400s return `{}` and withdrawal status strings may change, so an agent cannot branch on causes (8 of 20). A client id on orders, order multi-op and cancel-multiple, but no idempotency key and no retry contract (8 of 20). Few required parameters and official clients in Node, Python, Go and Ruby (15). 14 + 16 + 8 + 8 + 15 = 61.\n- dYdX (66): An API, read for response sizing. `limit` on list endpoints, candles by resolution, sparklines by period; the order book comes whole (16 of 25). `limit`, `page` on fills, transfers and funding, and height or time cursors (16 of 20). Indexer errors are a status and a sentence; order rejections come back from the chain as transaction results the clients surface (8 of 20). Unique 32-bit client IDs, `goodTilBlock` expiry on short-term orders, cancel by order ID; no MCP annotations apply (14 of 20). Few required fields with market parameters fetched for unit conversion, and official clients in TypeScript, Python and Rust (12 of 15). Total 66.\n\n## Score by category\n\n| Category | Weight | Bitfinex API | dYdX | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 85 | 83 | Bitfinex API +2 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 48 | 58 | dYdX +10 |\n| Agent ergonomics | 13% (16.2 this run) | 61 | 66 | dYdX +5 |\n| Security \u0026 auth | 14% (17.5 this run) | 62 | 78 | dYdX +16 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 60 | dYdX +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 41 | 83 | dYdX +42 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 49 | 50 | dYdX +1 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **58.4 · C** | **69.5 · B** | |\n\n## Facts side by side\n\n| Fact | Bitfinex API | dYdX |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | iFinex Inc. | dYdX Trading Inc. |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  |  |\n| Auth | API key | OAuth or key |\n| Pricing | Pay per use | Pay per use |\n| x402 | no | no |\n| Licence | Proprietary hosted API under Bitfinex's API Terms of Service, which our reader couldn't load. The official client libraries (Node, Python, Go, Ruby) are MIT or Apache-2.0 | The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc. |\n| Tools exposed | none | 0 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-07-18 | 2026-10-29 |\n| Terms last updated | couldn't be read | 2026-03-12 |\n| Privacy policy last updated | couldn't be read | 2025-06-06 |\n| Customer content may train models | couldn't be read | not found in the text |\n| Terms restrict automated access | couldn't be read | not found in the text |\n| Terms restrict benchmarking | couldn't be read | not found in the text |\n| Terms or service can change without notice | couldn't be read | yes |\n| Arbitration or class-action waiver | couldn't be read | yes |\n| Popularity | 480 stars | 119 stars, 86k npm/wk |\n\n## Verdicts\n\n**Bitfinex API.** Bitfinex gives an agent scoped keys with a separate withdraw permission, paper-trading sub-accounts on the production API, llms.txt and official clients in four languages. There is no official MCP server, responses are positional arrays with empty error bodies, rate limits run 10 to 90 a minute per IP, and the terms, API terms and privacy statement could not be read.\n\n**dYdX.** dYdX gives an agent keyless indexer reads, permissioned keys limited by message type, subaccount and market, a Statuspage with a clean 90 days, published fees and a testnet with a faucet. There is no official MCP server or OpenAPI file, orders are chain transactions signed by the clients, and no one entity operates the hosted endpoints.\n\n## Before you call either\n\n### Bitfinex API\n\n1. Mint a key with read on the scopes the task needs and write only on `orders`; never grant `withdraw` to a trading key, and bind the key to known IPs\n2. Use one key per client process, since each key keeps its own strictly increasing nonce and a reused nonce is rejected\n3. Rehearse on a paper-trading sub-account with the TEST symbols before touching real balances; the sub-account cannot be converted later\n4. Plan requests against the per-endpoint limit of 10 to 90 a minute per IP; `ERR_RATE_LIMIT` blocks the IP for 60 seconds with no Retry-After\n5. Map each response by position from the docs' field tables and set a `cid` on orders, because responses are arrays and a 400 carries no reason\n\n### dYdX\n\n1. Ask the account owner for an authenticator limited to `/dydxprotocol.clob.MsgPlaceOrder` and `MsgCancelOrder` on one subaccount, and keep its private key out of prompts\n2. Set a unique 32-bit `clientId` on every order and look it up on `/v4/orders` after a timeout; short-term orders expire with `goodTilBlock` (at most 20 blocks ahead)\n3. Stay under 2 stateful orders a block and 20 per 100 blocks; failed placements count, so use short-term orders for active trading\n4. Enable permessage-deflate on the indexer WebSocket; since 26 October 2026 connections without compression may be refused with 426\n5. Check `/v4/geo` and the compliance screen before trading for a person, since the terms exclude the United States, Canada and the United Kingdom\n\n## Questions\n\n### Which is better for AI agents, Bitfinex API or dYdX?\n\ndYdX scores 69.5 (B) on agent readiness against Bitfinex API's 58.4 (C), and leads in 6 of 7 scored categories.\n\n### Do Bitfinex API and dYdX need an API key?\n\nBitfinex API needs an API key. dYdX takes an API key or an OAuth sign-in.\n\n### Can an agent call Bitfinex API and dYdX without installing anything?\n\nNo hosted endpoint is listed for Bitfinex API. No hosted endpoint is listed for dYdX.\n\n### Are Bitfinex API and dYdX open source?\n\nNo open-source release is listed for Bitfinex API. dYdX is open source (The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc.).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/bitfinex-vs-dydx.json, and with the fewest tokens: https://www.anchorterminal.com/compare/bitfinex-vs-dydx.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"bitfinex\", \"b\": \"dydx\"}`. From a terminal: `anchor compare bitfinex dydx`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/bitfinex.json and https://www.anchorterminal.com/api/v1/tools/dydx.json\n\n## Other comparisons with Bitfinex API or dYdX\n\n- [Bitfinex API vs Bitget](https://www.anchorterminal.com/compare/bitfinex-vs-bitget.md)\n- [Bitfinex API vs Bithumb Open API](https://www.anchorterminal.com/compare/bitfinex-vs-bithumb.md)\n- [Bitfinex API vs Bitstamp API](https://www.anchorterminal.com/compare/bitfinex-vs-bitstamp.md)\n- [Bitfinex API vs Bybit](https://www.anchorterminal.com/compare/bitfinex-vs-bybit.md)\n- [Bitfinex API vs Coinbase Advanced Trade API](https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-advanced-trade.md)\n- [Bitfinex API vs Coinbase MCP server (Coinbase for Agents)](https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-mcp.md)\n- [Bitfinex API vs Crypto.com Exchange API](https://www.anchorterminal.com/compare/bitfinex-vs-crypto-com-exchange.md)\n- [Bitfinex API vs Deribit](https://www.anchorterminal.com/compare/bitfinex-vs-deribit.md)\n- [Bitfinex API vs Gate](https://www.anchorterminal.com/compare/bitfinex-vs-gate-io.md)\n- [Bitfinex API vs Gemini Exchange API](https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange.md)\n- [Bitfinex API vs HTX trading API](https://www.anchorterminal.com/compare/bitfinex-vs-htx.md)\n- [Bitfinex API vs Hyperliquid](https://www.anchorterminal.com/compare/bitfinex-vs-hyperliquid.md)\n- [Bitfinex API vs Kraken API](https://www.anchorterminal.com/compare/bitfinex-vs-kraken.md)\n- [Bitfinex API vs KuCoin](https://www.anchorterminal.com/compare/bitfinex-vs-kucoin.md)\n- [Bitfinex API vs MEXC API](https://www.anchorterminal.com/compare/bitfinex-vs-mexc.md)\n- [Bitfinex API vs OKX API](https://www.anchorterminal.com/compare/bitfinex-vs-okx.md)\n- [Bitfinex API vs Uniswap Trading API](https://www.anchorterminal.com/compare/bitfinex-vs-uniswap.md)\n- [Bitfinex API vs Upbit Open API](https://www.anchorterminal.com/compare/bitfinex-vs-upbit.md)\n- [Bitget vs dYdX](https://www.anchorterminal.com/compare/bitget-vs-dydx.md)\n- [Bithumb Open API vs dYdX](https://www.anchorterminal.com/compare/bithumb-vs-dydx.md)\n- [Bitstamp API vs dYdX](https://www.anchorterminal.com/compare/bitstamp-vs-dydx.md)\n- [Bybit vs dYdX](https://www.anchorterminal.com/compare/bybit-vs-dydx.md)\n- [Crypto.com Exchange API vs dYdX](https://www.anchorterminal.com/compare/crypto-com-exchange-vs-dydx.md)\n- [dYdX vs Uniswap Trading API](https://www.anchorterminal.com/compare/dydx-vs-uniswap.md)\n- [dYdX vs Upbit Open API](https://www.anchorterminal.com/compare/dydx-vs-upbit.md)\n- [Binance API vs Bitfinex API](https://www.anchorterminal.com/compare/binance-vs-bitfinex.md)\n- [Binance API vs dYdX](https://www.anchorterminal.com/compare/binance-vs-dydx.md)\n- [Coinbase Advanced Trade API vs dYdX](https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-dydx.md)\n- [Deribit vs dYdX](https://www.anchorterminal.com/compare/deribit-vs-dydx.md)\n- [dYdX vs Gate](https://www.anchorterminal.com/compare/dydx-vs-gate-io.md)\n- [dYdX vs Gemini Exchange API](https://www.anchorterminal.com/compare/dydx-vs-gemini-exchange.md)\n- [dYdX vs HTX trading API](https://www.anchorterminal.com/compare/dydx-vs-htx.md)\n- [dYdX vs Hyperliquid](https://www.anchorterminal.com/compare/dydx-vs-hyperliquid.md)\n- [dYdX vs Kraken API](https://www.anchorterminal.com/compare/dydx-vs-kraken.md)\n- [dYdX vs KuCoin](https://www.anchorterminal.com/compare/dydx-vs-kucoin.md)\n- [dYdX vs MEXC API](https://www.anchorterminal.com/compare/dydx-vs-mexc.md)\n- [dYdX vs OKX API](https://www.anchorterminal.com/compare/dydx-vs-okx.md)\n- [Coinbase MCP server (Coinbase for Agents) vs dYdX](https://www.anchorterminal.com/compare/coinbase-mcp-vs-dydx.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Bitfinex API vs dYdX",
        "url": ""
      }
    ],
    "description": "dYdX scores 69.5 (B) to Bitfinex's 58.4 (C) for exchange market data. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Bitfinex API C 58.4",
      "dYdX B 69.5",
      "scores"
    ],
    "h1": "Bitfinex API vs dYdX",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/bitfinex-vs-dydx",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Bitfinex vs dYdX for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-03",
    "url": "https://www.anchorterminal.com/compare/bitfinex-vs-dydx"
  },
  "tokens": {
    "markdown": 4650,
    "slim": 2430
  },
  "version": 1
}
