Make your first
market data request.
Start with one symbol and a small response. Then adapt the request to your application.
Steps 1–4 produce one inspectable quote. History, batch and other interfaces are optional next steps.
1. Get a key from the console.
Open the shared account console, register or sign in, select an available plan, and create an API key. Existing users keep the same account and subscription.
Use cURL or Python 3 with the requests package installed. Python setup: python -m pip install requests. Keep the long-lived key on your server.
2. Set your environment.
# Proposed base URL — not yet validated for live use
export NAVQUOTE_API_BASE="https://api.navquote.com"
# Set API_KEY using your server or shell's secret configuration.
# Never commit it or embed it in browser-delivered JavaScript. 3. Request one quote.
The example requests NASDAQ:AAPL. The exchange prefix helps identify the intended instrument; an available response does not imply every market is real-time.
# Proposed base URL; pending endpoint validation
export NAVQUOTE_API_BASE="https://api.navquote.com"
# Set API_KEY in your server-side environment.
curl --fail-with-body "$NAVQUOTE_API_BASE/api/quote/NASDAQ:AAPL" \
-H "Authorization: Bearer $API_KEY" import os
import requests
response = requests.get(
os.environ["NAVQUOTE_API_BASE"] + "/api/quote/NASDAQ:AAPL",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
timeout=30,
)
response.raise_for_status()
result = response.json()
if not result.get("success"):
raise RuntimeError("Quote request failed")
print(result["data"]["data"]["lp"]) {
"success": true,
"data": {
"symbol": "NASDAQ:AAPL",
"data": {
"lp": 273.05,
"lp_time": 1776729598,
"currency_code": "USD"
}
}
} 4. Check business success and time.
- Check the HTTP response, then inspect the JSON
successfield. HTTP 200 alone is not proof that the data request succeeded. - Read the quote under
data.data. The sample keeps this nested response shape. - Inspect
lp_time, currency and available session fields. The displayed sample is not a current price. - Handle unavailable fields and symbols explicitly. Do not substitute zero for a missing price.
If access fails, check the credential, plan entitlement and response error before retrying. Avoid repeatedly retrying an unchanged invalid request.
5. Retrieve daily OHLCV.
curl --fail-with-body --get \
"$NAVQUOTE_API_BASE/api/price/ohlcv/NASDAQ:AAPL" \
-H "Authorization: Bearer $API_KEY" \
--data-urlencode "timeframe=D" \
--data-urlencode "range=10" \
--data-urlencode "adjustment=splits" range=10 requests ten candles, not ten calendar days. Review timeframes, adjustment and from/to behavior before selecting a historical window.
6. Request a small watchlist.
curl --fail-with-body "$NAVQUOTE_API_BASE/api/quote/batch" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
--data '{"symbols":["NASDAQ:AAPL","NASDAQ:MSFT"],"fields":"all"}' The source contract allows up to ten symbols. Read the quote guide for fields and partial failures; quota accounting must be verified separately.
When the first request does not work.
Read the status and error body before changing the request. These checks narrow down the problem without repeatedly sending the same failing call.
On smaller screens, scroll horizontally to read all columns.
| Symptom | Check next |
|---|---|
| Hostname or connection failure | Confirm the API base is available. The neutral addresses in this local preview have not passed live validation. |
| HTTP 401 or 403 | Check the bearer credential, expiration and endpoint entitlement. A REST key, a streaming JWT and an MCP JWT have different purposes. |
| HTTP 429 | Reduce request frequency or concurrency. Honor Retry-After when supplied; inspect the body to distinguish rate, connection and account limits. |
| HTTP 200 with unsuccessful data | Check the JSON success flag and error fields; for batches, check each symbol separately. |
| Empty candles or stale price | Check symbol identity, market session, timeframe and timestamp units. A closed session or unavailable interval is not fixed by replacing a missing value with zero. |
| Timeout or temporary service error | Use a bounded retry budget and backoff after checking the response. Never assume an unlimited retry loop is safe. |
When contacting support, include the endpoint, redacted parameters, UTC request time, HTTP status and sanitized error body. Remove API keys, bearer tokens and credential-bearing URLs.
7. Choose the next interface.
Use WebSocket or Server-Sent Events for updates and MCP for compatible AI tools. Both have their own credential workflows; do not reuse the REST API key as an arbitrary connection token.
Start with your first quote.
One account for API keys, usage and subscriptions.
Continue to our shared account console.