List Phones

get/v1/phones

Returns a cursor-paginated, workspace-scoped list of phone rows from the records pipeline. Read-only; no side effects. Phones are created and deleted as sub-resources of a person or company, not here. ## Filtering & sorting Filter via `POST /v1/records/query` (root `phones`) or the `filters` model; operators are gated by each field's data type. See [Filtering & sorting](../filtering-and-sorting). **Filterable fields** | Field | Type | Allowed operators | |---|---|---| | `composite_companies_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_people_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_phone_summary` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `country_code` | number | `eq` `neq` `gt` `gte` `lt` `lte` `is_null` `is_not_null` | | `created_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | | `deleted_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | | `e164_number` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `national_number` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `phone_id` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `pk` | number | `eq` `neq` `gt` `gte` `lt` `lte` `is_null` `is_not_null` | | `updated_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | **Sortable fields:** `composite_companies_list`, `composite_people_list`, `composite_phone_summary`, `country_code`, `created_at`, `deleted_at`, `e164_number`, `national_number`, `phone_id`, `pk`, `updated_at` (via `orderBy` / `sort`, `asc`|`desc`).

Requires a bearer token: Authorization: Bearer <token>.

Query parameters

NameTypeRequiredDescription
limitstringNoPage size, 1 to 200.e.g. 50
cursorstringNoOpaque cursor from a prior page's links.next.e.g. eyJwayI6MTIzfQ
orderBystringNoColumn to order by.e.g. created_at
directionstringNoSort direction.e.g. desc
workspaceIdstring <uuid>NoWorkspace to scope to; defaults to the token's workspace.e.g. 8f6b2c10-4a1e-4d2b-9c3a-1f0e7a5b6c21

Request

cURL
curl -X GET https://api.wellapp.ai/v1/phones \
  -H "Authorization: Bearer $WELL_API_TOKEN"

Responses

200A page of phone rows.

{
  "data": [
    {
      "type": "phone",
      "id": "f7a8b9c0-1d2e-43f4-95a6-b7c8d9e0f1a2",
      "attributes": {
        "country_code": 1,
        "national_number": "4155550142",
        "e164_number": "+14155550142"
      },
      "relationships": {
        "person_phones": {
          "data": [
            {
              "type": "person_phone",
              "id": "00000000-0000-4000-8000-000000000001"
            }
          ]
        },
        "company_phones": {
          "data": [
            {
              "type": "company_phone",
              "id": "00000000-0000-4000-8000-000000000001"
            }
          ]
        }
      }
    }
  ],
  "meta": {
    "total": 12,
    "count": 1
  },
  "links": {
    "next": null
  }
}

401Unauthorized

{
  "code": "UNAUTHORIZED",
  "status": 401,
  "title": "Unauthorized",
  "message": "See title.",
  "meta": {
    "trace_id": "a1b2c3",
    "log_id": "a1b2c3"
  }
}

403Forbidden

{
  "code": "FORBIDDEN",
  "status": 403,
  "title": "Forbidden",
  "message": "See title.",
  "meta": {
    "trace_id": "a1b2c3",
    "log_id": "a1b2c3"
  }
}

This resource's related objects (the ones you can include) and how to filter or sort on each:

RelationshipCardinalityFilter on a fieldSort by a field
workspaceto-one (workspace){ "workspace": { "name": { "_eq": … } } }"field": "workspace.name"
person_phonesto-many (person_phone){ "person_phones": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
company_phonesto-many (company_phone){ "company_phones": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️

Replace field_name with any field of the related object. See its object-reference page for the full field list.

Filter by a to-one relation (and sort by it):

{
  "root": "phones",
  "whereClause": { "workspace": { "name": { "_ilike": "%acme%" } } },
  "orderBy": { "field": "workspace.name", "direction": "asc" }
}

Filter by a to-many relation (quantified — bare nesting is invalid):

{
  "root": "phones",
  "whereClause": { "person_phones": { "_some": { "field_name": { "_gt": 0 } } } }
}