Get Companies
/v1/companiesReturns a page of companies in the caller's workspace, each with hydrated id-only relationships and any included related resources. Read-only; has no side effects. Scoped to the authenticated workspace. ## Filtering & sorting Filter via `POST /v1/records/query` (root `companies`) 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 | |---|---|---| | `business_type` | enum | `eq` `neq` `in` `is_null` `is_not_null` | | `canonical_legal_name` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `canonical_registry` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `canonical_tax_id` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `company_id` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_accounts_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_cards_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_categories_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_checks_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_emails_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_invoices_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_invoices_received_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_journal_entry_lines_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_journals_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_ledger_accounts_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_locations_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_logo_name` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_media_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_payment_means_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_phones_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_related_companies_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_routed_to` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_social_links` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_sourced_from` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_subscriptions_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_transactions_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `composite_web_links_list` | text | `contains` `eq` `neq` `starts_with` `ends_with` `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` | | `description` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `domain` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `domain_normalized` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `identity_completeness` | number | `eq` `neq` `gt` `gte` `lt` `lte` `is_null` `is_not_null` | | `locale` | enum | `eq` `neq` `in` `is_null` `is_not_null` | | `name` | 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` | | `registered_name` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `registered_value` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `registry_country` | enum | `eq` `neq` `in` `is_null` `is_not_null` | | `registry_name` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `tax_id_type` | enum | `eq` `neq` `in` `is_null` `is_not_null` | | `tax_id_value` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `trade_name` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `updated_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | **Sortable fields:** `business_type`, `canonical_legal_name`, `canonical_registry`, `canonical_tax_id`, `company_id`, `composite_accounts_list`, `composite_cards_list`, `composite_categories_list`, `composite_checks_list`, `composite_emails_list`, `composite_invoices_list`, `composite_invoices_received_list`, `composite_journal_entry_lines_list`, `composite_journals_list`, `composite_ledger_accounts_list`, `composite_locations_list`, `composite_logo_name`, `composite_media_list`, `composite_payment_means_list`, `composite_people_list`, `composite_phones_list`, `composite_related_companies_list`, `composite_routed_to`, `composite_social_links`, `composite_sourced_from`, `composite_subscriptions_list`, `composite_transactions_list`, `composite_web_links_list`, `created_at`, `deleted_at`, `description`, `domain`, `domain_normalized`, `identity_completeness`, `locale`, `name`, `pk`, `registered_name`, `registered_value`, `registry_country`, `registry_name`, `tax_id_type`, `tax_id_value`, `trade_name`, `updated_at` (via `orderBy` / `sort`, `asc`|`desc`).
Requires a bearer token: Authorization: Bearer <token>.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| page | string | No | 1-based page number for offset pagination.e.g. 1 |
| limit | string | No | Page size, 1 to 100.e.g. 25 |
Request
curl -X GET https://api.wellapp.ai/v1/companies \
-H "Authorization: Bearer $WELL_API_TOKEN"Responses
200 — A page of companies with their included related resources.
{
"data": [
{
"type": "companies",
"id": "b2c3d4e5-6f70-4812-93a4-b5c6d7e8f9a0",
"attributes": {
"name": "Anthropic",
"description": "Frontier AI lab, vendor for model inference.",
"domain": "anthropic.com",
"registered_name": "Anthropic, PBC",
"trade_name": "Anthropic",
"registered_value": "C3981221",
"registry_name": "Delaware Division of Corporations",
"registry_country": "US",
"tax_id_value": "82-1990113",
"tax_id_type": "EIN",
"created_at": "2026-01-15T10:00:00.000Z",
"updated_at": "2026-05-10T12:00:00.000Z"
},
"relationships": {
"people": {
"data": []
},
"emails": {
"data": [
{
"type": "email",
"id": "e6f7a8b9-0c1d-42e3-94f5-a6b7c8d9e0f1"
}
]
}
}
}
],
"included": [
{
"type": "email",
"id": "e6f7a8b9-0c1d-42e3-94f5-a6b7c8d9e0f1",
"attributes": {
"value": "remy@foldspace.ai",
"created_at": "2026-01-12T09:31:05.000Z",
"updated_at": null
},
"relationships": {
"relations": {
"data": [
{
"type": "company_relation",
"id": "00000000-0000-4000-8000-000000000001"
}
]
},
"people": {
"data": [
{
"type": "company_person",
"id": "00000000-0000-4000-8000-000000000001"
}
]
},
"social_links": {
"data": [
{
"type": "company_web_link",
"id": "00000000-0000-4000-8000-000000000001"
}
]
},
"locations": {
"data": [
{
"type": "company_location",
"id": "00000000-0000-4000-8000-000000000001"
}
]
},
"emails": {
"data": [
{
"type": "company_email",
"id": "00000000-0000-4000-8000-000000000001"
}
]
},
"phones": {
"data": [
{
"type": "company_phone",
"id": "00000000-0000-4000-8000-000000000001"
}
]
},
"categories": {
"data": [
{
"type": "company_category",
"id": "00000000-0000-4000-8000-000000000001"
}
]
},
"media": {
"data": [
{
"type": "company_media",
"id": "00000000-0000-4000-8000-000000000001"
}
]
},
"company_financial": {
"data": {
"type": "company_financial",
"id": "00000000-0000-4000-8000-000000000001"
}
}
}
}
]
}401 — Unauthorized
{
"code": "UNAUTHORIZED",
"status": 401,
"title": "Unauthorized",
"message": "See title.",
"meta": {
"trace_id": "a1b2c3",
"log_id": "a1b2c3"
}
}403 — Forbidden
{
"code": "FORBIDDEN",
"status": 403,
"title": "Forbidden",
"message": "See title.",
"meta": {
"trace_id": "a1b2c3",
"log_id": "a1b2c3"
}
}Complex Usage Example
Advanced Company Filtering with Full Context
This example demonstrates advanced filtering with multiple parameters, relationship inclusion, business entity filtering, sorting, and pagination for retrieving companies:
curl -X GET "https://api.well.com/v1/companies?include=peoples,workspaces,emails,phones,web_links,locations,documents,media,categories,parents,subsidiaries&filter[workspace_id]=550e8400-e29b-41d4-a716-446655440000&filter[name]=TechCorp&filter[business_entity]=GmbH&filter[registration_tax_id]=12345678901&filter[registration_registered_value]=123456789&filter[country]=DE&filter[people_id]=550e8400-e29b-41d4-a716-446655440001&filter[email]=contact@techcorp.com&filter[phone_number]=+491234567890&filter[has_logo]=true&filter[created_at_from]=2024-01-01T00:00:00Z&filter[created_at_to]=2024-12-31T23:59:59Z&filter[updated_at_from]=2024-06-01T00:00:00Z&sort=-created_at&page[limit]=25&page[cursor]=eyJjcmVhdGVkX2F0IjoiMjAyNS0xMS0wMlQxMDozMDowMFoiLCJpZCI6ImNvbXBhbnk5LXV1aWQifQ==" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"This comprehensive query will:
- Include relationships: Retrieve complete data for people, workspaces, contact information, and documents
- Filter by workspace: Limit to companies in a specific workspace
- Search by name: Find companies with "TechCorp" in their name
- Filter by business entity: Only show German GmbH companies
- Registration filtering: Filter by tax ID and registration numbers
- Geographic filtering: Limit to companies in Germany
- Contact filtering: Find companies with specific email or phone
- Media filtering: Only show companies with logos
- Date range filtering: Limit to companies created/updated in specific periods
- Sorting: Order by creation date (newest first)
- Pagination: Get 25 results per page with cursor-based pagination
Filtering & sorting on related objects
This resource's related objects (the ones you can include) and how to filter or sort on each:
| Relationship | Cardinality | Filter on a field | Sort by a field |
|---|---|---|---|
workspace | to-one (workspace) | { "workspace": { "name": { "_eq": … } } } | "field": "workspace.name" ✅ |
source_workspace_connector | to-one (workspace_connector) | { "source_workspace_connector": { "name": { "_eq": … } } } | "field": "source_workspace_connector.name" ✅ |
relations | to-many (company_relation) | { "relations": { "_some": { "field_name": { "_eq": … } } } } | aggregate proxy only ⚠️ |
people | to-many (company_person) | { "people": { "_some": { "field_name": { "_eq": … } } } } | aggregate proxy only ⚠️ |
social_links | to-many (company_web_link) | { "social_links": { "_some": { "field_name": { "_eq": … } } } } | aggregate proxy only ⚠️ |
locations | to-many (company_location) | { "locations": { "_some": { "field_name": { "_eq": … } } } } | aggregate proxy only ⚠️ |
emails | to-many (company_email) | { "emails": { "_some": { "field_name": { "_eq": … } } } } | aggregate proxy only ⚠️ |
phones | to-many (company_phone) | { "phones": { "_some": { "field_name": { "_eq": … } } } } | aggregate proxy only ⚠️ |
categories | to-many (company_category) | { "categories": { "_some": { "field_name": { "_eq": … } } } } | aggregate proxy only ⚠️ |
media | to-many (company_media) | { "media": { "_some": { "field_name": { "_eq": … } } } } | aggregate proxy only ⚠️ |
company_financial | to-one (company_financial) | { "company_financial": { "field_name": { "_eq": … } } } | "field": "company_financial.field_name" ✅ |
company_workspace_connectors | to-many (company_workspace_connector) | { "company_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": "companies",
"whereClause": { "workspace": { "name": { "_ilike": "%acme%" } } },
"orderBy": { "field": "workspace.name", "direction": "asc" }
}Filter by a to-many relation (quantified — bare nesting is invalid):
{
"root": "companies",
"whereClause": { "relations": { "_some": { "field_name": { "_gt": 0 } } } }
}