> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sacra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a document

> Returns the full document content including structured sections, table of contents, metadata, and preview information.

You can retrieve the `document_slug` through the `slug` attribute on any Document or Company. The **Get a company** endpoint includes a `slug` attribute for both the company itself and each document in the `documents` array.

**Supported document types:**
- `market` — market research reports
- `company` — company one-pagers
- `interview` — interview transcripts

The document body is parsed into navigable **sections** with `prev_section` / `next_section` links and a `table_of_contents` for quick navigation. Image elements include responsive `srcset` URLs.



## OpenAPI

````yaml GET /api/v1/documents/{document_slug}/
openapi: 3.0.3
info:
  title: Sacra API
  version: 1.0.0
  description: >-
    The Sacra API currently supports querying News, Documents, Companies and
    Categories that enable you to use Sacra research within your own
    application.


    ## **Getting started guide**


    To start using the APIs, you need to:


    - Only available to **Platforms** and **Funds** tier members. (See
    [here](https://sacra.com/pricing/))
        
    - You must use a valid API Key to send requests to the API endpoints. You
    can generate your API key in the Api Keys section of your [Organization
    Settings](https://sacra.com/orgs/settings/general/).
        
    - The API returns request responses in JSON format. When an API request
    returns an error, it is sent in the JSON response as an error key.
        

    ## Authentication


    The Sacra API uses Tokens for authentication.


    You can generate a Sacra API Key/Token in the Api Keys section of your
    [Organization Settings](https://sacra.com/orgs/settings/general/).


    You must include an API Key/Token in each request to the Sacra API with the
    **Authorization** request header.


    ### Authentication error response


    If a Token is missing, malformed, or invalid, you will receive an HTTP 401
    Unauthorized response code.


    ### **Need some help?**


    In case you have questions, we will eventually provide tutorials and a FAQ
    page. But for now you can check out the
    [#developers](https://discord.gg/mTswyV8gg3) channel in our community
    [Discord](https://discord.gg/mTswyV8gg3), there’s a good chance our
    community has an answer for you.


    ## Authorization


    | **Key** | **Value** |

    | --- | --- |

    | Authorization | Token {{API_KEY}} |
servers:
  - url: https://sacra.com
    description: Production
security: []
tags:
  - name: Companies
  - name: Categories
  - name: Events
  - name: News
  - name: Documents
  - name: Filings
  - name: Embeds
  - name: Metrics
  - name: Funding (Legacy)
paths:
  /api/v1/documents/{document_slug}/:
    get:
      tags:
        - Documents
      summary: Get a document
      description: >-
        Returns the full document content including structured sections, table
        of contents, metadata, and preview information.


        You can retrieve the `document_slug` through the `slug` attribute on any
        Document or Company. The **Get a company** endpoint includes a `slug`
        attribute for both the company itself and each document in the
        `documents` array.


        **Supported document types:**

        - `market` — market research reports

        - `company` — company one-pagers

        - `interview` — interview transcripts


        The document body is parsed into navigable **sections** with
        `prev_section` / `next_section` links and a `table_of_contents` for
        quick navigation. Image elements include responsive `srcset` URLs.
      operationId: documents_detail
      parameters:
        - in: path
          name: document_slug
          schema:
            type: string
          description: >-
            URL-friendly document slug (lowercase, hyphen-separated). e.g.
            `cursor`, `kraken-at-1-5b-up-128-yoy`.
          required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentDetailResponse'
              examples:
                CompanyDocument:
                  value:
                    type: company
                    slug: cursor
                    title: Cursor
                    last_publication_date: '2025-02-04T00:00:00-04:56'
                    metadata:
                      total_sections: 6
                      reading_time: 7
                      has_images: true
                      total_elements: 53
                    preview:
                      title: Cursor
                      image: >-
                        https://images.prismic.io/sacra/Z0Sul68jQArT1Sb7_cursorlogo.png?auto=format,compress
                      description: >-
                        Cursor is an AI-powered code editor that helps
                        developers write, edit, and automate coding tasks with
                        built-in AI assistance.
                    pdf_url: https://sacra-pdfs.s3.us-east-2.amazonaws.com/cursor.pdf
                    web_url: https://sacra.com/c/cursor/
                    content:
                      sections:
                        - id: revenue
                          type: section
                          title: Revenue
                          level: 1
                          elements:
                            - text: Revenue
                              type: heading2
                              spans: []
                            - id: Z6LHi5bqstJ9-O2A
                              type: image
                              url: >-
                                https://images.prismic.io/sacra/Z6LHi5bqstJ9-O2A_cursorRevenue.png?auto=format,compress
                              dimensions:
                                width: 840
                                height: 856
                              srcset:
                                small: >-
                                  https://images.prismic.io/sacra/Z6LHi5bqstJ9-O2A_cursorRevenue.png?auto=format,compress&w=400
                                medium: >-
                                  https://images.prismic.io/sacra/Z6LHi5bqstJ9-O2A_cursorRevenue.png?auto=format,compress&w=800
                                large: >-
                                  https://images.prismic.io/sacra/Z6LHi5bqstJ9-O2A_cursorRevenue.png?auto=format,compress&w=1200
                                original: >-
                                  https://images.prismic.io/sacra/Z6LHi5bqstJ9-O2A_cursorRevenue.png?auto=format,compress
                              caption: Image for Revenue
                            - text: >-
                                Sacra estimates that Cursor hit $100M in annual
                                recurring revenue (ARR) at the end of 2024, up
                                9,900% YoY from $1M in 2023.
                              type: paragraph
                              spans: []
                          prev_section: null
                          next_section: product
                      table_of_contents:
                        - id: revenue
                          title: Revenue
                          level: 1
                          subsections: []
                        - id: product
                          title: Product
                          level: 1
                          subsections: []
                        - id: competition
                          title: Competition
                          level: 1
                          subsections:
                            - id: github-microsoft-bundlenomics
                              title: GitHub + Microsoft bundlenomics
                              level: 2
                            - id: shift-from-tools-to-agents
                              title: Shift from tools to agents
                              level: 2
                InterviewDocument:
                  value:
                    type: interview
                    slug: arjun-sethi-kraken-nasdaq-of-crypto
                    title: >-
                      Arjun Sethi, co-CEO of Kraken, on building the Nasdaq of
                      crypto
                    last_publication_date: '2025-02-23T00:00:00Z'
                    metadata:
                      total_sections: 2
                      reading_time: 22
                      has_images: false
                      total_elements: 90
                    preview:
                      title: >-
                        Arjun Sethi, co-CEO of Kraken, on building the Nasdaq of
                        crypto
                      image: >-
                        https://images.prismic.io/sacra/Z7vRRJ7c43Q3gG8U_Group132-1-.png?auto=format,compress
                      description: Sacra interview with Arjun Sethi, co-CEO of Kraken.
                    pdf_url: >-
                      https://sacra-pdfs.s3.us-east-2.amazonaws.com/arjun-sethi-kraken-nasdaq-of-crypto.pdf
                    web_url: https://sacra.com/d/arjun-sethi-kraken-nasdaq-of-crypto/
                    content:
                      sections:
                        - id: background
                          type: section
                          title: Background
                          level: 1
                          elements: []
                          prev_section: null
                          next_section: interview
                      table_of_contents:
                        - id: background
                          title: Background
                          level: 1
                          subsections: []
                        - id: interview
                          title: Interview
                          level: 1
                          subsections: []
          description: ''
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentDetailErrorResponse400'
              examples:
                InvalidSlug:
                  value:
                    message: >-
                      Invalid slug format. Please use only lowercase letters,
                      numbers, and hyphens.
          description: Invalid slug format.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentDetailErrorResponse404'
              examples:
                DocumentNotFound:
                  value:
                    message: Document not found
          description: Document not found or no content.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentDetailErrorResponse500'
              examples:
                DocumentServerError:
                  value:
                    message: Unexpected document parsing error
          description: Internal server error.
      security:
        - SacraAPIAuthentication: []
components:
  schemas:
    DocumentDetailResponse:
      type: object
      properties:
        type:
          type: string
          description: One of `market`, `company`, `interview`.
        slug:
          type: string
        title:
          type: string
        last_publication_date:
          type: string
        metadata:
          $ref: '#/components/schemas/DocumentDetailMetadata'
        preview:
          $ref: '#/components/schemas/DocumentPreview'
        pdf_url:
          type: string
          nullable: true
        web_url:
          type: string
          nullable: true
        content:
          $ref: '#/components/schemas/DocumentDetailContent'
      required:
        - content
        - last_publication_date
        - metadata
        - pdf_url
        - preview
        - slug
        - title
        - type
        - web_url
    DocumentDetailErrorResponse400:
      type: object
      properties:
        message:
          type: string
      required:
        - message
    DocumentDetailErrorResponse404:
      type: object
      properties:
        message:
          type: string
      required:
        - message
    DocumentDetailErrorResponse500:
      type: object
      properties:
        message:
          type: string
      required:
        - message
    DocumentDetailMetadata:
      type: object
      properties:
        total_sections:
          type: integer
        reading_time:
          type: integer
          description: Estimated reading time in minutes.
        has_images:
          type: boolean
        total_elements:
          type: integer
      required:
        - has_images
        - reading_time
        - total_elements
        - total_sections
    DocumentPreview:
      type: object
      properties:
        title:
          type: string
        image:
          type: string
          format: uri
          nullable: true
        description:
          type: string
          nullable: true
      required:
        - description
        - image
        - title
    DocumentDetailContent:
      type: object
      properties:
        sections:
          type: array
          items:
            $ref: '#/components/schemas/Section'
        table_of_contents:
          type: array
          items:
            $ref: '#/components/schemas/TableOfContentsItem'
      required:
        - sections
        - table_of_contents
    Section:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        title:
          type: string
        level:
          type: integer
        elements:
          type: array
          items:
            type: object
            additionalProperties: {}
        next_section:
          type: string
          nullable: true
        prev_section:
          type: string
          nullable: true
      required:
        - elements
        - id
        - level
        - title
        - type
    TableOfContentsItem:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        level:
          type: integer
        subsections:
          type: array
          items:
            type: object
            additionalProperties: {}
      required:
        - id
        - level
        - title
  securitySchemes:
    SacraAPIAuthentication:
      type: apiKey
      in: header
      name: Authorization
      description: |-
        Authenticate using one of two formats:

        - **Organization/user token:** `Token <your-token>`
        - **Stytch JWT:** `Bearer <your-jwt>`

````