> ## 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 persons

> [OpenAPI JSON Spec](/docs/output/v1_persons_get.json)
The person registry that `/other/podcast/transcripts` links speakers
to. `person_id` is the value a transcript's `resolved_speakers` carries;
treat it as opaque and do not parse it — use `created_by_pipeline` to
tell curated people from ones speaker resolution created. `name`
searches aliases too.
`socials` lists every known account and is always present (`[]` when
none). Several accounts on one platform are allowed, and within a
platform the first entry is the one to show. `platform` is an OPEN
enum — ignore values you do not recognize. `url` is always set;
`handle` and `id` may be absent (LinkedIn and Substack publish no
stable id).
`shows` lists confirmed show relationships, hosting or as a
guest — `role` says which, and the same show can appear under both.
`platform` is an OPEN enum, `podcast` today. Only `confirmed: true`
relationships are returned; inferred, unconfirmed roles are omitted.
`first_seen_url` is where the person was first seen, not a list of all
their sources.
`positions` is every job the person is known to hold. There is no
primary one: a person holds several at once and each lane sees a
different one. Each entry splits the title (`position`) from the
institution (`affiliation`), and the `affiliation` filter matches the
latter. Party, chamber and district are not here — use
`/v1/alva/congress-politicians`; `sources` containing `congress` is
what says someone is a member.
Every filter is optional.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/persons
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:
    get:
      tags:
        - Persons
      summary: List persons
      description: |-
        [OpenAPI JSON Spec](/docs/output/v1_persons_get.json)
        The person registry that `/other/podcast/transcripts` links speakers
        to. `person_id` is the value a transcript's `resolved_speakers` carries;
        treat it as opaque and do not parse it — use `created_by_pipeline` to
        tell curated people from ones speaker resolution created. `name`
        searches aliases too.
        `socials` lists every known account and is always present (`[]` when
        none). Several accounts on one platform are allowed, and within a
        platform the first entry is the one to show. `platform` is an OPEN
        enum — ignore values you do not recognize. `url` is always set;
        `handle` and `id` may be absent (LinkedIn and Substack publish no
        stable id).
        `shows` lists confirmed show relationships, hosting or as a
        guest — `role` says which, and the same show can appear under both.
        `platform` is an OPEN enum, `podcast` today. Only `confirmed: true`
        relationships are returned; inferred, unconfirmed roles are omitted.
        `first_seen_url` is where the person was first seen, not a list of all
        their sources.
        `positions` is every job the person is known to hold. There is no
        primary one: a person holds several at once and each lane sees a
        different one. Each entry splits the title (`position`) from the
        institution (`affiliation`), and the `affiliation` filter matches the
        latter. Party, chamber and district are not here — use
        `/v1/alva/congress-politicians`; `sources` containing `congress` is
        what says someone is a member.
        Every filter is optional.
      parameters:
        - description: Name, case-insensitive, matches display name or an alias
          in: query
          name: name
          schema:
            type: string
        - description: Exact person id, as it appears in resolved_speakers
          in: query
          name: person_id
          schema:
            type: string
        - description: Only people speaker resolution created (pc_ prefix)
          in: query
          name: created_by_pipeline
          schema:
            type: boolean
        - description: Substring search across display names and aliases
          in: query
          name: q
          schema:
            type: string
        - description: >-
            Institution substring, case-insensitive; matches any entry of
            positions
          in: query
          name: affiliation
          schema:
            type: string
        - description: RFC3339 lower bound on person update time
          in: query
          name: updated_since
          schema:
            type: string
        - description: Max rows, 1-200 (default 10)
          in: query
          name: limit
          schema:
            type: integer
        - description: Rows to skip (default 0)
          in: query
          name: offset
          schema:
            type: integer
      responses:
        '200':
          description: Persons
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/model.APIResponse'
                  - properties:
                      data:
                        items:
                          $ref: '#/components/schemas/model.PodcastPerson'
                        type: array
                    type: object
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/model.APIResponse'
                  - properties:
                      error:
                        $ref: '#/components/schemas/model.APIError'
                    type: object
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/model.APIResponse'
                  - properties:
                      error:
                        $ref: '#/components/schemas/model.APIError'
                    type: object
      security:
        - ApiKeyAuth: []
components:
  schemas:
    model.APIResponse:
      properties:
        data: {}
        error:
          $ref: '#/components/schemas/model.APIError'
        metadata: {}
        pagination: {}
        request_id:
          type: string
        success:
          type: boolean
      type: object
    model.PodcastPerson:
      properties:
        aliases:
          description: Aliases are other spellings, searchable through the name filter.
          items:
            type: string
          type: array
        avatar_url:
          description: |-
            AvatarURL comes from the curated roster; people speaker resolution
            created have none.
          type: string
        bio:
          description: >-
            Bio is reviewed display copy. Generation candidates are not exposed
            here.
          type: string
        created_at:
          description: |-
            CreatedAt and UpdatedAt are RFC3339 instants in UTC, e.g.
            "2026-09-02T07:48:55Z" — the same shape the transcripts endpoint's
            created_at uses, and the same shape the updated_since filter on this
            endpoint already takes as input. Empty when unset.
          type: string
        display_name:
          type: string
        external_ids:
          description: >-
            ExternalIDs are authoritative institutional identifiers — bioguide
            for a

            member of Congress, sec_cik for an insider filer. Social accounts
            are in

            Socials, not here.
          items:
            $ref: '#/components/schemas/model.ExternalID'
          type: array
        first_seen_url:
          description: >-
            FirstSeenURL is where this person was first seen: their profile page
            for a

            curated import, the episode they first spoke on for one speaker
            resolution

            created. It is one citation, not a list of every source they appear
            in.
          type: string
        person_id:
          description: >-
            PersonID is the canonical UUID, and the value a transcript's

            resolved_speakers carries. It is opaque: do not parse it. To tell
            curated

            people from ones speaker resolution created, use
            created_by_pipeline.
          type: string
        positions:
          description: >-
            Positions is every job this person is known to hold. There is no

            top-level "primary job" field: a person holds several at once and
            each

            source sees a different one, so naming one primary would take a rule
            that

            does not exist. Pick from the list.


            Each entry's institution half is still called affiliation, and that
            is

            what the affiliation filter matches.
          items:
            $ref: '#/components/schemas/model.PersonPosition'
          type: array
        shows:
          description: >-
            Shows is every show this person has been seen on, hosting or as a
            guest;

            role says which. Platform says where the show lives, so this list
            can

            hold more than podcasts later without changing shape again.
          items:
            $ref: '#/components/schemas/model.PersonShow'
          type: array
        socials:
          description: >-
            Socials is every known account. Always emitted — an empty array,
            never

            absent or null — so callers can iterate without branching. Several

            accounts on one platform are allowed, and within a platform the
            first

            entry is the one to show.
          items:
            $ref: '#/components/schemas/model.SocialAccount'
          type: array
        sources:
          description: >-
            Sources are where this person is known from: podcast, congress,
            insider,

            earnings, x. This is the field that answers "is this a member of
            Congress"

            — do not infer it from the position text.


            The first four are live pipelines. `x` is not: it marks people
            admitted by

            reviewed X imports, not a continuously growing X projector. So an
            x.com

            first_seen_url does not imply `x` here — a podcast sighting whose
            first

            sighting happened to be someone's X profile is `podcast` only.
          items:
            type: string
          type: array
        updated_at:
          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.ExternalID:
      properties:
        type:
          description: 'Type is an OPEN enum: bioguide, sec_cik, uw_politician today.'
          type: string
        value:
          type: string
      type: object
    model.PersonPosition:
      properties:
        affiliation:
          type: string
        position:
          type: string
      type: object
    model.PersonShow:
      properties:
        confirmed:
          description: >-
            Confirmed means there is hard evidence: the curated roster names
            this

            person as a host, or they introduced themselves on at least one
            episode.

            Only confirmed relationships are returned by the person registry
            API.
          type: boolean
        platform:
          description: >-
            Platform is an OPEN enum, podcast being the only value today. Ignore

            values you do not recognize rather than failing, or adding a
            platform

            becomes a breaking change. It is emitted even while constant so
            callers

            branch on it from the start.
          type: string
        role:
          description: >-
            Role is an OPEN enum: host or guest. It reports the capacity we have
            seen

            this person appear in on this show, not their official title.
          type: string
        show:
          description: >-
            Show is the name. On platform podcast it is usable as
            podcast_show_name on

            /api/v1/other/podcast/transcripts.
          type: string
      type: object
    model.SocialAccount:
      properties:
        followers_count:
          description: >-
            FollowersCount is the cached X count; omitted for unknown profiles
            and other platforms.
          type: integer
        handle:
          description: >-
            Handle is the display name on that platform. It changes over time,
            and is

            empty for an account known only by its numeric ID.
          type: string
        id:
          description: >-
            ID is the platform's own immutable identifier. Absent on platforms
            that

            publish none (linkedin, substack), so never assume it is there.
          type: string
        platform:
          description: >-
            Platform is an OPEN enum: x, linkedin, youtube, substack today, and
            more

            later. Ignore values you do not recognize rather than failing, or
            adding a

            platform becomes a breaking change. X was emitted as "twitter" until

            2026-09; the url on the same entry has always been an x.com one.
          type: string
        url:
          description: 'URL is always present: an account is a reachable page by definition.'
          type: string
      type: object
    model.APIErrorDetail:
      properties:
        field:
          type: string
        got:
          type: string
        reason:
          type: string
      type: object
  securitySchemes:
    ApiKeyAuth:
      description: 'API Key authentication. Example: "your-api-key-here"'
      in: header
      name: X-API-Key
      type: apiKey

````

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