Skip to main content
GET
/
v1
/
people
List people
curl --request GET \
  --url https://api.wellapp.ai/v1/people \
  --header 'Authorization: <authorization>'
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "type": "<string>",
      "attributes": {
        "first_name": "Marie",
        "last_name": "Dubois",
        "created_at": "2024-01-15T10:30:00Z",
        "full_name": "Marie Dubois",
        "updated_at": "2024-01-16T14:20:00Z"
      },
      "relationships": {
        "emails": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>"
            }
          ]
        },
        "phones": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>"
            }
          ]
        },
        "web_links": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>"
            }
          ]
        },
        "companies": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>"
            }
          ]
        },
        "workspaces": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>"
            }
          ]
        },
        "documents": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>"
            }
          ]
        },
        "memberships": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>"
            }
          ]
        },
        "medias": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>"
            }
          ]
        }
      },
      "included": {
        "emails": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>",
              "attributes": {
                "value": "sarah.wilson@techcorp.com",
                "is_primary": true,
                "label": "work",
                "created_at": "2023-06-15T10:30:00Z",
                "updated_at": "2023-06-15T10:30:00Z"
              }
            }
          ]
        },
        "phones": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>",
              "attributes": {
                "number": "+14155552671",
                "is_primary": true,
                "label": "work"
              }
            }
          ]
        },
        "web_links": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>",
              "attributes": {
                "url": "<string>"
              }
            }
          ]
        },
        "companies": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>",
              "attributes": {
                "registration": {
                  "registered_name": "TechCorp AI Solutions LLC",
                  "trade_name": "TechSol"
                },
                "locale": "en-US",
                "domain_name_primary_link_url": "https://www.techcorp.com",
                "tax_id": {
                  "value": "DE123456789",
                  "type": [
                    "VAT",
                    "TVA",
                    "IVA",
                    "..."
                  ]
                },
                "registration_number": {
                  "business_type": "GmbH",
                  "value": "HRB 123456",
                  "registry_name": "Handelsregister Berlin",
                  "registry_country": "DE, FR, US, etc."
                },
                "description": "An innovative technology company focused on AI solutions"
              }
            }
          ]
        },
        "workspaces": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>",
              "attributes": {
                "name": "<string>",
                "description": "<string>",
                "avatar_color": "<string>",
                "external_workspace_id": "<string>"
              }
            }
          ]
        },
        "documents": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>",
              "attributes": {
                "file_name": "<string>",
                "status": "<string>",
                "file_type": "<string>",
                "size_bytes": 123
              }
            }
          ]
        },
        "memberships": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>",
              "attributes": {
                "firebase_id": "<string>"
              }
            }
          ]
        },
        "medias": {
          "data": [
            {
              "type": "<string>",
              "id": "<string>",
              "attributes": {
                "is_primary": true
              }
            }
          ]
        }
      }
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 137,
      "total_pages": 7
    }
  }
}
GET /v1/people returns the workspace’s people (contacts), page-paginated with page and limit (max 100). It does not accept inline filtering or sorting — those query params are ignored. To filter or sort people — including across related objects — use the records query: POST /v1/records/query with root: "people". It exposes the full filters / raw whereClause and orderBy model. For the operator set and pagination notes see Filtering & sorting. Filter and sort on a related (included) object by nesting into the relationship — the same relationships you pass to include.
  • To-one relations nest directly: { "issuer": { "name": { "_eq": "Acme" } } }, and sort by a dot-path: "orderBy": { "field": "issuer.name", "direction": "asc" }.
  • To-many relations must be quantified with _some, _every, or _none: { "items": { "_some": { "quantity": { "_gt": 1 } } } }. They are not directly sortable (a to-many sort needs an aggregate proxy).
  • Composite composite_* columns are virtual — filter and sort on their underlying source fields, not on the composite.
Workspace row-level security applies at every hop, so a related-object filter never widens your tenant scope. Full operator set, deep-nesting rules, and pagination notes: Filtering & sorting. 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"
source_workspace_connectorto-one (workspaceconnector){ "source_workspace_connector": { "field_name": { "_eq": … } } }"field": "source_workspace_connector.field_name"
mediato-one (media){ "media": { "file_name": { "_eq": … } } }"field": "media.file_name"
emailsto-many (personemail){ "emails": { "_some": { "address": { "_eq": … } } } }aggregate proxy only ⚠️
phonesto-many (personphone){ "phones": { "_some": { "number": { "_eq": … } } } }aggregate proxy only ⚠️
locationsto-many (personlocation){ "locations": { "_some": { "city": { "_eq": … } } } }aggregate proxy only ⚠️
web_linksto-many (personweblink){ "web_links": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
companiesto-many (companyperson){ "companies": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
membershipsto-many (membership){ "memberships": { "_some": { "role": { "_eq": … } } } }aggregate proxy only ⚠️
collectto-many (collect){ "collect": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
workspace_connectorsto-many (workspaceconnector){ "workspace_connectors": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
people_workspace_connectorsto-many (peopleworkspaceconnector){ "people_workspace_connectors": { "_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": "people",
  "whereClause": { "workspace": { "name": { "_ilike": "%acme%" } } },
  "orderBy": { "field": "workspace.name", "direction": "asc" }
}
Filter by a to-many relation (quantified — bare nesting is invalid):
{
  "root": "people",
  "whereClause": { "emails": { "_some": { "address": { "_ilike": "%@acme.com" } } } }
}

Headers

Authorization
string
required

Bearer token for authentication

Query Parameters

page
integer
default:1

1-based page number.

Required range: x >= 1
limit
integer
default:20

People per page (max 100).

Required range: 1 <= x <= 100

Response

A page of people.

data
object[]
required
meta
object