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

# Search people

> Searches people on each platform as one of the team's account links, like the platform's own search box.

Needs the Advanced API add-on, and `directory:typeahead` on each account link. Each account link can search 20 times per minute, 300 per hour and 1500 per day, so the platform doesn't flag its session; past a limit, it is listed in `failures` with `peopleSearchRateLimited`.

Use the result's `target` to reach that person on endpoints like `Send message` or `Send connection request`.



## OpenAPI

````yaml /v2/openapi.json get /people
openapi: 3.1.0
info:
  title: Inboxapp API
  version: 2.0.0
  description: >-
    The Inboxapp API gives you access to your team's conversations and the CRM
    state around them. Every platform uses the same resources, so your code asks
    what an account can do instead of which platform it is on.


    ## The data model


    ```txt

    Team

    ├── Members                people on your team

    ├── Account links          your accounts on each platform

    │   └── Threads            one conversation with one profile

    │       └── Messages

    ├── Contacts               your record of a person

    │   └── Profiles           their account on each platform

    ├── Tags                   labels on contacts

    └── Statuses               pipeline stages of contacts

    ```


    | Resource | What it is |

    | --- | --- |

    | **Platform** | A messaging platform available to your team, with what it
    supports |

    | **Account link** | One of your accounts on a platform. Messages are sent
    from one |

    | **Profile** | One person's account on one platform |

    | **Contact** | Your team's record of a person. Groups one or more of their
    profiles |

    | **Thread** | A conversation between one account link and one profile |

    | **Message** | A message in a thread, which you can send, edit, unsend and
    react to |

    | **Tag** | A label on a contact. A contact can have several |

    | **Status** | A pipeline stage. A contact has at most one |

    | **Member** | A person on your team, who can be assigned threads and
    contacts |


    ## Authentication


    Send your API token in the `Authorization` header: `Authorization: Bearer
    <token>`. The token decides the team, so no path or parameter names one.


    ## Member view


    Some state belongs to one member rather than the team: each member has their
    own read status for a thread. The API isn't a member, so it takes the team
    owner's view. A thread's `unread` is whether the owner has it unread, and
    setting it marks the thread read or unread for the owner.


    ## Profiles and contacts


    A **profile** holds what the platform says about a person: `username`,
    `displayName`, `bio`, follower counts. A **contact** holds what your team
    says about them: `statusId`, `tagIds`, `notes`, `valuation`, `assigneeId`. A
    contact groups one or more profiles.


    A thread is always with one profile, and its `contactId` points to the
    contact that profile belongs to.


    ```json

    {
      "id": "nq2r8v5ycx1t7m4hj6kd3wzb",
      "profiles": [
        {
          "id": "n7kxqm5d9iu2sgdf6jbw4h36",
          "platform": "twitter",
          "platformId": "1876543210987654321",
          "username": "sarahchen",
          "handle": "@sarahchen",
          "displayName": "Sarah Chen"
        }
      ],
      "statusId": "r3km7xj9wq5p2bvnhfdteoly",
      "tagIds": ["t9wq5p2bvnhfdteolyr3km7x"],
      "notes": "Asked for a demo of the reporting API.",
      "valuation": 12000,
      "assigneeId": null
    }

    ```


    Reads never create a contact. Someone your team has never talked to or
    imported has none: message them by sending to a `profile` target.


    ## IDs


    | Field | What it is | Use it for |

    | --- | --- | --- |

    | `id`, every `…Id` | An Inboxapp ID | Paths and references. Paths only take
    Inboxapp IDs |

    | `platformId` | The ID the platform gives the object: its user,
    conversation or message | Matching against your own data |


    A `platformId` always comes with a `platform`, and means nothing without it.
    To find a resource by its platform identity, filter its collection:


    ```txt

    GET /contacts?platform=twitter&platformId=1876543210987654321

    ```


    No match is an empty `data` array, never a `404`.


    ## Platforms and capabilities


    Platforms differ: one lets you edit a message, another doesn't. The API
    expresses that as **capabilities** instead of per-platform endpoints. `GET
    /platforms` lists the platforms available to your team, with their
    capabilities and limits.


    ```txt

    Platform capabilities              the most any account on the platform can
    do
      └── Account link capabilities    narrowed for this account
            └── Thread restrictions    disabled in this conversation
    ```


    Check both before you call:


    ```typescript

    function canEdit(accountLink: AccountLink, thread: Thread): boolean {
      return (
        accountLink.capabilities.includes("message:edit") &&
        !thread.restrictions.includes("message:edit")
      );
    }

    ```


    | Failure | Meaning |

    | --- | --- |

    | `422 capabilityNotSupported` | The account link can't do this |

    | `422 threadRestricted` | The platform disabled it in this conversation |

    | `422 mutationWindowClosed` | The platform's time window for it has passed
    |

    | `403 platformNotAvailable` | The resource is on a platform your team can't
    use |


    New platforms may be added within v2, so treat `platform` as an open string.
    Code that checks capabilities keeps working when they are. See [Platforms
    and capabilities](https://docs.inboxapp.com/v2/platforms) for what each
    platform supports.


    ## Platform data


    Fields every platform has are top-level. Fields only one platform has are in
    `platformData`, tagged by `_tag`:


    ```json

    {
      "platformData": { "_tag": "twitter", "encrypted": true }
    }

    ```


    Ignore tags you don't know.


    ## Responses


    Every documented field is present: a value that doesn't apply is `null`.
    Timestamps are ISO 8601 in UTC. Within v2, fields, enum values and error
    codes may be added, so ignore unknown fields and handle unknown enum values.


    ## Pagination


    Collections return `{ "data": [...], "nextCursor": "..." }`. Pass
    `nextCursor` back as `cursor`, with the same filters, to read the next page.
    It is `null` on the last page. `limit` defaults to 50, up to 100. See
    [Pagination](https://docs.inboxapp.com/v2/reference/pagination).


    ## Query parameters


    To pass several values, repeat the key:


    ```txt

    ?accountLinkId=a&accountLinkId=b

    ```


    Brackets (`ids[]=…`) and comma-separated values aren't accepted. See [Query
    parameters](https://docs.inboxapp.com/v2/reference/query-parameters).


    ## Expansion


    References are IDs by default. Use `expand` to embed the related resource
    next to its ID field, `contact` beside `contactId`, at most 4 per request:


    ```txt

    GET /threads?expand=contact&expand=profile

    ```


    ## Updates


    In `PATCH` bodies, omitted fields are left unchanged, and `null` clears a
    nullable field.


    ## Errors


    Every error has the same body:


    ```json

    {
      "code": "capabilityNotSupported",
      "message": "This account can't perform this operation.",
      "details": { "capability": "message:edit" },
      "requestId": "…"
    }

    ```


    Branch on `code`, the contract. `message` can be shown to a person and may
    change. `details` is `null` or the object documented for that code. Share
    `requestId`, also in the `X-Request-Id` header, when you contact support.
    See [Error codes](https://docs.inboxapp.com/v2/reference/errors).


    ## Sending safely


    `POST /messages` takes an optional `Idempotency-Key` header. Retrying with
    the same key never sends twice: a replay returns the original result.
    Without a key, a retry can send twice.


    ## Rate limits


    Each team can make 300 requests per minute, 10,000 per hour and 100,000 per
    day. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and
    `X-RateLimit-Reset`. Past a limit, requests fail with `429 rateLimited` and
    a `Retry-After` header. See [Rate
    limits](https://docs.inboxapp.com/v2/reference/rate-limits).
  summary: Read and act on your team's conversations across messaging platforms.
servers:
  - url: https://inboxapp.com/api/v2
security: []
tags:
  - name: Platforms
    description: >-
      The messaging platforms available to the team, with what each one
      supports.
  - name: Team
    description: >-
      The team the API token belongs to, and its members: the Inboxapp users who
      work in it.
  - name: Account Links
    description: >-
      Platform accounts the team connected to Inboxapp. Every thread belongs to
      one, and messages are sent from one.
  - name: Contacts
    description: >-
      The team's record of a person, holding its CRM state: status, tags, notes,
      valuation and default assignee. A contact groups one or more profiles, a
      person's accounts on the platforms.
  - name: People
    description: >-
      People on the platforms, found through the team's account links whether or
      not Inboxapp knows them yet.
  - name: Threads
    description: Conversations between one of the team's account links and one profile.
  - name: Messages
    description: >-
      Messages in a thread, and sending, editing, unsending and reacting to them
      on the platform.
  - name: Relationships
    description: >-
      How an account link stands with a profile on the platform, and requests
      that change it.
  - name: Tags
    description: Labels the team puts on contacts.
  - name: Statuses
    description: >-
      The pipeline stages a contact can be in, such as a deal stage. A contact
      has at most one.
  - name: Colors
    description: The colors of Inboxapp's palette, for tags and statuses.
  - name: Events
    description: >-
      Changes in the team, as delivered to v2 webhooks. Each event names the
      object that changed and carries only the values of the change; read the
      object for its current state. Events are kept for 7 days, up to 25,000 per
      team.
paths:
  /people:
    get:
      tags:
        - People
      summary: Search people
      description: >-
        Searches people on each platform as one of the team's account links,
        like the platform's own search box.


        Needs the Advanced API add-on, and `directory:typeahead` on each account
        link. Each account link can search 20 times per minute, 300 per hour and
        1500 per day, so the platform doesn't flag its session; past a limit, it
        is listed in `failures` with `peopleSearchRateLimited`.


        Use the result's `target` to reach that person on endpoints like `Send
        message` or `Send connection request`.
      operationId: people.search
      parameters:
        - name: platform
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Platform'
            description: >-
              Searches these platforms. Defaults to every available platform.
              With `accountLinkId`, keeps only the account links on these
              platforms. Repeat the key to match any of several.
          required: false
        - name: accountLinkId
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Cuid2'
            description: >-
              Searches from these account links. Each platform is searched once,
              from the oldest account link given on it; IDs that match no
              account link are ignored. Without it, each platform is searched
              from its oldest active account link that can search. Repeat the
              key to match any of several.
          required: false
        - name: q
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 100
            description: >-
              A name or username, as typed into the platform's own people
              search.
          required: true
        - name: reach
          in: query
          schema:
            type: string
            enum:
              - contacts
              - network
            description: >-
              `contacts`, the default, searches people each account already
              messages. `network` also searches beyond them, where the platform
              separates the two.
          required: false
        - name: enrich
          in: query
          schema:
            type: boolean
            description: >-
              `true` fetches and stores every result Inboxapp hasn't stored yet,
              so each comes back as a full profile. A result that can't be
              fetched or stored is left out. Slower. Defaults to `false`.
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonList'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/PlatformNotAvailable'
                  - $ref: '#/components/schemas/PlanRequired'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountLinkNotFound'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/AccountLinkDisconnected'
                  - $ref: '#/components/schemas/IntegrationSetupRequired'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapabilityNotSupported'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/PeopleSearchRateLimited'
                  - $ref: '#/components/schemas/PlatformRateLimited'
                  - $ref: '#/components/schemas/RateLimited'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Internal'
        '502':
          description: Bad Gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformUnavailable'
      security:
        - bearerAuth: []
components:
  schemas:
    Platform:
      type: string
      description: >-
        The platform. Every team can use twitter, linkedin; a team may have
        others enabled.
      examples:
        - twitter
        - linkedin
    Cuid2:
      type: string
      pattern: ^[0-9a-z]+$
    PersonList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        failures:
          type: array
          items:
            $ref: '#/components/schemas/PeopleSearchFailure'
          description: >-
            The searched account links that returned nothing. When every one
            fails, the request fails with the first one's error instead.
      required:
        - data
        - failures
      additionalProperties: false
      description: >-
        Every searched account link's results in one list: closest name or
        username match first, then people the account already talks to or is
        connected with, then verified, then each platform's own order. Not
        paginated.
    InvalidRequest:
      type: object
      properties:
        code:
          type: string
          enum:
            - invalidRequest
        message:
          type: string
        details:
          type: object
          properties:
            issues:
              type: array
              items:
                type: object
                properties:
                  path:
                    type: array
                    items:
                      anyOf:
                        - type: string
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                  message:
                    type: string
                required:
                  - path
                  - message
                additionalProperties: false
          required:
            - issues
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    Unauthorized:
      type: object
      properties:
        code:
          type: string
          enum:
            - unauthorized
        message:
          type: string
        details:
          type: 'null'
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    PlatformNotAvailable:
      type: object
      properties:
        code:
          type: string
          enum:
            - platformNotAvailable
        message:
          type: string
        details:
          type: object
          properties:
            platform:
              $ref: '#/components/schemas/Platform'
          required:
            - platform
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    PlanRequired:
      type: object
      properties:
        code:
          type: string
          enum:
            - planRequired
        message:
          type: string
        details:
          type: object
          properties:
            feature:
              type: string
          required:
            - feature
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    AccountLinkNotFound:
      type: object
      properties:
        code:
          type: string
          enum:
            - accountLinkNotFound
        message:
          type: string
        details:
          type: 'null'
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    AccountLinkDisconnected:
      type: object
      properties:
        code:
          type: string
          enum:
            - accountLinkDisconnected
        message:
          type: string
        details:
          type: object
          properties:
            accountLinkId:
              type: string
            status:
              type: string
              enum:
                - active
                - offline
                - paused
              description: >-
                `active` sends and syncs. `paused` is stopped for the reasons in
                `pauseReasons`, and resumes once none remain. `offline` lost its
                connection to the platform and must be reconnected in Inboxapp.
          required:
            - accountLinkId
            - status
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    IntegrationSetupRequired:
      type: object
      properties:
        code:
          type: string
          enum:
            - integrationSetupRequired
        message:
          type: string
        details:
          type: object
          properties:
            accountLinkId:
              type: string
          required:
            - accountLinkId
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    CapabilityNotSupported:
      type: object
      properties:
        code:
          type: string
          enum:
            - capabilityNotSupported
        message:
          type: string
        details:
          type: object
          properties:
            capability:
              type: string
              enum:
                - message:send
                - message:edit
                - message:delete:self
                - message:unsend
                - message:react
                - message:reply
                - message:forward
                - media:image
                - media:video
                - media:gif
                - media:file
                - media:audio
                - thread:typing:send
                - thread:typing:receive
                - thread:message-requests
                - thread:delete:remote
                - directory:typeahead
                - thread:archive:observe
                - thread:archive:mutate
                - thread:read:observe
                - thread:read:mutate
                - profile:follow
                - profile:unfollow
                - profile:connect
                - profile:connect:note
                - profile:resolve:id
                - profile:resolve:username
          required:
            - capability
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    PeopleSearchRateLimited:
      type: object
      properties:
        code:
          type: string
          enum:
            - peopleSearchRateLimited
        message:
          type: string
        details:
          type: object
          properties:
            accountLinkId:
              type: string
            window:
              type: string
              enum:
                - minute
                - hour
                - day
            limit:
              type: integer
            resetAt:
              type: string
              examples:
                - '2026-09-14T10:32:00.000Z'
              format: date-time
          required:
            - accountLinkId
            - window
            - limit
            - resetAt
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    PlatformRateLimited:
      type: object
      properties:
        code:
          type: string
          enum:
            - platformRateLimited
        message:
          type: string
        details:
          type: object
          properties:
            retryAfterSeconds:
              anyOf:
                - type: integer
                - type: 'null'
          required:
            - retryAfterSeconds
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    RateLimited:
      type: object
      properties:
        code:
          type: string
          enum:
            - rateLimited
        message:
          type: string
        details:
          type: object
          properties:
            window:
              type: string
              enum:
                - minute
                - hour
                - day
            limit:
              type: integer
            resetAt:
              type: string
              examples:
                - '2026-09-14T10:32:00.000Z'
              format: date-time
          required:
            - window
            - limit
            - resetAt
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    Internal:
      type: object
      properties:
        code:
          type: string
          enum:
            - internal
        message:
          type: string
        details:
          type: 'null'
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    PlatformError:
      type: object
      properties:
        code:
          type: string
          enum:
            - platformError
        message:
          type: string
        details:
          type: 'null'
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    PlatformUnavailable:
      type: object
      properties:
        code:
          type: string
          enum:
            - platformUnavailable
        message:
          type: string
        details:
          type: object
          properties:
            retryAfterSeconds:
              anyOf:
                - type: integer
                - type: 'null'
          required:
            - retryAfterSeconds
          additionalProperties: false
        requestId:
          type: string
      required:
        - code
        - message
        - details
        - requestId
      additionalProperties: false
    Person:
      type: object
      properties:
        accountLinkId:
          type: string
          description: >-
            The account link that found this person. `threadId`, `canMessage`,
            `degree`, `closeness` and `target` are its view.
        profile:
          anyOf:
            - $ref: '#/components/schemas/Profile'
            - $ref: '#/components/schemas/ProfileHit'
        contactId:
          anyOf:
            - type: string
            - type: 'null'
          description: The team's contact holding this profile, if any.
        threadId:
          anyOf:
            - type: string
            - type: 'null'
          description: The account link's latest thread with this profile, if any.
        canMessage:
          anyOf:
            - type: boolean
            - type: 'null'
          description: >-
            The platform's hint that the account link can message this person,
            `null` when the platform doesn't say. A send can still fail with
            `recipientUnavailable`.
        degree:
          anyOf:
            - type: string
              enum:
                - self
                - first
                - second
                - third
                - outOfNetwork
            - type: 'null'
          description: >-
            How close the person is to the account link on the platform's
            network, as the search states it. `null` when it states none.
        closeness:
          type: string
          enum:
            - connected
            - near
            - none
          description: >-
            `connected` for a direct tie such as a follow or 1st-degree
            connection, `near` for a shared one such as mutuals or 2nd degree.
        target:
          anyOf:
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - profile
                accountLinkId:
                  $ref: '#/components/schemas/Cuid2'
                platform:
                  $ref: '#/components/schemas/Platform'
                platformId:
                  type: string
                  minLength: 1
                  description: >-
                    The person's ID on the platform. Reaching someone Inboxapp
                    hasn't stored needs the account link's `profile:resolve:id`.
              required:
                - type
                - accountLinkId
                - platform
                - platformId
              additionalProperties: false
              title: Profile by platform ID
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - profile
                accountLinkId:
                  $ref: '#/components/schemas/Cuid2'
                platform:
                  $ref: '#/components/schemas/Platform'
                username:
                  type: string
                  minLength: 1
                  description: >-
                    The person's username on the platform, without a display
                    prefix such as `@`. On LinkedIn, what follows `/in/` in
                    their profile URL: the vanity name or the `ACoA…` profile
                    ID. Reaching someone Inboxapp hasn't stored needs the
                    account link's `profile:resolve:username`.
                  examples:
                    - jane
                    - ACoAABcdEfGh1234567890
              required:
                - type
                - accountLinkId
                - platform
                - username
              additionalProperties: false
              title: Profile by username
          description: >-
            Pass as is as the `target` of Send message or Send connection
            request to reach this person from the account link.
      required:
        - accountLinkId
        - profile
        - contactId
        - threadId
        - canMessage
        - degree
        - closeness
        - target
      additionalProperties: false
      description: A person one of the searched account links found.
    PeopleSearchFailure:
      type: object
      properties:
        accountLinkId:
          type: string
        code:
          type: string
          enum:
            - accountLinkNotFound
            - accountLinkDisconnected
            - integrationSetupRequired
            - capabilityNotSupported
            - platformRateLimited
            - peopleSearchRateLimited
            - platformError
            - platformUnavailable
          description: The error code searching from this account link alone returns.
        message:
          type: string
      required:
        - accountLinkId
        - code
        - message
      additionalProperties: false
      description: An account link whose search failed, so `data` has nothing from it.
    Profile:
      type: object
      properties:
        id:
          type: string
        platform:
          $ref: '#/components/schemas/Platform'
        platformId:
          type: string
          description: >-
            The ID the platform gives this object. Only meaningful next to its
            `platform`.
        username:
          type: string
          description: The platform username, without a display prefix such as `@`.
          examples:
            - jane
        handle:
          type: string
          description: >-
            The username as the platform displays it. Show this, and look up by
            `username`.
          examples:
            - '@jane'
        displayName:
          type: string
        avatarUrl:
          anyOf:
            - type: string
            - type: 'null'
        bio:
          anyOf:
            - type: string
            - type: 'null'
        location:
          anyOf:
            - type: string
            - type: 'null'
        websiteUrl:
          anyOf:
            - type: string
            - type: 'null'
        websiteDomain:
          anyOf:
            - type: string
            - type: 'null'
        verified:
          type: boolean
          description: >-
            The platform vouches for the account, such as with an X badge.
            Platform-specific badges are in `platformData`.
        isOrganization:
          type: boolean
          description: A company or page rather than a person.
        isProtected:
          type: boolean
          description: The account's posts are visible only to approved followers.
        followerCount:
          anyOf:
            - anyOf:
                - type: number
                - type: string
                  enum:
                    - Infinity
                    - '-Infinity'
                    - NaN
            - type: 'null'
        followingCount:
          anyOf:
            - anyOf:
                - type: number
                - type: string
                  enum:
                    - Infinity
                    - '-Infinity'
                    - NaN
            - type: 'null'
        postCount:
          anyOf:
            - anyOf:
                - type: number
                - type: string
                  enum:
                    - Infinity
                    - '-Infinity'
                    - NaN
            - type: 'null'
        engagementCount:
          anyOf:
            - anyOf:
                - type: number
                - type: string
                  enum:
                    - Infinity
                    - '-Infinity'
                    - NaN
            - type: 'null'
          description: On X, how many posts the user has liked.
        listedCount:
          anyOf:
            - anyOf:
                - type: number
                - type: string
                  enum:
                    - Infinity
                    - '-Infinity'
                    - NaN
            - type: 'null'
          description: On X, how many lists include the profile.
        accountStatus:
          type: string
          enum:
            - active
            - suspended
            - notFound
          description: >-
            `suspended` by the platform, or `notFound` when deleted or
            deactivated.
        platformCreatedAt:
          anyOf:
            - type: string
              examples:
                - '2026-09-14T10:32:00.000Z'
              format: date-time
            - type: 'null'
          description: When the account was created on the platform.
        profileUrl:
          anyOf:
            - type: string
            - type: 'null'
        updatedAt:
          type: string
          description: When Inboxapp last stored a change to this profile.
          examples:
            - '2026-09-14T10:32:00.000Z'
          format: date-time
        platformData:
          $ref: '#/components/schemas/ProfilePlatformData'
        relationships:
          type: array
          items:
            $ref: '#/components/schemas/Relationship'
          description: >-
            One entry per team account link that has interacted with the
            profile.
      required:
        - id
        - platform
        - platformId
        - username
        - handle
        - displayName
        - avatarUrl
        - bio
        - location
        - websiteUrl
        - websiteDomain
        - verified
        - isOrganization
        - isProtected
        - followerCount
        - followingCount
        - postCount
        - engagementCount
        - listedCount
        - accountStatus
        - platformCreatedAt
        - profileUrl
        - updatedAt
        - platformData
        - relationships
      additionalProperties: false
      description: >-
        One person's account on one platform. Profile data is shared across
        teams; the team's own data about the person is on their contact.
    ProfileHit:
      type: object
      properties:
        id:
          type: 'null'
          description: >-
            Inboxapp hasn't stored this profile. Search with `enrich=true` to
            get only stored profiles.
        platform:
          $ref: '#/components/schemas/Platform'
        platformId:
          type: string
          description: >-
            The ID the platform gives this object. Only meaningful next to its
            `platform`.
        username:
          anyOf:
            - type: string
              description: The platform username, without a display prefix such as `@`.
              examples:
                - jane
            - type: 'null'
        handle:
          type: string
          description: >-
            The username as the platform displays it. Show this, and look up by
            `username`.
          examples:
            - '@jane'
        displayName:
          type: string
        avatarUrl:
          anyOf:
            - type: string
            - type: 'null'
        verified:
          type: boolean
          description: >-
            The platform vouches for the account, such as with an X badge.
            Platform-specific badges are in `platformData`.
        isOrganization:
          type: boolean
          description: A company or page rather than a person.
        profileUrl:
          anyOf:
            - type: string
            - type: 'null'
        platformData:
          $ref: '#/components/schemas/ProfilePlatformData'
      required:
        - id
        - platform
        - platformId
        - username
        - handle
        - displayName
        - avatarUrl
        - verified
        - isOrganization
        - profileUrl
        - platformData
      additionalProperties: false
      description: >-
        A profile the platform's search returned that Inboxapp hasn't stored,
        with only what identifies it.
    ProfilePlatformData:
      anyOf:
        - type: object
          properties:
            _tag:
              type: string
              enum:
                - twitter
            badge:
              anyOf:
                - type: string
                  enum:
                    - blue
                    - gold
                    - gray
                - type: 'null'
            profileType:
              type: string
              enum:
                - personal
                - business
                - government
            professionalCategory:
              anyOf:
                - type: string
                - type: 'null'
            urlEntities:
              type: array
              items:
                type: object
                properties:
                  url:
                    type: string
                  expandedUrl:
                    type: string
                  displayUrl:
                    type: string
                  indices:
                    type: array
                    prefixItems:
                      - type: number
                      - type: number
                    maxItems: 2
                    minItems: 2
                required:
                  - url
                  - expandedUrl
                  - displayUrl
                  - indices
                additionalProperties: false
            bannerUrl:
              anyOf:
                - type: string
                - type: 'null'
            rawData:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - _tag
            - badge
            - profileType
            - professionalCategory
            - urlEntities
            - bannerUrl
            - rawData
          additionalProperties: false
        - type: object
          properties:
            _tag:
              type: string
              enum:
                - linkedin
            profileUrn:
              anyOf:
                - type: string
                - type: 'null'
            kind:
              anyOf:
                - type: string
                  enum:
                    - member
                    - organization
                - type: 'null'
            memberBadge:
              anyOf:
                - type: string
                  enum:
                    - premium
                    - verified
                - type: 'null'
            bannerUrl:
              anyOf:
                - type: string
                - type: 'null'
            bannerSize:
              anyOf:
                - type: object
                  properties:
                    width:
                      type: number
                    height:
                      type: number
                  required:
                    - width
                    - height
                  additionalProperties: false
                - type: 'null'
            hydratedAt:
              anyOf:
                - type: string
                - type: 'null'
            imageAssetId:
              anyOf:
                - type: string
                - type: 'null'
            connectionsCount:
              anyOf:
                - type: number
                - type: 'null'
            currentRole:
              anyOf:
                - type: string
                - type: 'null'
            currentRoleStart:
              anyOf:
                - type: object
                  properties:
                    year:
                      type: number
                    month:
                      anyOf:
                        - type: number
                        - type: 'null'
                  required:
                    - year
                    - month
                  additionalProperties: false
                - type: 'null'
            currentCompanyName:
              anyOf:
                - type: string
                - type: 'null'
            currentCompanyUrn:
              anyOf:
                - type: string
                - type: 'null'
            topSchoolName:
              anyOf:
                - type: string
                - type: 'null'
            topSchoolUrn:
              anyOf:
                - type: string
                - type: 'null'
            topSchoolDegree:
              anyOf:
                - type: string
                - type: 'null'
            topSchoolPeriod:
              anyOf:
                - type: string
                - type: 'null'
            employeeCount:
              anyOf:
                - type: number
                - type: 'null'
            employeeCountRange:
              anyOf:
                - type: object
                  properties:
                    start:
                      type: number
                    end:
                      anyOf:
                        - type: number
                        - type: 'null'
                  required:
                    - start
                    - end
                  additionalProperties: false
                - type: 'null'
            industry:
              anyOf:
                - type: string
                - type: 'null'
            pageKind:
              anyOf:
                - type: string
                  enum:
                    - company
                    - school
                    - showcase
                - type: 'null'
            currentCompanyLogoUrl:
              anyOf:
                - type: string
                - type: 'null'
            topSchoolLogoUrl:
              anyOf:
                - type: string
                - type: 'null'
          required:
            - _tag
          additionalProperties: false
        - type: object
          properties:
            _tag:
              type: string
          required:
            - _tag
          description: >-
            A platform the team has enabled beyond those every team can use. Its
            fields are not listed here.
      description: >-
        Fields only one platform has, tagged by `_tag`. Ignore tags you don't
        know.
    Relationship:
      type: object
      properties:
        accountLinkId:
          type: string
        degree:
          anyOf:
            - type: string
              enum:
                - self
                - first
                - second
                - third
                - outOfNetwork
            - type: 'null'
          description: >-
            How close the profile is to the account link on the platform's
            network, as last observed. `null` when never observed.
        connectionRequest:
          anyOf:
            - type: object
              properties:
                sentAt:
                  type: string
                  examples:
                    - '2026-09-14T10:32:00.000Z'
                  format: date-time
              required:
                - sentAt
              additionalProperties: false
            - type: 'null'
          description: >-
            The account link's pending connection request. `null` once the
            profile is seen accepting it or the request is withdrawn, or when
            none was sent.
      required:
        - accountLinkId
        - degree
        - connectionRequest
      additionalProperties: false
      description: What one of the team's account links knows about a profile.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: Bearer

````

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