5-Minute Quickstart

Get up and running with the Kaleidoscope API in under 5 minutes. We'll take you from signup to your first successful API call.

1 Get Your API Key

  1. Sign up at api.kscope.io/signup
  2. Log in to your dashboard
  3. Find your API key in the dashboard

API Access Tiers:

  • Free: 300 calls/month
  • Starter: 100,000 calls/month
  • Business: 300,000 calls/month
  • Custom: Unlimited calls + enterprise features

Keep your API key secure: Never commit it to GitHub, use environment variables in production

2 Test Your Authentication

cURL
# Replace YOUR_API_KEY with your actual key
curl 'https://api.kscope.io/auth-test?key=YOUR_API_KEY'

✅ Success Response:

{"status": "success", "message": "Authenticated"}

3 Your First Real API Call - Search SEC Filings

Search for Apple's SEC filings
curl 'https://api.kscope.io/v3/sec/search/AAPL?key=YOUR_API_KEY&content=sec&limit=3'
View example response
{
  "data": [
    {
      "cik": 320193,
      "company_name": "Apple Inc.",
      "date": 1730419200,
      "filer": "Apple Inc.",
      "form": "10-Q",
      "form_desc": "Quarterly report [Sections 13 or 15(d)]",
      "form_group": "Quarterly Reports",
      "acc": "0000320193-24-000123",
      "html": "https://cdn.kscope.io/abc123def456.html",
      "pdf": "https://cdn.kscope.io/abc123def456.pdf",
      "ticker": "AAPL"
    }
  ],
  "total": 2004,
  "status": "success"
}

4 Understanding the Response

Key Fields
  • ticker - Stock symbol
  • form - Filing type (10-K, 10-Q, 8-K)
  • date - Unix timestamp
  • pdf - Direct link to PDF
  • html - Direct link to HTML
Response Structure
  • data - Array of filings
  • total - Total results available
  • status - Request status

5 Try Different Searches

Search only 10-K annual reports

curl 'https://api.kscope.io/v3/sec/search/AAPL?key=YOUR_API_KEY&content=sec&form=10-K&limit=5'

Search with keyword

curl 'https://api.kscope.io/v3/sec/search/AAPL?key=YOUR_API_KEY&content=sec&exp=revenue&limit=5'

Search exhibits instead of main filings

curl 'https://api.kscope.io/v3/sec/search/AAPL?key=YOUR_API_KEY&content=exhibits&limit=5'

Quick Reference

Rate Limit: 3,600 requests/hour

Base URL: https://api.kscope.io

Support: support@kscope.io

Dashboard: api.kscope.io/dashboard

Authentication

Use your key for all requests. Get your key now.

Authentication

All requests require an API key. API keys never expire automatically - they remain valid until manually deleted in your dashboard.

Inputs

Parameter Type Description
API-KEY String Generated through the developer portal (Required)

SEC Filings

Access a comprehensive dataset of SEC filings from the 1990s to present. Filings are processed within seconds of publication by the SEC.

Filing Search

Search over 18M SEC filings with keywords, Boolean expressions, and 20+ filters. All filing types supported. Data available from the 1990s to present.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to ticker, CIK (Required)
content String Content to search against. Available values: sec, exhibits, agreements (Required)
limit Int Maximum number of results to return (default: 100, max: 100)
offset Int Used as a way to page through data
start_date Int Start from a date with a timestamp (Unix Timestamp)
end_date Int End at a date with a timestamp (Unix Timestamp)
exp Enterprise String Boolean expression
form String Restrict results to passed form(s). Use ; between forms to pass more than one form

Filing Search

Search over 18M SEC filings with keywords, Boolean expressions, and 20+ filters. All filing types supported. Data available from the 1990s to present.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to ticker, CIK (Required)
content String Content to search against. Available values: sec, exhibits, agreements (Required)
limit Int Maximum number of results to return (default: 100, max: 100)
start Int Used as a way to page through data. If end is 100 then the next start be 100
sd Int Start from a date with a timestamp (Unix Timestamp)
ed Int End at a date with a timestamp (Unix Timestamp)
exp Enterprise String Boolean expression
form String Restrict results to passed form(s). Use ; between forms to pass more than one form

Filing Search with Boolean Expression Enterprise

Enterprise feature: Search over 18M SEC filings using advanced boolean expressions. Supports all filing types from the 1990s to present.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
key String API key for authentication (Required)
exp String Boolean expression for search (Required)
content String Content to search against. Available values: sec, exhibits, agreements. Defaults to sec
limit Int Maximum number of results to return (default: 100, max: 100)
offset Int Number of results to skip for pagination (e.g., 100 to skip first 100 results)
start_date Int Start date for search as Unix timestamp. Defaults to 4 years ago
end_date Int End date for search as Unix timestamp. Defaults to current date

Filing Search Realtime

Get all SEC filings for the current UTC day. Returns the latest filings across all companies.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
key String API key for authentication (Required)
content String Content to search against. Available values: sec, exhibits, agreements. Defaults to sec
limit Int Maximum number of results to return (default: 100, max: 100)
start Int Number of results to skip for pagination (e.g., 100 to skip first 100 results)

Holdings

Retrieve equity holdings from Form 13F filings for institutional managers with $100M+ in assets.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to cusip, ticker, CIK (Required)
type String Format: HTML, PDF, Word, XLS, XBRL, XBRL-HTML (Required)
limit Int Maximum number of results to return (default: 100, max: 100)

Form D - Private Securities Offerings

Access exempt registrations for small companies and funds pre-IPO.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to acc, CIK (Required)
limit Int Maximum number of results to return (default: 100, max: 100)

Form C - Crowdfunding

Retrieve crowdfunding offering statements filed via Form C.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to acc, CIK (Required)
limit Int Maximum number of results to return (default: 100, max: 100)

Form 144 - Restricted Sales

Retrieve Form 144 filings for proposed sales of restricted or control securities by providing an identifier (accession number, timestamp, SEC file number, or issuer CIK) and optional filters.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Unique identifier: accession number (e.g., '0001234567-23-000123'), timestamp (e.g., '1234567890'), SEC file number (e.g., '001-40244'), or issuer CIK (e.g., '0001840776') (Required)
name_of_person String Name of the insider (e.g., 'KAUFFMAN ROBERT I')
notice_date String Exact notice date of the filing (format: YYYY-MM-DD, e.g., '2025-04-28')
notice_date_gte String Start date for notice date range (format: YYYY-MM-DD, e.g., '2025-04-01')
notice_date_lte String End date for notice date range (format: YYYY-MM-DD, e.g., '2025-04-30')
securities_exchange_name String Stock exchange (e.g., 'NYSE', 'NASDAQ')
broker_name String Broker name (e.g., 'Merrill Lynch')
issuer_city String City of the issuer (e.g., 'TRAVERSE CITY')
limit Int Number of results to return (1 to 10000, default=50)
offset Int Number of results to skip for pagination (default: 0)
sort_by String Sort field: 'notice_date' or 'acc_stamp' (default='notice_date')
sort_order String Sort order: 'asc' or 'desc' (default='desc')

Insider Transactions

Fetch insider transaction details for non-derivative and derivative securities.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to ticker, CIK (Required)
limit Int Maximum number of results to return (default: 100, max: 100)
start Int Start results from
sd String Start date
ed String End date

Compensation Summary

Fetch summary compensation data for key executives.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to acc, CIK, ticker (Required)
sort String Sort retrieved data by asc or desc
year Int Filter retrieved data by specific year

Compensation Director

Retrieve compensation data for company directors.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to acc, CIK, ticker (Required)
sort String Sort retrieved data by asc or desc
year Int Filter retrieved data by specific year

Corporate Actions

Search corporate actions reported in Form 8-K.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to ticker, CIK (Required)
limit Int Maximum number of results to return (default: 100, max: 100)

Stocks

Get intraday and end-of-day stock data from NASDAQ with 15-minute delay for real-time quotes.

Stock Real-Time Enterprise

Access real-time stock prices with a 15-minute delay. Data from NASDAQ exchange.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
API-KEY String API key (Required)

Stock Historical Enterprise

Retrieve historical stock prices and performance indicators.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
limit Int Maximum number of results to return (default: 100, max: 100)
sd String Start date as a timestamp
ed String End date as a timestamp

Stock Delayed Enterprise

Enterprise feature: Access delayed stock prices and performance indicators. Requires enterprise tier access.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
ticker String Restrict results to ticker (Required)
limit Int Maximum number of results to return (default: 100, max: 100)
start_date String Start date as a timestamp
end_date String End date as a timestamp

Wealth

Access detailed information about insider activities, including search, gifts, bios, sales, compensation, and holdings.

Gifts Enterprise

Retrieve all gift transactions for a person, identified by CIK.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Inputs

Parameter Type Description
key String API key (Required)
cik Integer CIK identifier (Required)

Bios Enterprise

Retrieve all identified bios for a person, identified by CIK.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Inputs

Parameter Type Description
key String API key (Required)
cik Integer CIK identifier (Required)

Sales Enterprise

Retrieve all sales transactions for a person, identified by CIK. Typically includes transaction codes [S,D].

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Inputs

Parameter Type Description
key String API key (Required)
cik Integer CIK identifier (Required)

Compensation Enterprise

Retrieve all compensation data for a person, identified by CIK. Includes summary and/or director compensation.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Inputs

Parameter Type Description
key String API key (Required)
cik Integer CIK identifier (Required)

Holdings Enterprise

Retrieve all holdings (common shares) data for a person, identified by CIK.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Inputs

Parameter Type Description
key String API key (Required)
cik Integer CIK identifier (Required)

SEDAR

Access Canadian securities filings via the SEDAR system since 1997.

SEDAR

Retrieve individual SEDAR filings for Canadian companies.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to cusip, ticker, CIK (Required)
limit Int Maximum number of results to return (default: 100, max: 100)
page Int Returns a page of data
symbol String DEC:CA

Press Releases

Access press releases for companies using ticker symbols.

Press Releases

Fetch the latest press releases by ticker symbol.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
identifier String Restrict results to a ticker (Required)
limit Int Maximum number of results to return (default: 100, max: 100)
start Int Used as a way to page through data. If end is 100 then the next start be 100
year Int Filter retrieved data by specific year
sort String Sort retrieved data by asc or desc
sd Int Start from a date with a timestamp (Unix Timestamp)
ed Int End at a date with a timestamp (Unix Timestamp)

Realtime Transcripts Enterprise

Fetch the latest transcripts for the current day in Eastern Standard Time (EST, UTC-5).

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
key String API key for authentication (Required)

Historical Transcripts Enterprise

Fetch historical transcripts with optional filters for ticker, date, date range, call title, and status. Use 'limit' and 'offset' for pagination to navigate through large result sets.

Rate Limit
Limit: 3,600 requests/hour
Reset: Rolling hourly window
Returns 429 status with reset_in field showing seconds until limit resets

Parameters

Parameter Type Description
key String API key for authentication (Required)
ticker String Restrict results to a specific ticker symbol (e.g., TSLA)
date String Filter by a specific date (e.g., 2025-03-03)
start_date String Start of date range (e.g., 2025-01-01)
end_date String End of date range (e.g., 2025-06-30)
call_title String Keywords to search in call title (case-insensitive, e.g., Q4)
status String Filter by transcript status (e.g., COMPLETED)
limit Int Maximum number of results to return (default: 100, max: 100)
offset Int Number of results to skip for pagination (default: 0)

Rate Limits

Understand API rate limiting and how to optimize your usage. Monitor your limits through response headers.

Rate Limiting Overview Dev

All API endpoints are rate-limited to ensure fair usage and system stability. Rate limits are applied per API key on an hourly rolling window.

Rate Limiting Details

Aspect Value Description
Default Limit 3,600/hour Standard rate limit for all API endpoints
Time Window 1 hour Rolling window that resets every hour on the hour
Reset Time Top of hour Limits reset at :00 of each hour (e.g., 1:00, 2:00, 3:00)
Error Code 429 HTTP status returned when rate limit exceeded
Retry After Variable Seconds until the next hour boundary (provided in error response)

Error Codes

Understand API error codes and their meanings. All errors return a consistent JSON structure with code, type, and message fields.

API Error Codes Dev

The API returns standardized error responses to help you handle issues programmatically. Every error includes detailed information to help you identify and resolve the issue quickly.

Error Code Reference

HTTP Code Error Type Common Causes & Solutions
400 INPUT Bad Request
• Missing required parameters
• Invalid date format (use Unix timestamp)
• Invalid ticker symbol
• Malformed JSON body
Solution: Check parameter names and formats
401 AUTH Unauthorized
• Missing API key parameter
• Invalid or expired API key
• Key suspended or revoked
Solution: Verify your API key at api.kscope.io/dashboard
403 PERMISSION Forbidden
• Endpoint requires premium/enterprise tier
• Missing specific permissions
• IP restrictions in place
Solution: Upgrade your plan or contact support
404 DATA Not Found
• Invalid endpoint URL
• Resource doesn't exist (e.g., invalid CIK)
• Data not available for date range
Solution: Verify endpoint path and identifiers
429 RATELIMIT Too Many Requests
• Exceeded hourly rate limit
• Too many concurrent requests
• Burst limit exceeded
Solution: Implement rate limiting and retry logic
500 SERVER_ERROR Internal Server Error
• Unexpected server error
• Database connection issue
• Unhandled exception
Solution: Retry after a few seconds. If persists, contact support