description: |
# Introduction
- The PeerTube API is built on HTTP(S). Our API is RESTful. It has predictable
- resource URLs. It returns HTTP response codes to indicate errors. It also
- accepts and returns JSON in the HTTP body. You can use your favorite
+ The PeerTube API is built on HTTP(S) and is RESTful. You can use your favorite
HTTP/REST library for your programming language to use PeerTube. No official
SDK is currently provided, but the spec API is fully compatible with
[openapi-generator](https://github.com/OpenAPITools/openapi-generator/wiki/API-client-generator-HOWTO)
which generates a client SDK in the language of your choice.
+ See the [Quick Start guide](https://docs.joinpeertube.org/#/api-rest-getting-started) so you can play with the PeerTube API.
+
# Authentication
When you sign up for an account, you are given the possibility to generate
description: >
Jobs are long-running tasks enqueued and processed by the instance
itself. No additional worker registration is currently available.
- - name: Server Following
+ - name: Instance Follows
description: >
Managing servers which the instance interacts with is crucial to the
concept of federation in PeerTube and external video indexation. The PeerTube
Videos from other instances federated by the instance (that is, instances
followed by the instance) can be found via keywords and other criteria of
the advanced search.
- - name: Video Comment
+ - name: Video Comments
description: >
Operations dealing with comments to a video. Comments are organized in
threads.
- - name: Video Playlist
+ - name: Video Playlists
description: >
Operations dealing with playlists of videos. Playlists are bound to users
and/or channels.
- - name: Video Channel
+ - name: Video Channels
description: >
Operations dealing with creation, modification and video listing of a
user's channels.
description: >
Operations dealing with blacklisting videos (removing them from view and
preventing interactions).
- - name: Video Rate
+ - name: Video Rates
description: >
- Voting for a video.
+ Like/dislike a video.
x-tagGroups:
- name: Accounts
tags:
- Accounts
- - User
+ - Users
- My User
+ - My Subscriptions
- name: Videos
tags:
- Video
- Video Caption
- - Video Channel
- - Video Comment
+ - Video Channels
+ - Video Comments
- Video Following
- - Video Rate
+ - Video Rates
+ - Video Playlists
+ - Video Ownership Change
+ - name: Search
+ tags:
+ - Search
- name: Moderation
tags:
- Video Abuse
- name: Instance Configuration
tags:
- Config
- - Server Following
+ - Instance Follows
- name: Jobs
tags:
- Job
- - name: Search
- tags:
- - Search
paths:
'/accounts/{name}':
get:
tags:
- Accounts
- summary: Get the account by name
+ summary: Get an account
parameters:
- $ref: '#/components/parameters/name'
responses:
tags:
- Accounts
- Video
- summary: 'Get videos for an account, provided the name of that account'
+ summary: 'List videos of an account'
parameters:
- $ref: '#/components/parameters/name'
responses:
get:
tags:
- Accounts
- summary: Get all accounts
+ summary: List accounts
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
get:
tags:
- Config
- summary: Get the public configuration of the server
+ summary: Get instance public configuration
responses:
'200':
description: successful operation
$ref: '#/components/schemas/ServerConfig'
/config/about:
get:
- summary: Get the instance about page content
+ summary: Get instance "About" information
tags:
- Config
responses:
$ref: '#/components/schemas/ServerConfigAbout'
/config/custom:
get:
- summary: Get the runtime configuration of the server
+ summary: Get instance runtime configuration
tags:
- Config
security:
schema:
$ref: '#/components/schemas/ServerConfigCustom'
put:
- summary: Set the runtime configuration of the server
+ summary: Set instance runtime configuration
tags:
- Config
security:
'200':
description: successful operation
delete:
- summary: Delete the runtime configuration of the server
+ summary: Delete instance runtime configuration
tags:
- Config
security:
description: successful operation
/jobs/{state}:
get:
- summary: Get list of jobs
+ summary: List instance jobs
security:
- OAuth2:
- admin
- OAuth2:
- admin
tags:
- - Server Following
- summary: Unfollow a server by hostname
+ - Instance Follows
+ summary: Unfollow a server
parameters:
- name: host
in: path
/server/followers:
get:
tags:
- - Server Following
- summary: Get followers of the server
+ - Instance Follows
+ summary: List instance followers
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
/server/following:
get:
tags:
- - Server Following
- summary: Get servers followed by the server
+ - Instance Follows
+ summary: List instance followings
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- OAuth2:
- admin
tags:
- - Server Following
+ - Instance Follows
summary: Follow a server
responses:
'204':
$ref: '#/components/schemas/Follow'
/users:
post:
- summary: Creates user
+ summary: Create a user
security:
- OAuth2:
- admin
tags:
- - User
+ - Users
responses:
'200':
description: successful operation
description: User to create
required: true
get:
- summary: Get a list of users
+ summary: List users
security:
- OAuth2: []
tags:
- - User
+ - Users
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
$ref: '#/components/schemas/User'
'/users/{id}':
delete:
- summary: Delete a user by its id
+ summary: Delete a user
security:
- OAuth2:
- admin
tags:
- - User
+ - Users
parameters:
- $ref: '#/components/parameters/id'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
get:
- summary: Get user by its id
+ summary: Get a user
security:
- OAuth2: []
tags:
- - User
+ - Users
parameters:
- $ref: '#/components/parameters/id'
responses:
schema:
$ref: '#/components/schemas/User'
put:
- summary: Update user profile by its id
+ summary: Update a user
security:
- OAuth2: []
tags:
- - User
+ - Users
parameters:
- $ref: '#/components/parameters/id'
responses:
post:
summary: Register a user
tags:
- - User
+ - Users
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
required: true
/users/me:
get:
- summary: Get current user information
+ summary: Get my user information
security:
- OAuth2:
- user
items:
$ref: '#/components/schemas/User'
put:
- summary: Update current user information
+ summary: Update my user information
security:
- OAuth2:
- user
required: true
/users/me/videos/imports:
get:
- summary: Get video imports of current user
+ summary: Get video imports of my user
security:
- OAuth2:
- user
tags:
+ - Videos
- My User
parameters:
- $ref: '#/components/parameters/start'
$ref: '#/components/schemas/VideoImport'
/users/me/video-quota-used:
get:
- summary: Get current user used quota
+ summary: Get my user used quota
security:
- OAuth2:
- user
type: number
'/users/me/videos/{videoId}/rating':
get:
- summary: 'Get rating of video by its id, among those of the current user'
+ summary: Get rate of my user of a video
security:
- OAuth2: []
tags:
- My User
+ - Video Rates
parameters:
- name: videoId
in: path
$ref: '#/components/schemas/GetMeVideoRating'
/users/me/videos:
get:
- summary: Get videos of the current user
+ summary: Get videos of my user
security:
- OAuth2:
- user
tags:
- My User
+ - Videos
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
$ref: '#/components/schemas/VideoListResponse'
/users/me/subscriptions:
get:
- summary: Get subscriptions of the current user
+ summary: Get my user subscriptions
security:
- OAuth2:
- user
tags:
- - My User
+ - My Subscriptions
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
'200':
description: successful operation
post:
- summary: Add subscription to the current user
+ summary: Add subscription to my user
security:
- OAuth2:
- user
tags:
- - My User
+ - My Subscriptions
responses:
'200':
description: successful operation
/users/me/subscriptions/exist:
get:
- summary: Get if subscriptions exist for the current user
+ summary: Get if subscriptions exist for my user
security:
- OAuth2:
- user
tags:
- - My User
+ - My Subscriptions
parameters:
- $ref: '#/components/parameters/subscriptionsUris'
responses:
type: object
/users/me/subscriptions/videos:
get:
- summary: Get videos of subscriptions of the current user
+ summary: List videos of subscriptions of my user
security:
- OAuth2:
- user
tags:
- - My User
+ - My Subscriptions
+ - Videos
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
$ref: '#/components/schemas/VideoListResponse'
'/users/me/subscriptions/{subscriptionHandle}':
get:
- summary: Get subscription of the current user for a given uri
+ summary: Get subscription of my user
security:
- OAuth2:
- user
tags:
- - My User
+ - My Subscriptions
parameters:
- $ref: '#/components/parameters/subscriptionHandle'
responses:
schema:
$ref: '#/components/schemas/VideoChannel'
delete:
- summary: Delete subscription of the current user for a given uri
+ summary: Delete subscription of my user
security:
- OAuth2:
- user
tags:
- - My User
+ - My Subscriptions
parameters:
- $ref: '#/components/parameters/subscriptionHandle'
responses:
description: successful operation
/users/me/avatar/pick:
post:
- summary: Update current user avatar
+ summary: Update my user avatar
security:
- OAuth2: []
tags:
encoding:
avatarfile:
contentType: image/png, image/jpeg
+ /videos/ownership:
+ get:
+ summary: List video ownership changes
+ tags:
+ - Video Ownership Change
+ security:
+ - OAuth2: []
+ responses:
+ '200':
+ description: successful operation
+ '/videos/ownership/{id}/accept':
+ post:
+ summary: Accept ownership change request
+ tags:
+ - Video Ownership Change
+ security:
+ - OAuth2: []
+ parameters:
+ - $ref: '#/components/parameters/idOrUUID'
+ responses:
+ '204':
+ $ref: '#/paths/~1users~1me/put/responses/204'
+ '/videos/ownership/{id}/refuse':
+ post:
+ summary: Refuse ownership change request
+ tags:
+ - Video Ownership Change
+ security:
+ - OAuth2: []
+ parameters:
+ - $ref: '#/components/parameters/idOrUUID'
+ responses:
+ '204':
+ $ref: '#/paths/~1users~1me/put/responses/204'
+ '/videos/{id}/give-ownership':
+ post:
+ summary: Request ownership change
+ tags:
+ - Video Ownership Change
+ security:
+ - OAuth2: []
+ parameters:
+ - $ref: '#/components/parameters/idOrUUID'
+ requestBody:
+ required: true
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ type: object
+ properties:
+ username:
+ type: string
+ required:
+ - username
+ responses:
+ '204':
+ $ref: '#/paths/~1users~1me/put/responses/204'
+ '400':
+ description: 'Changing video ownership to a remote account is not supported yet'
/videos:
get:
- summary: Get list of videos
+ summary: List videos
tags:
- Video
parameters:
$ref: '#/components/schemas/VideoListResponse'
/videos/categories:
get:
- summary: Get list of video categories known by the server
+ summary: List available video categories
tags:
- Video
responses:
type: string
/videos/licences:
get:
- summary: Get list of video licences known by the server
+ summary: List available video licences
tags:
- Video
responses:
type: string
/videos/languages:
get:
- summary: Get list of languages known by the server
+ summary: List available video languages
tags:
- Video
responses:
type: string
/videos/privacies:
get:
- summary: Get list of privacy policies supported by the server
+ summary: List available video privacies
tags:
- Video
responses:
type: string
'/videos/{id}':
put:
- summary: Update metadata for a video by its id
+ summary: Update a video
security:
- OAuth2: []
tags:
previewfile:
contentType: image/jpeg
get:
- summary: Get a video by its id
+ summary: Get a video
tags:
- Video
parameters:
schema:
$ref: '#/components/schemas/VideoDetails'
delete:
- summary: Delete a video by its id
+ summary: Delete a video
security:
- OAuth2: []
tags:
$ref: '#/paths/~1users~1me/put/responses/204'
'/videos/{id}/description':
get:
- summary: Get a video description by its id
+ summary: Get complete video description
tags:
- Video
parameters:
type: string
'/videos/{id}/views':
post:
- summary: Add a view to the video by its id
+ summary: Add a view to a video
tags:
- Video
parameters:
$ref: '#/paths/~1users~1me/put/responses/204'
'/videos/{id}/watching':
put:
- summary: Set watching progress of a video by its id for a user
+ summary: Set watching progress of a video
tags:
- Video
security:
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
- /videos/ownership:
- get:
- summary: Get list of video ownership changes requests
- tags:
- - Video
- security:
- - OAuth2: []
- responses:
- '200':
- description: successful operation
- '/videos/ownership/{id}/accept':
- post:
- summary: Refuse ownership change request for video by its id
- tags:
- - Video
- security:
- - OAuth2: []
- parameters:
- - $ref: '#/components/parameters/idOrUUID'
- responses:
- '204':
- $ref: '#/paths/~1users~1me/put/responses/204'
- '/videos/ownership/{id}/refuse':
- post:
- summary: Accept ownership change request for video by its id
- tags:
- - Video
- security:
- - OAuth2: []
- parameters:
- - $ref: '#/components/parameters/idOrUUID'
- responses:
- '204':
- $ref: '#/paths/~1users~1me/put/responses/204'
- '/videos/{id}/give-ownership':
- post:
- summary: Request change of ownership for a video you own, by its id
- tags:
- - Video
- security:
- - OAuth2: []
- parameters:
- - $ref: '#/components/parameters/idOrUUID'
- requestBody:
- required: true
- content:
- application/x-www-form-urlencoded:
- schema:
- type: object
- properties:
- username:
- type: string
- required:
- - username
- responses:
- '204':
- $ref: '#/paths/~1users~1me/put/responses/204'
- '400':
- description: 'Changing video ownership to a remote account is not supported yet'
/videos/upload:
post:
- summary: Upload a video file with its metadata
+ summary: Upload a video
security:
- OAuth2: []
tags:
"Authorization:Bearer $token"
/videos/imports:
post:
- summary: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
+ summary: Import a video
+ description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
security:
- OAuth2: []
tags:
contentType: image/jpeg
/videos/abuse:
get:
- summary: Get list of reported video abuses
+ summary: List video abuses
security:
- - OAuth2: []
+ - OAuth2:
+ - admin
+ - moderator
tags:
- Video Abuse
parameters:
$ref: '#/components/schemas/VideoAbuse'
'/videos/{id}/abuse':
post:
- summary: 'Report an abuse, on a video by its id'
+ summary: Report an abuse
security:
- OAuth2: []
tags:
$ref: '#/paths/~1users~1me/put/responses/204'
'/videos/{id}/blacklist':
post:
- summary: Put on blacklist a video by its id
+ summary: Blacklist a video
security:
- OAuth2:
- admin
$ref: '#/paths/~1users~1me/put/responses/204'
/videos/blacklist:
get:
- summary: Get list of videos on blacklist
+ summary: List blacklisted videos
security:
- OAuth2:
- admin
$ref: '#/components/schemas/VideoBlacklist'
/videos/{id}/captions:
get:
- summary: Get list of video's captions
+ summary: List captions of a video
tags:
- Video Caption
parameters:
$ref: '#/paths/~1users~1me/put/responses/204'
/video-channels:
get:
- summary: Get list of video channels
+ summary: List video channels
tags:
- - Video Channel
+ - Video Channels
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
items:
$ref: '#/components/schemas/VideoChannel'
post:
- summary: Creates a video channel for the current user
+ summary: Create a video channel
security:
- OAuth2: []
tags:
- - Video Channel
+ - Video Channels
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
$ref: '#/components/schemas/VideoChannelCreate'
'/video-channels/{channelHandle}':
get:
- summary: Get a video channel by its id
+ summary: Get a video channel
tags:
- - Video Channel
+ - Video Channels
parameters:
- $ref: '#/components/parameters/channelHandle'
responses:
schema:
$ref: '#/components/schemas/VideoChannel'
put:
- summary: Update a video channel by its id
+ summary: Update a video channel
security:
- OAuth2: []
tags:
- - Video Channel
+ - Video Channels
parameters:
- $ref: '#/components/parameters/channelHandle'
responses:
schema:
$ref: '#/components/schemas/VideoChannelUpdate'
delete:
- summary: Delete a video channel by its id
+ summary: Delete a video channel
security:
- OAuth2: []
tags:
- - Video Channel
+ - Video Channels
parameters:
- $ref: '#/components/parameters/channelHandle'
responses:
$ref: '#/paths/~1users~1me/put/responses/204'
'/video-channels/{channelHandle}/videos':
get:
- summary: Get videos of a video channel by its id
+ summary: List videos of a video channel
tags:
- Video
- - Video Channel
+ - Video Channels
parameters:
- $ref: '#/components/parameters/channelHandle'
responses:
$ref: '#/components/schemas/VideoListResponse'
/video-playlists:
get:
- summary: Get list of video playlists
+ summary: List video playlists
tags:
- - Video Playlist
+ - Video Playlists
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
$ref: '#/components/schemas/VideoPlaylist'
'/accounts/{name}/video-channels':
get:
- summary: Get video channels of an account by its name
+ summary: List video channels of an account
tags:
- - Video Channel
+ - Video Channels
+ - Accounts
parameters:
- $ref: '#/components/parameters/name'
responses:
$ref: '#/components/schemas/VideoChannel'
'/accounts/{name}/ratings':
get:
- summary: Get ratings of an account by its name
+ summary: List ratings of an account
security:
- OAuth2: []
tags:
- - User
+ - Accounts
parameters:
- $ref: '#/components/parameters/name'
- $ref: '#/components/parameters/start'
$ref: '#/components/schemas/VideoRating'
'/videos/{id}/comment-threads':
get:
- summary: Get the comment threads of a video by its id
+ summary: List threads of a video
tags:
- - Video Comment
+ - Video Comments
parameters:
- $ref: '#/components/parameters/idOrUUID'
- $ref: '#/components/parameters/start'
schema:
$ref: '#/components/schemas/CommentThreadResponse'
post:
- summary: 'Creates a comment thread, on a video by its id'
+ summary: Create a thread
security:
- OAuth2: []
tags:
- - Video Comment
+ - Video Comments
parameters:
- $ref: '#/components/parameters/idOrUUID'
responses:
$ref: '#/components/schemas/CommentThreadPostResponse'
'/videos/{id}/comment-threads/{threadId}':
get:
- summary: 'Get the comment thread by its id, of a video by its id'
+ summary: Get a thread
tags:
- - Video Comment
+ - Video Comments
parameters:
- $ref: '#/components/parameters/idOrUUID'
- $ref: '#/components/parameters/threadId'
$ref: '#/components/schemas/VideoCommentThreadTree'
'/videos/{id}/comments/{commentId}':
post:
- summary: 'Creates a comment in a comment thread by its id, of a video by its id'
+ summary: Reply to a thread of a video
security:
- OAuth2: []
tags:
- - Video Comment
+ - Video Comments
parameters:
- $ref: '#/components/parameters/idOrUUID'
- $ref: '#/components/parameters/commentId'
schema:
$ref: '#/components/schemas/CommentThreadPostResponse'
delete:
- summary: 'Delete a comment in a comment thread by its id, of a video by its id'
+ summary: Delete a comment or a reply
security:
- OAuth2: []
tags:
- - Video Comment
+ - Video Comments
parameters:
- $ref: '#/components/parameters/idOrUUID'
- $ref: '#/components/parameters/commentId'
$ref: '#/paths/~1users~1me/put/responses/204'
'/videos/{id}/rate':
put:
- summary: Vote for a video by its id
+ summary: Like/dislike a video
security:
- OAuth2: []
tags:
- - Video Rate
+ - Video Rates
parameters:
- $ref: '#/components/parameters/idOrUUID'
responses:
get:
tags:
- Search
- summary: Get the videos corresponding to a given query
+ summary: Search videos
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- url: 'https://peertube.cpy.re/api/v1'
description: Live Test Server (live data - stable version)
- url: 'https://peertube2.cpy.re/api/v1'
- description: Live Test Server (live data - bleeding edge version)
+ description: Live Test Server (live data - latest nighlty version)
- url: 'https://peertube3.cpy.re/api/v1'
- description: Live Test Server (live data - bleeding edge version)
+ description: Live Test Server (live data - latest RC version)
components:
parameters:
start: