API docs ยท 5 minute setup

Source-backed SEC data in one request.

Create a key, call with a CIK, and follow the source links back to the filing, document, section, fact, or bulk object. These examples use AMPX, a locally materialized issuer, so the walkthrough shows real company history instead of a toy payload.

Example issuer

AMPX

CIK 0001899287

Indexed history

2021+

Earliest local filing: 2021-12-15

Sample filing

10-K

0001899287-26-000015

Five-minute setup

Keys look like sk_live_xxxxxxxx. Authenticate with a Bearer key. Get JSON back. That's the whole API.

The response snippets on this page are selected fields from real AMPX responses pulled through a local SourceKeel API backed by materialized product objects. Full API responses include the remaining source evidence, rows, links, object keys, and failure state where applicable. The repository also includes docs/ampx-endpoint-examples.md, a generated capture of every documented endpoint against AMPX.

1

Sign up and create a key in the dashboard.

2

Export the base URL and key in your shell.

3

Use CIK for stable identity. Tickers are aliases.

4

Start with company or filing metadata, then follow links.

export SOURCEKEEL_BASE_URL=https://www.sourcekeel.com
export SOURCEKEEL_API_KEY=sk_live_xxx

curl -s "$SOURCEKEEL_BASE_URL/v1/companies/0001899287" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"

Send Accept-Encoding: gzip for large JSON responses. Materialized company, filing, fact, section, and document endpoints return complete source-backed objects; search and feed endpoints use limit and cursor.

1. Resolve and inspect a company

Company lookup

Use CIK when you have it. If you have a ticker, resolve it first, then store and call by CIK.

curl -s "$SOURCEKEEL_BASE_URL/v1/companies/lookup?ticker=AMPX" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"
{
  "company": {
    "cik": "0001899287",
    "ticker": "AMPX",
    "name": "Amprius Technologies, Inc.",
    "exchange": "NYSE",
    "profile_object": "/objects/companies/cik/0001899287/profile.json",
    "schema_latest_object": "/objects/companies/cik/0001899287/schema/latest.json",
    "revenue_segments_latest_object": "/objects/companies/cik/0001899287/features/revenue_segments/latest.json"
  },
  "lookup": { "identifier": "AMPX", "resolved_by": "ticker_active_alias" },
  "recommended_identifier": "cik"
}

Company profile

Start with company lookup if you only have a ticker. Use the returned CIK here.

The company profile tells you what SourceKeel has materialized and which schema is being used.

curl -s "$SOURCEKEEL_BASE_URL/v1/companies/0001899287" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"
{
  "company": {
    "cik": "0001899287",
    "ticker": "AMPX",
    "name": "Amprius Technologies, Inc.",
    "sic": "3690",
    "sic_description": "Miscellaneous Electrical Machinery, Equipment & Supplies",
    "ticker_aliases": [
      { "ticker": "AMPX", "active": true, "exchange": "NYSE" },
      { "ticker": "AMPX-WT", "active": true, "exchange": "NYSE" }
    ]
  },
  "coverage": {
    "earliest_filing_indexed": "2021-12-15",
    "latest_filing_indexed": "2026-06-17",
    "available_documents": 79,
    "facts_total": 5492,
    "sections_total": 360,
    "forms_available": ["10-K", "10-Q", "144", "4", "424B3", "424B7", "8-K", "DEF 14A", "S-4", "SC 13D"]
  },
  "links": {
    "filings": "/v1/companies/0001899287/filings",
    "documents": "/v1/companies/0001899287/documents",
    "facts": "/v1/companies/0001899287/facts",
    "financials": "/v1/companies/0001899287/financials/latest",
    "schema": "/v1/companies/0001899287/schema",
    "securities": "/v1/companies/0001899287/securities",
    "security_lifecycle": "/v1/companies/0001899287/security-lifecycle"
  }
}

Company securities

Start with company profile if you need the CIK or want to confirm this surface is available.

Use this when you need to separate common stock from warrants, units, preferred stock, notes, or other listed classes.

curl -s "$SOURCEKEEL_BASE_URL/v1/companies/0001899287/securities" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"
{
  "schema": "sourcekeel.company_securities.v1",
  "failure_reason": null,
  "as_of": "2026-07-02",
  "source_form": "10-K",
  "source_accession": "0001899287-26-000015",
  "source_filed_date": "2026-03-06",
  "sec_ticker_mapping": {
    "tickers": ["AMPX", "AMPX-WT"],
    "disagreements": [],
    "symbol_variants": [
      { "cover_symbol": "AMPX.W", "ticker_file_symbol": "AMPX-WT" }
    ]
  },
  "securities": [
    {
      "trading_symbol": "AMPX",
      "title_of_class": "Common Stock, par value $0.0001 per share",
      "security_type": "common_stock",
      "exchange": "NYSE",
      "registration_section": "12b",
      "confidence": 0.98
    },
    {
      "trading_symbol": "AMPX.W",
      "title_of_class": "Redeemable Warrants",
      "security_type": "warrant",
      "exchange": "NYSE",
      "registration_section": "12b",
      "confidence": 0.95
    }
  ]
}

Security lifecycle

Start with company securities when you need class-level context for ticker symbols, warrants, units, or listed classes.

Use this when you need SEC-filing-backed active, delisted, deregistered, and lifecycle event evidence for a company.

curl -s "$SOURCEKEEL_BASE_URL/v1/companies/0001899287/security-lifecycle" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"
{
  "schema": "sourcekeel.security_lifecycle.v1",
  "status": "active",
  "status_confidence": 0.92,
  "failure_reason": null,
  "as_of": "2026-07-02",
  "delisting_date": null,
  "deregistration_date": null,
  "flags": {
    "delisting_notice": true,
    "prior_delisting": true,
    "needs_cover_page_enrichment": false,
    "sec_mapping_disagrees": false
  },
  "events": [
    { "event_type": "registration_statement", "form": "S-1", "accession": "0001193125-22-013880" },
    { "event_type": "registration_statement", "form": "S-1/A", "accession": "0001193125-22-037353" }
  ],
  "boundary": "Classes and lifecycle status are SEC-filing-backed. OTC trading after delisting and non-SEC venue events are outside this surface."
}

2. Pick a filing and follow its available surfaces

Company filings

Start with company profile if you need the CIK or want to inspect the available filing and document coverage.

curl -s "$SOURCEKEEL_BASE_URL/v1/companies/0001899287/filings" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"
{
  "feature": "filing_index",
  "data": [
    {
      "accession": "0001899287-26-000045",
      "form": "10-Q",
      "filing_date": "2026-05-07",
      "accepted_at": "2026-05-07 21:52:27+01",
      "period_end_date": "2026-03-31",
      "primary_document": "ampx-20260331.htm"
    },
    {
      "accession": "0001899287-26-000015",
      "form": "10-K",
      "filing_date": "2026-03-06",
      "accepted_at": "2026-03-06 21:21:25+00",
      "period_end_date": "2025-12-31",
      "primary_document": "ampx-20251231.htm"
    }
  ]
}

Filing metadata

Start with company filings if you need an accession number.

For one filing, the metadata is the menu. applicable_extractions tells you what can be pulled and whether it is a document pointer, fact object, section extraction, or typed extraction.

curl -s "$SOURCEKEEL_BASE_URL/v1/filings/0001899287-26-000015" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"
{
  "accession": "0001899287-26-000015",
  "form": "10-K",
  "filing_date": "2026-03-06",
  "period_end_date": "2025-12-31",
  "primary_document": "ampx-20251231.htm",
  "primary_document_url": "https://www.sec.gov/Archives/edgar/data/1899287/000189928726000015/ampx-20251231.htm",
  "is_inline_xbrl": true,
  "applicable_extractions": [
    { "surface": "source_package", "status": "ready", "endpoint": "/v1/filings/0001899287-26-000015/source-package" },
    { "surface": "documents", "status": "available", "endpoint": "/v1/filings/0001899287-26-000015/documents" },
    { "surface": "revenue_segments", "status": "success", "row_count": 2, "endpoint": "/v1/filings/0001899287-26-000015/revenue-segments" },
    { "surface": "sections", "status": "success", "endpoint": "/v1/filings/0001899287-26-000015/sections" },
    { "surface": "facts", "status": "success", "row_count": 763, "endpoint": "/v1/filings/0001899287-26-000015/facts" }
  ]
}

3. Pull financials, facts, segments, and filing text

Normalized financials

Start with company profile if you need the CIK or want to confirm the financials object is available.

Use this when you need dashboard-ready financial statements. SourceKeel returns the latest four quarters, normalized metrics, derived margins and growth, and source evidence.

GET /v1/companies/0001899287/financials/latest
{
  "schema": "sourcekeel.normalized_company_financials.v1",
  "status": "success",
  "latest_four_quarters": {
    "period_count": 4,
    "periods": [
      { "fiscal_year": 2025, "fiscal_period": "Q2", "period_end": "2025-06-30" },
      { "fiscal_year": 2025, "fiscal_period": "Q3", "period_end": "2025-09-30" },
      { "fiscal_year": 2025, "fiscal_period": "Q4", "period_end": "2025-12-31" },
      { "fiscal_year": 2026, "fiscal_period": "Q1", "period_end": "2026-03-31" }
    ],
    "sample_quarter": {
      "period": { "fiscal_year": 2026, "fiscal_period": "Q1", "period_end": "2026-03-31" },
      "metrics": {
        "revenue": 28536000,
        "gross_profit": 5740000,
        "operating_income": -6687000,
        "net_income": -5046000,
        "cash": 62352000,
        "operating_cash_flow": -37275000,
        "capex": 980000,
        "free_cash_flow": -38255000,
        "basic_shares": 136947076,
        "diluted_shares": 136947076
      },
      "derived_metrics": {
        "gross_margin": 20.1149,
        "operating_margin": -23.4336,
        "revenue_qoq_growth": 13.0855,
        "revenue_yoy_growth": 152.889
      }
    }
  }
}

Revenue segments

Start with normalized financials when you need total revenue for segment reconciliation.

Use this when you need revenue mix by reported dimension without summing incompatible segment views together. SourceKeel returns grouped segments, reconciliation status, coverage, warnings, and source evidence.

GET /v1/companies/0001899287/revenue-segments/latest
{
  "schema": "sourcekeel.revenue_segments.v1",
  "periods": [
    {
      "period_end": "2026-03-31",
      "total_revenue": 28536000,
      "groups": [
        {
          "group": "product_service",
          "reconciliation_status": "reconciled",
          "coverage_pct": 99.3,
          "segments": [
            { "segment_name": "Sale of battery products", "value": 28336000, "share_pct": 99.3 }
          ],
          "warnings": ["dimension groups are alternative breakdowns and should not be summed together"]
        },
        {
          "group": "geography",
          "reconciliation_status": "reconciled",
          "coverage_pct": 100
        }
      ]
    }
  ]
}

Applied schema

Start with company profile if you need the SIC and schema family SourceKeel assigned.

Use this when you need to see which sector schema SourceKeel applied and which canonical tags drive the normalized outputs. AMPX uses electrical_equipment_company.v1.

GET /v1/companies/0001899287/schema
{
  "schema_used": {
    "schema_id": "electrical_equipment_company.v1",
    "display_name": "Electrical equipment",
    "sic_rules": ["3600", "3612", "3613", "3620", "3621"],
    "status": "best_effort"
  },
  "metrics": {
    "assets": { "canonical_tag": "Assets" },
    "capex": { "canonical_tag": "PaymentsToAcquirePropertyPlantAndEquipment" },
    "cash": { "canonical_tag": "CashAndCashEquivalentsAtCarryingValue" },
    "revenue": { "canonical_tag": "Revenues" }
  }
}

Raw facts

Start with applied schema if you need to compare normalized fields against the accepted raw/source tags.

Use this when you need the source-backed escape hatch instead of the normalized schema output. SourceKeel returns canonical tags, raw/source tags, units, periods, values, and filing evidence.

GET /v1/companies/0001899287/facts/all/latest
{
  "schema": "sourcekeel.company_facts.v1",
  "data": [
    {
      "accession": "0001899287-26-000045",
      "form": "10-Q",
      "period_end_date": "2026-03-31",
      "canonical_tag": "Revenues",
      "raw_tag": "us-gaap:Revenues",
      "unit": "USD",
      "value": 28536000,
      "source_url": "https://www.sec.gov/Archives/edgar/data/1899287/000189928726000045/ampx-20260331.htm"
    }
  ]
}

Filing sections

Start with filing metadata if you need the accession number and want to confirm section extraction is available for that filing.

Use this when you need extracted filing text such as MD&A, business, financial statements, or risk factors. SourceKeel returns text, parser evidence, section boundaries, and the source document reference.

GET /v1/filings/0001899287-26-000015/sections/item7
{
  "schema": "sourcekeel.section.v1",
  "accession": "0001899287-26-000015",
  "item_code": "item7",
  "title": "Management's Discussion and Analysis",
  "extraction_status": "success",
  "word_count": 7008,
  "evidence": { "boundary_confidence": 0.94 },
  "clean_text_sample": "Item 7. Management's Discussion and Analysis of Financial Condition and Results of Operations..."
}

4. Download the source-backed object

Start with filing metadata, company profile, or any endpoint response that includes an object key.

API rows return object keys. Use /objects/{object_key} when you want authenticated, cached access to the generated JSON/text/blob behind the API response. Document rows also include the original SEC URL for direct inspection.

curl -L "$SOURCEKEEL_BASE_URL/objects/filings/accession/0001899287-26-000015/source_manifest.json" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY" \
  -o ampx-source-manifest.json
{
  "accession": "0001899287-26-000015",
  "form": "10-K",
  "primary_document": "ampx-20251231.htm",
  "primary_document_url": "https://www.sec.gov/Archives/edgar/data/1899287/000189928726000015/ampx-20251231.htm",
  "raw_source_available": true,
  "documents": [
    {
      "document": "ampx-20251231.htm",
      "document_kind": "primary",
      "document_url": "https://www.sec.gov/Archives/edgar/data/1899287/000189928726000015/ampx-20251231.htm",
      "object": "/objects/sec/documents/1899287/000189928726000015/ampx-20251231.htm",
      "available": true,
      "text_available": true
    }
  ]
        }

Bulk downloads

Start with objects if you need the single-object retrieval path before using the mirror/export path.

Bulk is the warehouse/export path for large mirrors. Normal object endpoints are for one company, filing, manager, fund, or security. Bulk routes return bulk_export metadata; fetch the returned object_url to download the compressed jsonl.gz archive.

curl -s "$SOURCEKEEL_BASE_URL/v1/bulk/facts" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"

curl -L "$SOURCEKEEL_BASE_URL/objects/bulk/facts/latest.jsonl.gz" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY" \
  -o sourcekeel-facts.jsonl.gz

Failure envelopes and pending validation

Start with the endpoint-specific section above when you need the success shape. This section shows the failure shape for unavailable data, missing objects, and plan-gated exports.

Failures are explicit JSON objects. The examples below were captured from AMPX through the local API without deleting materialized data. request_id changes on every request. See docs/ampx-endpoint-examples.md for the full endpoint capture.

GET /v1/bulk/facts
{
  "schema": "sourcekeel.failure.v1",
  "object": "error",
  "error": {
    "code": "mirror_plan_required",
    "message": "Bulk mirror exports require Mirror access.",
    "status": 403,
    "type": "authentication_error"
  },
  "failure_reason": {
    "code": "mirror_plan_required",
    "evidence": {
      "object": "/objects/bulk/facts/latest.jsonl.gz",
      "plan": "test"
    },
    "message": "Bulk mirror exports require Mirror access."
  }
}
GET /v1/public-offering-structures?cik=0001899287
{
  "schema": "sourcekeel.failure.v1",
  "object": "error",
  "error": {
    "code": "public_offering_structures_bulk_not_available",
    "message": "The public offering structures bulk object is not available yet.",
    "status": 404,
    "type": "not_found_error"
  },
  "failure_reason": {
    "code": "public_offering_structures_bulk_not_available",
    "evidence": { "object": "/objects/bulk/public_offering_structures/latest.jsonl.gz" },
    "message": "The public offering structures bulk object is not available yet."
  }
}
GET /v1/filings/0001899287-26-000045/cover-securities
{
  "schema": "sourcekeel.failure.v1",
  "object": "error",
  "error": {
    "code": "object_not_found",
    "message": "The requested source-backed object is not available.",
    "status": 404,
    "type": "not_found_error"
  },
  "failure_reason": {
    "code": "object_not_found",
    "evidence": { "object": "/objects/filings/accession/0001899287-26-000045/cover_securities.json" },
    "message": "The requested source-backed object is not available."
  }
}
GET /v1/companies/0001899287/filings/0001899287-26-000015/sections/item999
{
  "schema": "sourcekeel.section.v1",
  "accession": "0001899287-26-000015",
  "item_code": "item999",
  "extraction_status": "not_materialized",
  "word_count": 0,
  "failure_reason": {
    "code": "section_not_materialized",
    "message": "The filing is indexed, but section extraction output has not been generated for this item."
  }
}

AMPX pending validation: the full endpoint capture found local global index gaps for company search, feature manifest, feed indexes, schema catalog, and public-offering search; parser validation gaps for Schedule 13D/G activism/beneficial ownership, Form D private offerings, Form 144 proposed sales, and subsidiaries; and filing-level missing objects for extraction index, filing schema, and section schema output.

sourcekeel jobs enqueue-publish-trunk \
  --cik 0001899287 \
  --requested-leaf offering_surfaces \
  --force

sourcekeel jobs enqueue-product-publish --bulk

sourcekeel jobs enqueue-publish-trunk \
  --cik 0001899287 \
  --requested-leaf monolith_publish \
  --force
Complete reference

Rendered API reference

This reference is rendered from openapi.json. It shows authentication, parameters, response schemas, examples, and try-it controls for the full SourceKeel API. Use the left rail to expand a section and inspect one endpoint at a time.