API reference
Base URL https://steadyshares.com/api/v1. Every endpoint is a GET, every response is JSON, and every request needs an API key. The overview and the full endpoint list live on the Data API page; this page is the exact contract.
Getting a key
Sign in and open Settings. The API keys section creates, lists and revokes keys. Creating a key requires the Pro plan; keys you already hold stay visible and revocable on any plan. A key looks like st_live_... and is shown exactly once, at creation. We store only a SHA-256 hash, so a lost key cannot be recovered, only replaced.
Authentication
Send the key on every request, in either header. Both are read the same way; the key must start with st_live_.
x-api-key: st_live_your_key_here
Authorization: Bearer st_live_your_key_hereA missing, unknown or revoked key gets a 401 with this body:
{
"error": "Unauthorized",
"message": "Pass your key as 'x-api-key' or 'Authorization: Bearer'. Create one in Settings.",
"docs": "https://steadyshares.com/docs"
}Three endpoints worth starting with
The full list of thirteen is on the overview. These three show the shapes. Successful responses are always { "data": ... }, with total on anything paginated.
Company statistics
Everything we compute for one company: the metrics bag, our 0 to 100 rating and moat score, and our fair value estimate per share.
curl https://steadyshares.com/api/v1/companies/AAPL/statistics \
-H "x-api-key: st_live_your_key_here"{
"data": {
"ticker": "AAPL",
"name": "Apple Inc.",
"metrics": { },
"rating": 78,
"moatScore": 85,
"fairValue": 214.6
}
}metrics is a flat object of raw fundamentals. Its keys vary by company and data source, so treat it as a bag to read from, not a schema to validate against. rating and moatScore run 0 to 100; fairValue is our model estimate in the listing currency.
Quotes
Prices for up to 100 tickers in one call. Omitting tickers returns a 404 telling you to pass it.
curl "https://steadyshares.com/api/v1/quotes?tickers=AAPL,MSFT" \
-H "x-api-key: st_live_your_key_here"{
"data": [
{
"ticker": "AAPL",
"price": 213.55,
"changePct": 0.42,
"currency": "USD",
"week52High": 260.1,
"week52Low": 169.21
},
{
"ticker": "MSFT",
"price": 512.3,
"changePct": -0.18,
"currency": "USD",
"week52High": 555.45,
"week52Low": 344.79
}
]
}currency, week52High and week52Low are null when we do not know them. changePct is the day change in percent.
Guru holdings
What a tracked fund reported in its latest 13F filing, largest positions first. Get CIK numbers from /api/v1/gurus; 1067983 is Berkshire Hathaway.
curl "https://steadyshares.com/api/v1/gurus/1067983/holdings?limit=1" \
-H "x-api-key: st_live_your_key_here"{
"data": [
{
"issuer_name": "APPLE INC",
"ticker": "AAPL",
"cusip": "037833100",
"value_usd": 69900000000,
"shares": 300000000,
"put_call": null,
"period_of_report": "2026-03-31",
"fund_name": "Berkshire Hathaway Inc"
}
],
"period": "2026-03-31",
"cik": "1067983"
}period is the quarter end the filing covers, put_call is set when the position is an option rather than shares, and value_usd comes straight from the filing.
Rate limits and errors
Each key gets 60 requests a minute, counted against the key, not your IP. Going over returns a 429 with a Retry-After header (seconds) and this body:
{
"error": "Too many requests",
"retryAfterSec": 12
}Back off for retryAfterSec seconds and retry. MCP tool calls count against the same window as direct REST calls, since they run through the same API. Responses carry Cache-Control headers from 30 seconds for quotes to an hour for filings, so a cache on your side stretches the budget a long way.
MCP for AI agents
The same data is exposed over the Model Context Protocol at /api/mcp, so Claude, Cursor or your own agent can query it in natural language: search companies, pull statements, read analyst estimates, check 13F filings and congressional trades. It authenticates with the same key and the same headers as the REST API, and every tool call is a thin wrapper over a v1 endpoint, so the two can never disagree. A plain GET to /api/mcp returns the manifest with the tool list.
{
"mcpServers": {
"steadyshares": {
"url": "https://steadyshares.com/api/mcp",
"headers": {
"x-api-key": "st_live_your_key_here"
}
}
}
}Terms, plainly
This is educational data, not investment advice. Ratings, moat scores and fair values are model estimates built from public filings and market data; they can be wrong and they are inputs to your judgment, not substitutes for it. Upstream sources (SEC EDGAR, Yahoo, CoinGecko) can lag or contain errors, and we pass those through. There is no uptime SLA. Keys are personal: keep them out of client-side code and public repositories, and revoke any key you suspect has leaked. We may throttle or revoke keys that abuse the service. The full position is on the disclaimer page.
