Documentation
SpacDesk API
REST endpoints over HTTP, JSON responses, optional SSE streaming for live data. All endpoints are rooted at https://spacdesk.com.
Quickstart
# Anon — 30 requests / min, 200 / day curl https://spacdesk.com/api/v1/universe?status=in_vote&limit=10 # With API key (Pro: 1k / day, Institutional: 10k / day) curl https://spacdesk.com/api/v1/alerts?severity=critical \ -H "Authorization: Bearer sk_live_…"
Authentication
Anonymous requests are rate-limited per IP. To lift quota, generate an API key at /account after signing in. Pass it via the Authorization: Bearer sk_live_… header. Keys are revocable; usage is recorded per-key.
Rate limits
| Plan | Per minute | Per day |
|---|---|---|
| Anonymous | 30 | 200 |
| Free (signed in) | 60 | 500 |
| Pro | 120 | 10,000 |
| Institutional | 600 | 100,000 |
429 responses include Retry-After, X-RateLimit-Limit-Day, and X-RateLimit-Remaining-Day headers.
Endpoints
/api/v1/universePaginated SPAC universe.
Parameters
- status — searching | in_vote | in_extension | combination_announced | closed | liquidated | withdrawn
- sponsor — exact match
- sponsor_group — resolved sponsor family
- limit — default 100, max 1000
- offset — default 0
Examples
- /api/v1/universe?status=in_vote&limit=20
- /api/v1/universe?sponsor_group=Churchill+Capital
/api/v1/spac/[symbol]Full record: universe row + iXBRL trust series + votes + funding + lockups + earnouts + liquidation if applicable.
Examples
- /api/v1/spac/CBRG
- /api/v1/spac/DCRN
/api/v1/calendarEvents horizon: deadlines, lockup expiries, votes.
Parameters
- days — horizon, default 180, max 1825
Examples
- /api/v1/calendar?days=90
/api/v1/searchFuzzy search across symbol, name, sponsor, CIK.
Parameters
- q — query string
Examples
- /api/v1/search?q=churchill
/api/v1/alertsFired alert events — extension votes, redemption spikes, trust drawdowns, lockup expiries, deSPAC closings, IPO launches, liquidations, YTM arbitrage.
Parameters
- kind — extension_vote | high_redemption | trust_drawdown | lockup_expiring | despac_imminent | new_ipo | liquidation_filed | ytm_arbitrage
- severity — critical | warning | info
- symbol — filter to one SPAC
- since — ISO-8601 date
- limit — default 100, max 500
Examples
- /api/v1/alerts?kind=trust_drawdown&severity=critical
- /api/v1/alerts?since=2026-04-01
/api/v1/alerts/streamLive SSE stream — pushes alert events within ~5 s of evaluation. Emits ready, alert, error events plus heartbeats every 25 s.
Parameters
- kind — filter, same as /api/v1/alerts
- severity — filter, same as /api/v1/alerts
- symbol — filter, same as /api/v1/alerts
- cursor — resume from event ID
Examples
- curl -N https://spacdesk.com/api/v1/alerts/stream
- curl -N 'https://spacdesk.com/api/v1/alerts/stream?severity=critical'
/api/v1/newsNews articles — auto-generated from filings + aggregated from Google News RSS, entity-linked.
Parameters
- kind — ipo | merger | redemption | extension | despac | liquidation | charter | funding | roundup | watchlist | other
- source — filing_derived | google_news
- symbol — filter to one SPAC
- q — headline + summary substring
- since — ISO-8601 date
- limit — default 50, max 200
Examples
- /api/v1/news?kind=roundup
- /api/v1/news?source=filing_derived&symbol=DMAAR
/api/v1/news/streamLive SSE stream — hydrates with 50 most recent articles on connect, then pushes new ones within ~10 s of insert. Emits ready, article, error events plus heartbeats every 25 s.
Parameters
- kind — filter, same as /api/v1/news
- source — filter, same as /api/v1/news
- symbol — filter to one SPAC
- cik — filter by CIK
- q — headline + summary substring
- cursor — resume from article ID
Examples
- curl -N https://spacdesk.com/api/v1/news/stream
- curl -N 'https://spacdesk.com/api/v1/news/stream?kind=liquidation'
Webhooks
Register HTTPS endpoints to receive push notifications for SPAC events. All deliveries are signed with HMAC-SHA256. See the signature verification guide.
/api/v1/webhook_endpointsRegister a new webhook URL. Returns a signing secret (shown once).
Parameters
- url — HTTPS endpoint URL (required)
- event_types — array of event types to subscribe to (default: all)
- description — optional label (max 256 chars)
/api/v1/webhook_endpointsList all registered webhook endpoints.
/api/v1/webhook_endpoints/{id}Remove a webhook endpoint. Deliveries stop immediately.
/api/v1/webhook_endpoints/{id}/rotate_secretRotate the signing secret. Old secret stops working immediately.
/api/v1/eventsPaginated event history with delivery status. Cursor-based pagination.
Parameters
- type — filter by event type
- after — ISO-8601 timestamp — events created after
- before — ISO-8601 timestamp — events created before
- cursor — pagination cursor (event ID)
- limit — default 50, max 100
Examples
- /api/v1/events?type=filing.extracted&limit=10
/api/v1/events/{id}/redeliverManually trigger redelivery of an event to all active endpoints.
Response shape
All endpoints return JSON with a top-level asOf ISO-8601 timestamp. Tabular endpoints wrap rows in a rows array plus a count. Errors return { error: string } with the appropriate HTTP status.
Conversational query
For ad-hoc analytical questions, use the /ask interface in your browser. It converts plain English to SQL via Claude Haiku 4.5 and runs the result against the live database.
Discovery
GET /api/v1/discover returns a self-describing JSON catalog of every endpoint, parameters, and a few-second-fresh row count for the major tables. Useful for client-side endpoint discovery.
Status & changelog
Health: GET /api/health returns liveness, DB latency, and build SHA. Service status: status.spacdesk.com. API changelog: api.spacdesk.com/changelog (JSON).