APIHub
Back to Explore

PeerTube

The PeerTube API is a RESTful HTTP API that lets clients list, retrieve, create, update, and delete resources on a PeerTube instance, including videos, channels, playlists, user accounts, abuse reports, plugins, configuration settings, and server jobs, and also supports search queries and playback metric submission.

Social
OAuth
HTTPS
CORS: Unknown
Description enriched
Visit official documentation

Latency

1664ms p95

Uptime

100.0% 30d

Playground

Verified

live

Endpoints

REST · JSON
GET

/api/v1/abuses/{abuseId}/messages

List messages of an abuse

  • abuseId (path, required) — Abuse id
POST

/api/v1/abuses/{abuseId}/messages

Add message to an abuse

  • abuseId (path, required) — Abuse id
POST

/api/v1/jobs/resume

Resume job queue

GET

/api/v1/users/me/videos/{videoId}/rating

Get rate of my user for a video

  • videoId (path, required) — The video id
POST

/api/v1/users/register

Register a user

GET

/api/v1/abuses

List abuses

  • id (query) — only list the report with this id
  • predefinedReason (query) — predefined reason the listed reports should contain
  • search (query) — plain search that will match with video titles, reporter names and more
  • state (query)
  • searchReporter (query) — only list reports of a specific reporter
  • searchReportee (query) — only list reports of a specific reportee
  • searchVideo (query) — only list reports of a specific video
  • searchVideoChannel (query) — only list reports of a specific video channel
  • videoIs (query) — only list deleted or blocklisted videos
  • filter (query) — only list account, comment or video reports
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort abuses by criteria
POST

/api/v1/abuses

Report an abuse

DELETE

/api/v1/abuses/{abuseId}

Delete an abuse

  • abuseId (path, required) — Abuse id
PUT

/api/v1/abuses/{abuseId}

Update an abuse

  • abuseId (path, required) — Abuse id
DELETE

/api/v1/abuses/{abuseId}/messages/{abuseMessageId}

Delete an abuse message

  • abuseId (path, required) — Abuse id
  • abuseMessageId (path, required) — Abuse message id
GET

/api/v1/accounts

List accounts

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
GET

/api/v1/accounts/{name}

Get an account

  • name (path, required) — The username or handle of the account
GET

/api/v1/accounts/{name}/followers

List followers of an account

  • name (path, required) — The username or handle of the account
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort followers by criteria
  • search (query) — Plain text search, applied to various parts of the model depending on endpoint
GET

/api/v1/accounts/{name}/ratings

List ratings of an account

  • name (path, required) — The username or handle of the account
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
  • rating (query) — Optionally filter which ratings to retrieve
GET

/api/v1/accounts/{name}/video-channel-syncs

List the synchronizations of video channels of an account

  • name (path, required) — The username or handle of the account
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
GET

/api/v1/accounts/{name}/video-channels

List video channels of an account

  • name (path, required) — The username or handle of the account
  • withStats (query) — include daily view statistics for the last 30 days and total views (only if authentified as the account user)
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
GET

/api/v1/accounts/{name}/video-playlists

List playlists of an account

  • name (path, required) — The username or handle of the account
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
  • search (query) — Plain text search, applied to various parts of the model depending on endpoint
  • playlistType (query)
GET

/api/v1/accounts/{name}/videos

List videos of an account

  • name (path, required) — The username or handle of the account
  • categoryOneOf (query) — category id of the video (see [/videos/categories](#operation/getCategories))
  • isLive (query) — whether or not the video is a live
  • tagsOneOf (query) — tag(s) of the video
  • tagsAllOf (query) — tag(s) of the video, where all should be present in the video
  • licenceOneOf (query) — licence id of the video (see [/videos/licences](#operation/getLicences))
  • languageOneOf (query) — language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
  • nsfw (query) — whether to include nsfw videos, if any
  • isLocal (query) — **PeerTube >= 4.0** Display only local or remote videos
  • include (query) — **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator) - `0` NONE - `1` NOT_PUBLISHED_STATE - `2` BLACKLISTED - `4` BLOCKED_OWNER - `8` FILES
  • privacyOneOf (query) — **PeerTube >= 4.0** Display only videos in this specific privacy/privacies
  • hasHLSFiles (query) — **PeerTube >= 4.0** Display only videos that have HLS files
  • hasWebtorrentFiles (query) — **PeerTube >= 4.0** Display only videos that have WebTorrent files
  • skipCount (query) — if you don't need the `total` in the response
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query)
GET

/api/v1/blocklist/status

Get block status of accounts/hosts

  • accounts (query) — Check if these accounts are blocked
  • hosts (query) — Check if these hosts are blocked
GET

/api/v1/config

Get instance public configuration

GET

/api/v1/config/about

Get instance "About" information

DELETE

/api/v1/config/custom

Delete instance runtime configuration

GET

/api/v1/config/custom

Get instance runtime configuration

PUT

/api/v1/config/custom

Set instance runtime configuration

GET

/api/v1/custom-pages/homepage/instance

Get instance custom homepage

PUT

/api/v1/custom-pages/homepage/instance

Set instance custom homepage

POST

/api/v1/jobs/pause

Pause job queue

GET

/api/v1/jobs/{state}

List instance jobs

  • state (path, required) — The state of the job ('' for for no filter)
  • jobType (query) — job type
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
POST

/api/v1/metrics/playback

Create playback metrics

GET

/api/v1/oauth-clients/local

Login prerequisite

GET

/api/v1/plugins

List plugins

  • pluginType (query)
  • uninstalled (query)
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
GET

/api/v1/plugins/available

List available plugins

  • search (query)
  • pluginType (query)
  • currentPeerTubeEngine (query)
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
POST

/api/v1/plugins/install

Install a plugin

POST

/api/v1/plugins/uninstall

Uninstall a plugin

POST

/api/v1/plugins/update

Update a plugin

GET

/api/v1/plugins/{npmName}

Get a plugin

  • npmName (path, required) — name of the plugin/theme on npmjs.com or in its package.json
GET

/api/v1/plugins/{npmName}/public-settings

Get a plugin's public settings

  • npmName (path, required) — name of the plugin/theme on npmjs.com or in its package.json
GET

/api/v1/plugins/{npmName}/registered-settings

Get a plugin's registered settings

  • npmName (path, required) — name of the plugin/theme on npmjs.com or in its package.json
PUT

/api/v1/plugins/{npmName}/settings

Set a plugin's settings

  • npmName (path, required) — name of the plugin/theme on npmjs.com or in its package.json
GET

/api/v1/search/video-channels

Search channels

  • search (query, required) — String to search. If the user can make a remote URI search, and the string is an URI then the PeerTube instance will fetch the remote object and add it to its database. Then, you can use the REST API to fetch the complete channel information and interact with it.
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • searchTarget (query) — If the administrator enabled search index support, you can override the default search target. **Warning**: If you choose to make an index search, PeerTube will get results from a third party service. It means the instance may not yet know the objects you fetched. If you want to load video/channel information: * If the current user has the ability to make a remote URI search (this information is available in the config endpoint), then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database. After that, you can use the classic REST API endpoints to fetch the complete object or interact with it * If the current user doesn't have the ability to make a remote URI search, then redirect the user on the origin instance or fetch the data from the origin instance API
  • sort (query) — Sort column
GET

/api/v1/search/video-playlists

Search playlists

  • search (query, required) — String to search. If the user can make a remote URI search, and the string is an URI then the PeerTube instance will fetch the remote object and add it to its database. Then, you can use the REST API to fetch the complete playlist information and interact with it.
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • searchTarget (query) — If the administrator enabled search index support, you can override the default search target. **Warning**: If you choose to make an index search, PeerTube will get results from a third party service. It means the instance may not yet know the objects you fetched. If you want to load video/channel information: * If the current user has the ability to make a remote URI search (this information is available in the config endpoint), then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database. After that, you can use the classic REST API endpoints to fetch the complete object or interact with it * If the current user doesn't have the ability to make a remote URI search, then redirect the user on the origin instance or fetch the data from the origin instance API
  • sort (query) — Sort column
GET

/api/v1/search/videos

Search videos

  • search (query, required) — String to search. If the user can make a remote URI search, and the string is an URI then the PeerTube instance will fetch the remote object and add it to its database. Then, you can use the REST API to fetch the complete video information and interact with it.
  • categoryOneOf (query) — category id of the video (see [/videos/categories](#operation/getCategories))
  • isLive (query) — whether or not the video is a live
  • tagsOneOf (query) — tag(s) of the video
  • tagsAllOf (query) — tag(s) of the video, where all should be present in the video
  • licenceOneOf (query) — licence id of the video (see [/videos/licences](#operation/getLicences))
  • languageOneOf (query) — language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
  • nsfw (query) — whether to include nsfw videos, if any
  • isLocal (query) — **PeerTube >= 4.0** Display only local or remote videos
  • include (query) — **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator) - `0` NONE - `1` NOT_PUBLISHED_STATE - `2` BLACKLISTED - `4` BLOCKED_OWNER - `8` FILES
  • privacyOneOf (query) — **PeerTube >= 4.0** Display only videos in this specific privacy/privacies
  • uuids (query) — Find videos with specific UUIDs
  • hasHLSFiles (query) — **PeerTube >= 4.0** Display only videos that have HLS files
  • hasWebtorrentFiles (query) — **PeerTube >= 4.0** Display only videos that have WebTorrent files
  • skipCount (query) — if you don't need the `total` in the response
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • searchTarget (query) — If the administrator enabled search index support, you can override the default search target. **Warning**: If you choose to make an index search, PeerTube will get results from a third party service. It means the instance may not yet know the objects you fetched. If you want to load video/channel information: * If the current user has the ability to make a remote URI search (this information is available in the config endpoint), then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database. After that, you can use the classic REST API endpoints to fetch the complete object or interact with it * If the current user doesn't have the ability to make a remote URI search, then redirect the user on the origin instance or fetch the data from the origin instance API
  • sort (query) — Sort videos by criteria (prefixing with `-` means `DESC` order):
  • startDate (query) — Get videos that are published after this date
  • endDate (query) — Get videos that are published before this date
  • originallyPublishedStartDate (query) — Get videos that are originally published after this date
  • originallyPublishedEndDate (query) — Get videos that are originally published before this date
  • durationMin (query) — Get videos that have this minimum duration
  • durationMax (query) — Get videos that have this maximum duration
GET

/api/v1/server/audit-logs

Get instance audit logs

GET

/api/v1/server/blocklist/accounts

List account blocks

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
POST

/api/v1/server/blocklist/accounts

Block an account

DELETE

/api/v1/server/blocklist/accounts/{accountName}

Unblock an account by its handle

  • accountName (path, required) — account to unblock, in the form `username@domain`
GET

/api/v1/server/blocklist/servers

List server blocks

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
POST

/api/v1/server/blocklist/servers

Block a server

DELETE

/api/v1/server/blocklist/servers/{host}

Unblock a server by its domain

  • host (path, required) — server domain to unblock
GET

/api/v1/server/followers

List instances following the server

  • state (query)
  • actorType (query)
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
DELETE

/api/v1/server/followers/{nameWithHost}

Remove or reject a follower to your server

  • nameWithHost (path, required) — The remote actor handle to remove from your followers
POST

/api/v1/server/followers/{nameWithHost}/accept

Accept a pending follower to your server

  • nameWithHost (path, required) — The remote actor handle to remove from your followers
POST

/api/v1/server/followers/{nameWithHost}/reject

Reject a pending follower to your server

  • nameWithHost (path, required) — The remote actor handle to remove from your followers
GET

/api/v1/server/following

List instances followed by the server

  • state (query)
  • actorType (query)
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
POST

/api/v1/server/following

Follow a list of actors (PeerTube instance, channel or account)

DELETE

/api/v1/server/following/{hostOrHandle}

Unfollow an actor (PeerTube instance, channel or account)

  • hostOrHandle (path, required) — The hostOrHandle to unfollow
GET

/api/v1/server/logs

Get instance logs

POST

/api/v1/server/logs/client

Send client log

GET

/api/v1/server/redundancy/videos

List videos being mirrored

  • target (query, required) — direction of the mirror
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort abuses by criteria
POST

/api/v1/server/redundancy/videos

Mirror a video

DELETE

/api/v1/server/redundancy/videos/{redundancyId}

Delete a mirror done on a video

  • redundancyId (path, required) — id of an existing redundancy on a video
PUT

/api/v1/server/redundancy/{host}

Update a server redundancy policy

  • host (path, required) — server domain to mirror
GET

/api/v1/server/stats

Get instance stats

GET

/api/v1/users

List users

  • search (query) — Plain text search that will match with user usernames or emails
  • blocked (query) — Filter results down to (un)banned users
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort users by criteria
POST

/api/v1/users

Create a user

POST

/api/v1/users/ask-send-verify-email

Resend user verification link

GET

/api/v1/users/me

Get my user information

PUT

/api/v1/users/me

Update my user information

GET

/api/v1/users/me/abuses

List my abuses

  • id (query) — only list the report with this id
  • state (query)
  • sort (query) — Sort abuses by criteria
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
DELETE

/api/v1/users/me/avatar

Delete my avatar

POST

/api/v1/users/me/avatar/pick

Update my user avatar

GET

/api/v1/users/me/history/videos

List watched videos history

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • search (query) — Plain text search, applied to various parts of the model depending on endpoint
POST

/api/v1/users/me/history/videos/remove

Clear video history

DELETE

/api/v1/users/me/history/videos/{videoId}

Delete history element

  • videoId (path, required)
PUT

/api/v1/users/me/notification-settings

Update my notification settings

GET

/api/v1/users/me/notifications

List my notifications

  • unread (query) — only list unread notifications
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
POST

/api/v1/users/me/notifications/read

Mark notifications as read by their id

POST

/api/v1/users/me/notifications/read-all

Mark all my notification as read

GET

/api/v1/users/me/subscriptions

Get my user subscriptions

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
POST

/api/v1/users/me/subscriptions

Add subscription to my user

GET

/api/v1/users/me/subscriptions/exist

Get if subscriptions exist for my user

  • uris (query, required) — list of uris to check if each is part of the user subscriptions
GET

/api/v1/users/me/subscriptions/videos

List videos of subscriptions of my user

  • categoryOneOf (query) — category id of the video (see [/videos/categories](#operation/getCategories))
  • isLive (query) — whether or not the video is a live
  • tagsOneOf (query) — tag(s) of the video
  • tagsAllOf (query) — tag(s) of the video, where all should be present in the video
  • licenceOneOf (query) — licence id of the video (see [/videos/licences](#operation/getLicences))
  • languageOneOf (query) — language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
  • nsfw (query) — whether to include nsfw videos, if any
  • isLocal (query) — **PeerTube >= 4.0** Display only local or remote videos
  • include (query) — **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator) - `0` NONE - `1` NOT_PUBLISHED_STATE - `2` BLACKLISTED - `4` BLOCKED_OWNER - `8` FILES
  • privacyOneOf (query) — **PeerTube >= 4.0** Display only videos in this specific privacy/privacies
  • hasHLSFiles (query) — **PeerTube >= 4.0** Display only videos that have HLS files
  • hasWebtorrentFiles (query) — **PeerTube >= 4.0** Display only videos that have WebTorrent files
  • skipCount (query) — if you don't need the `total` in the response
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query)
DELETE

/api/v1/users/me/subscriptions/{subscriptionHandle}

Delete subscription of my user

  • subscriptionHandle (path, required) — The subscription handle
GET

/api/v1/users/me/subscriptions/{subscriptionHandle}

Get subscription of my user

  • subscriptionHandle (path, required) — The subscription handle
GET

/api/v1/users/me/video-playlists/videos-exist

Check video exists in my playlists

  • videoIds (query, required) — The video ids to check
GET

/api/v1/users/me/video-quota-used

Get my user used quota

GET

/api/v1/users/me/videos

Get videos of my user

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
GET

/api/v1/users/me/videos/imports

Get video imports of my user

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
  • targetUrl (query) — Filter on import target URL
  • videoChannelSyncId (query) — Filter on imports created by a specific channel synchronization
  • search (query) — Search in video names
GET

/api/v1/users/registrations

List registrations

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • search (query)
  • sort (query)
POST

/api/v1/users/registrations/ask-send-verify-email

Resend verification link to registration email

POST

/api/v1/users/registrations/request

Request registration

DELETE

/api/v1/users/registrations/{registrationId}

Delete registration

  • registrationId (path, required) — Registration ID
POST

/api/v1/users/registrations/{registrationId}/accept

Accept registration

  • registrationId (path, required) — Registration ID
POST

/api/v1/users/registrations/{registrationId}/reject

Reject registration

  • registrationId (path, required) — Registration ID
POST

/api/v1/users/registrations/{registrationId}/verify-email

Verify a registration email

  • registrationId (path, required) — Registration ID
POST

/api/v1/users/revoke-token

Logout

POST

/api/v1/users/token

Login

DELETE

/api/v1/users/{id}

Delete a user

GET

/api/v1/users/{id}

Get a user

  • withStats (query) — include statistics about the user (only available as a moderator/admin)
PUT

/api/v1/users/{id}

Update a user

POST

/api/v1/users/{id}/two-factor/confirm-request

Confirm two factor auth

  • id (path, required) — Entity id
POST

/api/v1/users/{id}/two-factor/disable

Disable two factor auth

  • id (path, required) — Entity id
POST

/api/v1/users/{id}/two-factor/request

Request two factor auth

  • id (path, required) — Entity id
POST

/api/v1/users/{id}/verify-email

Verify a user

  • id (path, required) — Entity id
POST

/api/v1/video-channel-syncs

Create a synchronization for a video channel

DELETE

/api/v1/video-channel-syncs/{channelSyncId}

Delete a video channel synchronization

  • channelSyncId (path, required) — Channel Sync id
POST

/api/v1/video-channel-syncs/{channelSyncId}/sync

Triggers the channel synchronization job, fetching all the videos from the remote channel

  • channelSyncId (path, required) — Channel Sync id
GET

/api/v1/video-channels

List video channels

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
POST

/api/v1/video-channels

Create a video channel

DELETE

/api/v1/video-channels/{channelHandle}

Delete a video channel

  • channelHandle (path, required) — The video channel handle
GET

/api/v1/video-channels/{channelHandle}

Get a video channel

  • channelHandle (path, required) — The video channel handle
PUT

/api/v1/video-channels/{channelHandle}

Update a video channel

  • channelHandle (path, required) — The video channel handle
DELETE

/api/v1/video-channels/{channelHandle}/avatar

Delete channel avatar

  • channelHandle (path, required) — The video channel handle
POST

/api/v1/video-channels/{channelHandle}/avatar/pick

Update channel avatar

  • channelHandle (path, required) — The video channel handle
DELETE

/api/v1/video-channels/{channelHandle}/banner

Delete channel banner

  • channelHandle (path, required) — The video channel handle
POST

/api/v1/video-channels/{channelHandle}/banner/pick

Update channel banner

  • channelHandle (path, required) — The video channel handle
DELETE

/api/v1/videos/{id}/captions/{captionLanguage}

Delete a video caption

  • id (path, required) — The object id, uuid or short uuid
  • captionLanguage (path, required) — The caption language
GET

/api/v1/video-channels/{channelHandle}/followers

List followers of a video channel

  • channelHandle (path, required) — The video channel handle
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort followers by criteria
  • search (query) — Plain text search, applied to various parts of the model depending on endpoint
POST

/api/v1/video-channels/{channelHandle}/import-videos

Import videos in channel

  • channelHandle (path, required) — The video channel handle
GET

/api/v1/video-channels/{channelHandle}/video-playlists

List playlists of a channel

  • channelHandle (path, required) — The video channel handle
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
  • playlistType (query)
GET

/api/v1/video-channels/{channelHandle}/videos

List videos of a video channel

  • channelHandle (path, required) — The video channel handle
  • categoryOneOf (query) — category id of the video (see [/videos/categories](#operation/getCategories))
  • isLive (query) — whether or not the video is a live
  • tagsOneOf (query) — tag(s) of the video
  • tagsAllOf (query) — tag(s) of the video, where all should be present in the video
  • licenceOneOf (query) — licence id of the video (see [/videos/licences](#operation/getLicences))
  • languageOneOf (query) — language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
  • nsfw (query) — whether to include nsfw videos, if any
  • isLocal (query) — **PeerTube >= 4.0** Display only local or remote videos
  • include (query) — **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator) - `0` NONE - `1` NOT_PUBLISHED_STATE - `2` BLACKLISTED - `4` BLOCKED_OWNER - `8` FILES
  • privacyOneOf (query) — **PeerTube >= 4.0** Display only videos in this specific privacy/privacies
  • hasHLSFiles (query) — **PeerTube >= 4.0** Display only videos that have HLS files
  • hasWebtorrentFiles (query) — **PeerTube >= 4.0** Display only videos that have WebTorrent files
  • skipCount (query) — if you don't need the `total` in the response
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query)
GET

/api/v1/video-playlists

List video playlists

  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort column
  • playlistType (query)
POST

/api/v1/video-playlists

Create a video playlist

GET

/api/v1/video-playlists/privacies

List available playlist privacy policies

DELETE

/api/v1/video-playlists/{playlistId}

Delete a video playlist

  • playlistId (path, required) — Playlist id
GET

/api/v1/video-playlists/{playlistId}

Get a video playlist

  • playlistId (path, required) — Playlist id
PUT

/api/v1/video-playlists/{playlistId}

Update a video playlist

  • playlistId (path, required) — Playlist id
GET

/api/v1/video-playlists/{playlistId}/videos

List videos of a playlist

  • playlistId (path, required) — Playlist id
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
POST

/api/v1/video-playlists/{playlistId}/videos

Add a video in a playlist

  • playlistId (path, required) — Playlist id
POST

/api/v1/video-playlists/{playlistId}/videos/reorder

Reorder a playlist

  • playlistId (path, required) — Playlist id
DELETE

/api/v1/video-playlists/{playlistId}/videos/{playlistElementId}

Delete an element from a playlist

  • playlistId (path, required) — Playlist id
  • playlistElementId (path, required) — Playlist element id
PUT

/api/v1/video-playlists/{playlistId}/videos/{playlistElementId}

Update a playlist element

  • playlistId (path, required) — Playlist id
  • playlistElementId (path, required) — Playlist element id
GET

/api/v1/videos

List videos

  • categoryOneOf (query) — category id of the video (see [/videos/categories](#operation/getCategories))
  • isLive (query) — whether or not the video is a live
  • tagsOneOf (query) — tag(s) of the video
  • tagsAllOf (query) — tag(s) of the video, where all should be present in the video
  • licenceOneOf (query) — licence id of the video (see [/videos/licences](#operation/getLicences))
  • languageOneOf (query) — language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
  • nsfw (query) — whether to include nsfw videos, if any
  • isLocal (query) — **PeerTube >= 4.0** Display only local or remote videos
  • include (query) — **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator) - `0` NONE - `1` NOT_PUBLISHED_STATE - `2` BLACKLISTED - `4` BLOCKED_OWNER - `8` FILES
  • privacyOneOf (query) — **PeerTube >= 4.0** Display only videos in this specific privacy/privacies
  • hasHLSFiles (query) — **PeerTube >= 4.0** Display only videos that have HLS files
  • hasWebtorrentFiles (query) — **PeerTube >= 4.0** Display only videos that have WebTorrent files
  • skipCount (query) — if you don't need the `total` in the response
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query)
GET

/api/v1/videos/blacklist

List video blocks

  • type (query) — list only blocks that match this type: - `1`: manual block - `2`: automatic block that needs review
  • search (query) — plain search that will match with video titles, and more
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort blocklists by criteria
GET

/api/v1/videos/categories

List available video categories

POST

/api/v1/videos/imports

Import a video

DELETE

/api/v1/videos/imports/{id}

Delete video import

  • id (path, required) — Entity id
POST

/api/v1/videos/imports/{id}/cancel

Cancel video import

  • id (path, required) — Entity id
GET

/api/v1/videos/languages

List available video languages

GET

/api/v1/videos/licences

List available video licences

POST

/api/v1/videos/live

Create a live

GET

/api/v1/videos/live/{id}

Get information about a live

  • id (path, required) — The object id, uuid or short uuid
PUT

/api/v1/videos/live/{id}

Update information about a live

  • id (path, required) — The object id, uuid or short uuid
GET

/api/v1/videos/live/{id}/sessions

List live sessions

  • id (path, required) — The object id, uuid or short uuid
GET

/api/v1/videos/ownership

List video ownership changes

POST

/api/v1/videos/ownership/{id}/accept

Accept ownership change request

  • id (path, required) — The object id, uuid or short uuid
POST

/api/v1/videos/ownership/{id}/refuse

Refuse ownership change request

  • id (path, required) — The object id, uuid or short uuid
GET

/api/v1/videos/privacies

List available video privacy policies

POST

/api/v1/videos/upload

Upload a video

DELETE

/api/v1/videos/upload-resumable

Cancel the resumable upload of a video, deleting any data uploaded so far

  • upload_id (query, required) — Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is not valid anymore and the upload session has already been deleted with its data ;-)
  • Content-Length (header, required)
POST

/api/v1/videos/upload-resumable

Initialize the resumable upload of a video

  • X-Upload-Content-Length (header, required) — Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
  • X-Upload-Content-Type (header, required) — MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
PUT

/api/v1/videos/upload-resumable

Send chunk for the resumable upload of a video

  • upload_id (query, required) — Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload.
  • Content-Range (header, required) — Specifies the bytes in the file that the request is uploading. For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first 262144 bytes (256 x 1024) in a 2,469,036 byte file.
  • Content-Length (header, required) — Size of the chunk that the request is sending. Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
DELETE

/api/v1/videos/{id}

Delete a video

  • id (path, required) — The object id, uuid or short uuid
GET

/api/v1/videos/{id}

Get a video

  • id (path, required) — The object id, uuid or short uuid
PUT

/api/v1/videos/{id}

Update a video

  • id (path, required) — The object id, uuid or short uuid
DELETE

/api/v1/videos/{id}/blacklist

Unblock a video by its id

  • id (path, required) — The object id, uuid or short uuid
POST

/api/v1/videos/{id}/blacklist

Block a video

  • id (path, required) — The object id, uuid or short uuid
GET

/api/v1/videos/{id}/captions

List captions of a video

  • id (path, required) — The object id, uuid or short uuid
PUT

/api/v1/videos/{id}/captions/{captionLanguage}

Add or replace a video caption

  • id (path, required) — The object id, uuid or short uuid
  • captionLanguage (path, required) — The caption language
GET

/api/v1/videos/{id}/comment-threads

List threads of a video

  • id (path, required) — The object id, uuid or short uuid
  • start (query) — Offset used to paginate results
  • count (query, limit) — Number of items to return
  • sort (query) — Sort comments by criteria
POST

/api/v1/videos/{id}/comment-threads

Create a thread

  • id (path, required) — The object id, uuid or short uuid
GET

/api/v1/videos/{id}/comment-threads/{threadId}

Get a thread

  • id (path, required) — The object id, uuid or short uuid
  • threadId (path, required) — The thread id (root comment id)
DELETE

/api/v1/videos/{id}/comments/{commentId}

Delete a comment or a reply

  • id (path, required) — The object id, uuid or short uuid
  • commentId (path, required) — The comment id
POST

/api/v1/videos/{id}/comments/{commentId}

Reply to a thread of a video

  • id (path, required) — The object id, uuid or short uuid
  • commentId (path, required) — The comment id
GET

/api/v1/videos/{id}/description

Get complete video description

  • id (path, required) — The object id, uuid or short uuid
POST

/api/v1/videos/{id}/give-ownership

Request ownership change

  • id (path, required) — The object id, uuid or short uuid
DELETE

/api/v1/videos/{id}/hls

Delete video HLS files

  • id (path, required) — The object id, uuid or short uuid
GET

/api/v1/videos/{id}/live-session

Get live session of a replay

  • id (path, required) — The object id, uuid or short uuid
PUT

/api/v1/videos/{id}/rate

Like/dislike a video

  • id (path, required) — The object id, uuid or short uuid
POST

/api/v1/videos/{id}/source

Get video source file metadata

  • id (path, required) — The object id, uuid or short uuid
GET

/api/v1/videos/{id}/stats/overall

Get overall stats of a video

  • id (path, required) — The object id, uuid or short uuid
  • startDate (query) — Filter stats by start date
  • endDate (query) — Filter stats by end date
GET

/api/v1/videos/{id}/stats/retention

Get retention stats of a video

  • id (path, required) — The object id, uuid or short uuid
GET

/api/v1/videos/{id}/stats/timeseries/{metric}

Get timeserie stats of a video

  • id (path, required) — The object id, uuid or short uuid
  • metric (path, required) — The metric to get
  • startDate (query) — Filter stats by start date
  • endDate (query) — Filter stats by end date
POST

/api/v1/videos/{id}/studio/edit

Create a studio task

  • id (path, required) — The object id, uuid or short uuid
POST

/api/v1/videos/{id}/token

Request video token

  • id (path, required) — The object id, uuid or short uuid
POST

/api/v1/videos/{id}/transcoding

Create a transcoding job

  • id (path, required) — The object id, uuid or short uuid
POST

/api/v1/videos/{id}/views

Notify user is watching a video

  • id (path, required) — The object id, uuid or short uuid
PUT

/api/v1/videos/{id}/watching

Set watching progress of a video

  • id (path, required) — The object id, uuid or short uuid
DELETE

/api/v1/videos/{id}/webtorrent

Delete video WebTorrent files

  • id (path, required) — The object id, uuid or short uuid
GET

/feeds/subscriptions.{format}

List videos of subscriptions tied to a token

  • format (path, required) — format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))
  • accountId (query, required) — limit listing to a specific account
  • token (query, required) — private token allowing access
  • sort (query) — Sort column
  • nsfw (query) — whether to include nsfw videos, if any
  • isLocal (query) — **PeerTube >= 4.0** Display only local or remote videos
  • include (query) — **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator) - `0` NONE - `1` NOT_PUBLISHED_STATE - `2` BLACKLISTED - `4` BLOCKED_OWNER - `8` FILES
  • privacyOneOf (query) — **PeerTube >= 4.0** Display only videos in this specific privacy/privacies
  • hasHLSFiles (query) — **PeerTube >= 4.0** Display only videos that have HLS files
  • hasWebtorrentFiles (query) — **PeerTube >= 4.0** Display only videos that have WebTorrent files
GET

/feeds/video-comments.{format}

List comments on videos

  • format (path, required) — format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))
  • videoId (query) — limit listing to a specific video
  • accountId (query) — limit listing to a specific account
  • accountName (query) — limit listing to a specific account
  • videoChannelId (query) — limit listing to a specific video channel
  • videoChannelName (query) — limit listing to a specific video channel
GET

/feeds/videos.{format}

List videos

  • format (path, required) — format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))
  • accountId (query) — limit listing to a specific account
  • accountName (query) — limit listing to a specific account
  • videoChannelId (query) — limit listing to a specific video channel
  • videoChannelName (query) — limit listing to a specific video channel
  • sort (query) — Sort column
  • nsfw (query) — whether to include nsfw videos, if any
  • isLocal (query) — **PeerTube >= 4.0** Display only local or remote videos
  • include (query) — **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator) - `0` NONE - `1` NOT_PUBLISHED_STATE - `2` BLACKLISTED - `4` BLOCKED_OWNER - `8` FILES
  • privacyOneOf (query) — **PeerTube >= 4.0** Display only videos in this specific privacy/privacies
  • hasHLSFiles (query) — **PeerTube >= 4.0** Display only videos that have HLS files
  • hasWebtorrentFiles (query) — **PeerTube >= 4.0** Display only videos that have WebTorrent files
GET

/static/streaming-playlists/hls/private/{filename}

Get private HLS video file

  • filename (path, required) — Filename
  • videoFileToken (query) — Video file token [generated](#operation/requestVideoToken) by PeerTube so you don't need to provide an OAuth token in the request header.
  • reinjectVideoFileToken (query) — Ask the server to reinject videoFileToken in URLs in m3u8 playlist
GET

/static/streaming-playlists/hls/{filename}

Get public HLS video file

  • filename (path, required) — Filename
GET

/static/webseed/private/{filename}

Get private WebTorrent video file

  • filename (path, required) — Filename
  • videoFileToken (query) — Video file token [generated](#operation/requestVideoToken) by PeerTube so you don't need to provide an OAuth token in the request header.
GET

/static/webseed/{filename}

Get public WebTorrent video file

  • filename (path, required) — Filename

186 endpoints auto-detected

Authentication

This API requires authentication: OAuth.

curl -X GET \
  "https://peertube2.cpy.re/api/v1/abuses/{abuseId}/messages"

peertube2.cpy.re · HTTPS only