DEVELOPER

API Reference

Everything you need to integrate Irora SEC into your application.

12 min read

Getting Started

The Irora SEC API provides programmatic access to SEC filings, insider trades, AI-powered search, and real-time alerts. All endpoints return JSON and follow REST conventions.

Base URL for all requests:

Base URLhttps://api.irora.com/v1

Quick Start

  1. Generate an API key from the Developer Dashboard
  2. Include it in the Authorization header
  3. Make your first request
# Fetch the latest 10-K filings for Apple
curl -X GET "https://api.irora.com/v1/filings?ticker=AAPL&formType=10-K&limit=5" \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json"

Authentication

All API requests require a valid API key sent via the Authorization header using the Bearer token scheme. API keys can be created and managed from the Developer Dashboard.

http
Authorization: Bearer sk_live_your_api_key
Live Keys

Prefixed with sk_live_. Use in production. All requests count against your rate limit.

Test Keys

Prefixed with sk_test_. Returns mock data. Free and unlimited for development purposes.

Security Note

Never expose your API key in client-side code, public repositories, or browser requests. Always make API calls from your server.

Endpoints

All endpoints are relative to the base URL https://api.irora.com/v1

GET/filings

Retrieve a paginated list of SEC filings. Filter by ticker, form type, date range, and more.

tickerformTypestartDateendDatelimitoffset
Example Request
bash
curl -X GET "https://api.irora.com/v1/filings?ticker=AAPL&formType=10-K&limit=10" \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json"
Example Response
json
{
  "data": [
    {
      "accession": "0000320193-25-000106",
      "formType": "10-K",
      "company": "Apple Inc",
      "ticker": "AAPL",
      "filedAt": "2025-10-31T16:30:00Z",
      "periodOfReport": "2025-09-27",
      "url": "https://sec.gov/Archives/..."
    }
  ],
  "pagination": {
    "total": 847,
    "limit": 10,
    "offset": 0,
    "hasMore": true
  }
}
GET/filings/:id

Retrieve a single filing by its accession number. Includes full document text, AI summary, and extracted entities.

Example Request
bash
curl -X GET "https://api.irora.com/v1/filings/0000320193-25-000106" \
  -H "Authorization: Bearer sk_live_your_api_key"
Example Response
json
{
  "accession": "0000320193-25-000106",
  "formType": "10-K",
  "company": "Apple Inc",
  "ticker": "AAPL",
  "filedAt": "2025-10-31T16:30:00Z",
  "summary": "Apple reported FY2025 revenue of $412B...",
  "riskFactors": ["AI regulation", "Supply chain"],
  "entities": [
    { "name": "Tim Cook", "role": "CEO" }
  ],
  "documentUrl": "https://sec.gov/Archives/..."
}
GET/insider-trades

List recent insider transactions (Form 4 filings). Filter by ticker, insider name, transaction type, and minimum value.

tickerinsiderNametransactionTypeminValuelimit
Example Request
bash
curl -X GET "https://api.irora.com/v1/insider-trades?ticker=NVDA&transactionType=BUY&limit=20" \
  -H "Authorization: Bearer sk_live_your_api_key"
Example Response
json
{
  "data": [
    {
      "id": "txn_8f2a1b",
      "ticker": "NVDA",
      "insiderName": "Jensen Huang",
      "title": "CEO",
      "transactionType": "BUY",
      "shares": 50000,
      "pricePerShare": 84.12,
      "totalValue": 4206000,
      "filedAt": "2026-02-22T14:00:00Z"
    }
  ],
  "pagination": { "total": 156, "limit": 20, "offset": 0 }
}
POST/search

Full-text semantic search across all filings. Supports natural language queries, boolean operators, and AI-powered relevance ranking.

Example Request
bash
curl -X POST "https://api.irora.com/v1/search" \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "artificial intelligence risk factors",
    "formTypes": ["10-K", "10-Q"],
    "dateRange": { "from": "2025-01-01", "to": "2026-02-27" },
    "limit": 10
  }'
Example Response
json
{
  "results": [
    {
      "accession": "0000320193-25-000106",
      "company": "Apple Inc",
      "ticker": "AAPL",
      "formType": "10-K",
      "relevanceScore": 0.94,
      "snippet": "...the company faces risks related to artificial intelligence regulation...",
      "highlightedText": "...risks related to <em>artificial intelligence</em>..."
    }
  ],
  "meta": {
    "totalResults": 234,
    "queryTimeMs": 142,
    "model": "irora-semantic-v2"
  }
}
GET/watchlists

Retrieve the authenticated user's watchlists and tracked tickers. Includes filing counts and last activity timestamps.

Example Request
bash
curl -X GET "https://api.irora.com/v1/watchlists" \
  -H "Authorization: Bearer sk_live_your_api_key"
Example Response
json
{
  "watchlists": [
    {
      "id": "wl_abc123",
      "name": "Tech Majors",
      "tickers": ["AAPL", "MSFT", "NVDA", "TSLA", "META"],
      "filingCount": 847,
      "lastActivity": "2026-02-27T14:23:07Z",
      "alerts": 2
    }
  ]
}

Try It

Enter a ticker symbol and form type below to see a sample API response. This demo uses mock data to simulate a real API call.

Search Filings
GET/v1/filings/search

Webhooks

Webhooks allow you to receive real-time notifications when events occur. Configure webhook endpoints from the Developer Dashboard and subscribe to the events you care about.

Available Events
filing.new

Triggered when a new SEC filing is published that matches your watchlist or filters.

filing.amended

Triggered when an existing filing is amended or restated.

insider_trade.new

Triggered when a new Form 4 insider transaction is detected.

alert.triggered

Triggered when one of your custom alerts fires based on your configured conditions.

json
{
  "event": "filing.new",
  "timestamp": "2026-02-27T14:23:07Z",
  "data": {
    "accession": "0000320193-26-000042",
    "formType": "10-K",
    "company": "Apple Inc",
    "ticker": "AAPL",
    "filedAt": "2026-02-27T14:20:00Z"
  },
  "webhook_id": "wh_abc123",
  "signature": "sha256=a1b2c3d4..."
}

Signature Verification

Every webhook includes a signature header computed using your webhook secret. Always verify the signature before processing the payload.

Rate Limits

Rate limits are applied per API key on a rolling 24-hour window. When you exceed the limit, the API returns 429 with a Retry-After header.

PlanDaily LimitBurst RateWebhooks
Explorer1,00010/sec1
Pro10,00050/sec5
Enterprise100,000200/secUnlimited
http
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 8753
X-RateLimit-Reset: 1708876800
Retry-After: 3600  # Only present on 429 responses

SDKs & Libraries

Official client libraries for popular languages. All SDKs are open source and available on GitHub.

JavaScript / TypeScriptstable
npm install @irora-dev/sdk
Pythonstable
pip install irora-sdk
Gobeta
go get github.com/irora/go-sdk
typescript
import { IroraSEC } from "@irora-dev/sdk";

const client = new IroraSEC({
  apiKey: process.env.IRORA_API_KEY,
});

// Search filings with AI
const results = await client.search({
  query: "artificial intelligence risk factors",
  formTypes: ["10-K"],
  limit: 10,
});

// Get insider trades
const trades = await client.insiderTrades.list({
  ticker: "NVDA",
  transactionType: "BUY",
});

// Subscribe to webhooks
await client.webhooks.create({
  url: "https://api.myapp.com/webhooks/irora",
  events: ["filing.new", "insider_trade.new"],
});

Frequently Asked Questions