API reference
Stocks endpoints, parameters, response fields, limits, caching, and errors.
Base URL: https://api.naven.network/v1/stocks.
| Method | Path | Purpose | x402 price |
|---|---|---|---|
| GET | /catalog | Verified Robinhood Chain stock tokens, addresses, and logo URLs | $0.0001 |
| GET | /quote/{symbol} | Latest quote and market session metrics | $0.0002 |
| GET | /profile/{symbol} | Company identity and operating profile | $0.0005 |
| GET | /history/{symbol} | Daily price and volume history | $0.0005 |
| GET | /earnings/{symbol} | Reported and estimated earnings events | $0.0005 |
| GET | /financials/{symbol} | Normalized financial statements | $0.001 |
| GET | /news/{symbol} | Recent company news | $0.0005 |
All endpoints are read-only and accept either a valid, funded project API key
(Authorization: Bearer naven_api_...) or x402 exact payment. With neither credential,
HTTP 402 returns a PAYMENT-REQUIRED header and a payment challenge in the body. After
settlement, PAYMENT-RESPONSE accompanies HTTP 200. Project-key requests deduct the
same listed price from prepaid project credits after a successful response. Add credits
in the Naven workspace. Keep project keys server-side.
If you already have personal Naven Credits, transfer them into your project from
the workspace before using a project key. Personal and project balances are separate.
The company data endpoints
take a symbol as a URL path segment; /catalog takes no symbol. Lowercase symbols are
accepted and normalized to uppercase.
The curl examples use NAVEN_API_KEY from your shell:
export NAVEN_API_KEY='naven_api_...'Valid symbols start with a letter, contain at most 12 characters, and may contain letters,
numbers, dots, or hyphens. Examples include AAPL, BRK.B, and RDS-A.
Response envelope
Successes return:
{
"code": 0,
"message": "ok",
"data": {}
}Every symbol-based data object includes:
| Field | Type | Meaning |
|---|---|---|
source | string | Stable data-contract source: naven |
symbol | string | Canonical uppercase symbol |
Fields documented as nullable are JSON null when the provider does not supply a value.
Stock token catalog
GET /catalog lists verified stock tokens on Robinhood Chain (chain ID 4663). Each
items entry has a symbol, name, token contract address, and iconUrl for a
Naven-hosted logo. The response also includes source: "naven" and chainId: 4663.
The list describes available stock tokens; a trading application should still check
its execution venue before placing an order. Logo URLs may be unavailable for newly
listed symbols until their images are published.
curl -H "Authorization: Bearer $NAVEN_API_KEY" https://api.naven.network/v1/stocks/catalogQuote
GET /quote/{symbol}
curl -H "Authorization: Bearer $NAVEN_API_KEY" https://api.naven.network/v1/stocks/quote/NVDA| Field | Type | Meaning |
|---|---|---|
name | string | null | Security or company name |
price | number | null | Latest reported price |
change | number | null | Absolute session change |
changePercent | number | null | Session change as a percentage, not a decimal fraction |
volume | number | null | Reported session volume |
dayLow, dayHigh | number | null | Current session range |
yearLow, yearHigh | number | null | Reported 52-week range |
marketCap | number | null | Market capitalization in the quote currency |
averagePrice50Day, averagePrice200Day | number | null | Moving average prices |
exchange | string | null | Exchange identifier |
open, previousClose | number | null | Session open and prior close |
asOf | ISO 8601 string | null | Provider timestamp in UTC |
Company profile
GET /profile/{symbol}
curl -H "Authorization: Bearer $NAVEN_API_KEY" https://api.naven.network/v1/stocks/profile/MSFTThe response includes companyName, currency, exchange, industry, sector,
country, ceo, website, description, imageUrl, marketCap, beta, priceRange,
averageVolume, fullTimeEmployees, headquarters, ipoDate, and activelyTrading.
Every field except source and symbol can be null.
activelyTrading describes the provider's symbol status. It is not an assurance that a
particular broker, account, or jurisdiction can trade the security.
Price history
GET /history/{symbol}
| Query | Required | Default | Limit |
|---|---|---|---|
interval | No | 1d | 5m, 15m, 30m, 1h, 4h, 1d |
from | No | 30 days before to for daily; 29 for intraday | Valid YYYY-MM-DD |
to | No | Today in UTC | Valid YYYY-MM-DD |
from must not be after to. Daily requests support up to five years. Intraday requests support at most 30 calendar days inclusive; split longer ranges into non-overlapping requests. Each items entry contains
date, open, high, low, close, volume, change, changePercent, and vwap.
Market holidays and weekends do not produce rows.
curl -H "Authorization: Bearer $NAVEN_API_KEY" 'https://api.naven.network/v1/stocks/history/TSLA?from=2026-08-01&to=2026-09-01'Intraday intervals currently cover symbols in the verified stock-token catalog,
and regular US trading sessions only. 1m is not supported. Omit interval to preserve daily behavior.
The response includes interval. Intraday responses also include timezone: "UTC",
sessionTimezone: "America/New_York", and session: "regular". Intraday date values
are ISO 8601 UTC bar-start timestamps, with daylight saving applied; daily date values
remain YYYY-MM-DD trading dates. Intraday results are ordered newest first.
change, changePercent, and vwap are null when unavailable.
curl -H "Authorization: Bearer $NAVEN_API_KEY" 'https://api.naven.network/v1/stocks/history/AAPL?interval=5m&from=2026-09-01&to=2026-09-30'History pricing and authentication are the same for each interval. A temporarily unavailable
interval returns 503; it is not an x402 payment challenge, and an unsuccessful response
is not charged. Missing bars are not filled, and a current-session bar may still be forming.
Clients running backtests must exclude unfinished bars and verify the requested interval
and coverage. Data availability may vary by symbol and date.
Earnings
GET /earnings/{symbol}
| Query | Required | Default | Limit |
|---|---|---|---|
limit | No | 10 | Integer from 1 through 50 |
Each event contains date, epsActual, epsEstimate, epsSurprisePercent,
revenueActual, revenueEstimate, and revenueSurprisePercent. Future events normally
have null actuals. Surprise percentages are calculated as
(actual - estimate) / abs(estimate) * 100 and are null when no non-zero estimate exists.
curl -H "Authorization: Bearer $NAVEN_API_KEY" 'https://api.naven.network/v1/stocks/earnings/AMZN?limit=8'Financial statements
GET /financials/{symbol}
| Query | Required | Default | Limit |
|---|---|---|---|
period | No | quarter | quarter or annual |
limit | No | 8 | Integer from 1 through 20 |
Each item represents one reporting period:
- Identity:
date,fiscalYear,fiscalPeriod,currency,filingDate,acceptedDate. income:revenue,grossProfit,operatingIncome,netIncome,dilutedEps.balanceSheet:cashAndShortTermInvestments,totalAssets,totalDebt,totalLiabilities,stockholdersEquity.cashFlow:operatingCashFlow,capitalExpenditure,freeCashFlow.
Naven aligns the three statements by reporting date or fiscal year and period. If an income statement is available before its matching balance sheet or cash flow, the unmatched values are null instead of being copied from another period.
curl -H "Authorization: Bearer $NAVEN_API_KEY" 'https://api.naven.network/v1/stocks/financials/META?period=annual&limit=5'Company news
GET /news/{symbol}
| Query | Required | Default | Limit |
|---|---|---|---|
limit | No | 10 | Integer from 1 through 50 |
Each item includes publishedAt, publisher, title, summary, site, imageUrl, and
sourceUrl. publishedAt is normalized to an ISO 8601 UTC timestamp when the provider's
timestamp can be parsed. sourceUrl points to the original article.
curl -H "Authorization: Bearer $NAVEN_API_KEY" 'https://api.naven.network/v1/stocks/news/GOOGL?limit=5'Caching
Successful responses include a private Cache-Control policy. The suggested client cache
windows are:
| Dataset | Client cache window |
|---|---|
| Stock token catalog | 5 minutes |
| Quote | 10 seconds |
| Profile | 1 hour |
| Price history | 1 minute |
| Earnings | 5 minutes |
| Financials | 30 minutes |
| News | 1 minute |
The source may update at a different cadence. A cache window describes when Naven may reuse a response; it is not a guarantee of when a company, exchange, publisher, or provider posts new data.
Errors
Errors use a non-zero code, a readable message, and data. Validation errors may include
field details in data; an insufficient-credit response includes a top-up URL.
| HTTP status | Meaning | Action |
|---|---|---|
| 400 | Invalid symbol, date, period, limit, or date range | Correct the request before retrying |
| 401 | Invalid project API key | Check the server-side key |
| 402 | x402 payment required or failed | Read PAYMENT-REQUIRED and follow the x402 flow |
| 402 | Project key has insufficient credits | Add project credits in the Naven workspace |
| 404 | Quote or profile not found | Confirm the symbol and listing format |
| 502 | Provider request or response failed | Retry with backoff; do not use a partial result |
| 503 | Stocks is not configured or is temporarily rate-limited | Honor Retry-After when present and retry later |
Empty items with HTTP 200 is valid for history, earnings, financials, or news. It means no
rows were available for that symbol and query; it is not equivalent to a zero value.