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

# List what the roster said in public across people

> [OpenAPI JSON Spec](/docs/output/v1_persons_commentary_get.json)
Same rows as /v1/persons/{person_id}/commentary without fixing the person. Browse by said_on day with start_time and end_time, or poll changes with updated_after and updated_before (unix seconds, [after, before), ordered by updated_at then id, paged by pagination.cursor; see docs/api/update-polling.md and docs/api/person-commentary-updates.md). person_id is an optional filter. A row refused after it was first served stops being returned; this is not a deletion feed. No row for a person and day does not mean they said nothing: a remark is stored only when its page can be read and the sentence checked against it.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/persons/commentary
openapi: 3.0.0
info:
  contact: {}
  description: >-
    Welcome to Arrays!


    Arrays is a unified financial data layer for both financial institutions and
    retail users, delivering comprehensive market data across crypto and equity
    markets. Our datasets cover fundamentals, ETFs, options, crypto, and more.


    Visit [arrays.org](https://arrays.org) to request an API key and start your
    free trial. You can explore our full API offerings in the documentation
    below.


    For any questions regarding APIs or pricing, please contact
    support@arrays.org.
  title: Arrays API
  version: '1.0'
servers:
  - url: https://data-tools.prd.arrays.org/api
security: []
paths:
  /v1/persons/commentary:
    get:
      tags:
        - Persons
      summary: List what the roster said in public across people
      description: >-
        [OpenAPI JSON Spec](/docs/output/v1_persons_commentary_get.json)

        Same rows as /v1/persons/{person_id}/commentary without fixing the
        person. Browse by said_on day with start_time and end_time, or poll
        changes with updated_after and updated_before (unix seconds, [after,
        before), ordered by updated_at then id, paged by pagination.cursor; see
        docs/api/update-polling.md and docs/api/person-commentary-updates.md).
        person_id is an optional filter. A row refused after it was first served
        stops being returned; this is not a deletion feed. No row for a person
        and day does not mean they said nothing: a remark is stored only when
        its page can be read and the sentence checked against it.
      parameters:
        - description: Person registry id (uuid) to narrow to one person
          in: query
          name: person_id
          schema:
            type: string
        - description: >-
            Browse range start, unix seconds; required unless updated_after is
            given
          in: query
          name: start_time
          schema:
            type: integer
        - description: >-
            Browse range end, unix seconds; required unless updated_after is
            given
          in: query
          name: end_time
          schema:
            type: integer
        - description: Update window start, unix seconds, inclusive
          in: query
          name: updated_after
          schema:
            type: integer
        - description: Update window end, unix seconds, exclusive
          in: query
          name: updated_before
          schema:
            type: integer
        - description: Opaque continuation of an update window
          in: query
          name: cursor
          schema:
            type: string
        - description: >-
            default 100, or 50 with include_body; 1 to 500, at most 50 with
            include_body
          in: query
          name: limit
          schema:
            type: integer
        - description: Rows to skip; browse only
          in: query
          name: offset
          schema:
            type: integer
        - description: Return each row's full body
          in: query
          name: include_body
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/model.APIResponse'
                  - properties:
                      data:
                        items:
                          $ref: '#/components/schemas/model.PersonCommentary'
                        type: array
                    type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.APIResponse'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.APIResponse'
components:
  schemas:
    model.APIResponse:
      properties:
        data: {}
        error:
          $ref: '#/components/schemas/model.APIError'
        metadata: {}
        pagination: {}
        request_id:
          type: string
        success:
          type: boolean
      type: object
    model.PersonCommentary:
      properties:
        author:
          description: |-
            Author is what the page said about who wrote it, empty when it said
            nothing.
          type: string
        body:
          description: >-
            Body is the page's text as read, kept as read. It is returned only
            when the

            request sets include_body=true, and limit is then at most 50 because
            rows

            that carry a page of text are large. It can hold words that are not
            the

            person's, so Quote stays the sentence attributed to them. BodyScope
            says

            how complete it is.
          type: string
        body_scope:
          description: >-
            BodyScope says how complete the page text is: "full", "preview" when
            a

            paywall cut it, "truncated" when the platform or the page gave only
            part,

            "unknown" when the page does not say, "unavailable" when a re-read
            found

            the page gone. It is set whether or not Body is returned.
          type: string
        cluster_id:
          description: >-
            ClusterID groups the rows carrying the same remark, which is how one

            thing said on X and on LinkedIn reads as one thing. A remark that
            appears

            in one place carries its own URL here, so grouping needs no special
            case.
          type: string
        context:
          description: >-
            Context holds the posts this one answers, quotes or forwards, each
            with its

            own author. It is other people's words and never part of Quote or
            Body. An

            empty array, never null, when there are none.
          items:
            $ref: '#/components/schemas/model.PersonCommentaryContext'
          type: array
        fetched_at:
          description: FetchedAt is when the page was retrieved, unix seconds.
          type: integer
        id:
          description: >-
            ID is the row's fixed identity, derived from person_id, said_on and
            url, so

            it stays the same when the row is rewritten. An update window is
            ordered

            by updated_at, then id.
          type: string
        lang:
          type: string
        own_channel_verified:
          description: >-
            OwnChannelVerified is set only for "own": "author" when the page
            named

            this person; "channel" when the page is theirs to publish but is not
            shown

            to be written by them, because its author is their organization or
            because

            it named nobody and the address is a configured one of theirs;

            "unverified" when neither could answer.
          type: string
        page_title:
          description: >-
            PageTitle and Venue describe where it was said. Venue is the
            program,

            publication or platform.
          type: string
        person_id:
          description: >-
            PersonID is the person registry's id, the same one /api/v1/persons

            answers with. Resolve a name to one with /api/v1/persons?name=...
            first.
          type: string
        published_at:
          description: |-
            PublishedAt is unix seconds, from the page itself unless
            PublishedAtSource says otherwise.
          type: integer
        published_at_source:
          description: >-
            PublishedAtSource is "page" when the page stated the time and
            "fetch"

            when it stated none and the retrieval time stands in. A consumer
            ordering

            a timeline wants the first kind; one counting coverage wants both.
          type: string
        quote:
          description: >-
            Quote is one sentence, character for character as the page prints
            it.
          type: string
        reply_status:
          description: >-
            ReplyStatus is "not_reply" when the row does not answer another
            post,

            "context_complete" when it does and every post it answers is in
            Context,

            "context_incomplete" when one of those could not be read (its status
            says

            why), and "unknown" for a page of a kind whose replies are not read.
          type: string
        said_at:
          description: >-
            SaidAt is when the remark was said, unix seconds. Absent when
            SaidAtSource

            is "unknown". SaidOn is the day the row is filed under; this is the
            day,

            or the moment, it was said.
          type: integer
        said_at_source:
          description: >-
            SaidAtSource is where SaidAt came from: "post" for the post's own

            timestamp, "page_stated" for a date the page prints, which names a
            day and

            not a time, and "unknown" when neither could be established.
          type: string
        said_on:
          description: >-
            SaidOn is the UTC day this row is filed under, the day that was
            researched;

            see said_at for when it was said.
          type: string
        source_kind:
          description: >-
            SourceKind is "own", "transcript", "third_party_transcript" or

            "interview". "transcript" is the venue's own transcript;

            "third_party_transcript" is one another site published with the
            person's

            name on it.
          type: string
        speaker_label:
          description: >-
            SpeakerLabel is the transcript's own label on the passage the quote
            is in,

            such as "CRAMER". Empty when the page names no speaker.
          type: string
        statement_level:
          description: >-
            StatementLevel is "original" when the page is where they said or
            published

            it: their own post, a verbatim transcript, a press release quoting
            them.

            "firsthand_report" when a reporter heard them directly, in the
            outlet's own

            interview or at an event the reporter attended, and the report is
            the

            fullest text of it. "unknown" when it has not been judged.
          type: string
        updated_at:
          description: >-
            UpdatedAt is when a field served here last changed, as RFC3339 UTC
            with

            fractional seconds. updated_after and updated_before on

            /api/v1/persons/commentary filter on it.
          type: string
        url:
          description: >-
            URL is the address the text was read from, after the fetcher
            resolved it.
          type: string
        venue:
          type: string
      type: object
    model.APIError:
      properties:
        code:
          example: RESOURCE_NOT_FOUND
          type: string
        details:
          items:
            $ref: '#/components/schemas/model.APIErrorDetail'
          type: array
        docs_url:
          type: string
        examples:
          items:
            type: string
          type: array
        hint:
          type: string
        message:
          example: The requested resource was not found.
          type: string
        suggestions:
          items:
            type: string
          type: array
      type: object
    model.PersonCommentaryContext:
      properties:
        author_handle:
          type: string
        author_id:
          description: >-
            AuthorID, AuthorHandle and AuthorName are what the platform gave for
            the

            post's author, each left out when it gave none.
          type: string
        author_name:
          type: string
        depth:
          description: >-
            Depth is 1 for the post the row answers directly, then 2 and 3 for
            the

            posts above it.
          type: integer
        published_at:
          description: PublishedAt is unix seconds, 0 when the platform gave no time.
          type: integer
        relation:
          description: >-
            Relation is "reply_to", "quoted", "forwarded", "reshared" or
            "thread_root".
          type: string
        status:
          description: >-
            Status is "ok", "deleted" or "unavailable". Anything but "ok" means
            the

            post could not be read in full, and the row's ReplyStatus says so.
          type: string
        text:
          description: Text is the post's text as the platform gave it.
          type: string
        url:
          description: URL is the address of this post.
          type: string
      type: object
    model.APIErrorDetail:
      properties:
        field:
          type: string
        got:
          type: string
        reason:
          type: string
      type: object

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.