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

# List Phone Numbers

> List all phone numbers across both channels: 10DLC numbers (owned via a campaign) and toll-free numbers (owned via a toll-free verification). Each row carries a `channel` and an `owner_type` indicating what it belongs to. The `campaign_id`/`campaign_name`/`brand_id`/`brand_name` fields are populated for 10DLC numbers and null for toll-free; `toll_free_verification_id`/`toll_free_registration_name`/`tf_verification_status` are populated for toll-free numbers and null for 10DLC. Filter by organization, brand, or campaign (brand/campaign filters apply to 10DLC numbers only), and optionally by `channel` or `owner_type`.



## OpenAPI

````yaml /api-reference/openapi.json get /phone-numbers
openapi: 3.1.0
info:
  title: Political Comms API
  summary: >-
    Direct-to-carrier political texting API for campaigns, PACs, advocacy
    organizations, fundraisers, and elected officials.
  description: >-
    Public REST API for the Political Comms platform. Surfaces include Projects
    (compose, test, schedule, send), Contact Lists (S3 import and analysis),
    Media Files, Organizations and hierarchy, Brands, Campaigns, Tracking
    Domains, Phone Numbers, Analytics, and Billing.


    Authentication is an API key passed in the `X-API-Key` header. Keys are
    generated from the dashboard at Admin → API Keys and are prefixed
    `pc_live_`. All POST and PATCH endpoints that mutate state are designed to
    be safe to retry, with optional `Idempotency-Key` headers for stronger
    guarantees. Rate limit is 100 requests per hour per key.


    Webhooks emit `message.sent`, `message.delivered`, `message.failed`,
    `message.replied`, and `link.clicked` events. Payloads are HMAC-signed;
    validate the signature before trusting any payload.


    A Model Context Protocol (MCP) server is available at
    https://docs.politicalcomms.com/mcp for AI agents that need to search the
    documentation programmatically. The developer hub at
    https://politicalcomms.com/developers/ has quickstart examples in cURL, raw
    HTTP, and Python.
  version: 1.0.0
  termsOfService: https://politicalcomms.com/terms/
  contact:
    name: Political Comms Support
    email: support@politicalcomms.com
    url: https://docs.politicalcomms.com
  license:
    name: Proprietary
    url: https://politicalcomms.com/terms/
  x-logo:
    url: https://politicalcomms.com/images/brand/pcomms-logo-left-of-text.png
    altText: Political Comms
    backgroundColor: '#ffffff'
    href: https://politicalcomms.com/
  x-mcp:
    url: https://docs.politicalcomms.com/mcp
    discovery_url: https://docs.politicalcomms.com/.well-known/mcp
    transport: http
    auth: none
    tools:
      - search_political_comms
      - query_docs_filesystem_political_comms
servers:
  - url: https://api.politicalcomms.com/v1
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Organizations
    description: List descendant organizations and hierarchy.
  - name: Brands
    description: List brands across your organization hierarchy.
  - name: Campaigns
    description: List campaigns across your organization hierarchy.
  - name: Tracking Domains
    description: >-
      List active link-tracking domains. Use the returned ids as
      `link_tracking_domain_id` on project create/update.
  - name: Phone Numbers
    description: List phone numbers across 10DLC campaigns and toll-free verifications.
  - name: Toll-Free Verifications
    description: >-
      List toll-free verifications (carrier registrations) across your
      organization hierarchy.
  - name: Contact Lists
    description: List, import, and analyze contact lists.
  - name: Media Files
    description: List, import, and fetch media files.
  - name: Projects
    description: Create, edit, test, schedule, and inspect projects.
  - name: Analytics
    description: Message statistics and delivery performance.
  - name: Billing
    description: Usage and billing data across your organization.
paths:
  /phone-numbers:
    get:
      tags:
        - Phone Numbers
      summary: List Phone Numbers
      description: >-
        List all phone numbers across both channels: 10DLC numbers (owned via a
        campaign) and toll-free numbers (owned via a toll-free verification).
        Each row carries a `channel` and an `owner_type` indicating what it
        belongs to. The `campaign_id`/`campaign_name`/`brand_id`/`brand_name`
        fields are populated for 10DLC numbers and null for toll-free;
        `toll_free_verification_id`/`toll_free_registration_name`/`tf_verification_status`
        are populated for toll-free numbers and null for 10DLC. Filter by
        organization, brand, or campaign (brand/campaign filters apply to 10DLC
        numbers only), and optionally by `channel` or `owner_type`.
      operationId: listPhoneNumbers
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/BrandId'
        - $ref: '#/components/parameters/CampaignId'
        - name: channel
          in: query
          required: false
          description: Filter by messaging channel
          schema:
            type: string
            enum:
              - 10dlc
              - toll-free
              - short-code
              - rcs
        - name: owner_type
          in: query
          required: false
          description: >-
            Filter by what the number belongs to: a 10DLC campaign, a toll-free
            verification, or neither (purchased but not yet attached)
          schema:
            type: string
            enum:
              - campaign
              - toll_free_registration
              - unassigned
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                success: true
                data:
                  - id: pn_abc123
                    number: '+12025551234'
                    channel: 10dlc
                    owner_type: campaign
                    campaign_id: camp_xyz789
                    campaign_name: Fall 2025 GOTV
                    brand_id: brand_abc123
                    brand_name: Smith PAC
                    toll_free_verification_id: null
                    tf_verification_status: null
                    toll_free_registration_name: null
                    org_id: org_123
                    org_name: Smith Campaign 2024
                    status: active
                    created_at: '2024-03-01T08:00:00Z'
                  - id: pn_def456
                    number: '+18005551234'
                    channel: toll-free
                    owner_type: toll_free_registration
                    campaign_id: null
                    campaign_name: null
                    brand_id: null
                    brand_name: null
                    toll_free_verification_id: tfv_abc123
                    tf_verification_status: verified
                    toll_free_registration_name: Smith Campaign TFN
                    org_id: org_123
                    org_name: Smith Campaign 2024
                    status: active
                    created_at: '2024-03-02T08:00:00Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    OrganizationId:
      name: organization_id
      in: query
      required: false
      description: Filter to a specific descendant organization
      schema:
        type: string
    BrandId:
      name: brand_id
      in: query
      required: false
      description: Filter to a specific brand
      schema:
        type: string
    CampaignId:
      name: campaign_id
      in: query
      required: false
      description: Filter to a specific campaign
      schema:
        type: string
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          example:
            success: false
            error: The provided API key is invalid or has been revoked
            code: INVALID_API_KEY
            statusCode: 401
    RateLimited:
      description: Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          description: Maximum requests allowed in the current window
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Requests remaining in the current window
          schema:
            type: integer
        X-RateLimit-Reset:
          description: Unix timestamp (seconds) when the limit resets
          schema:
            type: integer
      content:
        application/json:
          example:
            success: false
            error: >-
              Rate limit exceeded. Try again after the X-RateLimit-Reset
              timestamp.
            code: RATE_LIMIT_EXCEEDED
            statusCode: 429
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Authenticate every request by passing your API key in the X-API-Key
        header. Keys are scoped to your organization hierarchy.

````