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

# List Research Reports

> One row per published research report, keyed by reportID: title, slug, hook, summary, the full markdown body, publish and update times, reading time, subscription tier, and the authors, tags and assets it covers. Covers every kind of published content, so filter on reportType or category to narrow.



## OpenAPI

````yaml api-reference/data-api/openapi.json GET /query/tabular/research-reports
openapi: 3.0.0
info:
  description: >-
    The Blockworks Data API is a unified, read-only REST interface to
    Blockworks' warehouse-modeled crypto dataset, powered by Messari's research
    and data infrastructure. It serves two kinds of models: tabular models,
    which return current, filterable, sortable rows for entities such as assets,
    networks, protocols, exchanges, stablecoins, and ETFs; and timeseries
    models, which return historical metric series at a chosen granularity for
    one or many entities. Every endpoint shares the same query grammar (column
    projection, per-column filters, sorting, and pagination) and returns the
    standard `{ "error": ..., "data": ... }` envelope. Authenticate by sending
    your API key in the `X-Blockworks-API-Key` header.
  title: Blockworks Data API
  version: 0.1.0
servers:
  - description: Blockworks API
    url: https://api.blockworks.com
security:
  - apiKey: []
tags:
  - description: 'Models documented under Acquisitions: Acquisition Deals (table).'
    name: Acquisitions
  - description: >-
      Models documented under Assets: Assets (table), Asset Marketcap
      (timeseries), Asset Price (timeseries), Asset Sharpe (timeseries), Asset
      Supply (timeseries), Asset Volatility (timeseries).
    name: Assets
  - description: >-
      Models documented under Blockchains: Blockchains (table), Blockchains
      (timeseries).
    name: Blockchains
  - description: >-
      Models documented under Derivatives: Perpetual Markets (table), Perpetual
      Markets (timeseries).
    name: Derivatives
  - description: >-
      Models documented under Digital Asset Treasuries: DAT Companies (table),
      DAT Company Assets (table), DAT Companies (timeseries), DAT Companies by
      Asset (timeseries).
    name: Digital Asset Treasuries
  - description: >-
      Models documented under ETFs: ETF Assets (table), ETF Providers (table),
      ETF Assets (timeseries), ETF Providers (timeseries).
    name: ETFs
  - description: >-
      Models documented under Exchanges: Exchange Country (timeseries), Exchange
      Region (timeseries), Exchange Type (timeseries), Exchanges (timeseries).
    name: Exchanges
  - description: >-
      Models documented under Funding Rounds: Funding Round Investors (table),
      Funding Rounds (table), Sector Fundraising (timeseries).
    name: Funding Rounds
  - description: >-
      Models documented under Funds & Investors: Fund Managers (table), Funds
      (table).
    name: Funds & Investors
  - description: >-
      Models documented under Launchpads: Launchpad Chains (table), Launchpads
      (table), Launchpads (timeseries), Launchpads by Chain (timeseries).
    name: Launchpads
  - description: >-
      Models documented under Lending Protocols: Lending Protocol Product
      Markets (table), Lending Protocol Products (table), Lending Protocols
      (table), Lending Protocols (timeseries), Lending Protocols by Product
      (timeseries), Lending Protocols by Product Market (timeseries).
    name: Lending Protocols
  - description: >-
      Models documented under Market Overview: Sector Marketdata (timeseries),
      Sub-Sector Marketdata (timeseries).
    name: Market Overview
  - description: 'Models documented under Markets: Market (BQEN) (timeseries).'
    name: Markets
  - description: >-
      Models documented under News & Research: News Feed (table), Research
      Reports (table), Topics (timeseries).
    name: News & Research
  - description: >-
      Models documented under Perp DEXes: Perp DEX Protocols (table), Perp DEX
      Protocols (timeseries).
    name: Perp DEXes
  - description: 'Models documented under Projects & Entities: Projects (timeseries).'
    name: Projects & Entities
  - description: >-
      Models documented under Protocol Revenue: Protocol Revenue (timeseries),
      Protocol Revenue by Product (timeseries).
    name: Protocol Revenue
  - description: >-
      Models documented under Social & Mindshare: Asset Group Sentiment
      (timeseries), Asset Investor Mentions (timeseries), Asset Mindshare
      (timeseries), Asset Sentiment (timeseries), Project Mindshare
      (timeseries), Sector Asset Mindshare (timeseries), Sector Asset Sentiment
      (timeseries), Sector Investor Mentions (timeseries), Sub-Sector Asset
      Mindshare (timeseries), Sub-Sector Asset Sentiment (timeseries).
    name: Social & Mindshare
  - description: >-
      Models documented under Spot DEXes: Spot DEX Protocol Chains (table), Spot
      DEX Protocols (table), Spot DEX Protocols (timeseries), Spot DEX Protocols
      by Chain (timeseries).
    name: Spot DEXes
  - description: >-
      Models documented under Stablecoins: Stablecoin Chains (table), Stablecoin
      Currencies (table), Stablecoin FX Pairs (table), Stablecoin Issuers
      (table), Stablecoin Products (table), Stablecoin Reserve Entities (table),
      Stablecoin FX (timeseries), Stablecoin Reserves (timeseries), Stablecoins
      by Chain (timeseries), Stablecoins by Currency (timeseries), Stablecoins
      by Issuer (timeseries), Stablecoins by Product (timeseries).
    name: Stablecoins
  - description: >-
      Models documented under TCG Platforms: TCG Platform Chains (table), TCG
      Platforms by Chain (timeseries).
    name: TCG Platforms
  - description: >-
      Discovery of the tabular models: one row per entity, with per-column
      filters, sorting and pagination.
    name: Tabular
  - description: >-
      Discovery of the timeseries models: one series per entity, as points at
      the granularities each model declares.
    name: Timeseries
  - description: >-
      Models documented under Token Transparency Framework: Token Transparency
      Filing Questions (table), Token Transparency Filing Schemas (table), Token
      Transparency Filings (table), Token Transparency Projects (table).
    name: Token Transparency Framework
  - description: >-
      Models documented under Tokenized Commodities: Tokenized Commodities
      (table), Tokenized Commodity Chains (table), Tokenized Commodity Issuers
      (table), Tokenized Commodity Products (table), Tokenized Commodities by
      Chain (timeseries), Tokenized Commodities by Commodity (timeseries),
      Tokenized Commodities by Issuer (timeseries), Tokenized Commodities by
      Product (timeseries).
    name: Tokenized Commodities
  - description: >-
      Models documented under Tokenized Equities: Tokenized Equities (table),
      Tokenized Equity Chains (table), Tokenized Equity Issuers (table),
      Tokenized Equity Products (table), Tokenized Equities by Chain
      (timeseries), Tokenized Equities by Equity (timeseries), Tokenized
      Equities by Issuer (timeseries), Tokenized Equities by Product
      (timeseries).
    name: Tokenized Equities
  - description: >-
      Models documented under Vaults: Vault Chains (table), Vault Curators
      (table), Vault Protocols (table), Vault Curators (timeseries), Vault
      Protocols (timeseries), Vaults by Chain (timeseries).
    name: Vaults
paths:
  /query/tabular/research-reports:
    get:
      tags:
        - News & Research
      summary: List Research Reports
      description: >-
        One row per published research report, keyed by reportID: title, slug,
        hook, summary, the full markdown body, publish and update times, reading
        time, subscription tier, and the authors, tags and assets it covers.
        Covers every kind of published content, so filter on reportType or
        category to narrow.
      operationId: getTabular_research_reports
      parameters:
        - description: Report ID equals.
          in: query
          name: reportIDEq
          schema:
            type: string
        - description: Report ID is one of (comma-separated).
          in: query
          name: reportIDIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Title equals.
          in: query
          name: titleEq
          schema:
            type: string
        - description: Title is one of (comma-separated).
          in: query
          name: titleIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Title contains (case-insensitive substring).
          in: query
          name: titleContains
          schema:
            type: string
        - description: Slug equals.
          in: query
          name: slugEq
          schema:
            type: string
        - description: Slug is one of (comma-separated).
          in: query
          name: slugIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Slug contains (case-insensitive substring).
          in: query
          name: slugContains
          schema:
            type: string
        - description: Publish Date equals.
          in: query
          name: publishDateEq
          schema:
            format: date-time
            type: string
        - description: Publish Date is greater than.
          in: query
          name: publishDateGt
          schema:
            format: date-time
            type: string
        - description: Publish Date is greater than or equal to.
          in: query
          name: publishDateGte
          schema:
            format: date-time
            type: string
        - description: Publish Date is less than.
          in: query
          name: publishDateLt
          schema:
            format: date-time
            type: string
        - description: Publish Date is less than or equal to.
          in: query
          name: publishDateLte
          schema:
            format: date-time
            type: string
        - description: Created At is greater than.
          in: query
          name: createdAtGt
          schema:
            format: date-time
            type: string
        - description: Created At is greater than or equal to.
          in: query
          name: createdAtGte
          schema:
            format: date-time
            type: string
        - description: Created At is less than.
          in: query
          name: createdAtLt
          schema:
            format: date-time
            type: string
        - description: Created At is less than or equal to.
          in: query
          name: createdAtLte
          schema:
            format: date-time
            type: string
        - description: Updated At is greater than.
          in: query
          name: updatedAtGt
          schema:
            format: date-time
            type: string
        - description: Updated At is greater than or equal to.
          in: query
          name: updatedAtGte
          schema:
            format: date-time
            type: string
        - description: Updated At is less than.
          in: query
          name: updatedAtLt
          schema:
            format: date-time
            type: string
        - description: Updated At is less than or equal to.
          in: query
          name: updatedAtLte
          schema:
            format: date-time
            type: string
        - description: Reading Time In Minutes is greater than.
          in: query
          name: readingTimeInMinutesGt
          schema:
            type: number
        - description: Reading Time In Minutes is greater than or equal to.
          in: query
          name: readingTimeInMinutesGte
          schema:
            type: number
        - description: Reading Time In Minutes is less than.
          in: query
          name: readingTimeInMinutesLt
          schema:
            type: number
        - description: Reading Time In Minutes is less than or equal to.
          in: query
          name: readingTimeInMinutesLte
          schema:
            type: number
        - description: Subscription Tier equals.
          in: query
          name: subscriptionTierEq
          schema:
            type: string
        - description: Subscription Tier is one of (comma-separated).
          in: query
          name: subscriptionTierIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Subscription Tier is not one of (comma-separated).
          in: query
          name: subscriptionTierIsNotOneOf
          schema:
            items:
              type: string
            type: array
        - description: Report Type equals.
          in: query
          name: reportTypeEq
          schema:
            type: string
        - description: Report Type is one of (comma-separated).
          in: query
          name: reportTypeIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Report Type is not one of (comma-separated).
          in: query
          name: reportTypeIsNotOneOf
          schema:
            items:
              type: string
            type: array
        - description: Category equals.
          in: query
          name: categoryEq
          schema:
            type: string
        - description: Category is one of (comma-separated).
          in: query
          name: categoryIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Category is not one of (comma-separated).
          in: query
          name: categoryIsNotOneOf
          schema:
            items:
              type: string
            type: array
        - description: Asset IDs array includes.
          in: query
          name: assetIDsIncludes
          schema:
            type: string
        - description: Asset IDs array does not include.
          in: query
          name: assetIDsNotIncludes
          schema:
            type: string
        - description: Asset IDs array includes any of (comma-separated).
          in: query
          name: assetIDsIncludesAnyOf
          schema:
            items:
              type: string
            type: array
        - description: Asset IDs array includes none of (comma-separated).
          in: query
          name: assetIDsNotIncludesAnyOf
          schema:
            items:
              type: string
            type: array
        - description: Author Names array includes.
          in: query
          name: authorNamesIncludes
          schema:
            type: string
        - description: Author Names array does not include.
          in: query
          name: authorNamesNotIncludes
          schema:
            type: string
        - description: Author Names array includes any of (comma-separated).
          in: query
          name: authorNamesIncludesAnyOf
          schema:
            items:
              type: string
            type: array
        - description: Author Names array includes none of (comma-separated).
          in: query
          name: authorNamesNotIncludesAnyOf
          schema:
            items:
              type: string
            type: array
        - description: Tag Names array includes.
          in: query
          name: tagNamesIncludes
          schema:
            type: string
        - description: Tag Names array does not include.
          in: query
          name: tagNamesNotIncludes
          schema:
            type: string
        - description: Tag Names array includes any of (comma-separated).
          in: query
          name: tagNamesIncludesAnyOf
          schema:
            items:
              type: string
            type: array
        - description: Tag Names array includes none of (comma-separated).
          in: query
          name: tagNamesNotIncludesAnyOf
          schema:
            items:
              type: string
            type: array
        - description: Field to sort by; defaults to the model's default sort column.
          in: query
          name: sortBy
          schema:
            default: publishDate
            enum:
              - title
              - publishDate
              - createdAt
              - updatedAt
              - readingTimeInMinutes
            type: string
        - description: Sort direction.
          in: query
          name: sortDirection
          schema:
            default: asc
            enum:
              - asc
              - desc
            type: string
        - description: 1-based page number.
          in: query
          name: page
          schema:
            type: integer
        - description: Rows per page (max 1000, default 100).
          in: query
          name: pageSize
          schema:
            type: integer
        - description: Comma-separated fields to return; defaults to all fields.
          in: query
          name: selections
          schema:
            items:
              enum:
                - reportID
                - title
                - slug
                - hook
                - summary
                - content
                - publishDate
                - createdAt
                - updatedAt
                - readingTimeInMinutes
                - subscriptionTier
                - reportType
                - category
                - previewImageURL
                - assetIDs
                - assets
                - authorNames
                - authors
                - tagNames
                - tags
              type: string
            type: array
        - description: >-
            Response format, overriding the Accept header: json (default), csv,
            or jsonl (NDJSON). csv and jsonl return the rows as a downloadable
            file.
          in: query
          name: acceptFormat
          schema:
            default: json
            enum:
              - json
              - csv
              - jsonl
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - assetIDs:
                      - <assetIDs>
                    assets:
                      - {}
                    authorNames:
                      - <authorNames>
                    authors:
                      - {}
                    category: <category>
                    content: <content>
                    createdAt: '2024-01-01T00:00:00Z'
                    hook: <hook>
                    previewImageURL: <previewImageURL>
                    publishDate: '2024-01-01T00:00:00Z'
                    readingTimeInMinutes: 123.45
                    reportID: <reportID>
                    reportType: <reportType>
                    slug: <slug>
                    subscriptionTier: <subscriptionTier>
                    summary: <summary>
                    tagNames:
                      - <tagNames>
                    tags:
                      - {}
                    title: <title>
                    updatedAt: '2024-01-01T00:00:00Z'
                error: null
                metadata:
                  totalPages: 1
                  totalRows: 1
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/ResearchReportsRow'
                    type: array
                  error:
                    nullable: true
                    type: string
                  metadata:
                    description: >-
                      Pagination totals for the full filtered result set,
                      independent of the current page.
                    properties:
                      totalPages:
                        format: int64
                        type: integer
                      totalRows:
                        format: int64
                        type: integer
                    required:
                      - totalRows
                      - totalPages
                    type: object
                required:
                  - data
                  - metadata
                type: object
            application/x-ndjson:
              schema:
                description: JSON Lines (NDJSON); one JSON object per line.
                type: string
            text/csv:
              schema:
                description: CSV with a header row; one row per record.
                type: string
          description: >-
            One page of matching rows, with the totals for the whole filtered
            set.
        '400':
          content:
            application/json:
              example:
                data: null
                error: unknown query parameter "reportID"
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The request is malformed: an unknown query parameter (a filter needs
            its operator suffix, such as reportIDEq), a filter value of the
            wrong type, a sortBy field that is not sortable, an unknown
            selections field, or a pageSize above 1000.
        '401':
          content:
            application/json:
              example:
                data: null
                error: this model requires authentication
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: No API key was sent and the model requires one.
        '403':
          content:
            application/json:
              example:
                data: null
                error: this model requires the "news_research_unified" permission
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The API key is not valid, or does not hold the
            "news_research_unified" permission.
        '404':
          content:
            application/json:
              example:
                data: null
                error: tabular model "unknown-model" not found
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The path names a model that does not exist: the slug is mistyped or
            the model was removed.
components:
  schemas:
    ResearchReportsRow:
      properties:
        assetIDs:
          description: >-
            Asset IDs the research report covers. Use it to find every report
            written about an asset.
          items:
            type: string
          nullable: true
          type: array
        assets:
          description: >-
            Assets the research report covers, including id, name, symbol and
            slug. Only published assets resolve, so a report may carry an
            assetID with no matching entry here.
          items:
            type: object
          nullable: true
          type: array
        authorNames:
          description: Names of the research report's authors. Use it to filter by author.
          items:
            type: string
          nullable: true
          type: array
        authors:
          description: >-
            Authors of the research report, including id, name, image and
            linkedinUrl.
          items:
            type: object
          nullable: true
          type: array
        category:
          description: >-
            The editorial category of the research report (e.g. Standard
            Reports, Deep Dives, Quarterly Reports, Recaps). Null for content
            that carries no category.
          nullable: true
          type: string
        content:
          description: >-
            The full body of the research report as markdown. Omit it from
            selections to page through reports without transferring the bodies.
          nullable: true
          type: string
        createdAt:
          description: When the research report was first created in the content system.
          format: date-time
          nullable: true
          type: string
        hook:
          description: A one-line hook introducing the research report.
          nullable: true
          type: string
        previewImageURL:
          description: URL of the preview image for the research report.
          nullable: true
          type: string
        publishDate:
          description: >-
            When the research report was published. Reports embargoed for a
            future date are not returned until that date passes.
          format: date-time
          nullable: true
          type: string
        readingTimeInMinutes:
          description: The estimated time to read the research report, in minutes.
          nullable: true
          type: number
        reportID:
          description: The unique identifier of the research report.
          nullable: true
          type: string
        reportType:
          description: >-
            The kind of content the row is (e.g. research, enterprise_research,
            hub, summary, blog, podcast, strapi_article).
          nullable: true
          type: string
        slug:
          description: >-
            The URL slug of the research report. Slugs are not unique across
            reports, so use reportID to address a single one.
          nullable: true
          type: string
        subscriptionTier:
          description: >-
            The subscription tier the research report is published under (basic,
            pro, or enterprise).
          nullable: true
          type: string
        summary:
          description: A short summary of the research report.
          nullable: true
          type: string
        tagNames:
          description: >-
            Display names of the tags on the research report. Use it to filter
            by tag.
          items:
            type: string
          nullable: true
          type: array
        tags:
          description: Tags on the research report, including id and name.
          items:
            type: object
          nullable: true
          type: array
        title:
          description: The title of the research report.
          nullable: true
          type: string
        updatedAt:
          description: >-
            When the research report was last edited in the content system.
            Filter on it to pull only what changed since your last sync.
          format: date-time
          nullable: true
          type: string
      type: object
    ErrorResponse:
      properties:
        data:
          description: Always null on an error.
          nullable: true
          type: object
        error:
          description: What went wrong, in one sentence.
          type: string
      required:
        - error
        - data
      type: object
  securitySchemes:
    apiKey:
      description: >-
        API key sent in the `X-Blockworks-API-Key` header; `x-messari-api-key`
        is accepted for existing integrations. The catalog endpoints and models
        on the public access tier need no key.
      in: header
      name: X-Blockworks-API-Key
      type: apiKey

````