API documentation ยท five-minute setup

Call by CIK. Get data you can trace.

Create a key, call by CIK, ticker, or accession, and inspect the filing, document, section, fact, or source context behind the response. The walkthrough uses real AMPX history, not toy payloads.

Example issuer

AMPX

CIK 0001899287

Indexed history

2021+

Earliest indexed filing: 2021-12-15

Sample filing

10-K

0001899287-26-000015

Five-minute setup

Product-data calls use an API key in Authorization: Bearer .... Create and manage your keys in the SourceKeel dashboard.

The response snippets on this page are selected fields from real AMPX API responses. Full responses include the remaining source context, rows, links, downloadable references, and failure state where applicable.

Run the API now. Use sk_demo_ampx_readonly_v1 to try the GTM endpoint catalog with AMPX (CIK 0001899287). Use your own API key when you need other companies.
How SourceKeel handles missing data. Every value is traceable to a filing. When data is unavailable you get a structured sourcekeel.failure.v1 envelope — never a wrong or invented number. A 404 with reason: not_materialized means the company is known but the requested coverage is not ready; check coverage before retrying.
1

Use the AMPX demo key immediately, or create an account and get your own key for other companies.

2

Check coverage for the company/feature you want (cheap, uncounted).

3

Call with a Bearer key. Use CIK for stable identity; tickers are aliases.

4

Follow links, objects, and applicable_extractions back to source.

export SOURCEKEEL_BASE_URL=https://api.sourcekeel.com
export SOURCEKEEL_API_KEY=sk_demo_ampx_readonly_v1

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

Send Accept-Encoding: gzip for large JSON responses. Authenticate with Authorization: Bearer (or the X-SourceKeel-Key header). Company, filing, fact, section, and document endpoints return complete responses; search and feed endpoints use limit and cursor.

Check coverage before you pull

A cheap, uncounted pre-flight: does SourceKeel have this company and feature? Use it to request only data marked ready.

curl -s "$SOURCEKEEL_BASE_URL/v1/coverage?identifier=AMPX&feature=financials" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"
# -> {"company_known":true,"status":"ready", ...}
# status is one of: ready | not_materialized
# an unknown company returns 404 company_not_found

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 shows the available coverage and the response schema in use.

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/filings?cik=0001899287",
    "documents": "/v1/documents?cik=0001899287",
    "facts": "/v1/companies/0001899287/facts",
    "financials": "/v1/companies/0001899287/financials",
    "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",
  "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. Top-level flags describe the current conclusion; superseded notices remain available in events and historical evidence.

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,
  "as_of": "2026-07-02",
  "delisting_date": null,
  "deregistration_date": null,
  "flags": {
    "delisting_notice": false,
    "prior_delisting": true,
    "prior_delisting_notice": 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/filings?cik=0001899287" \
  -H "Authorization: Bearer $SOURCEKEEL_API_KEY"
{
  "object": "list",
  "schema": "sourcekeel.filing_query.v1",
  "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",
  "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.

The default response is a company-level metric overview and labels values that come from an earlier period. Add statement=income_statement|balance_sheet|cash_flow_statement|stockholders_equity for a period-coherent statement with classified components and reconciliation. Compact keeps the accounting values and provenance; full adds selection and diagnostic evidence.

GET /v1/companies/0001899287/financials
GET /v1/companies/0001315098/financials?statement=cash_flow_statement&periods=2026Q1&view=compact
{
  "schema": "sourcekeel.normalized_company_financials.v2",
  "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.v2",
  "periods": [
    {
      "period_end": "2026-03-31",
      "total_revenue": 28536000,
      "groups": [
        {
          "group": "product_service",
          "reconciliation_status": "reconciled",
          "reconciliation_basis": "whole_structural_group",
          "source_measure": "{http://fasb.org/us-gaap/2025}RevenueFromContractWithCustomerExcludingAssessedTax",
          "source_unit": "iso4217:USD",
          "coverage_pct": 99.3,
          "segments": [
            {
              "segment_name": "Sale of battery products",
              "source_measure": "{http://fasb.org/us-gaap/2025}RevenueFromContractWithCustomerExcludingAssessedTax",
              "source_unit": "iso4217:USD",
              "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/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
    }
  ]
}

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 filing text such as MD&A, business, financial statements, or risk factors. SourceKeel returns the text, section boundaries, confidence evidence, and 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 a returned file

Start with filing metadata, company profile, or an endpoint response that includes object_key and object_url.

Some responses include authenticated file references. Use /objects/{object_key} to retrieve the referenced JSON, text, source package, or export. Source identity uses the SEC accession and form; origin URLs are intentionally omitted from API responses.

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",
  "raw_source_available": true,
  "documents": [
    {
      "document": "ampx-20251231.htm",
      "document_kind": "primary",
      "object_key": "sec/documents/1899287/000189928726000015/ampx-20251231.htm",
      "object_url": "/objects/sec/documents/1899287/000189928726000015/ampx-20251231.htm",
      "available": true,
      "text_available": true
    }
  ]
        }

Failure envelopes

Start with the endpoint-specific section above when you need the success shape. This section shows the failure shape for unavailable data and missing references.

A successful 2xx response never contains a top-level error or failure_reason. Every response includes an X-Request-Id header for support and tracing. Request failures use the relevant 4xx or 5xx status and repeat that identifier as request_id in this structured envelope. Availability details may still appear on individual fields or rows inside an otherwise successful resource.

GET /v1/filings/0001899287-26-000045/cover-securities
{
  "schema": "sourcekeel.failure.v1",
  "object": "error",
  "error": {
    "code": "object_not_found",
    "message": "The requested data 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 data is not available."
  }
}
GET /v1/filings/0001899287-26-000015/sections/item999
{
  "schema": "sourcekeel.failure.v1",
  "object": "error",
  "error": {
    "code": "section_not_materialized",
    "message": "The filing is covered, but this section is not available for the requested item.",
    "status": 404,
    "type": "not_found_error"
  },
  "failure_reason": {
    "code": "section_not_materialized",
    "evidence": {
      "accession": "0001899287-26-000015",
      "item_code": "item999",
      "extraction_status": "not_materialized"
    },
    "message": "The filing is covered, but this section is not available for the requested item."
  }
}
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 production-ready GTM endpoint catalog. Use the left rail to expand a section and inspect one endpoint at a time.

Trying the reference? The AMPX demo key sk_demo_ampx_readonly_v1 is already loaded, so Try works immediately. Open Authentication only to use your own sk_live_ key and call other companies.