Programmatic access to AI-extracted SEC filing intelligence, compliance monitoring, congressional (STOCK Act) trading, and market data. Pick a category to explore endpoints, try them live, and copy code in cURL, JavaScript, or Python.
https://api.signal8.aiAuth: X-Api-Key: sk_live_*Create a free account and generate a key from the developer portal. Keys look like sk_live_* (or sk_test_* for test keys).
Send your key in the X-Api-Key header. The Authorization: Bearer sk_live_* form is also accepted.
curl "https://api.signal8.ai/api/v1/public/companies/AAPL" \
-H "X-Api-Key: sk_live_YOUR_KEY"Plans scale rate limits and daily caps. Limits are enforced per API key — every response includes X-RateLimit-* and X-DailyLimit-* headers so you can track remaining quota. See full plan details on the pricing page.
| Plan | Price | Requests / min | Daily cap |
|---|---|---|---|
| Free | $0 | 10 | 100 |
| Developer | $20/mo | 60 | 1,000 |
Use Signal8 directly from Claude, Cursor, and other MCP clients. The zero-install hosted Streamable HTTP endpoint is the primary path — point any client at it and authenticate with your API key via the Authorization: Bearer header:
{
"mcpServers": {
"signal8": {
"type": "http",
"url": "https://mcp.signal8.ai/mcp",
"headers": {
"Authorization": "Bearer sk_live_YOUR_KEY"
}
}
}
}One-click for Cursor & VS Code — installs the hosted https://mcp.signal8.ai/mcp server; replace sk_live_YOUR_KEY with your API key after install.
Prefer to run it locally? Use npx @signal8ai/mcp with your key in the SIGNAL8_API_KEY env:
{
"mcpServers": {
"signal8": {
"command": "npx",
"args": ["-y", "@signal8ai/mcp"],
"env": {
"SIGNAL8_API_KEY": "sk_live_YOUR_KEY"
}
}
}
}For Claude Code, add the hosted server from your terminal (replace sk_live_YOUR_KEY with your key):
claude mcp add --transport http signal8 https://mcp.signal8.ai/mcp \
--header "Authorization: Bearer sk_live_YOUR_KEY"Claude's web custom connector (Settings → Connectors) requires OAuth, which the hosted server doesn't support yet — use the local config or Claude Code for now.
Failed requests return a non-2xx status with a JSON error envelope containing a stable machine-readable code and a human-readable message:
{
"error": {
"code": "NOT_FOUND",
"message": "Company not found for ticker: ZZZZ"
}
}| Status | Code | Description |
|---|---|---|
| 400 | INVALID_INPUT | A path or query parameter is malformed — e.g. a ticker that is not 1–5 letters. |
| 401 | INVALID_API_KEY | The API key is missing, invalid, revoked, or expired. |
| 403 | TIER_INSUFFICIENT | Your plan does not include this endpoint. The response includes requiredTier and currentTier. |
| 404 | NOT_FOUND | The requested resource does not exist. |
| 429 | RATE_LIMIT_EXCEEDED | Per-minute rate limit exceeded. Retry after the period in the Retry-After header. |
| 429 | DAILY_LIMIT_EXCEEDED | Daily request cap exceeded. Resets at midnight UTC (see the X-DailyLimit-Reset header). |
Endpoints gated above your subscription tier return a flat 403 envelope with upgrade context:
{
"success": false,
"error": "This endpoint requires the Developer plan. Please upgrade to continue.",
"code": "TIER_INSUFFICIENT",
"requiredTier": "pro",
"requiredTierName": "Developer",
"currentTier": "free"
}When you hit the per-minute limit or daily cap, the response includes a Retry-After header (seconds). Wait at least that long before retrying, and use the X-RateLimit-Remaining and X-DailyLimit-Remaining headers to pace requests proactively. Retries should use exponential backoff.
Successful responses wrap the payload in a top-level data field:
{
"data": {
"ticker": "AAPL",
"companyName": "Apple Inc"
}
}List endpoints accept limit (results per page) and offset (rows to skip) query parameters. Paginated responses echo both values back alongside a total count where available.
All dates use ISO 8601: YYYY-MM-DD for calendar dates and UTC timestamps (2026-01-15T14:30:00Z) for instants.
Ticker symbols are 1–5 letters, case-insensitive (normalized to uppercase). Exchange-prefixed forms like NASDAQ:NVDA are accepted and the prefix is stripped.