SpacDesk logoSpacDesk

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

PlanPer minutePer day
Anonymous30200
Free (signed in)60500
Pro12010,000
Institutional600100,000

429 responses include Retry-After, X-RateLimit-Limit-Day, and X-RateLimit-Remaining-Day headers.

Endpoints

GET/api/v1/universe

Paginated SPAC universe.

Parameters

  • statussearching | in_vote | in_extension | combination_announced | closed | liquidated | withdrawn
  • sponsorexact match
  • sponsor_groupresolved sponsor family
  • limitdefault 100, max 1000
  • offsetdefault 0

Examples

  • /api/v1/universe?status=in_vote&limit=20
  • /api/v1/universe?sponsor_group=Churchill+Capital
GET/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
GET/api/v1/calendar

Events horizon: deadlines, lockup expiries, votes.

Parameters

  • dayshorizon, default 180, max 1825

Examples

  • /api/v1/calendar?days=90
GET/api/v1/search

Fuzzy search across symbol, name, sponsor, CIK.

Parameters

  • qquery string

Examples

  • /api/v1/search?q=churchill
GET/api/v1/alerts

Fired alert events — extension votes, redemption spikes, trust drawdowns, lockup expiries, deSPAC closings, IPO launches, liquidations, YTM arbitrage.

Parameters

  • kindextension_vote | high_redemption | trust_drawdown | lockup_expiring | despac_imminent | new_ipo | liquidation_filed | ytm_arbitrage
  • severitycritical | warning | info
  • symbolfilter to one SPAC
  • sinceISO-8601 date
  • limitdefault 100, max 500

Examples

  • /api/v1/alerts?kind=trust_drawdown&severity=critical
  • /api/v1/alerts?since=2026-04-01
GET/api/v1/alerts/stream

Live SSE stream — pushes alert events within ~5 s of evaluation. Emits ready, alert, error events plus heartbeats every 25 s.

Parameters

  • kindfilter, same as /api/v1/alerts
  • severityfilter, same as /api/v1/alerts
  • symbolfilter, same as /api/v1/alerts
  • cursorresume from event ID

Examples

  • curl -N https://spacdesk.com/api/v1/alerts/stream
  • curl -N 'https://spacdesk.com/api/v1/alerts/stream?severity=critical'
GET/api/v1/news

News articles — auto-generated from filings + aggregated from Google News RSS, entity-linked.

Parameters

  • kindipo | merger | redemption | extension | despac | liquidation | charter | funding | roundup | watchlist | other
  • sourcefiling_derived | google_news
  • symbolfilter to one SPAC
  • qheadline + summary substring
  • sinceISO-8601 date
  • limitdefault 50, max 200

Examples

  • /api/v1/news?kind=roundup
  • /api/v1/news?source=filing_derived&symbol=DMAAR
GET/api/v1/news/stream

Live 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

  • kindfilter, same as /api/v1/news
  • sourcefilter, same as /api/v1/news
  • symbolfilter to one SPAC
  • cikfilter by CIK
  • qheadline + summary substring
  • cursorresume 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.

POST/api/v1/webhook_endpoints

Register a new webhook URL. Returns a signing secret (shown once).

Parameters

  • urlHTTPS endpoint URL (required)
  • event_typesarray of event types to subscribe to (default: all)
  • descriptionoptional label (max 256 chars)
GET/api/v1/webhook_endpoints

List all registered webhook endpoints.

DELETE/api/v1/webhook_endpoints/{id}

Remove a webhook endpoint. Deliveries stop immediately.

POST/api/v1/webhook_endpoints/{id}/rotate_secret

Rotate the signing secret. Old secret stops working immediately.

GET/api/v1/events

Paginated event history with delivery status. Cursor-based pagination.

Parameters

  • typefilter by event type
  • afterISO-8601 timestamp — events created after
  • beforeISO-8601 timestamp — events created before
  • cursorpagination cursor (event ID)
  • limitdefault 50, max 100

Examples

  • /api/v1/events?type=filing.extracted&limit=10
POST/api/v1/events/{id}/redeliver

Manually 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).