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

# List contacts

> The workspace's deduplicated person pool — everyone who has ever appeared in a search, collapsed to one record each, with paging and facet filters.

Repeatable filter parameters are AND-ed across facets and OR-ed within one facet.



## OpenAPI

````yaml /openapi.json get /api/contacts
openapi: 3.1.0
info:
  title: Revcenter API
  description: >-
    Search, enrich, and activate people and companies. Two authentication
    surfaces share one host: the bearer-token API under `/v1` for
    server-to-server and agent use, and the workspace-session API under `/api`
    that the Revcenter app itself runs on.
  version: '2026-08-12'
servers:
  - url: https://api.revcenter.ai
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search
    description: Web search, search runs, results, exports, and shareable shortlists.
  - name: People
    description: Person search, profile enrichment, and the workspace contact pool.
  - name: Companies
    description: Company search, company enrichment, and org-chart people.
  - name: Campaigns
    description: Plan, publish, and launch outbound sequences on Smartlead and HeyReach.
  - name: Account
    description: Health, usage totals, and cost events.
paths:
  /api/contacts:
    get:
      tags:
        - People
      summary: List contacts
      description: >-
        The workspace's deduplicated person pool — everyone who has ever
        appeared in a search, collapsed to one record each, with paging and
        facet filters.


        Repeatable filter parameters are AND-ed across facets and OR-ed within
        one facet.
      operationId: listContacts
      parameters:
        - name: q
          in: query
          required: false
          description: Free-text search across the pool.
          schema:
            type: string
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: pageSize
          in: query
          required: false
          description: Anything other than these values falls back to 25.
          schema:
            type: integer
            enum:
              - 10
              - 25
              - 50
              - 100
            default: 25
        - name: role
          in: query
          required: false
          description: Repeatable.
          schema:
            type: array
            items:
              type: string
        - name: company
          in: query
          required: false
          description: Repeatable.
          schema:
            type: array
            items:
              type: string
        - name: metro
          in: query
          required: false
          description: Repeatable.
          schema:
            type: array
            items:
              type: string
        - name: sector
          in: query
          required: false
          description: Repeatable.
          schema:
            type: array
            items:
              type: string
        - name: signal
          in: query
          required: false
          description: Repeatable.
          schema:
            type: array
            items:
              type: string
        - name: enriched
          in: query
          required: false
          description: Repeatable. Filter by enrichment state.
          schema:
            type: array
            items:
              type: string
        - name: contact
          in: query
          required: false
          description: Repeatable. Filter by which contact details are present.
          schema:
            type: array
            items:
              type: string
        - name: minScans
          in: query
          required: false
          description: Only people who appeared in at least this many searches.
          schema:
            type: integer
            minimum: 0
      responses:
        '200':
          description: A page of contacts with facet counts.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/AppUnauthorized'
      security:
        - sessionCookie: []
components:
  responses:
    AppUnauthorized:
      description: >-
        Not signed in, no active workspace, or the account lacks the role this
        action needs. A frozen account gets `403` with code `frozen`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AppError'
          examples:
            signIn:
              value:
                error: Sign in required
  schemas:
    AppError:
      type: object
      description: >-
        The error shape used by every `/api` endpoint. Flatter than the `/v1`
        shape, and `code` appears only where the UI branches on it.
      properties:
        error:
          type: string
        code:
          type: string
          examples:
            - search_unavailable
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        A Revcenter API key: `Authorization: Bearer rvc_live_...`. Keys are
        scoped, rate limited per key, and metered per workspace.
    sessionCookie:
      type: apiKey
      in: cookie
      name: session
      description: >-
        A signed-in workspace session, sent as a browser cookie. Requests must
        include credentials, and act on the session's active workspace.

````