openapi: 3.1.0 info: title: Equibles API version: '2026-10-05' description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-05: 12 operation(s) read from 6 public documentation page(s) (each operation names its page in x-source). This is not the provider''s published contract; Equibles has published no machine-readable contract that the pipeline could find. Engine: local.' x-evidence-tiers: code-example: 21 documentation: -9 pages-with-code: 6 pages-read: 6 x-generated-from: documentation x-provenance: generated x-authored-by: API Evangelist x-generated: '2026-10-05' x-generator: generate-contract-from-docs.py x-engine: local x-sources: - https://equibles.com/docs/api - https://equibles.com/docs/api/endpoints/fda - https://equibles.com/docs/api/endpoints/etfs - https://equibles.com/docs/api/endpoints/ipos - https://equibles.com/docs/api/endpoints/funds - https://equibles.com/docs/api/endpoints/short servers: - url: https://api.equibles.com paths: /v1/etfs/SPY: get: operationId: get_v1_etfs_SPY tags: - Etfs summary: GET /v1/etfs/SPY x-source: https://equibles.com/docs/api/endpoints/etfs responses: '200': description: Success (shape read from the example response on the page) content: application/json: schema: $ref: '#/components/schemas/GetV1EtfsSpyResponse' x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/etfs/SPY\" -H \"Authorization: Bearer eq_your_api_key\" \n import requests\nresponse = requests.get(\n\ \ \"https://api.equibles.com/v1/etfs/SPY\",\n headers={\"Authorization\": \"Bearer eq_your_api_key\"},\n)\nprint(response.json()) \n\ \ const response = await fetch(\"https://api.equibles.com/v1/etfs/SPY\", {\n headers: { Authorization: \"Bearer eq_your_api_key\" },\n\ });\nconsole.log(await" /v1/etfs/SPY/holdings: get: operationId: get_v1_etfs_SPY_holdings tags: - Etfs summary: GET /v1/etfs/SPY/holdings x-source: https://equibles.com/docs/api/endpoints/etfs parameters: - name: limit in: query required: false schema: type: string - name: offset in: query required: false schema: type: string responses: '200': description: Success (shape read from the example response on the page) content: application/json: schema: $ref: '#/components/schemas/GetV1EtfsSpyHoldingsResponse' x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/etfs/SPY/holdings?limit=20&offset=0\" -H \"Authorization: Bearer eq_your_api_key\" \n import\ \ requests\nresponse = requests.get(\n \"https://api.equibles.com/v1/etfs/SPY/holdings\",\n params={\"limit\": 20, \"offset\": 0},\n\ \ headers={\"Authorization\": \"Bearer eq_your_api_key\"},\n)\nprint(response.json()) \n const response = await fetch(\"https://api.equibles.com/v1/etfs/SPY/holdings" /v1/fda/catalysts: get: operationId: get_v1_fda_catalysts tags: - Fda summary: GET /v1/fda/catalysts x-source: https://equibles.com/docs/api/endpoints/fda parameters: - name: limit in: query required: false schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/fda/catalysts?limit=2\" -H \"Authorization: Bearer eq_your_api_key\" \n import requests\n\ r = requests.get(\n \"https://api.equibles.com/v1/fda/catalysts?limit=2\",\n headers={\"Authorization\": \"Bearer eq_your_api_key\"\ },\n)\nprint(r.json()) \n const res = await fetch(\"https://api.equibles.com/v1/fda/catalysts?limit=2\", {\n headers: { Authorization:\ \ \"Bearer eq_your_api_key\" },\n}" /v1/funds/QQQ/{qqqid}: get: operationId: get_v1_funds_QQQ_qqqid tags: - Funds summary: GET /v1/funds/QQQ/holdings x-source: https://equibles.com/docs/api/endpoints/funds parameters: - name: qqqid in: path required: true schema: type: string - name: limit in: query required: false schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/funds/QQQ/holdings?limit=2\" -H \"Authorization: Bearer eq_your_api_key\" \n import requests\n\ r = requests.get(\n \"https://api.equibles.com/v1/funds/QQQ/holdings?limit=2\",\n headers={\"Authorization\": \"Bearer eq_your_api_key\"\ },\n)\nprint(r.json()) \n const res = await fetch(\"https://api.equibles.com/v1/funds/QQQ/holdings?limit=2\", {\n headers: { Authorization:\ \ \"Bearer eq_you" collapsed_from: 2 example path(s) differing only at qQQId /v1/investment-advisers/{investmentadviserid}: get: operationId: get_v1_investment_advisers_investmentadviserid tags: - Investment Advisers summary: GET /v1/investment-advisers/{investmentAdviserId} x-source: https://equibles.com/docs/api/endpoints/funds parameters: - name: investmentadviserid in: path required: true schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/investment-advisers/105247\" -H \"Authorization: Bearer eq_your_api_key\" \n import requests\n\ r = requests.get(\n \"https://api.equibles.com/v1/investment-advisers/105247\",\n headers={\"Authorization\": \"Bearer eq_your_api_key\"\ },\n)\nprint(r.json()) \n const res = await fetch(\"https://api.equibles.com/v1/investment-advisers/105247\", {\n headers: { Authorization:\ \ \"Bearer eq_you" /v1/ipos/{ipoid}: get: operationId: get_v1_ipos_ipoid tags: - Ipos summary: GET /v1/ipos/{ipoId} x-source: https://equibles.com/docs/api/endpoints/ipos parameters: - name: ipoid in: path required: true schema: type: string responses: '200': description: Success (shape read from the example response on the page) content: application/json: schema: $ref: '#/components/schemas/GetV1IposIpoidResponse' x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/ipos/1898474\" -H \"Authorization: Bearer eq_your_api_key\" \n import requests\nr = requests.get(\n\ \ \"https://api.equibles.com/v1/ipos/1898474\",\n headers={\"Authorization\": \"Bearer eq_your_api_key\"},\n)\nprint(r.json()) \n const\ \ res = await fetch(\"https://api.equibles.com/v1/ipos/1898474\", {\n headers: { Authorization: \"Bearer eq_your_api_key\" },\n});\n\ console.log(await res.js" /v1/short-interest/snapshot: get: operationId: get_v1_short_interest_snapshot tags: - Short Interest summary: GET /v1/short-interest/snapshot x-source: https://equibles.com/docs/api/endpoints/short parameters: - name: limit in: query required: false schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/short-interest/snapshot?limit=2\" -H \"Authorization: Bearer eq_your_api_key\" \n import\ \ requests\nr = requests.get(\n \"https://api.equibles.com/v1/short-interest/snapshot?limit=2\",\n headers={\"Authorization\": \"Bearer\ \ eq_your_api_key\"},\n)\nprint(r.json()) \n const res = await fetch(\"https://api.equibles.com/v1/short-interest/snapshot?limit=2\"\ , {\n headers: { Authorization:" /v1/short-volume/largest: get: operationId: get_v1_short_volume_largest tags: - Short Volume summary: GET /v1/short-volume/largest x-source: https://equibles.com/docs/api/endpoints/short parameters: - name: limit in: query required: false schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/short-volume/largest?limit=2\" -H \"Authorization: Bearer eq_your_api_key\" \n import requests\n\ r = requests.get(\n \"https://api.equibles.com/v1/short-volume/largest?limit=2\",\n headers={\"Authorization\": \"Bearer eq_your_api_key\"\ },\n)\nprint(r.json()) \n const res = await fetch(\"https://api.equibles.com/v1/short-volume/largest?limit=2\", {\n headers: { Authorization:\ \ \"Bearer " /v1/stocks/AAPL/prices: get: operationId: get_v1_stocks_AAPL_prices tags: - Stocks summary: GET /v1/stocks/AAPL/prices x-source: https://equibles.com/docs/api parameters: - name: startDate in: query required: false schema: type: string responses: '200': description: Success (shape read from the example response on the page) content: application/json: schema: $ref: '#/components/schemas/GetV1StocksAaplPricesResponse' x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/stocks/AAPL/prices?startDate=2024-01-01\" -H \"Authorization: Bearer eq_your_api_key\"\n\ \ Pagination \n Paged endpoints accept limit and offset query parameters and wrap the rows in a data array alongside a meta object.\ \ Use meta.hasMore to decide whether to fetch the next page (increase offset by limit ). The maximum limit is 500, and a limit of zero\ \ or less returns a " /v1/stocks/NVDA/short-interest/forecast: get: operationId: get_v1_stocks_NVDA_short_interest_forecast tags: - Stocks summary: GET /v1/stocks/NVDA/short-interest/forecast x-source: https://equibles.com/docs/api/endpoints/short responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/stocks/NVDA/short-interest/forecast\" -H \"Authorization: Bearer eq_your_api_key\" \n import\ \ requests\nr = requests.get(\n \"https://api.equibles.com/v1/stocks/NVDA/short-interest/forecast\",\n headers={\"Authorization\": \"\ Bearer eq_your_api_key\"},\n)\nprint(r.json()) \n const res = await fetch(\"https://api.equibles.com/v1/stocks/NVDA/short-interest/forecast\"\ , {\n headers: { Au" /v1/stocks/NVDA/{nvdaid}: get: operationId: get_v1_stocks_NVDA_nvdaid tags: - Stocks summary: GET /v1/stocks/NVDA/fails-to-deliver x-source: https://equibles.com/docs/api/endpoints/short parameters: - name: nvdaid in: path required: true schema: type: string - name: limit in: query required: false schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/stocks/NVDA/fails-to-deliver?limit=2\" -H \"Authorization: Bearer eq_your_api_key\" \n import\ \ requests\nr = requests.get(\n \"https://api.equibles.com/v1/stocks/NVDA/fails-to-deliver?limit=2\",\n headers={\"Authorization\":\ \ \"Bearer eq_your_api_key\"},\n)\nprint(r.json()) \n const res = await fetch(\"https://api.equibles.com/v1/stocks/NVDA/fails-to-deliver?limit=2\"\ , {\n headers: {" collapsed_from: 5 example path(s) differing only at nVDAId /v1/{v1id}: get: operationId: get_v1_v1id tags: - Api summary: GET /v1/etfs x-source: https://equibles.com/docs/api/endpoints/etfs parameters: - name: v1id in: path required: true schema: type: string - name: query in: query required: false schema: type: string responses: '200': description: Success (shape read from the example response on the page) content: application/json: schema: $ref: '#/components/schemas/GetV1V1IdResponse' x-evidence: kind: code-example language: curl snippet: "curl \"https://api.equibles.com/v1/etfs?query=SPY\" -H \"Authorization: Bearer eq_your_api_key\" \n import requests\nresponse\ \ = requests.get(\n \"https://api.equibles.com/v1/etfs\",\n params={\"query\": \"SPY\"},\n headers={\"Authorization\": \"Bearer eq_your_api_key\"\ },\n)\nprint(response.json()) \n const response = await fetch(\"https://api.equibles.com/v1/etfs?query=SPY\", {\n headers: { Authorization:\ \ \"Bearer eq_your" collapsed_from: 5 example path(s) differing only at v1Id components: schemas: GetV1EtfsSpyResponse: type: object properties: Authorization: type: string GetV1EtfsSpyHoldingsResponse: type: object properties: limit: type: integer offset: type: integer GetV1IposIpoidResponse: type: object properties: registration: type: object properties: cik: type: string companyName: type: string isBlankCheck: type: boolean financialsCurrency: type: string financialsAvailability: type: string status: type: string firstFiledDate: type: string format: date latestFilingDate: type: string format: date latestFormType: type: string offeringType: type: string termsAvailability: type: string effectiveProspectusForm: type: string effectiveProspectusFiledDate: type: string format: date effectiveProspectusAccessionNumber: type: string effectiveProspectusUrl: type: string proposedTicker: type: string listedTicker: type: - string - 'null' exchange: type: string offerPriceLow: type: number offerPriceHigh: type: number sharesOffered: type: integer revenueFiscalYear: type: integer revenue: type: number revenueGrowthPercent: type: number grossMarginPercent: type: number netIncome: type: number extractionForm: type: string extractionFiledDate: type: string format: date extractionAccessionNumber: type: string extractionEdgarUrl: type: string offeringTypeQuote: type: string businessSummary: type: string useOfProceeds: type: string offerPriceQuote: type: string sharesOfferedQuote: type: string underwritersAvailability: type: string underwriters: type: array items: type: string riskFactorsAvailability: type: string riskFactors: type: array items: type: object properties: title: type: string sourceQuote: type: string financials: type: array items: type: object properties: fiscalYear: type: integer periodEnd: type: string format: date currency: type: string revenue: type: number revenueGrowthPercent: type: number grossProfit: type: number grossMarginPercent: type: number operatingIncome: type: number netIncome: type: number operatingCashFlow: type: number totalAssets: type: number cashAndEquivalents: type: number stockholdersEquity: type: number filings: type: array items: type: object properties: formType: type: string filedDate: type: string format: date accessionNumber: type: string edgarUrl: type: string GetV1StocksAaplPricesResponse: type: object properties: data: type: array items: {} meta: type: object properties: limit: type: integer offset: type: integer count: type: integer hasMore: type: boolean GetV1V1IdResponse: type: object properties: query: type: string securitySchemes: bearer: type: http scheme: bearer security: - bearer: [] tags: - name: Api - name: Etfs - name: Fda - name: Funds - name: Investment Advisers - name: Ipos - name: Short Interest - name: Short Volume - name: Stocks