---
title: "Structured XBRL financial data from SEC filings"
method: POST
path: "/legal/v1/sec-xbrl"
tags: ["Legal"]
---

# Structured XBRL financial data from SEC filings

`POST /legal/v1/sec-xbrl`

## Request

- Base URL: `https://api.case.dev`
- URL: `https://api.case.dev/legal/v1/sec-xbrl`
- Auth: HTTP bearer

Retrieve structured financial values reported to the SEC in XBRL, via data.sec.gov. Use this endpoint when you need numbers (net income, assets, shares outstanding, and so on); use sec-filing to find filing documents. Three types: "concept" returns one line item for one company over time; "facts" returns a catalog of every concept a company reports (or normalized facts for the concepts you name); "frames" returns one concept across all reporting companies for one calendar period. Each fact links back to its EDGAR filing index via secUrl. The same value is re-reported in later filings as a prior-period comparative, so by default (dedupe: true) only facts the SEC assigned a calendar frame are returned; set dedupe to false for every reported fact. Free.

## Request body

- object
  - `type` 'concept' | 'facts' | 'frames', required: concept: one line item for one company over time. facts: all concepts for one company (catalog, or values for the concepts you list). frames: one concept across all companies for one period.
  - `cik` string: Company CIK, padded or unpadded (concept and facts). Provide exactly one of cik or ticker.
  - `ticker` string: Company ticker (concept and facts). Provide exactly one of cik or ticker.
  - `taxonomy` 'us-gaap' | 'ifrs-full' | 'dei' | 'srt': XBRL taxonomy. For facts it only filters the catalog and has no default.
  - `tag` string: XBRL element name such as NetIncomeLoss (required for concept and frames)
  - `concepts` string[]: facts only. "taxonomy:tag" strings or bare tags (default us-gaap). Omit to get the concept catalog, which has no values.
  - `unit` string: Unit such as USD, shares, or USD/shares. Optional filter for concept; defaults to USD for frames (the SEC URL form USD-per-shares is also accepted).
  - `period` string: frames only, required. CY2024 = annual duration, CY2024Q1 = quarterly duration, CY2024Q1I = instantaneous (balance sheet items).
  - `ciks` string[]: frames only. Restrict results to these CIKs (peer set).
  - `tickers` string[]: frames only. Restrict results to these tickers (peer set).
  - `sort` 'value_desc' | 'value_asc': frames only. Sort order by value.
  - `formTypes` string[]: concept and facts. Filter by SEC form type such as 10-K or 10-Q.
  - `fiscalPeriods` string[]: concept and facts. Filter by fiscal period.
  - `dateAfter` string, date: concept and facts. Only facts whose period end date is on or after this date (YYYY-MM-DD).
  - `dateBefore` string, date: concept and facts. Only facts whose period end date is on or before this date (YYYY-MM-DD).
  - `dedupe` boolean: concept and facts. When true, keep only facts the SEC assigned a calendar frame (its canonical fact per period), dropping prior-period comparatives re-reported in later filings. When false, return every reported fact.
  - `limit` integer: Maximum rows to return
  - `offset` integer: Result offset for pagination

## Response `200`

XBRL data retrieved successfully

- object
  - `type` 'concept' | 'facts' | 'frames'
  - `cik` string: Padded CIK (concept and facts)
  - `ticker` string, nullable
  - `entityName` string, nullable
  - `taxonomy` string, nullable
  - `tag` string: concept and frames
  - `unit` string, nullable
  - `period` string: frames only
  - `sort` string: frames only
  - `label` string, nullable
  - `description` string, nullable
  - `dedupe` boolean: concept and facts with concepts
  - `formTypes` string[]
  - `fiscalPeriods` string[]
  - `dateAfter` string, date, nullable
  - `dateBefore` string, date, nullable
  - `limit` integer
  - `offset` integer
  - `total` integer: Rows matching before pagination
  - `facts` object[]: concept, and facts when concepts is provided
    - `taxonomy` string
    - `tag` string
    - `label` string, nullable
    - `unit` string: For example USD, shares, or USD/shares
    - `value` number
    - `start` string, date, nullable: Null for instantaneous facts
    - `end` string, date
    - `fiscalYear` integer, nullable
    - `fiscalPeriod` string, nullable
    - `form` string, nullable
    - `filed` string, date, nullable
    - `accessionNumber` string, nullable
    - `frame` string, nullable: SEC calendar frame, null if not assigned
    - `cik` string
    - `entityName` string, nullable
    - `secUrl` string, nullable: EDGAR filing index URL
    - `loc` string, nullable: frames only. Reporting company location code
  - `concepts` object[]: facts without concepts: the catalog of concepts the company reports
    - `taxonomy` string
    - `tag` string
    - `label` string, nullable
    - `units` string[]
    - `factCount` integer
    - `latestPeriodEnd` string, date, nullable
  - `data` object[]: frames: one row per reporting company
    - `taxonomy` string
    - `tag` string
    - `label` string, nullable
    - `unit` string: For example USD, shares, or USD/shares
    - `value` number
    - `start` string, date, nullable: Null for instantaneous facts
    - `end` string, date
    - `fiscalYear` integer, nullable
    - `fiscalPeriod` string, nullable
    - `form` string, nullable
    - `filed` string, date, nullable
    - `accessionNumber` string, nullable
    - `frame` string, nullable: SEC calendar frame, null if not assigned
    - `cik` string
    - `entityName` string, nullable
    - `secUrl` string, nullable: EDGAR filing index URL
    - `loc` string, nullable: frames only. Reporting company location code

## Other responses

- `400`: Bad request - invalid XBRL parameters (for example a malformed frames period)
- `401`: Unauthorized - invalid API key
- `403`: Forbidden - insufficient permissions
- `404`: Ticker or CIK not found, or no XBRL data for the requested company, concept, or frame
- `503`: Service unavailable - SEC upstream unavailable or throttled

## Changes

- **2026-10-16** `a21d188f4b21`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/casemark/apis/case-dev-api/changes/legal/v1/sec-xbrl/post.md)

---

[API](https://skmtc.dev/casemark/apis/case-dev-api.md) - [All operations](https://skmtc.dev/casemark/apis/case-dev-api/llms.txt) - [OpenAPI document](https://skmtc.dev/casemark/apis/case-dev-api/revisions/9a3245c00044?raw)
