Download Filing
GET/v1/stockmarket/companies/{ticker}/filings/{accession_number}/download
Stable download link for an ASX report — returns the file itself. This is what ``filings[].document_url`` points to for ASX rows, and it never expires, so a link that was stored, cached or baked into a page months ago still resolves. The answer is 200 with the document in the body (``Content-Disposition: inline``, so a browser shows it in place). ``redirect=true`` instead 302s to a presigned storage URL minted per request. ``format=pdf`` (default) is **public** — the PDF is the exchange's own published document, and the link has to work in an end user's browser with no key. ``format=markdown`` returns our markitdown extraction and is key-gated like the rest of the paid data.
Price
$0.01/ callEdge cache
Off
Uptime 24h
100.00%
p95
1.40s
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| ticker* | path | string | |
| accession_number* | path | string | |
| format | query | string = pdf | pdf | markdown |
| redirect | query | boolean = false | true: 302 to a short-lived signed storage URL instead of returning the file |
| exchange | query | string | Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX. |
Code
# 1. No key, no payment: the gateway answers 402 with the price
curl -i "https://api.realtimeapi.ai/v1/stockmarket/companies/BHP/filings/2924-03122554-3A699070/download"
# 2. Pay: retry with a signed x402 payment (any x402 client builds this header)
curl "https://api.realtimeapi.ai/v1/stockmarket/companies/BHP/filings/2924-03122554-3A699070/download" -H "PAYMENT-SIGNATURE: $X402_PAYMENT"// npm i @x402/fetch @x402/core @x402/evm viem
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = x402Client.fromConfig({ schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(privateKeyToAccount(PRIVATE_KEY)) }] });
const pay = wrapFetchWithPayment(fetch, client);
const data = await (await pay("https://api.realtimeapi.ai/v1/stockmarket/companies/BHP/filings/2924-03122554-3A699070/download")).json();
console.log(data);# pip install x402 eth-account requests
from eth_account import Account
from x402.clients.requests import x402_requests
session = x402_requests(Account.from_key(PRIVATE_KEY))
print(session.get("https://api.realtimeapi.ai/v1/stockmarket/companies/BHP/filings/2924-03122554-3A699070/download").json())curl "https://api.realtimeapi.ai/v1/stockmarket/companies/BHP/filings/2924-03122554-3A699070/download" -H "X-API-Key: $RTAPI_KEY"Frequently asked questions
How do I get download filing from StockMarketAPI?
Send GET https://api.realtimeapi.ai/v1/stockmarket/companies/{ticker}/filings/{accession_number}/download. Pay $0.01 per request with x402, or send an X-API-Key header.
What does GET /companies/{ticker}/filings/{accession_number}/download cost?
$0.01 per successful request in USDC on Base. Failed requests are never charged.
Can I call this endpoint from an MCP client?
Yes. Connect any MCP client to the RealtimeAPI server and use call_feed with this endpoint's URL, or get_quote to check the price first.