Wistia Account API
The Account API from Wistia — 1 operation(s) for account.
The Account API from Wistia — 1 operation(s) for account.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/wistia-account-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Wistia Account API
version: '1.0'
description: 'Operations tagged Account across 4 of this provider''s published API definitions: wistia-account-api-openapi.yml, wistia-data-api-2026-01-openapi.yml, wistia-data-api-modern-edge-openapi.yml, wistia-data-api-v1-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.wistia.com/v1
description: Wistia Data API production server
- url: https://api.wistia.com/modern
tags:
- name: Account
paths:
/account:
get:
tags:
- Account
summary: Retrieve account summary
operationId: getAccount
responses:
'200':
description: OK
security:
- bearerAuth: []
- basicAuth: []
servers:
- url: https://api.wistia.com/v1
description: Wistia Data API production server
/account_usage:
get:
x-wistia-openai-ignore: true
x-wistia-anthropic-ignore: true
operationId: getAccountUsage
summary: Get Account Usage
x-wistia-mcp-annotations:
read_only_hint: true
read_only_hint_justification: This tool only reads account usage 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: account
x-speakeasy-name-override: getUsage
description: 'Retrieves plan, usage, and limit information for the current account.
The response includes plan tier, upload eligibility, and links to billing pages.
Usage and limit details (media counts, storage, seats, bandwidth) are only visible
to account owners and managers — other contacts receive `null` for the `limits` field.
## Requires api token with one of the following permissions
```
(any scope allowed)
```
'
x-wistia-mcp-tool-name: get-account-usage
x-wistia-mcp-description: 'Get, show, or check the current account''s plan, usage, limits, and quota: plan tier,
billing details, upload eligibility, media counts, storage usage, seat/user usage
(billable users vs. seat limits), and bandwidth usage (how much of the plan is used).
Use this when someone asks about their plan, billing, quota, limits, remaining storage,
seats, users limit, bandwidth, or usage. For general account profile/name use
get-current-account.
'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
description: 'Account usage and plan information, including storage, media, seat, and bandwidth limits.
Fields under `limits` are only visible to account owners and managers.
'
unevaluatedProperties: false
properties:
plan:
type: object
description: The account's current plan information
unevaluatedProperties: false
properties:
tier:
description: 'The plan tier identifier. Common values include `free`, `starter`, `plus`,
`pro`, `advanced`, `business`, `enterprise`. Legacy plans may use other
tier names. Empty string if the account has no plan.
'
type: string
name:
description: Human-readable plan name
type: string
is_standard:
description: Whether this is a 2026 storage-based plan (true) or a legacy media-count plan (false)
type: boolean
is_trial:
description: Whether the account is currently on a trial
type: boolean
trial_expires_at:
description: ISO 8601 timestamp when the trial expires, or null if not trialing
type:
- string
- 'null'
required:
- tier
- name
- is_standard
- is_trial
- trial_expires_at
can_upload:
description: Whether the next upload will succeed. False when an inflexible media or storage limit has been reached.
type: boolean
upload_blocked_reason:
description: 'The reason uploads are blocked, or null if uploads are allowed.
Known values: `reached_media_limit`, `reached_storage_limit`.
'
type:
- string
- 'null'
limits:
description: 'Usage and limit data. Null when the authenticated contact does not have
billing visibility (i.e. is not an account owner or manager).
'
type:
- object
- 'null'
unevaluatedProperties: false
properties:
primary_resource:
description: The primary resource type for this plan's limits — "storage" for standard plans, "media" for legacy plans
type: string
enum:
- storage
- media
media:
type: object
description: Media count and limits
unevaluatedProperties: false
properties:
count:
description: Current number of media in the account
type: integer
flexible_limit:
description: Soft media limit (overage billed). Null if no soft limit.
type:
- integer
- 'null'
inflexible_limit:
description: Hard media limit (uploads blocked). Null if no hard limit.
type:
- integer
- 'null'
required:
- count
- flexible_limit
- inflexible_limit
storage:
type: object
description: Storage usage and limits in bytes (1 GB = 1,000,000,000 bytes)
unevaluatedProperties: false
properties:
used_bytes:
description: Current storage usage in bytes
type: integer
flexible_limit_bytes:
description: Included storage limit in bytes. Null if unlimited.
type:
- integer
- 'null'
inflexible_limit_bytes:
description: Hard storage cap in bytes. Null if no hard cap.
type:
- integer
- 'null'
required:
- used_bytes
- flexible_limit_bytes
- inflexible_limit_bytes
users:
type: object
description: Seat (user) usage and limits. Viewers are non-billable and excluded from the billable counts.
unevaluatedProperties: false
properties:
billable_count:
description: 'Current number of billable users (seats). For agency accounts this aggregates
distinct users across the parent and team accounts — the count billing compares
against `flexible_limit`. Excludes viewers.
'
type: integer
account_billable_count:
description: 'Billable users in this account only, the count compared against `inflexible_limit`
when enforcing the hard seat limit. Matches `billable_count` for non-agency accounts.
Excludes viewers.
'
type: integer
viewers_count:
description: Current number of viewer contacts, which are non-billable and don't count toward seat limits.
type: integer
flexible_limit:
description: Included seats on flexible plans (additional seats billed as overage). Null if no soft limit.
type:
- integer
- 'null'
inflexible_limit:
description: Hard seat limit (adding users blocked at the limit). Null if no hard limit.
type:
- integer
- 'null'
required:
- billable_count
- account_billable_count
- viewers_count
- flexible_limit
- inflexible_limit
bandwidth:
type: object
description: Bandwidth usage and limits for the current billing period, in bytes (1 GB = 1,000,000,000 bytes)
unevaluatedProperties: false
properties:
used_bytes:
description: Bandwidth used in the current billing period, in bytes
type: integer
limit_bytes:
description: Bandwidth limit for the billing period in bytes. Null if unlimited.
type:
- integer
- 'null'
period:
description: Whether the bandwidth allowance is tracked monthly or annually
type: string
enum:
- monthly
- annual
resets_at:
description: ISO 8601 timestamp when the bandwidth period resets, or null if unknown
type:
- string
- 'null'
required:
- used_bytes
- limit_bytes
- period
- resets_at
required:
- primary_resource
- media
- storage
- users
- bandwidth
links:
type: object
description: URLs for plan, usage, and billing pages
unevaluatedProperties: false
properties:
plans_url:
description: URL to the account's plans page. Always present.
type: string
usage_url:
description: URL to the account's usage page. Null for non-owner/manager contacts.
type:
- string
- 'null'
billing_url:
description: URL to the account's billing page. Null for non-owner/manager contacts.
type:
- string
- 'null'
required:
- plans_url
- usage_url
- billing_url
required:
- plan
- can_upload
- upload_blocked_reason
- limits
- links
'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:
- Account
security:
- BearerAuth: []
servers:
- url: https://api.wistia.com/modern
/token:
get:
x-wistia-openai-ignore: true
x-wistia-anthropic-ignore: true
x-wistia-mcp-ignore-agent-chat: true
operationId: getTokenDetails
summary: Get Current Token
x-wistia-mcp-annotations:
read_only_hint: true
read_only_hint_justification: This tool only reads current token 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: account
x-speakeasy-name-override: getTokenDetails
x-cli-action-override: token
description: 'Retrieves a summary of the token used to make the API request. This endpoint can primarily be used to
debug permission issues with the API.
'
x-wistia-mcp-tool-name: get-current-token
x-wistia-mcp-description: 'Get, show, or look up info about the API token, credential, or API key making the current
request, including its scope, permissions, and owner. Use this when someone asks who the
token belongs to, what scope or permissions the auth has, or to debug permission/authorization
issues. For account profile use get-current-account; for plan and limits use get-account-usage.
'
responses:
'200':
description: Successful response
content:
application/json:
schema:
unevaluatedProperties: false
type: object
description: 'The token used to make the API request. This is primarily for debugging
purposes. Sensitive data such as the token value is excluded.
'
properties:
type:
description: The type of token used.
type: string
enum:
- permanent
- expiring
- oauth
application:
unevaluatedProperties: false
description: The application used by the token. Will be null if the token isn't an oauth token.
oneOf:
- type: object
unevaluatedProperties: false
properties:
name:
description: The name of the application.
type: string
scopes:
description: The scopes of the application. These may be different than the token scope.
type: array
items:
type: string
required:
- name
- scopes
- type: 'null'
scopes:
description: The scopes of the token.
type: array
items:
type: string
name:
description: The name of the token. This only applies to permanent tokens.
type:
- string
- 'null'
expires_at:
description: When the token expires. A null token means it never expires.
type:
- string
- 'null'
format: iso8601
required:
- type
- application
- scopes
- 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.
'500':
description: Internal server error
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
type: string
examples:
- Internal server error
tags:
- Account
security:
- BearerAuth: []
servers:
- url: https://api.wistia.com/modern
components:
responses:
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
error:
type: string
examples:
- Internal server error
'401':
description: Unauthorized, invalid or missing token
content:
application/json:
schema:
type: object
properties:
error:
type: string
examples:
- Invalid credentials.
schemas:
Account:
type: object
properties:
id:
description: Numeric id of the account
type: integer
name:
description: Account name
type: string
url:
description: Account’s main Wistia URL (e.g. http://brendan.wistia.com)
type: string
mediaCount:
description: The total number of medias in this account
type: integer
videoLimit:
description: The account's video limit
type: integer
projectCount:
description: The total number of projects in this account
type: integer
channelCount:
description: The total number of channels in this account
type: integer
required:
- id
- name
- url
- mediaCount
- videoLimit
- projectCount
- channelCount
securitySchemes:
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
BearerAuth:
type: http
scheme: bearer
x-refined-from:
- wistia-account-api-openapi.yml
- wistia-data-api-2026-01-openapi.yml
- wistia-data-api-modern-edge-openapi.yml
- wistia-data-api-v1-openapi.yml