Quick start
Create a key in the dashboard, send it with one request, and keep the returned request ID with your research log. The example asks for the public SEC filing chronology for Apple; it does not require a market-data license.
export DATACEDAR_API_KEY="dc_..."
curl --request GET \
--url "https://api.datacedar.com/v3/stocks/AAPL/filings?form=10-Q&limit=5" \
--header "X-API-Key: $QUARTERTRACE_API_KEY"Use the production origin configured for your account. Local development defaults to the API origin in QT_API_BASE_URL; the Next.js application proxies authenticated dashboard requests without becoming the data authority.
Authentication and key handling
Send one key through X-API-Key or Authorization: Bearer. Do not send both. Account keys begin with dc_, are displayed once when created, and are stored as hashes by DataCedar.
# Header form
X-API-Key: dc_...
# Bearer form
Authorization: Bearer dc_...Response envelope
Successful list responses return data, pagination, and meta. A stream may also include coverage or availability when the distinction between empty, missing, and restricted matters.
{
"data": [{ "symbol": "AAPL", "form": "10-Q" }],
"pagination": {
"count": 1,
"limit": 5,
"has_more": false,
"next_cursor": null
},
"meta": {
"request_id": "req_...",
"timestamp": "2026-07-17T20:15:00Z",
"schema_version": "v3"
}
}Unknown JSON fields may be added in a backwards-compatible release. Clients should ignore fields they do not recognize and must not rely on object key order.
Cursor pagination
List endpoints use opaque cursors. Pass the returned next_cursor unchanged into the next request. Do not parse it, synthesize it, or combine it with a different filter set.
GET /v3/stocks/AAPL/documents?limit=100
GET /v3/stocks/AAPL/documents?limit=100&cursor=eyJ...
# Continue until pagination.has_more is false.Cursor ordering is deterministic for the same filters and eligible data snapshot. If an acquisition run adds newly eligible records during a long backfill, restart the export with a saved as-of cutoff when exact snapshot consistency is required.
Time and as-of semantics
DataCedar does not overload one timestamp. Depending on the stream, a record can carry economic-period, event, publication, filing, retrieval, market-session, and known-at times.
effective_at / period_endThe event or economic period described by the record.
published_at / filed_atWhen the source made the disclosure public.
retrieved_atWhen a DataCedar acquisition run obtained the source response.
known_atThe conservative instant after which the record is eligible for an as-of query.
observed_atWhen a market or macro observation occurred.
as_of filter first excludes records that were not yet known, then resolves the latest eligible version. It never rewrites the economic period reported by the source.Endpoint catalog
The catalog below is the implemented v3 stock-research surface. A route can be implemented but legitimately return unavailable when no permitted source is active.
Securities and identity
Resolve a current or historical ticker to the canonical security record before joining research streams.
/v3/stocks/assetsSearch the security master.
/v3/stocks/{symbol}Return the latest eligible security identity and listing attributes.
Historical market observations
Market rows are returned only when the configured source and account rights permit serving them.
/v3/stocks/{symbol}/barsHistorical OHLCV by interval.
/v3/stocks/{symbol}/quoteLatest permitted quote; unavailable without a licensed present-time source.
/v3/stocks/{symbol}/tradesLatest permitted trades; unavailable without a licensed present-time source.
/v3/stocks/{symbol}/short-volumeShort-volume validation records where terms permit the environment.
Company evidence
Public SEC records, event history, source-linked news, and rights-gated call content share one symbol namespace.
/v3/stocks/{symbol}/filingsSEC filing chronology and accession metadata.
/v3/stocks/{symbol}/documentsSearch filing documents and exhibits.
/v3/stocks/{symbol}/documents/{document_id}Return one permitted document with its source URL.
/v3/stocks/{symbol}/fundamentalsPoint-in-time SEC/XBRL company facts.
/v3/stocks/{symbol}/newsCompany-news link metadata and source provenance.
/v3/stocks/{symbol}/transcriptsLicensed call segments when a permitted corpus is active.
Events and macro context
Reconstruct the information set around an earnings release, filing, company event, or economic observation.
/v3/stocks/{symbol}/eventsPoint-in-time company timeline.
/v3/stocks/earningsCross-symbol earnings-event calendar.
/v3/macroPublic macroeconomic observations.
Coverage and operations
Treat data availability and acquisition health as queryable records, not hidden dashboard state.
/v3/stocks/{symbol}/coverageExpected versus actual rows by stream and session.
/v3/stocks/runsPermitted ingestion-run status and provenance.
/v3/stocks/healthLatest collector runs and recent missing-session summary.
Bar timeframes accepted by the current validator are 1Min, 5Min, 15Min, 1Hour, and 1Day. Public market availability is a separate rights decision.
Default acquisition cadence
Cadence is configurable per deployment. These defaults describe how often the durable scheduler attempts each source; they are not a guarantee that a provider has published a new record.
Errors, retries, and validation
Error responses use a stable machine code, a human-readable message, optional field details, and the same request ID emitted to sanitized service logs.
{
"error": {
"code": "INVALID_SYMBOL",
"message": "Symbol contains unsupported characters.",
"details": { "field": "symbol" },
"request_id": "req_..."
}
}INVALID_ARGUMENT / INVALID_SYMBOLFix the request; do not retry unchanged.
UNAUTHORIZEDSupply a valid active key.
FORBIDDEN / RIGHTS_RESTRICTEDThe account or source is not eligible; retries will not change it.
NOT_FOUNDThe resource does not exist in eligible coverage.
RATE_LIMITEDBack off with jitter and respect Retry-After when present.
INTERNALRetry idempotent GET requests with bounded exponential backoff.
DEPENDENCY_UNAVAILABLERetry later; inspect health and coverage before a batch rerun.
Rights-aware serving
Every rights-sensitive market or transcript row carries a license class. Public requests return only records eligible for that environment and account. Internal validation data remains filtered even if a customer plan would otherwise allow a longer history window.
Decodo may transport a brittle public request, but it does not grant copyright, exchange, database, storage, or redistribution rights. Acquisition adapters and serving entitlements are reviewed independently.
Plans, rate limits, and history windows
Limits protect the shared service and define the maximum eligible market-history window. They do not create access to a stream whose source rights or coverage are unavailable.
For batch work, page sequentially within each symbol, cap concurrency, cache immutable document responses, and retry only transient status codes. Contact us before designing a sustained workload near the Desk ceiling.
Reproducibility contract
A reproducible result saves more than the response body. Record the request URL and filters, as-of cutoff, response request IDs, pagination cursors or export manifest, coverage state, schema version, source run IDs, and the code revision that produced the analysis.
Raw provider objects are content-addressed and written to Cloudflare R2 before normalization. They are recovery evidence, not an unfiltered public download tier. Customer-facing data still passes normalization, coverage, plan, and rights checks.