curl
curl -sS "https://api.stockcontext.com/v1/tools/stock_overview" \
-H "X-API-Key: $STOCKCONTEXT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"symbol":"AAPL","schema":2,"detail":"core"}'import requests
url = "https://api.stockcontext.com/v1/tools/stock_overview"
payload = {
"symbol": "AAPL",
"schema": 2,
"detail": "core"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({symbol: 'AAPL', schema: 2, detail: 'core'})
};
fetch('https://api.stockcontext.com/v1/tools/stock_overview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stockcontext.com/v1/tools/stock_overview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'symbol' => 'AAPL',
'schema' => 2,
'detail' => 'core'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.stockcontext.com/v1/tools/stock_overview"
payload := strings.NewReader("{\n \"symbol\": \"AAPL\",\n \"schema\": 2,\n \"detail\": \"core\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.stockcontext.com/v1/tools/stock_overview")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"symbol\": \"AAPL\",\n \"schema\": 2,\n \"detail\": \"core\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stockcontext.com/v1/tools/stock_overview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"symbol\": \"AAPL\",\n \"schema\": 2,\n \"detail\": \"core\"\n}"
response = http.request(request)
puts response.read_body{
"subject": {
"entity": {
"cik": "0000320193",
"name": "Apple Inc.",
"reporting_currency": "USD"
},
"security": {
"ticker": "AAPL",
"trading_currency": "USD"
}
},
"data": {
"answer": {
"title": "Apple Inc.",
"summary": "Schema-2 overview payload; see captured examples for full fields."
}
},
"meta": {
"schema_version": "2",
"as_of": {
"sec": "2026-06-26"
}
}
}
Financials
Company overview
Profile, shares, SEC-verified valuation, growth, and latest filings in one call.
POST
/
v1
/
tools
/
stock_overview
curl
curl -sS "https://api.stockcontext.com/v1/tools/stock_overview" \
-H "X-API-Key: $STOCKCONTEXT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"symbol":"AAPL","schema":2,"detail":"core"}'import requests
url = "https://api.stockcontext.com/v1/tools/stock_overview"
payload = {
"symbol": "AAPL",
"schema": 2,
"detail": "core"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({symbol: 'AAPL', schema: 2, detail: 'core'})
};
fetch('https://api.stockcontext.com/v1/tools/stock_overview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stockcontext.com/v1/tools/stock_overview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'symbol' => 'AAPL',
'schema' => 2,
'detail' => 'core'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.stockcontext.com/v1/tools/stock_overview"
payload := strings.NewReader("{\n \"symbol\": \"AAPL\",\n \"schema\": 2,\n \"detail\": \"core\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.stockcontext.com/v1/tools/stock_overview")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"symbol\": \"AAPL\",\n \"schema\": 2,\n \"detail\": \"core\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stockcontext.com/v1/tools/stock_overview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"symbol\": \"AAPL\",\n \"schema\": 2,\n \"detail\": \"core\"\n}"
response = http.request(request)
puts response.read_body{
"subject": {
"entity": {
"cik": "0000320193",
"name": "Apple Inc.",
"reporting_currency": "USD"
},
"security": {
"ticker": "AAPL",
"trading_currency": "USD"
}
},
"data": {
"answer": {
"title": "Apple Inc.",
"summary": "Schema-2 overview payload; see captured examples for full fields."
}
},
"meta": {
"schema_version": "2",
"as_of": {
"sec": "2026-06-26"
}
}
}
Schema 2 field names below match the
Shape-specific impossibilities are declared once in
stock_reference fields catalog. If a value cannot be proven, the response carries a typed refusal object instead of 0, null, or an inferred value.
2026-07-07 field wave
| Field | Block | Description and basis | Refusal / guard behavior |
|---|---|---|---|
revenue_per_share | valuation | Latest revenue divided by weighted_avg_shares_basic; serves with basis: "weighted_avg_shares_basic". | Refuses when revenue or weighted shares are unavailable, or when the share denominator is non-positive. |
tangible_book_value_per_share | valuation | Book equity minus goodwill and intangible assets, divided by shares; basis is tangible_parent_equity_per_share or tangible_total_equity_per_share. | Refuses with valuation_operand_unavailable for missing goodwill, intangible assets, equity, or shares; non-positive share denominators refuse. |
dividends_per_share | valuation | Direct annual common DPS from facts; serves as {"value": n, "basis": "declared"} or {"value": n, "basis": "cash_paid"}. | Refuses when the DPS fact is absent or ambiguous; class-dimensioned DPS rows that differ do not serve. |
earnings_yield_pct | valuation | Net income divided by market cap, percent-points; serves with a vintage-prefixed basis (basis: "FY2025_annual_net_income_over_market_cap", or basis: "ttm" + ttm_periods when the TTM magnitude derives). | Serves signed for loss years. A loss-year price_to_earnings refusal points here with use_alternative_field. |
ebitda_margin_pct | analysis.margins_pct | EBITDA margin; EBITDA is operating_income + depreciation_amortization. | Refuses when EBITDA operands are unavailable or revenue is non-positive. |
roce_pct | analysis.returns_pct | Operating income over average two-FY capital employed; serves with basis: "avg_2fy_capital_employed". | Refuses when required current/prior balance operands are unavailable or capital employed is non-positive. |
debt_to_assets | analysis.leverage | Total debt divided by total assets. | Refuses when debt or assets are unavailable, or when assets are non-positive. |
cash_ratio | analysis.leverage | Cash, plus short-term investments when served, divided by current liabilities; basis is cash_only or cash_and_short_term_investments. | Refuses when cash or current liabilities are unavailable, or when current liabilities are non-positive. |
ocf_ratio | analysis.leverage | Operating cash flow divided by current liabilities. | Refuses when either operand is unavailable, or when current liabilities are non-positive. |
effective_tax_rate | analysis.quality | Derived income tax expense divided by pretax income; a ratio, not percent-points. | Refuses when the derived tax-rate cell is unavailable, ambiguous, or mathematically undefined. |
asset_turnover | analysis.quality | Revenue divided by average two-FY total assets; serves with basis: "avg_2fy_total_assets". | Refuses when revenue or either asset operand is unavailable, or when average assets are non-positive. |
inventory_turnover | analysis.efficiency | Cost of revenue divided by average two-FY inventory; serves with basis: "avg_2fy_inventory". | Refuses when cost of revenue, latest inventory, or prior inventory is unavailable; non-positive average inventory refuses. |
receivables_turnover | analysis.efficiency | Revenue divided by average two-FY accounts receivable; serves with basis: "avg_2fy_accounts_receivable". | Refuses when revenue, latest receivables, or prior receivables is unavailable; non-positive average receivables refuse. |
payables_turnover | analysis.efficiency | Cost of revenue divided by average two-FY accounts payable; serves with basis: "avg_2fy_accounts_payable". | Refuses when cost of revenue, latest payables, or prior payables is unavailable; non-positive average payables refuse. |
days_sales_outstanding | analysis.efficiency | 365 / receivables_turnover, rounded to one decimal day. | Reuses the receivables_turnover refusal when the parent metric does not serve. |
days_inventory_outstanding | analysis.efficiency | 365 / inventory_turnover, rounded to one decimal day. | Reuses the inventory_turnover refusal when the parent metric does not serve. |
days_payables_outstanding | analysis.efficiency | 365 / payables_turnover, rounded to one decimal day. | Reuses the payables_turnover refusal when the parent metric does not serve. |
cash_conversion_cycle | analysis.efficiency | days_sales_outstanding + days_inventory_outstanding - days_payables_outstanding, using the same 365-day convention. | Reuses the first refused day metric; no point-in-time fallback is used. |
not_applicable_for_shape. Financial institutions and REITs exclude the operating-company efficiency fields when the statement face does not support them.Authorizations
Body
application/json
Request body for stock_overview.
Ticker or resolvable symbol.
Required string length:
1 - 24Schema 1 accepts concise/full. Schema 2 maps omitted or concise to core and accepts core/full/audit.
Available options:
concise, full, core, audit Response schema selector. Omit (or send 2) for the schema-2 envelope, the default; 1 selects the frozen legacy wire. Boolean values are rejected by the API boundary.
Available options:
1, 2 Response
Get a company overview. Envelope-level schema; captured examples remain authoritative for full nested payload detail.
Schema-2 envelope. The OpenAPI schema is structural; captured examples are authoritative for full nested payload detail.