Apollo.io Fields API

Field and custom-field definitions across contacts, accounts and opportunities. 4 operation(s) from the published Apollo OpenAPI.

OpenAPI Specification

apollo-io-fields-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Apollo.io Fields API
  version: '1.0'
  summary: Programmatic access to Apollo's sales intelligence and engagement platform — data enrichment,
    prospect and company search, and go-to-market workflow management.
  description: 'The Apollo API provides programmatic access to [Apollo](https://www.apollo.io/), the all-in-one
    sales intelligence and engagement platform. Use it to enrich people and company data (individually
    or in bulk), search Apollo''s database of over 240 million contacts and 30 million companies, and
    manage accounts, contacts, deals, sequences, tasks, calls, and conversations in your go-to-market
    workflows.


    ## Base URL


    All API requests are made to `https://api.apollo.io/api/v1`.


    ## Authentication


    - **Apollo users** authenticate with an API key passed in the `x-api-key` request header. See [Create
    API Keys](https://docs.apollo.io/docs/create-api-key).

    - **Apollo partners** building integrations on behalf of mutual users authenticate with the [OAuth
    2.0 authorization flow](https://docs.apollo.io/docs/use-oauth-20-authorization-flow-to-access-apollo-user-information-partners).


    ## Rate limits & credits


    Rate limits and credit consumption depend on your [Apollo pricing plan](https://docs.apollo.io/docs/api-pricing).
    Check your current limits and usage with the [View API Usage Stats and Rate Limits](https://docs.apollo.io/reference/view-api-usage-stats)
    endpoint. For more details, see [Rate Limits](https://docs.apollo.io/reference/rate-limits) and the
    [API FAQs](https://docs.apollo.io/docs/apollo-api-faqs).


    New to the API? Start with the [Apollo API overview](https://docs.apollo.io/reference/apollo-api).'
  termsOfService: https://www.apollo.io/terms/api
  contact:
    name: Apollo API Support
    url: https://docs.apollo.io/
servers:
- url: https://api.apollo.io/api/v1
tags:
- name: Fields
  description: List, create, and update the fields and custom fields in your Apollo account.
security:
- apiKey: []
- bearerAuth: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: '[Recommended] API key, passed in the `x-api-key` request header.

        See [Create API Keys](https://docs.apollo.io/docs/create-api-key).'
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'OAuth 2.0 access token, used by Apollo partners building integrations.

        See the [OAuth 2.0 authorization flow](https://docs.apollo.io/docs/use-oauth-20-authorization-flow-to-access-apollo-user-information-partners).'
paths:
  /fields:
    get:
      summary: Get a List of Fields
      description: '## Endpoint essentials


        **API key access:** `api/v1/fields/index` or `Master API key`


        **OAuth scopes:** `custom_fields_list`


        **Credit usage:** `0 credits` — [Learn more about API pricing and credits](https://docs.apollo.io/docs/api-pricing).


        Use the Get a List of Fields endpoint to retrieve information about all of the fields that exist
        in your Apollo account.'
      tags:
      - Fields
      operationId: get-a-list-of-fields
      parameters:
      - name: source
        in: query
        required: false
        schema:
          type: string
          enum:
          - system
          - custom
          - crm_synced
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value:
                    fields:
                    - id: contact.id
                      category: person
                      context:
                      - finder
                      - csv_export
                      description: null
                      editable: false
                      example: 673c929202c6025d8bc4e680
                      field_name: contact.id
                      group: basic_info
                      icon_class: user
                      label: Identifier
                      modality: contact
                      parent: null
                      source: system
                      type: string
                      finder_view_ids: []
                      project_workspace_id: null
                      finder_views: []
                      is_local: false
                    - id: contact.attr1
                      category: person
                      context:
                      - finder
                      - csv_export
                      description: null
                      editable: false
                      example: Test Corp
                      field_name: contact.attr1
                      group: basic_info
                      icon_class: company
                      label: Person
                      modality: contact
                      parent: null
                      source: system
                      type: association
                      finder_view_ids: []
                      project_workspace_id: null
                      finder_views: []
                      is_local: false
                    - id: contact.attr2
                      category: person
                      context:
                      - prompt
                      - formula
                      - snippets
                      - finder
                      description: null
                      editable: false
                      example: John
                      field_name: contact.attr2
                      group: basic_info
                      icon_class: user
                      label: First name
                      modality: contact
                      parent: contact.name
                      source: system
                      type: string
                      finder_view_ids: []
                      project_workspace_id: null
                      finder_views: []
                      is_local: false
                    - id: account.694095a80f1b6000110fc556
                      category: company
                      context:
                      - csv_export
                      - finder
                      - prompt
                      description: null
                      editable: false
                      example: null
                      field_name: Custom field name
                      group: null
                      icon_class: null
                      label: last name
                      modality: account
                      parent: account.other_custom_field
                      source: custom
                      type: string
                      finder_view_ids: []
                      project_workspace_id: null
                      finder_views: []
                      is_local: false
                      created_at: '2025-12-15T23:11:36.084Z'
              schema:
                type: object
                properties:
                  fields:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        label:
                          type: string
                        modality:
                          type: string
                          description: Entity type this field belongs to (contact, account, opportunity,
                            lead, custom_object)
                        context:
                          type: string
                          description: High‑level context for the field (contact, account, opportunity,
                            lead, custom_object)
                        type:
                          type: string
                          description: Field data type (text, number, date, datetime, boolean, picklist,
                            multi_select, url, email, phone, currency)
                        source:
                          type: string
                          description: Field source (system, custom, crm_synced)
                        project_workspace_id:
                          type: string
                        meta:
                          type: object
                          additionalProperties: true
                          description: Extended configuration for the field
                        created_at:
                          type: string
                          format: date-time
                        updated_at:
                          type: string
                          format: date-time
                      required:
                      - id
                      - label
                      - modality
                      - type
        '401':
          description: '401'
          content:
            text/plain:
              examples:
                Check API key:
                  value: Invalid API key. See https://docs.apollo.io/reference/authentication for how
                    to authenticate.
        '403':
          description: '403'
          content:
            application/json:
              examples:
                Need master API key:
                  value: "{\n  \"error\": \"This API key is not authorized to access api/v1/fields/index.\
                    \ Request an API key from your administrator that includes this endpoint in its configured\
                    \ scope.\",\n  \"error_code\": \"API_INACCESSIBLE\"\n}"
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: This API key is not authorized to access api/v1/fields/index. Request an
                      API key from your administrator that includes this endpoint in its configured scope.
                  error_code:
                    type: string
                    example: API_INACCESSIBLE
        '429':
          description: '429'
          content:
            application/json:
              examples:
                Too many requests:
                  value: "{\n    \"message\": \"The maximum number of API calls allowed for api/v1/fields\
                    \ is 600 times per hour. To change your rate limit, upgrade your Apollo plan at https://app.apollo.io/#/settings/plans/upgrade.\"\
                    \n}"
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The maximum number of API calls allowed for api/v1/fields is 600 times per
                      hour. To change your rate limit, upgrade your Apollo plan at https://app.apollo.io/#/settings/plans/upgrade.
    post:
      summary: Create a Custom Field
      description: '## Endpoint essentials


        **API key access:** `api/v1/fields/create` or `Master API key`


        **OAuth scopes:** `custom_field_write`


        **Credit usage:** `0 credits` — [Learn more about API pricing and credits](https://docs.apollo.io/docs/api-pricing).


        The Create a Custom Field endpoint lets you add custom fields to your Apollo account, helping
        your team capture unique details with <a href="https://knowledge.apollo.io/hc/en-us/articles/4412498825869-Create-Custom-Contact-Fields"
        target="_blank">custom contact</a>, <a href="https://knowledge.apollo.io/hc/en-us/articles/4412498754445-Create-Custom-Account-Fields"
        target="_blank">custom account</a>, or <a href="https://knowledge.apollo.io/hc/en-us/articles/4415062486669-Create-a-Deal"
        target="_blank">custom deal fields</a>.<br><br>Use these fields to enhance your sequences and
        deliver more personalized, relevant outreach.'
      tags:
      - Fields
      operationId: create-a-custom-field
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                label:
                  type: string
                  description: 'Name of the custom field you want to create. Example: `Test Name`'
                modality:
                  type: string
                  description: 'The modality of the custom field you want to create.  Example: `contact`'
                  enum:
                  - contact
                  - account
                  - opportunity
                type:
                  type: string
                  description: 'What kind of custom field you want to create. Example: `textarea`'
                  enum:
                  - string
                  - textarea
                  - number
                  - date
                  - datetime
                  - boolean
                meta:
                  type: object
                  properties:
                    max_length:
                      type: number
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value:
                    typed_custom_fields:
                    - id: 32d42c92-5be4-4ec4-96c7-f689b43ec8a8
                      name: Test Name
                      modality: contact
                      text_field_max_length: 120
              schema:
                type: object
                properties:
                  typed_custom_fields:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          example: 32d42c92-5be4-4ec4-96c7-f689b43ec8a8
                        name:
                          type: string
                          example: Test Name
                        modality:
                          type: string
                          example: contact
                        text_field_max_length:
                          type: number
                          example: 120
        '401':
          description: '401'
          content:
            text/plain:
              examples:
                Check API key:
                  value: Invalid API key. See https://docs.apollo.io/reference/authentication for how
                    to authenticate.
        '403':
          description: '403'
          content:
            application/json:
              examples:
                Need master API key:
                  value: "{\n  \"error\": \"api/v1/fields this api_key\",\n  \"error_code\": \"API_INACCESSIBLE\"\
                    \n}"
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: This API key is not authorized to access api/v1/fields. Request an API key
                      from your administrator that includes this endpoint in its configured scope.
                  error_code:
                    type: string
                    example: API_INACCESSIBLE
      deprecated: false
    patch:
      summary: Update a Custom Field
      description: '## Endpoint essentials


        **API key access:** `api/v1/fields/update` or `Master API key`


        **OAuth scopes:** `custom_field_write`


        **Credit usage:** `0 credits` — [Learn more about API pricing and credits](https://docs.apollo.io/docs/api-pricing).


        Use the Update a Custom Field endpoint to change fields that already exist in your Apollo Workspace,
        such as renaming a field, changing the maximum length of a text field, or updating the values
        available in a picklist.<br><br>Pass the field under the `fields` array, where each object identifies
        the field by its unique `id`. To find field IDs, call the <a href="https://docs.apollo.io/reference/get-a-list-of-fields">Get
        a List of Fields</a> endpoint with `source: custom`. Update 1 field per request.<br><br>Only custom
        fields can be updated. System fields, and the child fields of a JSON field, cannot be updated.<br><br>Apollo
        only changes the parameters you include in your request, so you can omit any parameter that you
        want to leave as-is.<br><br><b>Updates overwrite the field''s current configuration.</b> The values
        you send replace the field''s existing configuration for every record of that modality, and the
        change cannot be cleanly undone. Removing or renaming picklist options in particular can drop
        or rewrite data already stored on your records.<br><br><b>Picklist fields:</b> every update to
        a `picklist` or `multipicklist` field must include the complete set of options you want to keep
        in `meta.picklist_values`, even when you are only renaming the field.'
      tags:
      - Fields
      operationId: update-a-custom-field
      requestBody:
        required: true
        content:
          application/json:
            examples:
              Rename a field:
                value:
                  fields:
                  - id: contact.694095a80f1b6000110fc556
                    label: Renewal owner
              Change the maximum length of a text field:
                value:
                  fields:
                  - id: contact.694095a80f1b6000110fc556
                    meta:
                      max_length: 240
              Add an option to a picklist field:
                value:
                  fields:
                  - id: account.694095a80f1b6000110fc557
                    meta:
                      picklist_values:
                      - id: 694095a80f1b6000110fc561
                        name: Gold
                      - id: 694095a80f1b6000110fc562
                        name: Silver
                      - name: Platinum
              Rename a picklist option without losing stored values:
                value:
                  fields:
                  - id: account.694095a80f1b6000110fc557
                    meta:
                      picklist_values:
                      - id: 694095a80f1b6000110fc561
                        name: VIP
                      - id: 694095a80f1b6000110fc562
                        name: Silver
            schema:
              type: object
              required:
              - fields
              properties:
                fields:
                  type: array
                  description: The field you want to update. Apollo only changes the parameters you include,
                    so you can omit any parameter you want to leave as-is. Update 1 field per request.
                  items:
                    type: object
                    required:
                    - id
                    properties:
                      id:
                        type: string
                        description: 'The ID of the field you want to update, in `modality.field_id` format.
                          <br><br>To find field IDs, call the <a href="https://docs.apollo.io/reference/get-a-list-of-fields">Get
                          a List of Fields</a> endpoint with `source: custom` and use the `id` value of
                          the field you want to change. <br><br>Only custom fields can be updated. System
                          fields and child fields of a JSON field cannot be updated. <br><br>Example:
                          `contact.694095a80f1b6000110fc556`'
                      modality:
                        type: string
                        description: <b>Read-only. This parameter cannot be updated.</b> A field's modality
                          is set when the field is created and is fixed for the life of the field. If
                          you include `modality` in your request, Apollo ignores the value you send and
                          keeps the field's existing modality, so the call succeeds but the modality does
                          not change. <br><br>To capture the same data against a different modality, use
                          the <a href="https://docs.apollo.io/reference/create-a-custom-field">Create
                          a Custom Field</a> endpoint to create a new field instead.
                      type:
                        type: string
                        description: <b>Read-only. This parameter cannot be updated.</b> A field's data
                          type is set when the field is created. You can send `type` only if it matches
                          the field's current type; sending a different type fails with `Cannot change
                          field type after creation`. <br><br>To store the data as a different type, use
                          the <a href="https://docs.apollo.io/reference/create-a-custom-field">Create
                          a Custom Field</a> endpoint to create a new field instead.
                      label:
                        type: string
                        description: 'A new name for the field, as it appears in Apollo. <br><br>Names
                          that start with `powerup_` are reserved by Apollo and cause the request to fail.
                          <br><br>Example: `Renewal owner`'
                      field_group_id:
                        type: string
                        description: 'The ID of the field group, or folder, that you want to move this
                          field into. <br><br>Example: `694095a80f1b6000110fc558`'
                      autorun_downstream_enrichment:
                        type: boolean
                        description: 'When `true`, enrichment for this field re-runs automatically whenever
                          the data it depends on changes. <br><br>Example: `true`'
                      schedule:
                        type: object
                        description: The schedule Apollo uses to automatically re-run this field's enrichment.
                          Only applies to enrichment columns that Apollo computes for you.
                        properties:
                          enabled:
                            type: boolean
                            description: Whether the schedule is active.
                          schedule_type:
                            type: string
                            description: How often the schedule runs, such as daily, weekly, or monthly.
                          schedule_timezone:
                            type: string
                            description: 'The timezone that Apollo evaluates the schedule in. <br><br>Example:
                              `America/Los_Angeles`'
                          run_limit:
                            type: number
                            description: The maximum number of records Apollo processes in a single scheduled
                              run.
                          max_executions:
                            type: number
                            description: The maximum number of times the schedule runs before it stops.
                          end_date:
                            type: string
                            format: date
                            description: 'The date when the schedule stops running. <br><br>Example: `2026-12-31`'
                          reset_execution_count:
                            type: boolean
                            description: Set to `true` to reset the number of executions Apollo has counted
                              against `max_executions`.
                          schedule_config:
                            type: object
                            description: The specific time the schedule runs. Which parameters apply depends
                              on `schedule_type`.
                            properties:
                              hour:
                                type: number
                                description: The hour of the day, from `0` to `23`.
                              minute:
                                type: number
                                description: The minute of the hour, from `0` to `59`.
                              day_of_week:
                                type: number
                                description: The day of the week, for weekly schedules.
                              day_of_month:
                                type: number
                                description: The day of the month, for monthly schedules.
                              interval:
                                type: number
                                description: How many units of `schedule_type` Apollo waits between runs.
                      meta:
                        type: object
                        description: Additional configuration for the field. Which parameters apply depends
                          on the field's `type`.
                        properties:
                          max_length:
                            type: number
                            description: 'The maximum number of characters the field accepts. Only applies
                              to `string` and `textarea` fields. <br><br>Example: `240`'
                          picklist_values:
                            type: array
                            description: The complete set of options for a `picklist` or `multipicklist`
                              field. <br><br><b>Required for every update to a picklist field, including
                              a change that only renames the field.</b> If you omit it, the request fails
                              with `Picklist fields must have at least one option`. <br><br>This parameter
                              replaces the field's options, so send every option you want to keep. Any
                              option you leave out is removed from the field. <br><br>To rename or remap
                              an existing option, include that option's existing `id`. An option sent
                              without its `id` is deleted and recreated, which orphans the values already
                              stored on your records.
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                  description: 'The option as it appears in Apollo. <br><br>Example: `Tier
                                    1`'
                                id:
                                  type: string
                                  description: 'The ID of an existing option, from the <a href="https://docs.apollo.io/reference/get-a-list-of-fields">Get
                                    a List of Fields</a> endpoint. Include it to keep the option and rename
                                    it, so that values already stored on your records are preserved. Omit
                                    it to add a new option. <br><br>Example: `694095a80f1b6000110fc561`'
                                mapped_crm_id:
                                  type: string
                                  description: The ID of the matching picklist value in your CRM.
                                reassign_from:
                                  type: array
                                  description: The IDs of options that Apollo reassigns to this option.
                                    Use this to merge options without losing the data on your records.
                                  items:
                                    type: string
                          picklist_value_set_id:
                            type: string
                            description: The ID of an existing picklist value set to attach to this field.
                              Only applies to `picklist` and `multipicklist` fields.
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value:
                    fields:
                    - id: contact.694095a80f1b6000110fc556
                      category: person
                      context:
                      - finder
                      - csv_export
                      description: null
                      editable: true
                      example: null
                      field_name: Renewal owner
                      group: null
                      icon_class: null
                      label: Renewal owner
                      modality: contact
                      parent: null
                      source: custom
                      type: string
                      finder_view_ids: []
                      project_workspace_id: null
                      context_card_ids: []
                      product_profile_ids: []
                      is_system_field: false
                      finder_views: []
                      is_local: false
                      created_at: '2025-12-15T23:11:36.084Z'
                      meta:
                        max_length: 240
                        computed_type: manual
                        visibility_status: active
                    typed_custom_fields:
                    - id: 694095a80f1b6000110fc556
                      name: Renewal owner
                      modality: contact
                      text_field_max_length: 240
              schema:
                type: object
                properties:
                  fields:
                    type: array
                    description: The fields as they exist after the update. If updating a field caused
                      Apollo to remove a child field, that child appears here as an object with `id` and
                      `deleted` set to `true`.
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        label:
                          type: string
                        modality:
                          type: string
                          description: Entity type this field belongs to (contact, account, opportunity,
                            lead, custom_object)
                        type:
                          type: string
                        source:
                          type: string
                          description: Field source (system, custom, crm_synced)
                        meta:
                          type: object
                          additionalProperties: true
                          description: Extended configuration for the field
                        deleted:
                          type: boolean
                          description: Only present, and always `true`, when Apollo removed this field
                            as a result of the update.
                        created_at:
                          type: string
                          format: date-time
                      required:
                      - id
                  typed_custom_fields:
                    type: array
                    description: The underlying custom field records for the fields you updated. Only
                      present when the update touched at least 1 custom field.
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        modality:
                          type: string
                        text_field_max_length:
                          type: number
                  field_groups:
                    type: array
                    description: The field groups associated with the fields you updated. Only present
                      when the fields belong to at least 1 field group.
                    items:
                      type: object
                      additionalProperties: true
                  picklist_value_sets:
                    type: array
                    description: The picklist value sets for the fields you updated. Only present when
                      the update touched a `picklist` or `multipicklist` field.
                    items:
                      type: object
                      additionalProperties: true
         

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/apollo-io/refs/heads/main/openapi/apollo-io-fields-api-openapi.yml