Automattic Videos API
The videos API from Automattic — 7 operation(s) for videos.
The videos API from Automattic — 7 operation(s) for videos.
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/automattic-videos-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: Automattic Videos API
x-derived-by: API Evangelist enrichment pipeline
x-refined-note:
- x-derived-from differs across the merged source definitions and was not carried
version: '1.0'
description: 'Operations tagged videos across 2 of this provider''s published API definitions: automattic-wordpress-com-rest-v1-1-openapi.yml, automattic-wordpress-com-wpcom-v2-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://public-api.wordpress.com/rest/v1.1
- url: https://public-api.wordpress.com
security:
- bearerAuth: []
tags:
- name: videos
paths:
/videos/{guid}:
get:
operationId: getVideosByGuid
summary: Get the metadata for a specified VideoPress video.
description: Get the metadata for a specified VideoPress video.
tags:
- videos
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: Title of the video
description:
type: string
description: Description of the video
width:
type: integer
description: Width of the video
height:
type: integer
description: Height of the video
duration:
type: integer
description: The length of the video, in milliseconds
display_embed:
type: boolean
description: Should the embed menu be shown?
allow_download:
type: boolean
description: Whether to display and allow video downloads
rating:
type: string
description: The rating of the video
privacy_setting:
type: integer
description: The privacy level for the video
poster:
type: string
description: The URL of the video image
original:
type: string
description: The URL of the original video
watermark:
type: string
description: URL of a watermark logo
bg_color:
type: string
description: Custom background color
files:
type: array
items: {}
description: List of video formats and the associated filenames
file_url_base:
type: array
items: {}
description: List of protocols and the base needed for creating file URLs
blog_id:
type: integer
description: Blog ID of the site where the video was uploaded
post_id:
type: integer
description: Post ID of the video attachment post
upload_date:
type: string
description: Date the video was uploaded in ISO 8601 format
finished:
type: boolean
description: Is video transcoding finished?
files_status:
type: array
items: {}
description: Transcoding status for each video file format
subtitles:
type: array
items: {}
description: Available subtitle formats with information for each language that is available
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: guid
in: path
required: true
schema:
type: string
description: The guid of the video
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
- name: birth_month
in: query
required: false
schema:
type: integer
description: The month the visitor was born
- name: birth_day
in: query
required: false
schema:
type: integer
description: The day of the month the visitor was born
- name: birth_year
in: query
required: false
schema:
type: integer
description: The year the visitor was born
- name: metadata_token
in: query
required: false
schema:
type: string
description: Optional. Permissions token
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/videos/{guid}/chapters:
get:
operationId: getVideosByGuidChapters
summary: Get the chapters for a specified VideoPress video.
description: Get the chapters for a specified VideoPress video.
tags:
- videos
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
chapters:
type: object
description: Arrays of chapters, indexed by a language slug. Every chapter has integer "start" and "end" in milliseconds, and string "description".
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: guid
in: path
required: true
schema:
type: string
description: The guid of the video
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
- name: metadata_token
in: query
required: false
schema:
type: string
description: Optional. Auth token
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/videos/{guid}/playlist/{format}:
get:
operationId: getVideosByGuidPlaylistByFormat
summary: Get the poster for a specified VideoPress video.
description: Get the poster for a specified VideoPress video.
tags:
- videos
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
poster:
type: string
description: The m4u playlist for streaming the given videopress video
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: guid
in: path
required: true
schema:
type: string
description: The guid of the video
- name: format
in: path
required: true
schema:
type: string
description: The playlist format, e.g. adaptive, hd-master, or subs-{language} for a subtitle track playlist
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
- name: metadata_token
in: query
required: false
schema:
type: string
description: Optional. Auth token
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/videos/{guid}/poster:
get:
operationId: getVideosByGuidPoster
summary: Get the poster for a specified VideoPress video.
description: Get the poster for a specified VideoPress video.
tags:
- videos
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
poster:
type: string
description: The url of the poster for the given videopress video
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: guid
in: path
required: true
schema:
type: string
description: The guid of the video
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
post:
operationId: postVideosByGuidPoster
summary: Upload and set a poster for a specified VideoPress video.
description: Upload and set a poster for a specified VideoPress video.
tags:
- videos
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
poster:
type: string
description: The url of the poster for the given videopress video
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: guid
in: path
required: true
schema:
type: string
description: The guid of the video
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
at_time:
type: integer
description: Optional.
is_millisec:
type: boolean
description: Optional.
poster:
type: string
description: 'An image to attach to the video. To upload media, the entire request should be multipart/form-data encoded. Accepts images (image/gif, image/jpeg, image/png) only at this time.Example:curl \--form ''poster=@/path/to/file.jpg'' \-H ''Authorization: BEARER your-token'' \''https://public-api.wordpress.com/rest/v1/videos/12345678/poster'''
poster_attachment_id:
type: integer
description: optional
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/videos/{guid}/tracks:
post:
operationId: postVideosByGuidTracks
summary: Upload a subtitle/caption track for a specified VideoPress video.
description: Upload a subtitle/caption track for a specified VideoPress video.
tags:
- videos
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
url:
type: string
description: The url for the newly uploaded track
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: guid
in: path
required: true
schema:
type: string
description: The guid of the video
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
kind:
type: string
description: One of 'subtitles', 'captions', 'descriptions', 'chapters', or 'metadata'.
label:
type: string
description: The track label.
srclang:
type: string
description: The language of the track.
vtt:
type: string
description: A .vtt or .srt subtitle file. SRT files are automatically converted to VTT.
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/videos/{guid}/tracks/delete:
post:
operationId: postVideosByGuidTracksDelete
summary: Delete an existing subtitle/caption track for a specified VideoPress video.
description: Delete an existing subtitle/caption track for a specified VideoPress video.
tags:
- videos
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
deleted:
type: boolean
description: True if successfully deleted.
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: guid
in: path
required: true
schema:
type: string
description: The guid of the video
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
kind:
type: string
description: One of 'subtitles', 'captions', 'descriptions', 'chapters', or 'metadata'.
srclang:
type: string
description: The language of the track.
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/wpcom/v2/videos:
post:
operationId: postWpcomV2Videos
summary: POST /wpcom/v2/videos
tags:
- videos
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
requestBody:
content:
application/json:
schema:
type: object
properties:
guid:
type: string
description: The VideoPress video guid.
title:
type: string
description: The title of the video.
description:
type: string
description: The description of the video.
rating:
type: string
description: The video content rating. One of G, PG-13, or R-17
display_embed:
type: boolean
description: Display the share menu in the player.
required:
- guid
put:
operationId: putWpcomV2Videos
summary: PUT /wpcom/v2/videos
tags:
- videos
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
requestBody:
content:
application/json:
schema:
type: object
properties:
guid:
type: string
description: The VideoPress video guid.
title:
type: string
description: The title of the video.
description:
type: string
description: The description of the video.
rating:
type: string
description: The video content rating. One of G, PG-13, or R-17
display_embed:
type: boolean
description: Display the share menu in the player.
required:
- guid
patch:
operationId: patchWpcomV2Videos
summary: PATCH /wpcom/v2/videos
tags:
- videos
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
requestBody:
content:
application/json:
schema:
type: object
properties:
guid:
type: string
description: The VideoPress video guid.
title:
type: string
description: The title of the video.
description:
type: string
description: The description of the video.
rating:
type: string
description: The video content rating. One of G, PG-13, or R-17
display_embed:
type: boolean
description: Display the share menu in the player.
required:
- guid
servers:
- url: https://public-api.wordpress.com
components:
schemas:
Error:
type: object
description: WordPress.com REST API error envelope (observed live)
# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/automattic/refs/heads/main/openapi/automattic-videos-api-openapi.yml