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.
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 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.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.
/v3/stocks/{symbol}/barsYahoo-sourced stock OHLCV: full held daily history plus the rolling public one-minute window.
/v3/crypto/assetsEnumerate the current dynamic Binance Spot catalog.
/v3/crypto/{symbol}/barsBinance Spot one-minute OHLCV and deterministic larger intervals.
/v3/tokenized-assetsDiscover bStocks and Web3/Ondo tokenized securities.
/v3/tokenized-assets/{symbol}/barsTokenized-asset bars, with source-specific historical resolution.
/v3/derivativesDiscover crypto and TradFi USDⓈ-M perpetual contracts.
/v3/derivatives/{symbol}/barsCurrent and recent TradFi-perpetual bars.
Securities and identity
Resolve a current or historical ticker to the canonical security record before joining research streams.
/v3/stocks/assetsEnumerate the live SEC/Nasdaq-derived security master.
/v3/stocks/{symbol}Return the latest eligible security identity and listing attributes.
/v3/stocks/{symbol}/researchLoad 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.
/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/social/{symbol}/buzzPoint-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.
/v3/stocks/{symbol}/eventsPoint-in-time company timeline.
/v3/stocks/earningsCross-symbol earnings-event calendar.
/v3/macroPublic macroeconomic observations.
Cross-market intelligence graph
Rights-cleared stock, crypto, macro, filing, exchange, protocol, and social-signal events with revision history and inspectable evidence.
/v3/intelligence/eventsList the latest eligible event revision at a point-in-time cutoff.
/v3/intelligence/events/{event_id}Return one event revision with citations and resolved entities.
/v3/intelligence/searchSearch event and display-safe document metadata.
/v3/intelligence/entities/{entity_id}/timelineReturn the event timeline for one resolved entity.
/v3/intelligence/documents/{document_id}Return rights-safe source metadata and permitted excerpts.
/v3/intelligence/clusters/{cluster_id}Inspect all current event revisions in a cluster.
/v3/intelligence/trendsAggregate event counts by time and classification.
/v3/intelligence/coverageInspect source, asset, language, latency, rights, and freshness coverage.
/v3/intelligence/sourcesRead the current enabled source and display-rights registry.
/v3/intelligence/streamReceive plan-delayed SSE events and resumable heartbeats.
/v3/intelligence/subscriptionsList account webhooks or create a signed delivery subscription.
/v3/intelligence/subscriptions/{subscription_id}Delete an account-owned delivery subscription.
/v3/intelligence/saved-viewsList account-synced terminal views or create one within the plan quota.
/v3/intelligence/saved-views/{saved_view_id}Delete an account-owned saved view.
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.
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=5000403 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.
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.
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.
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_RESTRICTED / HISTORY_LIMIT_EXCEEDEDThe account, source, or requested history is not eligible; retries will not change it.
NOT_FOUNDThe resource does not exist in eligible coverage.
DATASET_NOT_ACTIVEThe compatibility route is intentionally outside the production data contract; do not retry.
RATE_LIMITED / *_LIMITBack off with jitter; close a connection or remove a saved view/webhook when a quota is full.
INTERNALRetry idempotent GET requests with bounded exponential backoff.
DEPENDENCY_UNAVAILABLERetry later; inspect health and coverage before a batch rerun.
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.
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.
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.
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.