API Reference · v1

SECStream API

REST API for SEC filings and market data. JSON in, JSON out. One base URL, one bearer token, predictable parameters.

RESTJSONBearer authFilings + Marketv1.0

Introduction

All requests are made to a single base URL. Responses are always JSON. All timestamps are ISO 8601 in UTC.

Base URL
https://api.secstream.dev/v1

Authentication

Authenticate every request with a bearer token using the API key from your dashboard. Requests without a valid key return 401 Unauthorized.

Authorization header
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxx

GET /filings

List filings for a company. Filter by form type and date range.

GET/v1/filings
ParamTypeDescription
tickerrequiredstringStock ticker symbol, e.g. AAPL.
typestringForm type: 10-K, 10-Q, 8-K, S-1, etc.
fromISO dateStart of filing date range (inclusive).
toISO dateEnd of filing date range (inclusive).
includestringComma-separated extras: `market` adds price reaction (price at filing, +1d, +7d). `sections` (default) returns parsed text.
limitintegerMax results (default 25, max 100).
Request
curl https://api.secstream.dev/v1/filings \
  -H "Authorization: Bearer sk_live_..." \
  -G -d ticker=AAPL -d type=10-K \
  -d include=market -d limit=2
Response
{
  "data": [
    {
      "company": "Apple Inc.",
      "ticker": "AAPL",
      "filing_type": "10-K",
      "filing_date": "2024-11-01",
      "url": "https://www.sec.gov/Archives/...",
      "sections": {
        "business": "Apple Inc. designs...",
        "risk_factors": "The Company's...",
        "md_and_a": "Fiscal 2024..."
      },
      "market": {
        "price_at_filing": 222.91,
        "price_t_plus_1d": 222.01,
        "price_t_plus_7d": 229.54,
        "reaction_7d_pct": 2.97
      }
    }
  ],
  "next_cursor": null
}

GET /company

Get company metadata, including CIK, SIC code, and most recent filings summary.

GET/v1/company
ParamTypeDescription
tickerrequiredstringStock ticker symbol.
Response
{
  "name": "Apple Inc.",
  "ticker": "AAPL",
  "cik": "0000320193",
  "sic": "3571",
  "industry": "Electronic Computers",
  "exchange": "NASDAQ",
  "fiscal_year_end": "09-28",
  "recent_filings": 47
}

GET /quote

Live quote for a ticker. Last price, bid/ask, day change, and volume.

GET/v1/quote
ParamTypeDescription
tickerrequiredstringStock ticker symbol.
Response
{
  "ticker": "AAPL",
  "price": 229.87,
  "bid": 229.85,
  "ask": 229.88,
  "day_change": 1.42,
  "day_change_pct": 0.62,
  "volume": 48211900,
  "as_of": "2025-05-01T19:59:58Z"
}

GET /bars

Historical OHLCV bars. Use for charts, backtests, or correlating filings to price action.

GET/v1/bars
ParamTypeDescription
tickerrequiredstringStock ticker symbol.
timeframerequiredstring1m, 5m, 1h, 1d, 1w, 1mo.
fromISO dateStart of range (inclusive).
toISO dateEnd of range (inclusive).
limitintegerMax bars (default 500, max 5000).
Response
{
  "ticker": "AAPL",
  "timeframe": "1d",
  "data": [
    { "t": "2025-04-28", "o": 224.10, "h": 227.03, "l": 223.81, "c": 226.40, "v": 41880200 },
    { "t": "2025-04-29", "o": 226.55, "h": 229.99, "l": 225.92, "c": 229.87, "v": 48211900 }
  ]
}

GET /fundamentals

Live fundamentals derived from latest filings + current price: market cap, P/E, EPS, sector.

GET/v1/fundamentals
ParamTypeDescription
tickerrequiredstringStock ticker symbol.
Response
{
  "ticker": "AAPL",
  "market_cap": 3480000000000,
  "pe_ratio": 35.4,
  "eps_ttm": 6.49,
  "dividend_yield": 0.0044,
  "shares_outstanding": 15140000000,
  "sector": "Technology",
  "industry": "Consumer Electronics",
  "latest_filing": { "type": "10-K", "date": "2024-11-01" }
}

Errors

Errors return a non-2xx HTTP status with a JSON body containing a structured code, a human-readable message, and optional details. Every response includes an X-Request-Id header — include it in support requests.

ParamTypeDescription
400missing_param / invalid_paramMissing or malformed parameter. The details object identifies which one.
401unauthorizedMissing or invalid API key.
403plan_inactiveSubscription is canceled or past due.
404not_foundResource (ticker / filing) not found.
429rate_limitedToo many requests. Back off and retry after the Retry-After window.
500internal_errorSomething broke on our end. Retry with backoff.
Error response
{
  "error": {
    "code": "missing_param",
    "message": "Missing required parameter: ticker",
    "details": { "param": "ticker" }
  }
}

Rate limits

Free accounts: 60 requests per minute. Paid plans get higher limits — contact us if you need a custom rate. The limit is enforced per API key over a rolling 60-second window. When exceeded you'll receive a 429 response with a Retry-After header.

Response headers (sent on every request)
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 60
X-Request-Id: 9f1c8b3e-7d0f-4c2a-b5e9-1a2b3c4d5e6f
X-Response-Time-Ms: 38

Pagination. List endpoints (/filings, /insider, /clusters, /search) return up to limit rows (default 25, max 100) plus a pagination.next_cursor string. Pass it back as the cursor param to fetch the next page.

Paginated response
{
  "ticker": "AAPL",
  "data": [ /* up to limit rows */ ],
  "pagination": {
    "next_cursor": "eyJmaWxlZF9hdCI6IjIwMjQtMDgtMDFUMDA6MDA6MDBaIiwi...",
    "has_more": true,
    "limit": 25
  }
}