---
title: "Retrieve Document Metadata"
method: GET
path: "/api/v2/documents/{document_id}/metadata"
tags: ["Documents"]
---

# Retrieve Document Metadata

`GET /api/v2/documents/{document_id}/metadata`

Return structural metadata for a document: filing type, source document type, total character count, named sections with character counts, and a recommended_call hint that guides whether to fetch the whole document or a specific section next. The endpoint never returns the document body. Documents whose filing type is outside the allowlist return 200 with recommended_call set to not_supported and reason populated. Earnings call transcripts are excluded from whole-document access and return 403; use /documents/keyword-search to query transcript content.

## Path parameters

- `document_id` integer, required

## Response `200`

- DocumentMetadataResponse — Serializer for the GET /api/v2/documents/{id}/metadata response. Surfaces structural metadata only: document identity, filing type, section breakdown with character counts, and a ``recommended_call`` hint that downstream callers (REST /content, get_document_content MCP tool) consume to decide what to retrieve next.
  - `document_id` integer, required — Unique document identifier
  - `company_id` integer, nullable, required — Id of the company the document belongs to. Resolved from the document's direct company with a fallback to its company identifier for older rows. Callers use it to attribute document access to a company (access control and subscription).
  - `title` string, required — Human-readable document title
  - `filing_type` string, required — Type of filing (10-K, 10-Q, 8-K, News Article, Others). Transcripts are blocked on this endpoint and return 403; use /documents/keyword-search for transcript content.
  - `document_type` string, required — Source document type classification carried alongside filing_type. Useful for disambiguating the broad Others filing bucket (for example Earnings Presentation, Investor Day Presentation, 6-K).
  - `total_characters` integer, required — Total number of characters in the document text. 0 when not_supported.
  - `total_sections` integer, required — Number of named sections in the document. 0 when not_supported.
  - `available_sections` DocumentSection[], required — Named sections with character counts. Empty when not_supported.
    - `name` string, required — Display name of the section
    - `characters` integer, required — Number of characters in the section
  - `recommended_call` 'small_full' | 'large_with_section' | 'single_section_filing' | 'not_supported', required — * `small_full` - small_full * `large_with_section` - large_with_section * `single_section_filing` - single_section_filing * `not_supported` - not_supported
  - `reason` string, nullable — Populated when recommended_call is not_supported.

## Other responses

- `401`
- `403`
- `404`
- `429`
- `500`

---

[API](https://skmtc.net/daloopa/apis/daloopa-api.md) · [All operations](https://skmtc.net/daloopa/apis/daloopa-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/daloopa/daloopa-api/versions/746538a1eb45/schema)
