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

# List company attributes

> Returns the custom attributes defined on your team's companies, paginated, including the ones synced from your CRM integrations. Archived attributes are not listed. Only available to teams on the new contact model.

<Note>
  **Required scope:** `CRM_READ`
</Note>

Returns the custom attributes defined on your team's companies. The list includes the attributes you created and the ones synced from your CRM integrations. Archived attributes are not listed.

## Query parameters

| Parameter | Type | Default | Description |
| - | - | - | - |
| `page` | integer | `1` | Page number, starting at 1 |
| `size` | integer | `20` | Items per page, from 1 to 100 |

## Response fields

| Field | Type | Description |
| - | - | - |
| `key` | string | Unique key of the attribute |
| `label` | string or null | Display name |
| `type` | string or null | `TEXT`, `NUMBER`, `DATE`, `BOOLEAN` or `DROPDOWN` |
| `options` | array or null | `{ key, label }` objects. Only set for `DROPDOWN` |
| `is_visible` | boolean | Whether the attribute is shown in the Allo apps |
| `prompt` | string or null | Instruction the AI CRM Manager uses to fill the attribute from calls |
| `should_prompt_override` | boolean or null | Whether the AI may overwrite an existing value |
| `source` | string | `allo`, or the integration that manages the attribute, such as `hubspot` |
| `created_at` | string | ISO 8601 date-time |
| `updated_at` | string | ISO 8601 date-time |

```json theme={null}
{
  "data": [
    {
      "key": "employees",
      "label": "Employees",
      "type": "NUMBER",
      "options": null,
      "is_visible": true,
      "prompt": null,
      "should_prompt_override": null,
      "source": "hubspot",
      "created_at": "2026-10-07T14:21:08",
      "updated_at": "2026-10-07T14:21:08"
    }
  ],
  "pagination": {
    "page": 1,
    "size": 20,
    "total_count": 1,
    "total_pages": 1,
    "has_more": false
  }
}
```

## Errors

| Status | Code | When |
| - | - | - |
| `400` | `INVALID_PAGE_SIZE` | `page` is below 1, or `size` is outside 1 to 100 |
| `403` | `API_KEY_INSUFFICIENT_SCOPE` | The key does not hold `CRM_READ` |
| `404` | `TEAM_NOT_FOUND` | The workspace is not on the new contact model |


## OpenAPI

````yaml GET /v2/api/crm/companies/attributes
openapi: 3.0.3
info:
  title: Allo API
  description: >-
    Allo API provides programmatic access to your Allo account, allowing you to
    manage webhooks, retrieve calls and contacts, and send SMS messages.


    All requests to `/v1/api/**` endpoints automatically go through quota
    checking and scope validation.
  version: 1.0.0
  contact:
    name: Allo Support
servers:
  - url: https://api.withallo.com
    description: Production server
security: []
tags:
  - name: Summary Templates
    description: >-
      Manage call summary templates that control how AI-generated call summaries
      are structured for your team.
  - name: Webhooks
    description: >-
      Manage webhook endpoints to receive real-time notifications about events
      in your Allo account. Each endpoint subscribes to one or more event topics
      and is verified with a signing secret.
  - name: Calls
    description: >-
      Retrieve and search call records with filtering and pagination. Filter
      calls by your Allo phone number.
  - name: Contacts
    description: >-
      Search and retrieve contact information with sorting and pagination.
      Includes engagement level tracking.
  - name: SMS
    description: Send SMS messages to phone numbers using your Allo numbers.
  - name: Phone Numbers
    description: Retrieve information about your Allo phone numbers.
  - name: Analytics
    description: Pre-computed call metrics, team performance, and outbound dial funnel
  - name: CRM
    description: Manage people, companies, and deals in your CRM.
  - name: Notes
    description: >-
      Internal team notes on conversations and CRM people, with @mention
      support. Notes are never visible to the contact.
  - name: Threads
    description: >-
      Team discussion threads attached to a conversation item (call, SMS, or
      conversation note). One thread per item.
  - name: AI Receptionist
    description: >-
      Read and write the AI receptionist configuration of a phone line: business
      details, voice, prompt, capabilities, business hours, transfer rules,
      scheduling calendars and knowledge sources.
paths:
  /v2/api/crm/companies/attributes:
    get:
      tags:
        - CRM
      summary: List custom company attributes
      description: >-
        Returns the custom attributes defined on your team's companies,
        paginated, including the ones synced from your CRM integrations.
        Archived attributes are not listed. Only available to teams on the new
        contact model.
      operationId: listCompanyAttributes
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/Size'
      responses:
        '200':
          description: List of company attributes
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/CompanyAttribute'
                  - $ref: '#/components/schemas/PaginatedResponse'
              example:
                data:
                  - key: industry_segment
                    label: Industry segment
                    type: DROPDOWN
                    options:
                      - key: smb
                        label: SMB
                      - key: enterprise
                        label: Enterprise
                    is_visible: true
                    prompt: >-
                      Pick the segment that matches the company size mentioned
                      on the call.
                    should_prompt_override: false
                    source: allo
                    created_at: '2026-10-07T14:21:08'
                    updated_at: '2026-10-07T14:21:08'
                pagination:
                  page: 1
                  size: 20
                  total_count: 1
                  total_pages: 1
                  has_more: false
        '400':
          $ref: '#/components/responses/ApiValidationError'
        '401':
          $ref: '#/components/responses/ApiUnauthorized'
        '403':
          $ref: '#/components/responses/ApiForbidden'
        '404':
          $ref: '#/components/responses/ApiNotFound'
        '429':
          $ref: '#/components/responses/ApiRateLimited'
      security:
        - ApiKeyAuth: []
components:
  parameters:
    Page:
      name: page
      in: query
      description: Page number (1-indexed)
      schema:
        type: integer
        default: 1
        minimum: 1
    Size:
      name: size
      in: query
      description: Results per page
      schema:
        type: integer
        default: 20
        minimum: 1
        maximum: 100
  schemas:
    CompanyAttribute:
      type: object
      description: A custom attribute on companies
      properties:
        key:
          type: string
          description: Unique key within your team
          example: industry_segment
        label:
          type: string
          nullable: true
          description: Display name
          example: Industry segment
        type:
          type: string
          nullable: true
          enum:
            - TEXT
            - NUMBER
            - DATE
            - BOOLEAN
            - DROPDOWN
          example: DROPDOWN
        options:
          type: array
          nullable: true
          description: Allowed values. Only set for `DROPDOWN` attributes.
          items:
            $ref: '#/components/schemas/CompanyAttributeOption'
        is_visible:
          type: boolean
          description: Whether the attribute is shown in the Allo apps
        prompt:
          type: string
          nullable: true
          description: >-
            Instruction the AI CRM Manager follows to fill this attribute from
            calls. A blank value clears it.
          example: >-
            Pick the segment that matches the company size mentioned on the
            call.
        should_prompt_override:
          type: boolean
          description: Whether the AI may overwrite a value that is already set
          nullable: true
        source:
          type: string
          description: >-
            `allo` for attributes created in Allo or with the API, otherwise the
            lowercase name of the integration that manages it, such as `hubspot`
          example: allo
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    PaginatedResponse:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
    CompanyAttributeOption:
      type: object
      properties:
        key:
          type: string
          example: enterprise
        label:
          type: string
          example: Enterprise
    Pagination:
      type: object
      properties:
        page:
          type: integer
        size:
          type: integer
        total_count:
          type: integer
        total_pages:
          type: integer
        has_more:
          type: boolean
    ApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
            code:
              type: string
            message:
              type: string
            retryable:
              type: boolean
            request_id:
              type: string
            retry_after_seconds:
              type: integer
              nullable: true
  responses:
    ApiValidationError:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ApiUnauthorized:
      description: Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ApiForbidden:
      description: API key lacks the required scope or access to the resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ApiNotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ApiRateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.