DataCedar API / v3

Research API reference

A market-and-evidence interface for stocks, crypto, tokenized assets, TradFi perpetuals, SEC records, point-in-time facts, events, macro context, and explicit coverage.

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: $DATACEDAR_API_KEY"

Use the production origin configured for your account. Local development reads the API origin from DATACEDAR_API_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 information version. It never rewrites the economic period reported by the source. Current retractions and document removals are safety controls and override plan latency and historical cutoffs immediately.
06

Endpoint catalog

The catalog below is the customer-facing v3 market-research surface available today. Historical depth is reported per source and instrument rather than implied by route availability.

Cross-asset market data

One bars envelope across equities, crypto Spot, tokenized assets, and TradFi perpetuals; native source and product class remain explicit.

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

Yahoo-sourced stock OHLCV: full held daily history plus the rolling public one-minute window.

GET
/v3/crypto/assets
Query: q, class, status, cursor, limit

Enumerate the current dynamic Binance Spot catalog.

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

Binance Spot one-minute OHLCV and deterministic larger intervals.

GET
/v3/tokenized-assets
Query: q, class, status, cursor, limit

Discover bStocks and Web3/Ondo tokenized securities.

GET
/v3/tokenized-assets/{symbol}/bars
Query: timeframe, start, end, cursor, limit

Tokenized-asset bars, with source-specific historical resolution.

GET
/v3/derivatives
Query: q, class, status, cursor, limit

Discover crypto and TradFi USDⓈ-M perpetual contracts.

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

Current and recent TradFi-perpetual bars.

Securities and identity

Resolve a current or historical ticker to the canonical security record before joining research streams.

GET
/v3/stocks/assets
Query: q, class, status, cursor, limit

Enumerate the live SEC/Nasdaq-derived security master.

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

Return the latest eligible security identity and listing attributes.

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

Load the bounded dashboard research snapshot: identity, plan-permitted daily bars, filings, documents, fundamentals, events, news, coverage, and per-dataset availability in one metered request.

Company evidence

Public SEC records, event history, and source-linked news 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/social/{symbol}/buzz
Query: timeframe, start, end, as_of, limit

Point-in-time Reddit mention and engagement aggregates; no post bodies or usernames.

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.

Cross-market intelligence graph

Rights-cleared stock, crypto, macro, filing, exchange, protocol, and social-signal events with revision history and inspectable evidence.

GET
/v3/intelligence/events
Query: symbol, entity_id, asset_class, type, status, source, source_class, language, geography, rights_state, display_state, start/end, published_start/end, known_start/end, sentiment/materiality/novelty min/max, as_of, cursor, limit

List the latest eligible event revision at a point-in-time cutoff.

GET
/v3/intelligence/events/{event_id}
Query: as_of

Return one event revision with citations and resolved entities.

GET
/v3/intelligence/search
Query: q, as_of, limit

Search event and display-safe document metadata.

GET
/v3/intelligence/entities/{entity_id}/timeline
Query: type, source, start, end, as_of, cursor, limit

Return the event timeline for one resolved entity.

GET
/v3/intelligence/documents/{document_id}
Query: as_of

Return rights-safe source metadata and permitted excerpts.

GET
/v3/intelligence/clusters/{cluster_id}
Query: as_of

Inspect all current event revisions in a cluster.

GET
/v3/intelligence/trends
Query: start, end, as_of

Aggregate event counts by time and classification.

GET
/v3/intelligence/coverage
Query: as_of

Inspect source, asset, language, latency, rights, and freshness coverage.

GET
/v3/intelligence/sources
Query: -

Read the current enabled source and display-rights registry.

GET
/v3/intelligence/stream
Query: filters above; Last-Event-ID header

Receive plan-delayed SSE events and resumable heartbeats.

GET / POST
/v3/intelligence/subscriptions
Query: JSON body on POST

List account webhooks or create a signed delivery subscription.

DELETE
/v3/intelligence/subscriptions/{subscription_id}
Query: -

Delete an account-owned delivery subscription.

GET / POST
/v3/intelligence/saved-views
Query: JSON body on POST

List account-synced terminal views or create one within the plan quota.

DELETE
/v3/intelligence/saved-views/{saved_view_id}
Query: -

Delete an account-owned saved view.

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.

Market-bar source contract

Stock and crypto bars share a stable response envelope, but they do not pretend to be one consolidated feed. Every row identifies its native source, feed, timeframe, adjustment, and conservative known_at_ms.

Stocks

Yahoo is the explicit production bar source. Daily bars support raw and all adjustments; public one-minute bars are raw and limited to Yahoo's rolling upstream window. Historical daily Parquet is read from R2 and joined with recent ClickHouse rows. No Alpaca credential or worker exists in production, and the retired validation archive cannot enter public responses.

Crypto and Binance-linked instruments

The Spot-family catalog is discovered from Binance rather than hard-coded. One-minute venue bars are retained in monthly R2 partitions and larger intervals are deterministic server-side rollups. When start is omitted, market-history routes use a rolling 24-hour window rather than resetting at UTC midnight. bStocks, Web3 tokenized securities, crypto/TradFi perpetuals, and retired Binance leveraged tokens remain explicit product classes; leveraged tokens are historical products, not live-stream candidates.

# Discover live Binance Spot symbols
GET /v3/crypto/assets?q=BTC&status=TRADING&limit=100

# Yahoo daily history (raw or all-adjusted)
GET /v3/stocks/AAPL/bars?timeframe=1Day&adjustment=all&start=2000-01-01T00:00:00Z

# Binance one-minute history; use the returned cursor unchanged
GET /v3/crypto/BTCUSDT/bars?timeframe=1Min&start=2025-09-01T00:00:00Z&limit=5000
Plan windows are enforced before storage is read: Explorer 7 days, Quant 30 days, Desk Lite 90 days, and Desk the full held archive. An explicit start before the entitlement returns 403 HISTORY_LIMIT_EXCEEDED; it is never silently truncated. A route existing does not imply pre-listing data.

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; headline must support the queried ticker/company
Binance official announcementsEvery 2 minutesDerived event metadata and links
Crypto first-party project feedsEvery 5 minutesOfficial metadata, citations and derived events
Reddit market signalsEvery 2 minutesAggregates only; no usernames or post bodies
Security masterDailyRights-reviewed reference data
Yahoo full historical universeWeekly reconciliationEvery catalog symbol receives complete/unavailable state
Yahoo active-stock daily barsDailyRecent bounded refresh; raw responses retained
Yahoo active-stock one-minute barsWeeklyRolling eight-day upstream window
Binance Spot closed one-minute barsContinuous + daily + weekly reconciliationVenue-specific, dynamic catalog
SEC/XBRL fundamentalsDailyPublic
BLS macro observationsDailyPublic with source citation
07

SSE and signed webhooks

The SSE route and webhook worker read the same event revisions, source-rights registry, history window, and plan latency as REST. Explorer is delayed 15 minutes, Quant five minutes, Desk Lite one minute, and Desk has realtime eligibility.

curl -N 'https://api.datacedar.com/v3/intelligence/stream?symbol=BTC' \
  -H 'X-API-Key: dc_...' \
  -H 'Accept: text/event-stream' \
  -H 'Last-Event-ID: <optional cursor>'

SSE emits intelligence.event and heartbeat events. Persist each SSE id and send it as Last-Event-ID after reconnecting. The server also sends transport keep-alives.

POST /v3/intelligence/subscriptions
{
  "delivery_kind": "webhook",
  "endpoint": "https://hooks.example.com/datacedar",
  "latency_class": "delayed",
  "filters": {
    "symbols": ["BTC", "AAPL"],
    "event_types": ["exchange_listing"],
    "source_ids": ["binance_announcements"]
  }
}

The create response returns signing_secret once. Verify DataCedar-Signature as HMAC-SHA256 over <unix timestamp>.<raw body>, reject stale timestamps, and deduplicate with Idempotency-Key. Redirects and private-network endpoints are rejected; repeated failures disable the subscription after ten attempts.

Active webhook quotas are Explorer 1, Quant 5, Desk Lite 25, and Desk 100. Concurrent SSE quotas are 1, 3, 10, and 25 respectively. SSE connections expire after five minutes and reconnect from Last-Event-ID.

Crypto bar WebSocket compatibility

/v1beta3/crypto/{location} streams only bars, updatedBars, and dailyBars. Tick trades, quotes, and orderbooks are not active datasets: their REST routes return 410 DATASET_NOT_ACTIVE and WebSocket subscriptions are rejected explicitly. The socket requires in-protocol authentication within ten seconds, consumes the account request bucket, and requires reauthentication every five minutes. Explorer/Quant/Desk Lite/Desk allow 1/2/5/10 connections and 5/25/100/500 bar channel-symbol subscriptions per connection; wildcard subscriptions are Desk-only.

08

Remote MCP

Connect a Streamable HTTP client to https://api.datacedar.com/mcp. Add Authorization: Bearer dc_... to use the same account plan and history limits as REST.

{
  "mcpServers": {
    "datacedar": {
      "url": "https://api.datacedar.com/mcp",
      "headers": { "Authorization": "Bearer dc_..." }
    }
  }
}

The exact tool set is datacedar_search_events, datacedar_get_event, datacedar_search, datacedar_entity_timeline, datacedar_get_document, datacedar_get_cluster, datacedar_trends, datacedar_coverage, and datacedar_sources. Tool calls execute the REST handlers in-process; there is no looser MCP data path. An intentionally keyless call receives the bounded demo, while a supplied invalid, expired, or revoked key fails authentication rather than silently becoming demo access.

09

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 / HISTORY_LIMIT_EXCEEDED

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

404NOT_FOUND

The resource does not exist in eligible coverage.

410DATASET_NOT_ACTIVE

The compatibility route is intentionally outside the production data contract; do not retry.

429RATE_LIMITED / *_LIMIT

Back off with jitter; close a connection or remove a saved view/webhook when a quota is full.

500INTERNAL

Retry idempotent GET requests with bounded exponential backoff.

503DEPENDENCY_UNAVAILABLE

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

10

Data scope

Customer requests return sources explicitly enabled for public serving. Each market row keeps its source and feed; Binance is a venue-specific source, not a claim of consolidated crypto pricing.

GDELT is a discovery and link-metadata source. A body-only ticker match is archived for audit but does not become a public market event unless the headline supports the ticker or a deterministic company alias. Publisher article bodies are not redistributed.

DataCedar does not provide a consolidated SIP feed, deep public US-equity minute history beyond Yahoo's rolling window, permanent tick-level crypto trades or depth, options, funding/open-interest/liquidation history, or earnings-call transcript text. These are exclusions, not hidden plan features.

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.

Inspect the live edge at DataCedar Status. Correction, attribution, removal, and source-suspension requests follow the documented data-rights and takedown workflow.

11

Plans and rate limits

Plans change request throughput, market and intelligence history, event freshness, saved-view and delivery quotas, and crypto-stream concurrency. They do not unlock unlisted or internally held datasets. Current SEC evidence routes remain source- and rights-gated rather than being artificially hidden by a market-history window.

PlanPriceRequestsData scopeResearch surface
Explorer$01 req/s7 days · 15m delay5 views · 1 webhook · 1 SSE · crypto bar WS 1×5
Quant$29/mo25 req/s, 1,000/min30 days · 5m delay25 views · 5 webhooks · 3 SSE · crypto bar WS 2×25
Desk Lite$79/mo50 req/s, 3,000/min90 days · 1m delay100 views · 25 webhooks · 10 SSE · crypto bar WS 5×100
Desk$200/mo100 req/s, 6,000/minFull archive · realtime500 views · 100 webhooks · 25 SSE · crypto bar WS 10×500 + wildcards

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.

12

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 cross-market evidence.