Wistia Tags API

The Tags API from Wistia — 3 operation(s) for tags.

Operations 4

GET /tags List Tags #
POST /tags Create Tags #
DELETE /tags/{name} Delete Tag #
POST /taggings/bulk-create Bulk tag media #

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-tags-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-tags-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Wistia Tags API
  version: '1.0'
  description: 'Operations tagged Tags across 3 of this provider''s published API definitions: wistia-data-api-modern-edge-openapi.yml, wistia-data-api-v1-openapi.yml, wistia-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.wistia.com/modern
- url: https://api.wistia.com/v1
tags:
- name: Tags
  x-displayName: Tags
paths:
  /tags:
    get:
      summary: List Tags
      x-wistia-mcp-annotations:
        read_only_hint: true
        read_only_hint_justification: This tool only reads tags 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-speakeasy-group: tags
      x-speakeasy-name-override: list
      description: 'Lists tags belonging to the account.


        ## Requires api token with one of the following permissions

        ```

        Read all data

        ```'
      x-wistia-mcp-tool-name: get-tags
      x-wistia-mcp-description: 'List, get, or find the tags in the account — the labels or keywords used to

        organize and categorize media. Supports pagination and sorting (by name,

        created, updated, or taggings count). Use this when someone wants to see

        which tags exist. To make a new tag use create-tags, delete-tag to remove

        one, or bulk-tag-media to apply tags to media files.

        '
      parameters:
      - 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
      - name: cursor
        in: query
        description: 'If `cursor[enabled]` is set to 1 then cursor pagination is enabled and the

          first set of records are fetched up to the `per_page`. Cursor

          pagination will also be turned on if `cursor[before]` or `cursor[after]`

          are set. Records returned will have a `cursor` property set which can be used to fetch more records in the same `sort_by` ordering.

          The cursor value of the last record can be used to fetch records after the current result set and

          the cursor of the first record can be used to fetch records before the result set.


          NOTE: a cursor value is only valid if the `sort_by` value hasn''t changed from the

          last fetch. For example, you cannot fetch using `sort_by` id and then pass that

          cursor value to a `sort_by` name.

          '
        required: false
        schema:
          unevaluatedProperties: false
          type: object
          properties:
            enabled:
              description: 'If `cursor[enabled]` is set to 1, the first result set will be fetched with cursor pagination enabled. This

                values is ignored if `cursor[before]` or `cursor[after]` are set.

                '
              type: integer
              enum:
              - 0
              - 1
            before:
              description: 'If `cursor[before]` is set then cursor pagination is enabled and all records

                before the cursor up to the `per_page` are returned. This feature is useful for

                fetching "new records", for example, in a "pull to refersh" feature when showing records in a descending

                order.

                '
              type: string
            after:
              description: 'If `cursor[after]` is set then cursor pagination is enabled and all records

                after the cursor up to the `per_page` are returned.

                '
              type: string
        style: deepObject
      - name: sort_by
        in: query
        description: 'Ordering. When using cursor pagination (see cursor param),

          only `id`, `updated` and `created` are supported. All other sort_by options

          require offset pagination.

          '
        required: false
        schema:
          type: string
          enum:
          - name
          - created
          - updated
          - taggingsCount
      - name: sort_direction
        in: query
        description: Ordering Sort Direction (0 = desc, 1 = asc)
        required: false
        schema:
          type: integer
          enum:
          - 0
          - 1
      responses:
        '200':
          description: A list of tags
          content:
            application/json:
              schema:
                type: array
                items:
                  unevaluatedProperties: false
                  type: object
                  description: 'A tag is used to tag related media. You can then filter media

                    by a specific tag.

                    '
                  properties:
                    name:
                      description: The tag's display name.
                      type: string
                      examples:
                      - My tag Title
                    taggings_count:
                      description: The number of different medias that have been associated with this tag.
                      type: integer
                      examples:
                      - 2
                    created_at:
                      description: The date that the tag was originally created.
                      type: string
                      format: date-time
                      examples:
                      - '2010-08-13T18:47:39+00:00'
                    updated_at:
                      description: The date that the tag was last updated.
                      type: string
                      format: date-time
                      examples:
                      - '2010-08-19T21:47:00+00:00'
                    cursor:
                      description: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`.
                      type:
                      - string
                      - 'null'
        '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.
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    type: string
                    examples:
                    - Internal server error
      tags:
      - Tags
      security:
      - BearerAuth: []
      operationId: getTags
      x-operation-id-source: derived
    post:
      summary: Create Tags
      x-wistia-mcp-annotations:
        read_only_hint: false
        read_only_hint_justification: This tool creates a new tags 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 resource; existing data is not modified.
        idempotent_hint: false
        idempotent_hint_justification: Creating a tag with a name that already exists fails validation instead of succeeding again, so the request is not safely repeatable.
      x-speakeasy-group: tags
      x-speakeasy-name-override: create
      description: 'Creates a new tag.


        ## Requires api token with one of the following permissions

        ```

        Read, update & delete anything

        ```'
      x-wistia-mcp-tool-name: create-tags
      x-wistia-mcp-description: 'Create, add, or make a new tag — a label or keyword used to organize and

        categorize media. Use this when someone wants to define a new tag in the

        account. To list existing tags use get-tags, delete-tag to remove one, or

        bulk-tag-media to apply tags to media files.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              unevaluatedProperties: false
              type: object
              properties:
                name:
                  type: string
              required:
              - name
      responses:
        '200':
          description: Tag created successfully
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                description: 'A tag is used to tag related media. You can then filter media

                  by a specific tag.

                  '
                properties:
                  name:
                    description: The tag's display name.
                    type: string
                    examples:
                    - My tag Title
                  taggings_count:
                    description: The number of different medias that have been associated with this tag.
                    type: integer
                    examples:
                    - 2
                  created_at:
                    description: The date that the tag was originally created.
                    type: string
                    format: date-time
                    examples:
                    - '2010-08-13T18:47:39+00:00'
                  updated_at:
                    description: The date that the tag was last updated.
                    type: string
                    format: date-time
                    examples:
                    - '2010-08-19T21:47:00+00:00'
                  cursor:
                    description: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`.
                    type:
                    - string
                    - 'null'
        '400':
          description: Bad request - missing or invalid parameters
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    type: string
                    examples:
                    - 'param is missing or the value is empty: name'
        '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: Validation error - tag already exists
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    type: string
                    examples:
                    - 'Validation failed: Name has already been taken'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                type: object
                properties:
                  error:
                    type: string
                    examples:
                    - Internal server error
      tags:
      - Tags
      security:
      - BearerAuth: []
      operationId: postTags
      x-operation-id-source: derived
    servers:
    - url: https://api.wistia.com/modern
  /tags/{name}:
    delete:
      summary: Delete Tag
      x-wistia-mcp-annotations:
        read_only_hint: false
        read_only_hint_justification: This tool deletes a tag from 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: true
        destructive_hint_justification: This tool permanently deletes the tag and cannot be undone.
        idempotent_hint: true
        idempotent_hint_justification: Deleting a resource that is already deleted has no additional effect, so the request can be safely repeated.
      x-speakeasy-group: tags
      x-speakeasy-name-override: delete
      description: 'Deletes a tag


        ## Requires api token with one of the following permissions

        ```

        Read, update & delete anything

        ```'
      x-wistia-mcp-tool-name: delete-tag
      x-wistia-mcp-description: 'Delete or remove a tag by name — a label or keyword used to organize and

        categorize media. This permanently removes the tag and cannot be undone. Use

        this when someone wants to get rid of a tag. To list existing tags use

        get-tags, or create-tags to make a new one.

        '
      parameters:
      - name: name
        in: path
        description: Tag ID
        required: true
        schema:
          description: Name of the tag to delete
          type: string
      responses:
        '200':
          description: Successful response.
        '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
        '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
      tags:
      - Tags
      security:
      - BearerAuth: []
      operationId: deleteTagsByName
      x-operation-id-source: derived
    parameters:
    - in: path
      name: name
      required: true
      schema:
        type: string
    servers:
    - url: https://api.wistia.com/modern
  /taggings/bulk-create:
    post:
      tags:
      - Tags
      summary: Bulk tag media
      operationId: bulkCreateTaggings
      responses:
        '201':
          description: Created
      security:
      - bearerAuth: []
      - basicAuth: []
    servers:
    - url: https://api.wistia.com/v1
      description: Wistia Data API production server
components:
  schemas:
    Tag:
      type: object
      properties:
        name:
          description: The tag’s display name.
          type: string
          examples:
          - My tag Title
        taggingsCount:
          description: The number of different medias that have been associated with this tag.
          type: integer
          examples:
          - 2
        created:
          description: The date that the tag was originally created.
          type: string
          format: date-time
          examples:
          - '2010-08-13T18:47:39+00:00'
        updated:
          description: The date that the tag was last updated.
          type: string
          format: date-time
          examples:
          - '2010-08-19T21:47:00+00:00'
  responses:
    404-2:
      description: Resource not found
    '401':
      description: Unauthorized, invalid or missing token
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                examples:
                - Invalid credentials.
    '500':
      description: Internal server error
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                examples:
                - Internal server error
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
    bearerAuth:
      type: http
      scheme: bearer
      description: API access token sent as a Bearer token in the Authorization header
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic authentication using the API token as the password
x-refined-from:
- wistia-data-api-modern-edge-openapi.yml
- wistia-data-api-v1-openapi.yml
- wistia-openapi.yml
x-tagGroups:
- name: Data API
  tags:
  - Media
  - Customizations
  - Captions
  - Localizations
  - Trims
  - Extended Audio Descriptions
  - Brands
  - Tags
  - Taggings
  - Folders
  - Folder Sharings
  - Subfolders
  - Channels
  - Channel Collaborators
  - Channel Episodes
  - Webinars
  - Webinar Collaborators
  - Webinar Registrations
  - Account
  - Search
  - Resource URLs
  - Expiring Access Tokens
  - Background Job Status
  - Allowed Domains
  - Remix
  - Push Devices
  - Deleted Media
  - Review Bundles
  - Share Links
  - Bulk Actions
  - Custom Metadata Field Definitions
  - Custom Metadata Field Values
- name: Stats API
  tags:
  - Stats:Account
  - Stats:Events
  - Stats:Media
  - Stats:Projects
  - Stats:Visitors
- name: Analytics API
  tags:
  - Analytics:Account
  - Analytics:Media
  - Analytics:Webinar