> ## 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 company news (batch)

> Same as GET but accepts a JSON body. Use for large `company_domains` lists that exceed URL length limits.

**Company filter precedence:** `company_id` > `company_domains` > `company_domain`. If none are provided (domain-less query), at least one date range spanning 14 days or less is required.

**Limits:** Up to 1,000 company domains.



## OpenAPI

````yaml POST /api/v1/news/company/
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/news/company/:
    post:
      tags:
        - News
      summary: Get company news (batch)
      description: >-
        Same as GET but accepts a JSON body. Use for large `company_domains`
        lists that exceed URL length limits.


        **Company filter precedence:** `company_id` > `company_domains` >
        `company_domain`. If none are provided (domain-less query), at least one
        date range spanning 14 days or less is required.


        **Limits:** Up to 1,000 company domains.
      operationId: news_company_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyNewsPostRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CompanyNewsPostRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CompanyNewsPostRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyNewsPostResponse'
              examples:
                SingleCompanyNewsPost:
                  value:
                    company_news:
                      - id: 440d9f52-275a-4d39-973f-e780a76a9bf6
                        release_date: '2026-03-02T23:18:27Z'
                        headline: Stripe Releases 1 Preview to Monetize AI Model Costs
                        short_headline: Stripe Preview
                        description: >-
                          Stripe's preview lets AI companies track, pass through
                          and mark up underlying model usage fees.
                        created_at: '2026-03-03T15:17:46.635681Z'
                        updated_at: '2026-03-03T15:17:46.635689Z'
                        articles:
                          - id: 66348676-99ee-4f5b-8d5a-61b1ae64af6e
                            link: >-
                              https://techcrunch.com/2026/03/02/stripe-wants-to-turn-your-ai-costs-into-a-profit-center
                            headline: >-
                              Stripe wants to turn your AI costs into a profit
                              center
                            short_summary: >-
                              Stripe launched a preview tool for monetizing AI
                              model costs.
                            date_published: '2026-03-02'
                            thumbnail: >-
                              https://techcrunch.com/wp-content/uploads/example.jpg
                            publication: TechCrunch
                            publication_score: 500
                        company:
                          id: 42
                          domain: stripe.com
                    meta:
                      query_type: single-company
                      companies_count: 1
                      companies:
                        - id: 42
                          domain: stripe.com
                    pagination:
                      page_size: 10
                      current_page_items: 1
                      total_items: 25
                      next_link: null
                      prev_link: null
                      next_cursor: abc124
                      prev_cursor: null
                      after_cursor: null
                      before_cursor: null
                MultiCompanyNewsPost:
                  value:
                    company_news:
                      - id: 6c5c4ff4-06a1-4417-8908-6811f3d755cc
                        release_date: '2026-03-04T12:00:53Z'
                        headline: >-
                          Polymarket Launches 12+ Iran-Related Contracts as Bets
                          Spike
                        short_headline: Polymarket Opens 12+
                        description: >-
                          Polymarket's rollout of 12+ Iran-related contracts
                          broadens geopolitical wagering, driving user
                          engagement and attracting regulatory scrutiny amid
                          record betting volume.
                        created_at: '2026-03-05T14:16:07.576136Z'
                        updated_at: '2026-03-05T14:16:07.576145Z'
                        articles:
                          - id: 01475fde-cab5-4dc6-8f59-cfca8aa6c12a
                            link: >-
                              https://www.bloomberg.com/news/articles/2026-03-04/prediction-markets-roll-out-new-war-bets-beyond-washington-reach
                            headline: >-
                              Prediction Markets Roll Out New War Bets Beyond
                              Washington's Reach
                            short_summary: >-
                              Polymarket opened more than a dozen new contracts
                              tied to the Iran conflict.
                            date_published: '2026-03-04T12:00:53Z'
                            thumbnail: null
                            publication: Bloomberg
                            publication_score: 200
                        company:
                          id: 1553
                          domain: polymarket.com
                    meta:
                      query_type: multi-company
                      companies_count: 2
                      companies:
                        - id: 1553
                          domain: polymarket.com
                        - id: 1494
                          domain: kalshi.com
                    pagination:
                      page_size: 10
                      current_page_items: 10
                      total_items: 177
                      next_link: null
                      prev_link: null
                      next_cursor: 33914659-b6bb-458e-9983-ecb70b2e1f61
                      prev_cursor: null
                      after_cursor: null
                      before_cursor: null
                  description: >-
                    Multi-company query via POST body with company_domains list.
                    Note next_link is null for POST (use page_after cursor
                    directly).
                EmptyResultsPost:
                  value:
                    company_news: []
                    meta:
                      query_type: single-company
                      companies_count: 0
                      companies: []
                    pagination: null
          description: Paginated list of company news items. Same shape as GET.
        '400':
          content:
            text/plain:
              schema:
                type: string
                example: 'Invalid domain(s): notadomain'
          description: >-
            Invalid parameters. Possible reasons: bad JSON body, invalid domain,
            invalid page_size, both page_after and page_before provided,
            malformed dates, date range exceeds 14 days for domain-less queries,
            or too many company domains.
        '404':
          content:
            text/plain:
              schema:
                type: string
                example: 'Companies not found for domain(s): johncena.com'
          description: Company or cursor not found.
      security:
        - SacraAPIAuthentication: []
components:
  schemas:
    CompanyNewsPostRequest:
      type: object
      properties:
        company_id:
          type: integer
          description: >-
            Fetch news for a single company by internal ID. Takes highest
            precedence.
        company_domain:
          type: string
          description: Fetch news for a single company by domain (e.g. `openai.com`).
        company_domains:
          type: array
          items:
            type: string
          description: List of company domains (up to 1,000).
        news_type:
          allOf:
            - $ref: '#/components/schemas/NewsTypeEnum'
          description: |-
            Filter by news importance. Default: `major`.

            * `major` - major
            * `all` - all
        page_size:
          type: integer
          description: 'Number of results per page. Default: 10, max: 50.'
        page_after:
          type: string
          description: Cursor for forward pagination.
        page_before:
          type: string
          description: Cursor for backward pagination.
        created_at_start:
          type: string
          format: date-time
          description: Filter news created on or after this datetime (ISO 8601).
        created_at_end:
          type: string
          format: date-time
          description: Filter news created on or before this datetime (ISO 8601).
        created_at_gte:
          type: string
          format: date-time
          description: Alias for `created_at_start`.
        created_at_lte:
          type: string
          format: date-time
          description: Alias for `created_at_end`.
        updated_at_gte:
          type: string
          format: date-time
          description: Filter news updated on or after this datetime (ISO 8601).
        updated_at_lte:
          type: string
          format: date-time
          description: Filter news updated on or before this datetime (ISO 8601).
        release_date_start:
          type: string
          format: date-time
          description: Filter news released on or after this datetime (ISO 8601).
        release_date_end:
          type: string
          format: date-time
          description: Filter news released on or before this datetime (ISO 8601).
        require_thumbnails:
          type: boolean
          default: false
          description: >-
            When true, articles without thumbnails fall back to the company
            logo.
    CompanyNewsPostResponse:
      type: object
      properties:
        company_news:
          type: array
          items:
            $ref: '#/components/schemas/CompanyNewsPostItem'
        meta:
          $ref: '#/components/schemas/CompanyNewsPostMeta'
        pagination:
          $ref: '#/components/schemas/CompanyNewsPostPagination'
      required:
        - company_news
        - meta
        - pagination
    NewsTypeEnum:
      enum:
        - major
        - all
      type: string
      description: |-
        * `major` - major
        * `all` - all
    CompanyNewsPostItem:
      type: object
      properties:
        id:
          type: string
        release_date:
          type: string
          nullable: true
        headline:
          type: string
        short_headline:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        articles:
          type: array
          items:
            $ref: '#/components/schemas/CompanyNewsPostArticle'
        company:
          $ref: '#/components/schemas/CompanyNewsPostCompanyRef'
      required:
        - articles
        - company
        - created_at
        - description
        - headline
        - id
        - release_date
        - short_headline
        - updated_at
    CompanyNewsPostMeta:
      type: object
      properties:
        query_type:
          type: string
          description: One of `single-company`, `multi-company`, `domain-less`.
        companies_count:
          type: integer
        companies:
          type: array
          items:
            $ref: '#/components/schemas/CompanyNewsPostMetaCompany'
      required:
        - companies
        - companies_count
        - query_type
    CompanyNewsPostPagination:
      type: object
      properties:
        page_size:
          type: integer
        current_page_items:
          type: integer
        total_items:
          type: integer
        next_link:
          type: string
          nullable: true
        prev_link:
          type: string
          nullable: true
        next_cursor:
          type: string
          nullable: true
        prev_cursor:
          type: string
          nullable: true
        after_cursor:
          type: string
          nullable: true
        before_cursor:
          type: string
          nullable: true
      required:
        - after_cursor
        - before_cursor
        - current_page_items
        - next_cursor
        - next_link
        - page_size
        - prev_cursor
        - prev_link
        - total_items
    CompanyNewsPostArticle:
      type: object
      properties:
        id:
          type: string
        link:
          type: string
        headline:
          type: string
        short_summary:
          type: string
          nullable: true
        date_published:
          type: string
          nullable: true
        thumbnail:
          type: string
          nullable: true
        publication:
          type: string
          nullable: true
        publication_score:
          type: integer
          nullable: true
      required:
        - date_published
        - headline
        - id
        - link
        - publication
        - publication_score
        - short_summary
        - thumbnail
    CompanyNewsPostCompanyRef:
      type: object
      properties:
        id:
          type: integer
        domain:
          type: string
      required:
        - domain
        - id
    CompanyNewsPostMetaCompany:
      type: object
      properties:
        id:
          type: integer
        domain:
          type: string
      required:
        - domain
        - id
  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>`

````