DataCedar API / v3

Research API reference

A symbol-oriented interface for SEC records, point-in-time facts, earnings events, stock-news references, macro context, explicit coverage, and rights-gated market or transcript data.

REST / JSONCursor paginationKnown-at filtersRights-aware
01

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.

02

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_...
Never place a DataCedar key in browser JavaScript, a public repository, query parameters, analytics events, or client-visible error reports. Use the server-side session bridge in the dashboard for web applications.
03

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.

04

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.

05

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_end

The event or economic period described by the record.

published_at / filed_at

When the source made the disclosure public.

retrieved_at

When a DataCedar acquisition run obtained the source response.

known_at

The conservative instant after which the record is eligible for an as-of query.

observed_at

When a market or macro observation occurred.

An 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.
06

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.

GET
/v3/stocks/assets
Query: q, limit

Search the security master.

GET
/v3/stocks/{symbol}
Query: -

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.

GET
/v3/stocks/{symbol}/bars
Query: timeframe, start, end, cursor, limit

Historical OHLCV by interval.

GET
/v3/stocks/{symbol}/quote
Query: -

Latest permitted quote; unavailable without a licensed present-time source.

GET
/v3/stocks/{symbol}/trades
Query: cursor, limit

Latest permitted trades; unavailable without a licensed present-time source.

GET
/v3/stocks/{symbol}/short-volume
Query: start, end, cursor, limit

Short-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.

GET
/v3/stocks/{symbol}/filings
Query: form, cursor, limit

SEC filing chronology and accession metadata.

GET
/v3/stocks/{symbol}/documents
Query: accession, q, cursor, limit

Search filing documents and exhibits.

GET
/v3/stocks/{symbol}/documents/{document_id}
Query: -

Return one permitted document with its source URL.

GET
/v3/stocks/{symbol}/fundamentals
Query: tag, as_of, cursor, limit

Point-in-time SEC/XBRL company facts.

GET
/v3/stocks/{symbol}/news
Query: cursor, limit

Company-news link metadata and source provenance.

GET
/v3/stocks/{symbol}/transcripts
Query: transcript_id, q, cursor, limit

Licensed 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.

GET
/v3/stocks/{symbol}/events
Query: as_of, event_type, cursor, limit

Point-in-time company timeline.

GET
/v3/stocks/earnings
Query: as_of, start, end, cursor, limit

Cross-symbol earnings-event calendar.

GET
/v3/macro
Query: series_id, as_of, cursor, limit

Public macroeconomic observations.

Coverage and operations

Treat data availability and acquisition health as queryable records, not hidden dashboard state.

GET
/v3/stocks/{symbol}/coverage
Query: stream, start, end, cursor, limit

Expected versus actual rows by stream and session.

GET
/v3/stocks/runs
Query: source, status, cursor, limit

Permitted ingestion-run status and provenance.

GET
/v3/stocks/health
Query: -

Latest 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.

SEC filings and eventsEvery 15 minutesPublic
Stock-news link metadataEvery 15 minutesPublic metadata only
Security masterDailyRights-reviewed reference data
SEC/XBRL fundamentalsDailyPublic
BLS macro observationsDailyPublic with source citation
Historical bar validatorEvery 6 hoursInternal validation; elapsed dates only
07

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_..."
  }
}
400INVALID_ARGUMENT / INVALID_SYMBOL

Fix the request; do not retry unchanged.

401UNAUTHORIZED

Supply a valid active key.

403FORBIDDEN / RIGHTS_RESTRICTED

The account or source is not eligible; retries will not change it.

404NOT_FOUND

The resource does not exist in eligible coverage.

429RATE_LIMITED

Back off with jitter and respect Retry-After when present.

500INTERNAL

Retry idempotent GET requests with bounded exponential backoff.

503DEPENDENCY_UNAVAILABLE

Retry later; inspect health and coverage before a batch rerun.

08

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.

DataCedar v1 does not provide a consolidated SIP or real-time quote feed. Historical Alpaca SIP rows are internal validation only. Transcript text remains unavailable until an explicitly redistributable or licensed corpus is active.

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.

09

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.

PlanPriceRequestsMarket windowResearch surface
Explorer$01 req/s7-day permitted market windowPublic filings, facts, events, news links, and macro
Quant$29/mo25 req/s, 1,000/min30-day permitted market windowHigher-throughput research; licensed calls only if active
Desk Lite$79/mo50 req/s, 3,000/min90-day permitted market windowLarger event studies and recurring batch jobs
Desk$200/mo100 req/s, 6,000/minFull permitted archiveDedicated capacity and rights onboarding

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.

10

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.

Query and normalized filter order
As-of cutoff and timezone
All response request IDs
Coverage snapshot for each stream
Schema and calculation version
Raw-object or export-manifest hashes
Rights and entitlement state
Research-code commit

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.

Ready to make a request?

Create a key and start with public company evidence.