Get Companies

get/v1/companies

Returns 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

NameTypeRequiredDescription
pagestringNo1-based page number for offset pagination.e.g. 1
limitstringNoPage size, 1 to 100.e.g. 25

Request

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

Responses

200A 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"
          }
        }
      }
    }
  ]
}

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"
  }
}

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

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 (workspace_connector){ "source_workspace_connector": { "name": { "_eq": … } } }"field": "source_workspace_connector.name"
relationsto-many (company_relation){ "relations": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
peopleto-many (company_person){ "people": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
social_linksto-many (company_web_link){ "social_links": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
locationsto-many (company_location){ "locations": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
emailsto-many (company_email){ "emails": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
phonesto-many (company_phone){ "phones": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
categoriesto-many (company_category){ "categories": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
mediato-many (company_media){ "media": { "_some": { "field_name": { "_eq": … } } } }aggregate proxy only ⚠️
company_financialto-one (company_financial){ "company_financial": { "field_name": { "_eq": … } } }"field": "company_financial.field_name"
company_workspace_connectorsto-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 } } } }
}