Wistia Custom Metadata Field Definitions API

The Custom Metadata Field Definitions API from Wistia — 3 operation(s) for custom metadata field definitions.

Operations 6

GET /custom_metadata_field_definitions List Custom Metadata Field Definitions
POST /custom_metadata_field_definitions Create Custom Metadata Field Definition
GET /custom_metadata_field_definitions/{key} Show Custom Metadata Field Definition
PUT /custom_metadata_field_definitions/{key} Update Custom Metadata Field Definition
DELETE /custom_metadata_field_definitions/{key} Archive Custom Metadata Field Definition
POST /custom_metadata_field_definitions/{key}/restore Restore Custom Metadata Field Definition

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/wistia-custom-metadata-field-definitions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

wistia-custom-metadata-field-definitions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Custom Metadata Field Definitions API
  description: Wistia Data API
  version: edge-version
servers:
- url: https://api.wistia.com/modern
tags:
- name: Custom Metadata Field Definitions
  x-wistia-mcp-toolsets: media
  x-displayName: Custom Metadata Field Definitions
paths:
  /custom_metadata_field_definitions:
    get:
      x-readme-hidden: true
      x-wistia-mcp-account-gate: can_use_custom_metadata?
      summary: List Custom Metadata Field Definitions
      x-wistia-mcp-annotations:
        read_only_hint: true
        read_only_hint_justification: This tool only reads custom metadata field definitions from the account and does not modify any data.
        open_world_hint: false
        open_world_hint_justification: This tool only queries records inside the account and does not reach external services.
        destructive_hint: false
        destructive_hint_justification: This tool is read-only and does not make any changes.
        idempotent_hint: true
        idempotent_hint_justification: Reading data does not change any state, so repeated calls have no additional effect.
      x-wistia-mcp-tool-name: get-custom-metadata-field-definitions
      x-wistia-mcp-description: 'List, get, show, browse, or find custom metadata field definitions — the

        account''s custom fields that can be attached to media. Use this when someone

        wants to see which custom metadata fields exist on their account or look up a

        field''s key, label, type, or options. Results are ordered by position and

        support pagination. Set include_archived to also return archived fields.

        '
      description: 'Use this endpoint to request a list of custom metadata field definitions in your Wistia account, ordered by position. This request supports paging.


        Requires the custom metadata feature to be available on your account.


        <!--- HIDE-MCP -->

        ## Requires api token with one of the following permissions

        ```

        Read, update & delete anything

        Read all data

        ```

        <!--- /HIDE-MCP -->

        '
      tags:
      - Custom Metadata Field Definitions
      parameters:
      - name: include_archived
        in: query
        description: Include archived fields in the response
        required: false
        schema:
          type: boolean
      - name: page
        in: query
        description: 'The page number to retrieve. This cannot be combined with `cursor`,

          pagination.

          '
        required: false
        schema:
          type: integer
      - name: per_page
        in: query
        description: The number of medias per page. Use this for both offset pagination and cursor pagination.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: A list of custom metadata field definitions
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  unevaluatedProperties: false
                  properties:
                    key:
                      description: The field's immutable identifier, unique within the account. Use this (not the label) to address the field.
                      type: string
                      examples:
                      - client
                    label:
                      description: The field's editable display name.
                      type: string
                      examples:
                      - Client
                    field_type:
                      description: The field's data type. Immutable after creation.
                      type: string
                      enum:
                      - text
                      - number
                      - date
                      - boolean
                      - single_select
                      - short_text
                      - url
                      - email
                      - money
                      - time
                      - datetime
                      - multi_select
                      - contact_ref
                      - contact_multi_ref
                      examples:
                      - single_select
                    position:
                      description: The field's display order within the account, ascending from 0. May be null.
                      type:
                      - integer
                      - 'null'
                      examples:
                      - 0
                    archived_at:
                      description: When the field was archived, or null if it is active.
                      type:
                      - string
                      - 'null'
                      format: date-time
                      examples:
                      - null
                    config:
                      description: 'Type-specific configuration. Present only for field types that have any: an object with `options` for single_select and multi_select fields, an object with `used_currencies` for money fields, and an object with `allows_group_refs` for contact_ref and contact_multi_ref fields.

                        '
                      unevaluatedProperties: false
                      oneOf:
                      - type: object
                        unevaluatedProperties: false
                        required:
                        - options
                        properties:
                          options:
                            description: The field's active options, in display order.
                            type: array
                            items:
                              type: object
                              unevaluatedProperties: false
                              properties:
                                key:
                                  description: The option's immutable identifier, unique within the field.
                                  type: string
                                  examples:
                                  - high
                                label:
                                  description: The option's editable display name.
                                  type: string
                                  examples:
                                  - High
                                position:
                                  description: The option's display order within the field, ascending from 0. May be null.
                                  type:
                                  - integer
                                  - 'null'
                                  examples:
                                  - 0
                      - type: object
                        unevaluatedProperties: false
                        required:
                        - used_currencies
                        properties:
                          used_currencies:
                            description: Distinct currency codes among this field's values, ascending.
                            type: array
                            items:
                              type: string
                            examples:
                            - - EUR
                              - USD
                      - type: object
                        unevaluatedProperties: false
                        required:
                        - allows_group_refs
                        properties:
                          allows_group_refs:
                            description: Whether values may reference contact groups in addition to contacts.
                            type: boolean
                            examples:
                            - false
                    created_at:
                      description: The date that the field was originally created.
                      type: string
                      format: date-time
                      examples:
                      - '2026-07-13T18:47:39Z'
                    updated_at:
                      description: The date that the field was last updated.
                      type: string
                      format: date-time
                      examples:
                      - '2026-07-17T21:47:00Z'
        '401':
          description: Unauthorized, invalid or missing token
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  code:
                    description: A machine-readable identifier for the specific authorization failure.
                    type: string
                    enum:
                    - unauthorized_credentials
                    - account_inactive
                    - unauthorized_scope
                    - unauthorized_params
                  error:
                    type: string
                    examples:
                    - Invalid credentials.
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    type: string
                    examples:
                    - Internal server error
      security:
      - BearerAuth: []
    post:
      x-readme-hidden: true
      x-wistia-mcp-account-gate: can_use_custom_metadata?
      summary: Create Custom Metadata Field Definition
      x-wistia-mcp-annotations:
        read_only_hint: false
        read_only_hint_justification: This tool creates a new custom metadata field definition in the account, which modifies data.
        open_world_hint: false
        open_world_hint_justification: This tool only operates on records inside the account and does not reach external services.
        destructive_hint: false
        destructive_hint_justification: This tool only adds a new field definition; existing data is not modified.
        idempotent_hint: false
        idempotent_hint_justification: Each call attempts to create an additional resource, so repeating the request may create duplicates.
      x-wistia-mcp-tool-name: create-custom-metadata-field-definition
      x-wistia-mcp-description: 'Create, add, or define a new custom metadata field definition for the

        account. Use this when someone wants a new custom field that can be attached

        to media. The key is immutable and must be lowercase letters, numbers,

        underscores, or hyphens; the field_type is immutable after creation. Provide

        config.options for single_select and multi_select fields. To list existing fields use

        get-custom-metadata-field-definitions.

        '
      description: 'Creates a new custom metadata field definition. The key is immutable, must match `/\A[a-z0-9_-]+\z/`, cannot start with an underscore, and cannot be a reserved name. The label must be unique per account among active fields (case-insensitive). The field_type is immutable after creation.


        Requires the custom metadata feature to be available on your account.


        <!--- HIDE-MCP -->

        ## Requires api token with one of the following permissions

        ```

        Read, update & delete anything

        ```

        <!--- /HIDE-MCP -->

        '
      tags:
      - Custom Metadata Field Definitions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              unevaluatedProperties: false
              required:
              - key
              - label
              - field_type
              properties:
                key:
                  description: The field's immutable identifier, unique within the account. Lowercase letters, numbers, underscores, and hyphens only; cannot start with an underscore or be a reserved name.
                  type: string
                  examples:
                  - client
                label:
                  description: The field's display name. Must be unique per account among active fields (case-insensitive).
                  type: string
                  examples:
                  - Client
                field_type:
                  description: The field's data type. Immutable after creation.
                  type: string
                  enum:
                  - text
                  - number
                  - date
                  - boolean
                  - single_select
                  - short_text
                  - url
                  - email
                  - money
                  - time
                  - datetime
                  - multi_select
                  - contact_ref
                  - contact_multi_ref
                  examples:
                  - single_select
                default_value:
                  description: An optional default value for the field, matching the field_type's format.
                  type:
                  - string
                  - 'null'
                  examples:
                  - high
                position:
                  description: The field's display order within the account, ascending from 0.
                  type:
                  - integer
                  - 'null'
                  examples:
                  - 0
                config:
                  description: 'Type-specific configuration. Only valid for field types that have any: the select options for a single_select or multi_select field, or `allows_group_refs` for a contact_ref or contact_multi_ref field.

                    '
                  unevaluatedProperties: false
                  oneOf:
                  - type: object
                    unevaluatedProperties: false
                    required:
                    - options
                    properties:
                      options:
                        description: The options to create on a single_select or multi_select field.
                        type: array
                        items:
                          type: object
                          unevaluatedProperties: false
                          required:
                          - label
                          properties:
                            key:
                              description: The option's immutable identifier, unique within the field. Defaults to a parameterized label.
                              type: string
                              examples:
                              - high
                            label:
                              description: The option's display name.
                              type: string
                              examples:
                              - High
                            position:
                              description: The option's display order within the field, ascending from 0.
                              type:
                              - integer
                              - 'null'
                              examples:
                              - 0
                  - type: object
                    unevaluatedProperties: false
                    required:
                    - allows_group_refs
                    properties:
                      allows_group_refs:
                        description: For contact_ref and contact_multi_ref fields, whether values may reference contact groups in addition to contacts. Defaults to false (contacts only).
                        type: boolean
                        examples:
                        - false
      responses:
        '201':
          description: Custom metadata field definition created
          content:
            application/json:
              schema:
                type: object
                unevaluatedProperties: false
                properties:
                  key:
                    description: The field's immutable identifier, unique within the account. Use this (not the label) to address the field.
                    type: string
                    examples:
                    - client
                  label:
                    description: The field's editable display name.
                    type: string
                    examples:
                    - Client
                  field_type:
                    description: The field's data type. Immutable after creation.
                    type: string
                    enum:
                    - text
                    - number
                    - date
                    - boolean
                    - single_select
                    - short_text
                    - url
                    - email
                    - money
                    - time
                    - datetime
                    - multi_select
                    - contact_ref
                    - contact_multi_ref
                    examples:
                    - single_select
                  position:
                    description: The field's display order within the account, ascending from 0. May be null.
                    type:
                    - integer
                    - 'null'
                    examples:
                    - 0
                  archived_at:
                    description: When the field was archived, or null if it is active.
                    type:
                    - string
                    - 'null'
                    format: date-time
                    examples:
                    - null
                  config:
                    description: 'Type-specific configuration. Present only for field types that have any: an object with `options` for single_select and multi_select fields, an object with `used_currencies` for money fields, and an object with `allows_group_refs` for contact_ref and contact_multi_ref fields.

                      '
                    unevaluatedProperties: false
                    oneOf:
                    - type: object
                      unevaluatedProperties: false
                      required:
                      - options
                      properties:
                        options:
                          description: The field's active options, in display order.
                          type: array
                          items:
                            type: object
                            unevaluatedProperties: false
                            properties:
                              key:
                                description: The option's immutable identifier, unique within the field.
                                type: string
                                examples:
                                - high
                              label:
                                description: The option's editable display name.
                                type: string
                                examples:
                                - High
                              position:
                                description: The option's display order within the field, ascending from 0. May be null.
                                type:
                                - integer
                                - 'null'
                                examples:
                                - 0
                    - type: object
                      unevaluatedProperties: false
                      required:
                      - used_currencies
                      properties:
                        used_currencies:
                          description: Distinct currency codes among this field's values, ascending.
                          type: array
                          items:
                            type: string
                          examples:
                          - - EUR
                            - USD
                    - type: object
                      unevaluatedProperties: false
                      required:
                      - allows_group_refs
                      properties:
                        allows_group_refs:
                          description: Whether values may reference contact groups in addition to contacts.
                          type: boolean
                          examples:
                          - false
                  created_at:
                    description: The date that the field was originally created.
                    type: string
                    format: date-time
                    examples:
                    - '2026-07-13T18:47:39Z'
                  updated_at:
                    description: The date that the field was last updated.
                    type: string
                    format: date-time
                    examples:
                    - '2026-07-17T21:47:00Z'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    description: Error message detailing the reason for the bad request.
                    type: string
                    examples:
                    - Bad request
                  errors:
                    description: Array of error messages detailing the reasons for the bad request.
                    type: array
                    items:
                      type: string
        '401':
          description: Unauthorized, invalid or missing token
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  code:
                    description: A machine-readable identifier for the specific authorization failure.
                    type: string
                    enum:
                    - unauthorized_credentials
                    - account_inactive
                    - unauthorized_scope
                    - unauthorized_params
                  error:
                    type: string
                    examples:
                    - Invalid credentials.
        '403':
          description: Forbidden, token is valid but account does not have access to feature
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    type: string
                    examples:
                    - Webinars are not available on your current plan
        '422':
          description: Unprocessable entity, the request parameters were invalid.
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    description: A single error message describing what went wrong.
                    type: string
                  errors:
                    description: Array of error messages describing what went wrong.
                    type: array
                    items:
                      type: string
                    examples:
                    - - Title is required
                      - Event duration must be at least 15 minutes
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    type: string
                    examples:
                    - Internal server error
      security:
      - BearerAuth: []
  /custom_metadata_field_definitions/{key}:
    get:
      x-readme-hidden: true
      x-wistia-mcp-account-gate: can_use_custom_metadata?
      summary: Show Custom Metadata Field Definition
      x-wistia-mcp-annotations:
        read_only_hint: true
        read_only_hint_justification: This tool only reads a single custom metadata field definition from the account and does not modify any data.
        open_world_hint: false
        open_world_hint_justification: This tool only queries records inside the account and does not reach external services.
        destructive_hint: false
        destructive_hint_justification: This tool is read-only and does not make any changes.
        idempotent_hint: true
        idempotent_hint_justification: Reading data does not change any state, so repeated calls have no additional effect.
      x-wistia-mcp-tool-name: get-custom-metadata-field-definition
      x-wistia-mcp-description: 'Get, show, or look up a single custom metadata field definition by its key.

        Use this when someone references a specific custom field by key and wants its

        label, type, position, or options. The key lookup is case-insensitive.

        '
      description: 'Get details for a specific custom metadata field definition by its key. The lookup is case-insensitive.


        Requires the custom metadata feature to be available on your account.


        <!--- HIDE-MCP -->

        ## Requires api token with one of the following permissions

        ```

        Read, update & delete anything

        Read all data

        ```

        <!--- /HIDE-MCP -->

        '
      tags:
      - Custom Metadata Field Definitions
      parameters:
      - name: key
        in: path
        description: The field's immutable key
        required: true
        schema:
          type: string
          examples:
          - client
      responses:
        '200':
          description: Custom metadata field definition details
          content:
            application/json:
              schema:
                type: object
                unevaluatedProperties: false
                properties:
                  key:
                    description: The field's immutable identifier, unique within the account. Use this (not the label) to address the field.
                    type: string
                    examples:
                    - client
                  label:
                    description: The field's editable display name.
                    type: string
                    examples:
                    - Client
                  field_type:
                    description: The field's data type. Immutable after creation.
                    type: string
                    enum:
                    - text
                    - number
                    - date
                    - boolean
                    - single_select
                    - short_text
                    - url
                    - email
                    - money
                    - time
                    - datetime
                    - multi_select
                    - contact_ref
                    - contact_multi_ref
                    examples:
                    - single_select
                  position:
                    description: The field's display order within the account, ascending from 0. May be null.
                    type:
                    - integer
                    - 'null'
                    examples:
                    - 0
                  archived_at:
                    description: When the field was archived, or null if it is active.
                    type:
                    - string
                    - 'null'
                    format: date-time
                    examples:
                    - null
                  config:
                    description: 'Type-specific configuration. Present only for field types that have any: an object with `options` for single_select and multi_select fields, an object with `used_currencies` for money fields, and an object with `allows_group_refs` for contact_ref and contact_multi_ref fields.

                      '
                    unevaluatedProperties: false
                    oneOf:
                    - type: object
                      unevaluatedProperties: false
                      required:
                      - options
                      properties:
                        options:
                          description: The field's active options, in display order.
                          type: array
                          items:
                            type: object
                            unevaluatedProperties: false
                            properties:
                              key:
                                description: The option's immutable identifier, unique within the field.
                                type: string
                                examples:
                                - high
                              label:
                                description: The option's editable display name.
                                type: string
                                examples:
                                - High
                              position:
                                description: The option's display order within the field, ascending from 0. May be null.
                                type:
                                - integer
                                - 'null'
                                examples:
                                - 0
                    - type: object
                      unevaluatedProperties: false
                      required:
                      - used_currencies
                      properties:
                        used_currencies:
                          description: Distinct currency codes among this field's values, ascending.
                          type: array
                          items:
                            type: string
                          examples:
                          - - EUR
                            - USD
                    - type: object
                      unevaluatedProperties: false
                      required:
                      - allows_group_refs
                      properties:
                        allows_group_refs:
                          description: Whether values may reference contact groups in addition to contacts.
                          type: boolean
                          examples:
                          - false
                  created_at:
                    description: The date that the field was originally created.
                    type: string
                    format: date-time
                    examples:
                    - '2026-07-13T18:47:39Z'
                  updated_at:
                    description: The date that the field was last updated.
                    type: string
                    format: date-time
                    examples:
                    - '2026-07-17T21:47:00Z'
        '401':
          description: Unauthorized, invalid or missing token
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  code:
                    description: A machine-readable identifier for the specific authorization failure.
                    type: string
                    enum:
                    - unauthorized_credentials
                    - account_inactive
                    - unauthorized_scope
                    - unauthorized_params
                  error:
                    type: string
                    examples:
                    - Invalid credentials.
        '404':
          description: Resource not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    type: string
                    examples:
                    - Internal server error
      security:
      - BearerAuth: []
    put:
      x-readme-hidden: true
      x-wistia-mcp-account-gate: can_use_custom_metadata?
      summary: Update Custom Metadata Field Definition
      x-wistia-mcp-annotations:
        read_only_hint: false
        read_only_hint_justification: This tool updates an

# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wistia/refs/heads/main/openapi/wistia-custom-metadata-field-definitions-api-openapi.yml