6 name: PeerTube Community
7 url: https://joinpeertube.org
10 url: https://github.com/Chocobozzz/PeerTube/blob/master/LICENSE
12 url: https://joinpeertube.org/img/brand.png
13 altText: PeerTube Project Homepage
15 The PeerTube API is built on HTTP(S) and is RESTful. You can use your favorite
16 HTTP/REST library for your programming language to use PeerTube. The spec API is fully compatible with
17 [openapi-generator](https://github.com/OpenAPITools/openapi-generator/wiki/API-client-generator-HOWTO)
18 which generates a client SDK in the language of your choice - we generate some client SDKs automatically:
20 - [Python](https://framagit.org/framasoft/peertube/clients/python)
21 - [Go](https://framagit.org/framasoft/peertube/clients/go)
22 - [Kotlin](https://framagit.org/framasoft/peertube/clients/kotlin)
24 See the [REST API quick start](https://docs.joinpeertube.org/api-rest-getting-started) for a few
25 examples of using the PeerTube API.
29 When you sign up for an account on a PeerTube instance, you are given the possibility
30 to generate sessions on it, and authenticate there using an access token. Only __one
31 access token can currently be used at a time__.
35 Accounts are given permissions based on their role. There are three roles on
36 PeerTube: Administrator, Moderator, and User. See the [roles guide](https://docs.joinpeertube.org/admin-managing-users?id=roles) for a detail of their permissions.
40 The API uses standard HTTP status codes to indicate the success or failure
41 of the API call, completed by a [RFC7807-compliant](https://tools.ietf.org/html/rfc7807) response body.
44 HTTP 1.1 404 Not Found
45 Content-Type: application/problem+json; charset=utf-8
48 "detail": "Video not found",
49 "docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
56 We provide error `type` values for [a growing number of cases](https://github.com/Chocobozzz/PeerTube/blob/develop/shared/models/server/server-error-code.enum.ts),
57 but it is still optional. Types are used to disambiguate errors that bear the same status code
61 HTTP 1.1 403 Forbidden
62 Content-Type: application/problem+json; charset=utf-8
65 "detail": "Cannot get this video regarding follow constraints",
66 "docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
69 "type": "https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/does_not_respect_follow_constraints"
73 Here a 403 error could otherwise mean that the video is private or blocklisted.
77 Each parameter is evaluated on its own against a set of rules before the route validator
78 proceeds with potential testing involving parameter combinations. Errors coming from validation
79 errors appear earlier and benefit from a more detailed error description:
82 HTTP 1.1 400 Bad Request
83 Content-Type: application/problem+json; charset=utf-8
86 "detail": "Incorrect request parameters: id",
87 "docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
88 "instance": "/api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180",
92 "msg": "Invalid value",
94 "value": "9c9de5e8-0a1e-484a-b099-e80766180"
98 "title": "Bad Request",
103 Where `id` is the name of the field concerned by the error, within the route definition.
104 `invalid-params.<field>.location` can be either 'params', 'body', 'header', 'query' or 'cookies', and
105 `invalid-params.<field>.value` reports the value that didn't pass validation whose `invalid-params.<field>.msg`
108 ### Deprecated error fields
110 Some fields could be included with previous versions. They are still included but their use is deprecated:
111 - `error`: superseded by `detail`
112 - `code`: superseded by `type` (which is now an URI)
116 We are rate-limiting all endpoints of PeerTube's API. Custom values can be set by administrators:
118 | Endpoint (prefix: `/api/v1`) | Calls | Time frame |
119 |------------------------------|---------------|--------------|
120 | `/*` | 50 | 10 seconds |
121 | `POST /users/token` | 15 | 5 minutes |
122 | `POST /users/register` | 2<sup>*</sup> | 5 minutes |
123 | `POST /users/ask-send-verify-email` | 3 | 5 minutes |
125 Depending on the endpoint, <sup>*</sup>failed requests are not taken into account. A service
126 limit is announced by a `429 Too Many Requests` status code.
128 You can get details about the current state of your rate limit by reading the
131 | Header | Description |
132 |-------------------------|------------------------------------------------------------|
133 | `X-RateLimit-Limit` | Number of max requests allowed in the current time period |
134 | `X-RateLimit-Remaining` | Number of remaining requests in the current time period |
135 | `X-RateLimit-Reset` | Timestamp of end of current time period as UNIX timestamp |
136 | `Retry-After` | Seconds to delay after the first `429` is received |
140 This API features [Cross-Origin Resource Sharing (CORS)](https://fetch.spec.whatwg.org/),
141 allowing cross-domain communication from the browser for some routes:
144 |------------------------- ---|
148 | `/.well-known/webfinger` |
150 In addition, all routes serving ActivityPub are CORS-enabled for all origins.
152 url: https://docs.joinpeertube.org/api-rest-reference.html
156 As a visitor, you can use this API to open an account (if registrations are open on
157 that PeerTube instance). As an admin, you should use the dedicated [User creation
158 API](#operation/addUser) instead.
160 x-displayName: Login/Logout
162 Sessions deal with access tokens over time. Only __one session token can currently be used at a time__.
165 Accounts encompass remote accounts discovered across the federation,
166 and correspond to the main Actor, along with video channels a user can create, which
169 When a comment is posted, it is done with your Account's Actor.
172 Using some features of PeerTube require authentication, for which User
173 provide different levels of permission as well as associated user
174 information. Each user has a corresponding local Account for federation.
177 Operations related to your own User, when logged-in.
178 - name: My Subscriptions
180 Operations related to your subscriptions to video channels, their
181 new videos, and how to keep up to date with their latest publications!
184 Operations related to your watch history.
185 - name: My Notifications
187 Notifications following new videos, follows or reports. They allow you
188 to keep track of the interactions and overall important information that
189 concerns you. You MAY set per-notification type delivery preference, to
190 receive the info either by mail, by in-browser notification or both.
193 Each server exposes public information regarding supported videos and
197 Jobs are long-running tasks enqueued and processed by the instance
198 itself. No additional worker registration is currently available.
199 - name: Instance Follows
201 Managing servers which the instance interacts with is crucial to the
202 concept of federation in PeerTube and external video indexation. The PeerTube
203 server then deals with inter-server ActivityPub operations and propagates
204 information across its social graph by posting activities to actors' inbox
207 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-follows
208 - name: Instance Redundancy
210 Redundancy is part of the inter-server solidarity that PeerTube fosters.
211 Manage the list of instances you wish to help by seeding their videos according
212 to the policy of video selection of your choice. Note that you have a similar functionality
213 to mirror individual videos, see [video mirroring](#tag/Video-Mirroring).
215 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-redundancy
218 Managing plugins installed from a local path or from NPM, or search for new ones.
220 url: https://docs.joinpeertube.org/api-plugins
223 Abuses deal with reports of local or remote videos/comments/accounts alike.
226 Operations dealing with listing, uploading, fetching or modifying videos.
229 Operations dealing with adding video or audio. PeerTube supports two upload modes, and three import modes.
233 - [_legacy_](#operation/uploadLegacy), where the video file is sent in a single request
234 - [_resumable_](#operation/uploadResumableInit), where the video file is sent in chunks
236 You can upload videos more reliably by using the resumable variant. Its protocol lets
237 you resume an upload operation after a network interruption or other transmission failure,
238 saving time and bandwidth in the event of network failures.
240 Favor using resumable uploads in any of the following cases:
241 - You are transferring large files
242 - The likelihood of a network interruption is high
243 - Uploads are originating from a device with a low-bandwidth or unstable Internet connection,
244 such as a mobile device
248 - _URL_-based: where the URL points to any service supported by [youtube-dl](https://ytdl-org.github.io/youtube-dl/)
249 - _magnet_-based: where the URI resolves to a BitTorrent resource containing a single supported video file
250 - _torrent_-based: where the metainfo file resolves to a BitTorrent resource containing a single supported video file
252 The import function is practical when the desired video/audio is available online. It makes PeerTube
253 download it for you, saving you as much bandwidth and avoiding any instability or limitation your network might have.
254 - name: Video Imports
255 description: Operations dealing with listing, adding and removing video imports.
256 - name: Channels Sync
257 description: Operations dealing with synchronizing PeerTube user's channel with channels of other platforms
258 - name: Video Captions
259 description: Operations dealing with listing, adding and removing closed captions of a video.
260 - name: Video Channels
261 description: Operations dealing with the creation, modification and listing of videos within a channel.
262 - name: Video Comments
264 Operations dealing with comments to a video. Comments are organized in threads: adding a
265 comment in response to the video starts a thread, adding a reply to a comment adds it to
266 its root comment thread.
268 description: Operations dealing with blocking videos (removing them from view and preventing interactions).
270 description: Like/dislike a video.
271 - name: Video Playlists
272 description: Operations dealing with playlists of videos. Playlists are bound to users and/or channels.
274 description: Operations on video files
275 - name: Video Transcoding
276 description: Video transcoding related operations
278 description: Video statistics
280 description: Server syndication feeds
283 The search helps to find _videos_ or _channels_ from within the instance and beyond.
284 Videos from other instances federated by the instance (that is, instances
285 followed by the instance) can be found via keywords and other criteria of
288 Administrators can also enable the use of a remote search system, indexing
289 videos and channels not could be not federated by the instance.
291 description: Get and update the custom homepage
292 - name: Video Mirroring
294 PeerTube instances can mirror videos from one another, and help distribute some videos.
296 For importing videos as your own, refer to [video imports](#operation/importVideo).
325 - Video Ownership Change
346 - Instance Redundancy
356 summary: Get an account
357 operationId: getAccount
359 - $ref: '#/components/parameters/name'
362 description: successful operation
366 $ref: '#/components/schemas/Account'
368 description: account not found
370 '/accounts/{name}/videos':
375 summary: 'List videos of an account'
376 operationId: getAccountVideos
378 - $ref: '#/components/parameters/name'
379 - $ref: '#/components/parameters/categoryOneOf'
380 - $ref: '#/components/parameters/isLive'
381 - $ref: '#/components/parameters/tagsOneOf'
382 - $ref: '#/components/parameters/tagsAllOf'
383 - $ref: '#/components/parameters/licenceOneOf'
384 - $ref: '#/components/parameters/languageOneOf'
385 - $ref: '#/components/parameters/nsfw'
386 - $ref: '#/components/parameters/isLocal'
387 - $ref: '#/components/parameters/include'
388 - $ref: '#/components/parameters/privacyOneOf'
389 - $ref: '#/components/parameters/hasHLSFiles'
390 - $ref: '#/components/parameters/hasWebtorrentFiles'
391 - $ref: '#/components/parameters/skipCount'
392 - $ref: '#/components/parameters/start'
393 - $ref: '#/components/parameters/count'
394 - $ref: '#/components/parameters/videosSort'
397 description: successful operation
401 $ref: '#/components/schemas/VideoListResponse'
405 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
406 .then(function(response) {
407 return response.json()
408 }).then(function(data) {
414 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
420 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
422 http = Net::HTTP.new(uri.host, uri.port)
425 response = http.get(uri.request_uri)
427 puts JSON.parse(response.read_body)
432 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
437 '/accounts/{name}/followers':
441 summary: 'List followers of an account'
444 operationId: getAccountFollowers
446 - $ref: '#/components/parameters/name'
447 - $ref: '#/components/parameters/start'
448 - $ref: '#/components/parameters/count'
449 - $ref: '#/components/parameters/followersSort'
450 - $ref: '#/components/parameters/search'
453 description: successful operation
465 $ref: '#/components/schemas/Follow'
471 summary: List accounts
472 operationId: getAccounts
474 - $ref: '#/components/parameters/start'
475 - $ref: '#/components/parameters/count'
476 - $ref: '#/components/parameters/sort'
479 description: successful operation
485 $ref: '#/components/schemas/Account'
491 summary: Get instance public configuration
492 operationId: getConfig
495 description: successful operation
499 $ref: '#/components/schemas/ServerConfig'
502 externalValue: https://peertube2.cpy.re/api/v1/config
506 summary: Get instance "About" information
507 operationId: getAbout
512 description: successful operation
516 $ref: '#/components/schemas/ServerConfigAbout'
519 externalValue: https://peertube2.cpy.re/api/v1/config/about
523 summary: Get instance runtime configuration
524 operationId: getCustomConfig
532 description: successful operation
536 $ref: '#/components/schemas/ServerConfigCustom'
538 summary: Set instance runtime configuration
539 operationId: putCustomConfig
547 description: successful operation
549 x-summary: field inconsistencies
552 - the emailer is disabled and the instance is open to registrations
553 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
555 summary: Delete instance runtime configuration
556 operationId: delCustomConfig
564 description: successful operation
566 /custom-pages/homepage/instance:
568 summary: Get instance custom homepage
573 description: No homepage set
575 description: successful operation
579 $ref: '#/components/schemas/CustomHomepage'
581 summary: Set instance custom homepage
595 description: content of the homepage, that will be injected in the client
598 description: successful operation
602 summary: Pause job queue
610 description: successful operation
614 summary: Resume job queue
622 description: successful operation
626 summary: List instance jobs
637 description: The state of the job ('' for for no filter)
647 - $ref: '#/components/parameters/jobType'
648 - $ref: '#/components/parameters/start'
649 - $ref: '#/components/parameters/count'
650 - $ref: '#/components/parameters/sort'
653 description: successful operation
666 $ref: '#/components/schemas/Job'
672 summary: List instances following the server
674 - $ref: '#/components/parameters/followState'
675 - $ref: '#/components/parameters/actorType'
676 - $ref: '#/components/parameters/start'
677 - $ref: '#/components/parameters/count'
678 - $ref: '#/components/parameters/sort'
681 description: successful operation
693 $ref: '#/components/schemas/Follow'
695 '/server/followers/{nameWithHost}':
697 summary: Remove or reject a follower to your server
707 description: The remote actor handle to remove from your followers
713 description: successful operation
715 description: follower not found
717 '/server/followers/{nameWithHost}/reject':
719 summary: Reject a pending follower to your server
729 description: The remote actor handle to remove from your followers
735 description: successful operation
737 description: follower not found
739 '/server/followers/{nameWithHost}/accept':
741 summary: Accept a pending follower to your server
751 description: The remote actor handle to remove from your followers
757 description: successful operation
759 description: follower not found
765 summary: List instances followed by the server
767 - $ref: '#/components/parameters/followState'
768 - $ref: '#/components/parameters/actorType'
769 - $ref: '#/components/parameters/start'
770 - $ref: '#/components/parameters/count'
771 - $ref: '#/components/parameters/sort'
774 description: successful operation
786 $ref: '#/components/schemas/Follow'
793 summary: Follow a list of actors (PeerTube instance, channel or account)
796 description: successful operation
798 description: cannot follow a non-HTTPS server
817 '/server/following/{hostOrHandle}':
819 summary: Unfollow an actor (PeerTube instance, channel or account)
829 description: The hostOrHandle to unfollow
834 description: successful operation
836 description: host or handle not found
840 summary: Create a user
849 description: user created
853 $ref: '#/components/schemas/AddUserResponse'
859 id: '$response.body#/user/id'
864 id: '$response.body#/user/id'
869 id: '$response.body#/user/id'
871 description: insufficient authority to create an admin or moderator
876 $ref: '#/components/schemas/AddUser'
878 If the smtp server is configured, you can leave the password empty and an email will be sent
879 asking the user to set it first.
883 operationId: getUsers
890 - $ref: '#/components/parameters/usersSearch'
891 - $ref: '#/components/parameters/usersBlocked'
892 - $ref: '#/components/parameters/start'
893 - $ref: '#/components/parameters/count'
894 - $ref: '#/components/parameters/usersSort'
897 description: successful operation
903 $ref: '#/components/schemas/User'
907 - $ref: '#/components/parameters/id'
909 summary: Delete a user
918 description: successful operation
929 description: include statistics about the user (only available as a moderator/admin)
934 x-summary: successful operation
936 As an admin/moderator, you can request a response augmented with statistics about the user's
937 moderation relations and videos usage, by using the `withStats` parameter.
942 - $ref: '#/components/schemas/User'
943 - $ref: '#/components/schemas/UserWithStats'
945 summary: Update a user
953 description: successful operation
958 $ref: '#/components/schemas/UpdateUser'
961 /oauth-clients/local:
963 summary: Login prerequisite
964 description: You need to retrieve a client id and secret before [logging in](#operation/getOAuthToken).
965 operationId: getOAuthClient
970 description: successful operation
974 $ref: '#/components/schemas/OAuthClient'
976 UseOAuthClientToLogin:
977 operationId: getOAuthToken
979 client_id: '$response.body#/client_id'
980 client_secret: '$response.body#/client_secret'
984 API="https://peertube2.cpy.re/api/v1"
987 curl -s "$API/oauth-clients/local"
992 operationId: getOAuthToken
993 description: With your [client id and secret](#operation/getOAuthClient), you can retrieve an access and refresh tokens.
998 application/x-www-form-urlencoded:
1001 - $ref: '#/components/schemas/OAuthToken-password'
1002 - $ref: '#/components/schemas/OAuthToken-refresh_token'
1004 propertyName: grant_type
1006 password: '#/components/schemas/OAuthToken-password'
1007 refresh_token: '#/components/schemas/OAuthToken-refresh_token'
1010 description: successful operation
1021 example: 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0
1022 description: valid for 1 day
1025 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
1026 description: valid for 2 weeks
1031 refresh_token_expires_in:
1036 x-summary: client or credentials are invalid
1038 Disambiguate via `type`:
1039 - `invalid_client` for an unmatched `client_id`
1040 - `invalid_grant` for unmatched credentials
1042 x-summary: token expired
1044 Disambiguate via `type`:
1045 - default value for a regular authentication failure
1046 - `invalid_token` for an expired token
1051 API="https://peertube2.cpy.re/api/v1"
1052 USERNAME="<your_username>"
1053 PASSWORD="<your_password>"
1056 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
1057 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
1058 curl -s "$API/users/token" \
1059 --data client_id="$client_id" \
1060 --data client_secret="$client_secret" \
1061 --data grant_type=password \
1062 --data username="$USERNAME" \
1063 --data password="$PASSWORD" \
1064 | jq -r ".access_token"
1066 /users/revoke-token:
1069 description: Revokes your access token and its associated refresh token, destroying your current session.
1070 operationId: revokeOAuthToken
1077 description: successful operation
1081 summary: Register a user
1082 operationId: registerUser
1088 description: successful operation
1093 $ref: '#/components/schemas/RegisterUser'
1096 /users/{id}/verify-email:
1098 summary: Verify a user
1099 operationId: verifyUser
1101 Following a user registration, the new user will receive an email asking to click a link
1102 containing a secret.
1107 - $ref: '#/components/parameters/id'
1120 - verificationString
1123 description: successful operation
1125 description: invalid verification string
1127 description: user not found
1129 /users/{id}/two-factor/request:
1131 summary: Request two factor auth
1132 operationId: requestTwoFactor
1133 description: Request two factor authentication for a user
1137 - $ref: '#/components/parameters/id'
1146 description: Password of the currently authenticated user
1149 description: successful operation
1155 $ref: '#/components/schemas/RequestTwoFactorResponse'
1157 description: invalid password
1159 description: user not found
1161 /users/{id}/two-factor/confirm-request:
1163 summary: Confirm two factor auth
1164 operationId: confirmTwoFactorRequest
1165 description: Confirm a two factor authentication request
1169 - $ref: '#/components/parameters/id'
1178 description: Token to identify the two factor request
1181 description: OTP token generated by the app
1187 description: successful operation
1189 description: invalid request token or OTP token
1191 description: user not found
1193 /users/{id}/two-factor/disable:
1195 summary: Disable two factor auth
1196 operationId: disableTwoFactor
1197 description: Disable two factor authentication of a user
1201 - $ref: '#/components/parameters/id'
1210 description: Password of the currently authenticated user
1213 description: successful operation
1215 description: invalid password
1217 description: user not found
1220 /users/ask-send-verify-email:
1222 summary: Resend user verification link
1223 operationId: resendEmailToVerifyUser
1229 description: successful operation
1233 summary: Get my user information
1234 operationId: getUserInfo
1242 description: successful operation
1248 $ref: '#/components/schemas/User'
1250 summary: Update my user information
1251 operationId: putUserInfo
1259 description: successful operation
1264 $ref: '#/components/schemas/UpdateMe'
1267 /users/me/videos/imports:
1269 summary: Get video imports of my user
1277 - $ref: '#/components/parameters/start'
1278 - $ref: '#/components/parameters/count'
1279 - $ref: '#/components/parameters/sort'
1284 description: Filter on import target URL
1288 name: videoChannelSyncId
1291 description: Filter on imports created by a specific channel synchronization
1298 description: Search in video names
1303 description: successful operation
1307 $ref: '#/components/schemas/VideoImportsList'
1309 /users/me/video-quota-used:
1311 summary: Get my user used quota
1319 description: successful operation
1327 description: The user video quota used so far in bytes
1328 example: 16810141515
1329 videoQuotaUsedDaily:
1331 description: The user video quota used today in bytes
1334 '/users/me/videos/{videoId}/rating':
1336 summary: Get rate of my user for a video
1346 description: The video id
1348 $ref: '#/components/schemas/Video/properties/id'
1351 description: successful operation
1355 $ref: '#/components/schemas/GetMeVideoRating'
1359 summary: Get videos of my user
1367 - $ref: '#/components/parameters/start'
1368 - $ref: '#/components/parameters/count'
1369 - $ref: '#/components/parameters/sort'
1372 description: successful operation
1376 $ref: '#/components/schemas/VideoListResponse'
1378 /users/me/subscriptions:
1380 summary: Get my user subscriptions
1387 - $ref: '#/components/parameters/start'
1388 - $ref: '#/components/parameters/count'
1389 - $ref: '#/components/parameters/sort'
1392 description: successful operation
1396 $ref: '#/components/schemas/VideoChannelList'
1400 summary: Add subscription to my user
1413 description: uri of the video channels to subscribe to
1419 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
1422 description: successful operation
1424 /users/me/subscriptions/exist:
1426 summary: Get if subscriptions exist for my user
1433 - $ref: '#/components/parameters/subscriptionsUris'
1436 description: successful operation
1442 /users/me/subscriptions/videos:
1444 summary: List videos of subscriptions of my user
1452 - $ref: '#/components/parameters/categoryOneOf'
1453 - $ref: '#/components/parameters/isLive'
1454 - $ref: '#/components/parameters/tagsOneOf'
1455 - $ref: '#/components/parameters/tagsAllOf'
1456 - $ref: '#/components/parameters/licenceOneOf'
1457 - $ref: '#/components/parameters/languageOneOf'
1458 - $ref: '#/components/parameters/nsfw'
1459 - $ref: '#/components/parameters/isLocal'
1460 - $ref: '#/components/parameters/include'
1461 - $ref: '#/components/parameters/privacyOneOf'
1462 - $ref: '#/components/parameters/hasHLSFiles'
1463 - $ref: '#/components/parameters/hasWebtorrentFiles'
1464 - $ref: '#/components/parameters/skipCount'
1465 - $ref: '#/components/parameters/start'
1466 - $ref: '#/components/parameters/count'
1467 - $ref: '#/components/parameters/videosSort'
1470 description: successful operation
1474 $ref: '#/components/schemas/VideoListResponse'
1476 '/users/me/subscriptions/{subscriptionHandle}':
1478 summary: Get subscription of my user
1485 - $ref: '#/components/parameters/subscriptionHandle'
1488 description: successful operation
1492 $ref: '#/components/schemas/VideoChannel'
1494 summary: Delete subscription of my user
1501 - $ref: '#/components/parameters/subscriptionHandle'
1504 description: successful operation
1506 /users/me/notifications:
1508 summary: List my notifications
1516 description: only list unread notifications
1519 - $ref: '#/components/parameters/start'
1520 - $ref: '#/components/parameters/count'
1521 - $ref: '#/components/parameters/sort'
1524 description: successful operation
1528 $ref: '#/components/schemas/NotificationListResponse'
1530 /users/me/notifications/read:
1532 summary: Mark notifications as read by their id
1545 description: ids of the notifications to mark as read
1552 description: successful operation
1554 /users/me/notifications/read-all:
1556 summary: Mark all my notification as read
1563 description: successful operation
1565 /users/me/notification-settings:
1567 summary: Update my notification settings
1578 newVideoFromSubscription:
1579 $ref: '#/components/schemas/NotificationSettingValue'
1580 newCommentOnMyVideo:
1581 $ref: '#/components/schemas/NotificationSettingValue'
1583 $ref: '#/components/schemas/NotificationSettingValue'
1584 videoAutoBlacklistAsModerator:
1585 $ref: '#/components/schemas/NotificationSettingValue'
1587 $ref: '#/components/schemas/NotificationSettingValue'
1589 $ref: '#/components/schemas/NotificationSettingValue'
1590 myVideoImportFinished:
1591 $ref: '#/components/schemas/NotificationSettingValue'
1593 $ref: '#/components/schemas/NotificationSettingValue'
1594 newUserRegistration:
1595 $ref: '#/components/schemas/NotificationSettingValue'
1597 $ref: '#/components/schemas/NotificationSettingValue'
1598 newInstanceFollower:
1599 $ref: '#/components/schemas/NotificationSettingValue'
1600 autoInstanceFollowing:
1601 $ref: '#/components/schemas/NotificationSettingValue'
1604 description: successful operation
1606 /users/me/history/videos:
1608 summary: List watched videos history
1614 - $ref: '#/components/parameters/start'
1615 - $ref: '#/components/parameters/count'
1616 - $ref: '#/components/parameters/search'
1619 description: successful operation
1623 $ref: '#/components/schemas/VideoListResponse'
1625 /users/me/history/videos/{videoId}:
1627 summary: Delete history element
1637 $ref: '#/components/schemas/Video/properties/id'
1640 description: successful operation
1642 /users/me/history/videos/remove:
1644 summary: Clear video history
1651 multipart/form-data:
1656 description: history before this date will be deleted
1661 description: successful operation
1663 /users/me/avatar/pick:
1665 summary: Update my user avatar
1672 description: successful operation
1681 $ref: '#/components/schemas/ActorImage'
1683 description: image file too large
1685 X-File-Maximum-Size:
1689 description: Maximum file size for the avatar
1692 multipart/form-data:
1697 description: The file to upload
1702 contentType: image/png, image/jpeg
1706 summary: Delete my avatar
1713 description: successful operation
1717 summary: List video ownership changes
1719 - Video Ownership Change
1724 description: successful operation
1726 '/videos/ownership/{id}/accept':
1728 summary: Accept ownership change request
1730 - Video Ownership Change
1734 - $ref: '#/components/parameters/idOrUUID'
1737 description: successful operation
1739 description: cannot terminate an ownership change of another user
1741 description: video ownership change not found
1743 '/videos/ownership/{id}/refuse':
1745 summary: Refuse ownership change request
1747 - Video Ownership Change
1751 - $ref: '#/components/parameters/idOrUUID'
1754 description: successful operation
1756 description: cannot terminate an ownership change of another user
1758 description: video ownership change not found
1760 '/videos/{id}/give-ownership':
1762 summary: Request ownership change
1764 - Video Ownership Change
1768 - $ref: '#/components/parameters/idOrUUID'
1772 application/x-www-form-urlencoded:
1782 description: successful operation
1784 description: changing video ownership to a remote account is not supported yet
1786 description: video not found
1788 /videos/{id}/studio/edit:
1790 summary: Create a studio task
1794 description: Create a task to edit a video (cut, add intro/outro etc)
1798 - $ref: '#/components/parameters/idOrUUID'
1802 application/x-www-form-urlencoded:
1804 $ref: '#/components/schemas/VideoStudioCreateTask'
1807 description: successful operation
1809 description: incorrect parameters
1811 description: video not found
1815 summary: List videos
1816 operationId: getVideos
1820 - $ref: '#/components/parameters/categoryOneOf'
1821 - $ref: '#/components/parameters/isLive'
1822 - $ref: '#/components/parameters/tagsOneOf'
1823 - $ref: '#/components/parameters/tagsAllOf'
1824 - $ref: '#/components/parameters/licenceOneOf'
1825 - $ref: '#/components/parameters/languageOneOf'
1826 - $ref: '#/components/parameters/nsfw'
1827 - $ref: '#/components/parameters/isLocal'
1828 - $ref: '#/components/parameters/include'
1829 - $ref: '#/components/parameters/privacyOneOf'
1830 - $ref: '#/components/parameters/hasHLSFiles'
1831 - $ref: '#/components/parameters/hasWebtorrentFiles'
1832 - $ref: '#/components/parameters/skipCount'
1833 - $ref: '#/components/parameters/start'
1834 - $ref: '#/components/parameters/count'
1835 - $ref: '#/components/parameters/videosSort'
1838 description: successful operation
1842 $ref: '#/components/schemas/VideoListResponse'
1846 summary: List available video categories
1847 operationId: getCategories
1852 description: successful operation
1861 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1865 summary: List available video licences
1866 operationId: getLicences
1871 description: successful operation
1880 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1884 summary: List available video languages
1885 operationId: getLanguages
1890 description: successful operation
1899 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1903 summary: List available video privacy policies
1904 operationId: getPrivacyPolicies
1909 description: successful operation
1918 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1922 summary: Update a video
1923 operationId: putVideo
1929 - $ref: '#/components/parameters/idOrUUID'
1932 description: successful operation
1935 multipart/form-data:
1940 description: Video thumbnail file
1944 description: Video preview file
1948 $ref: '#/components/schemas/VideoCategorySet'
1950 $ref: '#/components/schemas/VideoLicenceSet'
1952 $ref: '#/components/schemas/VideoLanguageSet'
1954 $ref: '#/components/schemas/VideoPrivacySet'
1956 description: Video description
1959 description: Whether or not we wait transcoding before publish the video
1962 description: A text tell the audience how to support the video creator
1963 example: Please support our work on https://soutenir.framasoft.org/en/ <3
1966 description: Whether or not this video contains sensitive content
1969 description: Video name
1974 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1983 description: Enable or disable comments for this video
1986 description: Enable or disable downloading for this video
1988 originallyPublishedAt:
1989 description: Date when the content was originally published
1993 $ref: '#/components/schemas/VideoScheduledUpdate'
1996 contentType: image/jpeg
1998 contentType: image/jpeg
2000 summary: Get a video
2001 operationId: getVideo
2005 - $ref: '#/components/parameters/idOrUUID'
2008 description: successful operation
2012 $ref: '#/components/schemas/VideoDetails'
2014 summary: Delete a video
2015 operationId: delVideo
2021 - $ref: '#/components/parameters/idOrUUID'
2024 description: successful operation
2026 '/videos/{id}/description':
2028 summary: Get complete video description
2029 operationId: getVideoDesc
2033 - $ref: '#/components/parameters/idOrUUID'
2036 description: successful operation
2045 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**
2047 '/videos/{id}/source':
2049 summary: Get video source file metadata
2050 operationId: getVideoSource
2054 - $ref: '#/components/parameters/idOrUUID'
2057 description: successful operation
2061 $ref: '#/components/schemas/VideoSource'
2063 '/videos/{id}/views':
2065 summary: Notify user is watching a video
2066 description: Call this endpoint regularly (every 5-10 seconds for example) to notify the server the user is watching the video. After a while, PeerTube will increase video's viewers counter. If the user is authenticated, PeerTube will also store the current player time.
2067 operationId: addView
2071 - $ref: '#/components/parameters/idOrUUID'
2076 $ref: '#/components/schemas/UserViewingVideo'
2080 description: successful operation
2082 '/videos/{id}/watching':
2084 summary: Set watching progress of a video
2086 description: This endpoint has been deprecated. Use `/videos/{id}/views` instead
2092 - $ref: '#/components/parameters/idOrUUID'
2097 $ref: '#/components/schemas/UserViewingVideo'
2101 description: successful operation
2103 '/videos/{id}/stats/overall':
2105 summary: Get overall stats of a video
2111 - $ref: '#/components/parameters/idOrUUID'
2114 description: Filter stats by start date
2120 description: Filter stats by end date
2126 description: successful operation
2130 $ref: '#/components/schemas/VideoStatsOverall'
2132 '/videos/{id}/stats/retention':
2134 summary: Get retention stats of a video
2140 - $ref: '#/components/parameters/idOrUUID'
2143 description: successful operation
2147 $ref: '#/components/schemas/VideoStatsRetention'
2149 '/videos/{id}/stats/timeseries/{metric}':
2151 summary: Get timeserie stats of a video
2157 - $ref: '#/components/parameters/idOrUUID'
2162 description: The metric to get
2167 - 'aggregateWatchTime'
2170 description: Filter stats by start date
2176 description: Filter stats by end date
2182 description: successful operation
2186 $ref: '#/components/schemas/VideoStatsTimeserie'
2190 summary: Upload a video
2191 description: Uses a single request to upload a video.
2192 operationId: uploadLegacy
2200 description: successful operation
2204 $ref: '#/components/schemas/VideoUploadResponse'
2206 description: video didn't pass upload filter
2208 description: upload has timed out
2210 x-summary: video file too large, due to quota or max body size limit set by the reverse-proxy
2212 If the response has no body, it means the reverse-proxy didn't let it through. Otherwise disambiguate via `type`:
2213 - `quota_reached` for quota limits whether daily or global
2215 X-File-Maximum-Size:
2219 description: Maximum file size for the video
2221 description: video type unsupported
2223 description: video unreadable
2226 multipart/form-data:
2228 $ref: '#/components/schemas/VideoUploadRequestLegacy'
2231 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
2233 contentType: image/jpeg
2235 contentType: image/jpeg
2240 USERNAME="<your_username>"
2241 PASSWORD="<your_password>"
2242 FILE_PATH="<your_file_path>"
2243 CHANNEL_ID="<your_channel_id>"
2245 API="https://peertube2.cpy.re/api/v1"
2248 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
2249 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
2250 token=$(curl -s "$API/users/token" \
2251 --data client_id="$client_id" \
2252 --data client_secret="$client_secret" \
2253 --data grant_type=password \
2254 --data username="$USERNAME" \
2255 --data password="$PASSWORD" \
2256 | jq -r ".access_token")
2259 curl -s "$API/videos/upload" \
2260 -H "Authorization: Bearer $token" \
2262 --form videofile=@"$FILE_PATH" \
2263 --form channelId=$CHANNEL_ID \
2266 /videos/upload-resumable:
2268 summary: Initialize the resumable upload of a video
2269 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to initialize the upload of a video
2270 operationId: uploadResumableInit
2277 - name: X-Upload-Content-Length
2283 description: Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
2284 - name: X-Upload-Content-Type
2291 description: MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
2296 $ref: '#/components/schemas/VideoUploadRequestResumable'
2299 description: file already exists, send a [`resume`](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) request instead
2301 description: created
2307 example: /api/v1/videos/upload-resumable?upload_id=471e97554f21dec3b8bb5d4602939c51
2313 x-summary: video file too large, due to quota, absolute max file size or concurrent partial upload limit
2315 Disambiguate via `type`:
2316 - `max_file_size_reached` for the absolute file size limit
2317 - `quota_reached` for quota limits whether daily or global
2319 description: video type unsupported
2321 summary: Send chunk for the resumable upload of a video
2322 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to continue, pause or resume the upload of a video
2323 operationId: uploadResumable
2334 Created session id to proceed with. If you didn't send chunks in the last hour, it is
2335 not valid anymore and you need to initialize a new upload.
2338 - name: Content-Range
2342 example: bytes 0-262143/2469036
2345 Specifies the bytes in the file that the request is uploading.
2347 For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first
2348 262144 bytes (256 x 1024) in a 2,469,036 byte file.
2349 - name: Content-Length
2356 Size of the chunk that the request is sending.
2358 Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from
2359 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
2362 application/octet-stream:
2368 description: last chunk received
2376 $ref: '#/components/schemas/VideoUploadResponse'
2378 description: resume incomplete
2383 example: bytes=0-262143
2389 description: video didn't pass upload filter
2391 description: upload not found
2393 description: chunk doesn't match range
2395 description: video unreadable
2397 description: too many concurrent requests
2399 description: upload is already being processed
2406 summary: Cancel the resumable upload of a video, deleting any data uploaded so far
2407 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to cancel the upload of a video
2408 operationId: uploadResumableCancel
2419 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
2420 not valid anymore and the upload session has already been deleted with its data ;-)
2423 - name: Content-Length
2431 description: upload cancelled
2438 description: upload not found
2442 summary: Import a video
2443 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
2444 operationId: importVideo
2452 multipart/form-data:
2454 $ref: '#/components/schemas/VideoCreateImport'
2457 contentType: application/x-bittorrent
2459 contentType: image/jpeg
2461 contentType: image/jpeg
2464 description: successful operation
2468 $ref: '#/components/schemas/VideoUploadResponse'
2470 description: '`magnetUri` or `targetUrl` or a torrent file missing'
2472 description: video didn't pass pre-import filter
2474 description: HTTP or Torrent/magnetURI import not enabled
2476 /videos/imports/{id}/cancel:
2478 summary: Cancel video import
2479 description: Cancel a pending video import
2485 - $ref: '#/components/parameters/id'
2488 description: successful operation
2490 /videos/imports/{id}:
2492 summary: Delete video import
2493 description: Delete ended video import
2499 - $ref: '#/components/parameters/id'
2502 description: successful operation
2506 summary: Create a live
2507 operationId: addLive
2515 description: successful operation
2519 $ref: '#/components/schemas/VideoUploadResponse'
2521 x-summary: validation error, or conflicting `saveReplay` and `permanentLive` parameter set
2523 Disambiguate via `type`:
2524 - default type for a validation error
2525 - `live_conflicting_permanent_and_save_replay` for conflicting parameters set
2527 x-summary: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
2529 Disambiguate via `type`:
2530 - `live_not_enabled` for a disabled live feature
2531 - `live_not_allowing_replay` for a disabled replay feature
2532 - `max_instance_lives_limit_reached` for the absolute concurrent live limit
2533 - `max_user_lives_limit_reached` for the user concurrent live limit
2536 multipart/form-data:
2541 description: Channel id that will contain this live video
2546 description: User can stream multiple times in a permanent live
2549 description: User can select live latency mode if enabled by the instance
2550 $ref: '#/components/schemas/LiveVideoLatencyMode'
2552 description: Live video/replay thumbnail file
2556 description: Live video/replay preview file
2560 $ref: '#/components/schemas/VideoPrivacySet'
2562 $ref: '#/components/schemas/VideoCategorySet'
2564 $ref: '#/components/schemas/VideoLicenceSet'
2566 $ref: '#/components/schemas/VideoLanguageSet'
2568 description: Live video/replay description
2571 description: A text tell the audience how to support the creator
2572 example: Please support our work on https://soutenir.framasoft.org/en/ <3
2575 description: Whether or not this live video/replay contains sensitive content
2578 description: Live video/replay name
2583 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
2592 description: Enable or disable comments for this live video/replay
2595 description: Enable or disable downloading for the replay of this live video
2602 contentType: image/jpeg
2604 contentType: image/jpeg
2608 summary: Get information about a live
2609 operationId: getLiveId
2616 - $ref: '#/components/parameters/idOrUUID'
2619 description: successful operation
2623 $ref: '#/components/schemas/LiveVideoResponse'
2625 summary: Update information about a live
2626 operationId: updateLiveId
2633 - $ref: '#/components/parameters/idOrUUID'
2638 $ref: '#/components/schemas/LiveVideoUpdate'
2641 description: successful operation
2643 description: bad parameters or trying to update a live that has already started
2645 description: trying to save replay of the live but saving replay is not enabled on the instance
2646 /videos/live/{id}/sessions:
2648 summary: List live sessions
2649 description: List all sessions created in a particular live
2655 - $ref: '#/components/parameters/idOrUUID'
2658 description: successful operation
2670 $ref: '#/components/schemas/LiveVideoSessionResponse'
2671 /videos/{id}/live-session:
2673 summary: Get live session of a replay
2674 description: If the video is a replay of a live, you can find the associated live session using this endpoint
2680 - $ref: '#/components/parameters/idOrUUID'
2683 description: successful operation
2687 $ref: '#/components/schemas/LiveVideoSessionResponse'
2691 summary: List my abuses
2692 operationId: getMyAbuses
2701 description: only list the report with this id
2707 $ref: '#/components/schemas/AbuseStateSet'
2708 - $ref: '#/components/parameters/abusesSort'
2709 - $ref: '#/components/parameters/start'
2710 - $ref: '#/components/parameters/count'
2713 description: successful operation
2725 $ref: '#/components/schemas/Abuse'
2729 summary: List abuses
2730 operationId: getAbuses
2740 description: only list the report with this id
2743 - name: predefinedReason
2745 description: predefined reason the listed reports should contain
2747 $ref: '#/components/schemas/PredefinedAbuseReasons'
2750 description: plain search that will match with video titles, reporter names and more
2756 $ref: '#/components/schemas/AbuseStateSet'
2757 - name: searchReporter
2759 description: only list reports of a specific reporter
2762 - name: searchReportee
2763 description: only list reports of a specific reportee
2769 description: only list reports of a specific video
2772 - name: searchVideoChannel
2774 description: only list reports of a specific video channel
2779 description: only list deleted or blocklisted videos
2787 description: only list account, comment or video reports
2794 - $ref: '#/components/parameters/start'
2795 - $ref: '#/components/parameters/count'
2796 - $ref: '#/components/parameters/abusesSort'
2799 description: successful operation
2811 $ref: '#/components/schemas/Abuse'
2813 summary: Report an abuse
2826 description: Reason why the user reports this video
2831 $ref: '#/components/schemas/PredefinedAbuseReasons'
2836 description: Video id to report
2838 - $ref: '#/components/schemas/Video/properties/id'
2842 description: Timestamp in the video that marks the beginning of the report
2847 description: Timestamp in the video that marks the ending of the report
2853 description: Comment id to report
2855 - $ref: '#/components/schemas/VideoComment/properties/id'
2860 description: Account id to report
2866 description: successful operation
2876 $ref: '#/components/schemas/id'
2878 description: incorrect request parameters
2880 '/abuses/{abuseId}':
2882 summary: Update an abuse
2890 - $ref: '#/components/parameters/abuseId'
2898 $ref: '#/components/schemas/AbuseStateSet'
2901 description: Update the report comment visible only to the moderation team
2906 description: successful operation
2908 description: abuse not found
2912 summary: Delete an abuse
2918 - $ref: '#/components/parameters/abuseId'
2921 description: successful operation
2923 description: block not found
2925 '/abuses/{abuseId}/messages':
2927 summary: List messages of an abuse
2933 - $ref: '#/components/parameters/abuseId'
2936 description: successful operation
2948 $ref: '#/components/schemas/AbuseMessage'
2950 summary: Add message to an abuse
2956 - $ref: '#/components/parameters/abuseId'
2965 description: Message to send
2973 description: successful operation
2975 description: incorrect request parameters
2977 '/abuses/{abuseId}/messages/{abuseMessageId}':
2979 summary: Delete an abuse message
2985 - $ref: '#/components/parameters/abuseId'
2986 - $ref: '#/components/parameters/abuseMessageId'
2989 description: successful operation
2991 '/videos/{id}/blacklist':
2993 summary: Block a video
2994 operationId: addVideoBlock
3002 - $ref: '#/components/parameters/idOrUUID'
3005 description: successful operation
3007 summary: Unblock a video by its id
3008 operationId: delVideoBlock
3016 - $ref: '#/components/parameters/idOrUUID'
3019 description: successful operation
3021 description: block not found
3027 summary: List video blocks
3028 operationId: getVideoBlocks
3037 list only blocks that match this type:
3041 - `2`: automatic block that needs review
3049 description: plain search that will match with video titles, and more
3052 - $ref: '#/components/parameters/start'
3053 - $ref: '#/components/parameters/count'
3054 - $ref: '#/components/parameters/blacklistsSort'
3057 description: successful operation
3069 $ref: '#/components/schemas/VideoBlacklist'
3071 /videos/{id}/captions:
3073 summary: List captions of a video
3074 operationId: getVideoCaptions
3078 - $ref: '#/components/parameters/idOrUUID'
3081 description: successful operation
3093 $ref: '#/components/schemas/VideoCaption'
3095 /videos/{id}/captions/{captionLanguage}:
3097 summary: Add or replace a video caption
3098 operationId: addVideoCaption
3105 - $ref: '#/components/parameters/idOrUUID'
3106 - $ref: '#/components/parameters/captionLanguage'
3109 multipart/form-data:
3114 description: The file to upload.
3119 contentType: text/vtt, application/x-subrip, text/plain
3122 description: successful operation
3124 description: video or language not found
3126 summary: Delete a video caption
3127 operationId: delVideoCaption
3134 - $ref: '#/components/parameters/idOrUUID'
3135 - $ref: '#/components/parameters/captionLanguage'
3138 description: successful operation
3140 description: video or language or caption for that language not found
3144 summary: List video channels
3145 operationId: getVideoChannels
3149 - $ref: '#/components/parameters/start'
3150 - $ref: '#/components/parameters/count'
3151 - $ref: '#/components/parameters/sort'
3154 description: successful operation
3158 $ref: '#/components/schemas/VideoChannelList'
3160 summary: Create a video channel
3161 operationId: addVideoChannel
3168 description: successful operation
3178 $ref: '#/components/schemas/id'
3183 $ref: '#/components/schemas/VideoChannelCreate'
3185 '/video-channels/{channelHandle}':
3187 summary: Get a video channel
3188 operationId: getVideoChannel
3192 - $ref: '#/components/parameters/channelHandle'
3195 description: successful operation
3199 $ref: '#/components/schemas/VideoChannel'
3201 summary: Update a video channel
3202 operationId: putVideoChannel
3208 - $ref: '#/components/parameters/channelHandle'
3211 description: successful operation
3216 $ref: '#/components/schemas/VideoChannelUpdate'
3218 summary: Delete a video channel
3219 operationId: delVideoChannel
3225 - $ref: '#/components/parameters/channelHandle'
3228 description: successful operation
3230 '/video-channels/{channelHandle}/videos':
3232 summary: List videos of a video channel
3233 operationId: getVideoChannelVideos
3238 - $ref: '#/components/parameters/channelHandle'
3239 - $ref: '#/components/parameters/categoryOneOf'
3240 - $ref: '#/components/parameters/isLive'
3241 - $ref: '#/components/parameters/tagsOneOf'
3242 - $ref: '#/components/parameters/tagsAllOf'
3243 - $ref: '#/components/parameters/licenceOneOf'
3244 - $ref: '#/components/parameters/languageOneOf'
3245 - $ref: '#/components/parameters/nsfw'
3246 - $ref: '#/components/parameters/isLocal'
3247 - $ref: '#/components/parameters/include'
3248 - $ref: '#/components/parameters/privacyOneOf'
3249 - $ref: '#/components/parameters/hasHLSFiles'
3250 - $ref: '#/components/parameters/hasWebtorrentFiles'
3251 - $ref: '#/components/parameters/skipCount'
3252 - $ref: '#/components/parameters/start'
3253 - $ref: '#/components/parameters/count'
3254 - $ref: '#/components/parameters/videosSort'
3257 description: successful operation
3261 $ref: '#/components/schemas/VideoListResponse'
3263 '/video-channels/{channelHandle}/followers':
3267 summary: 'List followers of a video channel'
3270 operationId: getVideoChannelFollowers
3272 - $ref: '#/components/parameters/channelHandle'
3273 - $ref: '#/components/parameters/start'
3274 - $ref: '#/components/parameters/count'
3275 - $ref: '#/components/parameters/followersSort'
3276 - $ref: '#/components/parameters/search'
3279 description: successful operation
3291 $ref: '#/components/schemas/Follow'
3293 '/video-channels/{channelHandle}/avatar/pick':
3295 summary: Update channel avatar
3301 - $ref: '#/components/parameters/channelHandle'
3304 description: successful operation
3313 $ref: '#/components/schemas/ActorImage'
3315 description: image file too large
3317 X-File-Maximum-Size:
3321 description: Maximum file size for the avatar
3324 multipart/form-data:
3329 description: The file to upload.
3334 contentType: image/png, image/jpeg
3336 '/video-channels/{channelHandle}/avatar':
3338 summary: Delete channel avatar
3344 - $ref: '#/components/parameters/channelHandle'
3347 description: successful operation
3349 '/video-channels/{channelHandle}/banner/pick':
3351 summary: Update channel banner
3357 - $ref: '#/components/parameters/channelHandle'
3360 description: successful operation
3369 $ref: '#/components/schemas/ActorImage'
3371 description: image file too large
3373 X-File-Maximum-Size:
3377 description: Maximum file size for the banner
3380 multipart/form-data:
3385 description: The file to upload.
3390 contentType: image/png, image/jpeg
3392 '/video-channels/{channelHandle}/banner':
3394 summary: Delete channel banner
3400 - $ref: '#/components/parameters/channelHandle'
3403 description: successful operation
3405 '/video-channels/{channelHandle}/import-videos':
3407 summary: Import videos in channel
3408 description: Import a remote channel/playlist videos into a channel
3415 - $ref: '#/components/parameters/channelHandle'
3420 $ref: '#/components/schemas/ImportVideosInChannelCreate'
3423 description: successful operation
3425 '/video-channel-syncs':
3427 summary: Create a synchronization for a video channel
3428 operationId: addVideoChannelSync
3437 $ref: '#/components/schemas/VideoChannelSyncCreate'
3440 description: successful operation
3447 $ref: "#/components/schemas/VideoChannelSync"
3449 '/video-channel-syncs/{channelSyncId}':
3451 summary: Delete a video channel synchronization
3452 operationId: delVideoChannelSync
3458 - $ref: '#/components/parameters/channelSyncId'
3461 description: successful operation
3463 '/video-channel-syncs/{channelSyncId}/sync':
3465 summary: Triggers the channel synchronization job, fetching all the videos from the remote channel
3466 operationId: triggerVideoChannelSync
3472 - $ref: '#/components/parameters/channelSyncId'
3475 description: successful operation
3478 /video-playlists/privacies:
3480 summary: List available playlist privacy policies
3481 operationId: getPlaylistPrivacyPolicies
3486 description: successful operation
3495 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
3499 summary: List video playlists
3500 operationId: getPlaylists
3504 - $ref: '#/components/parameters/start'
3505 - $ref: '#/components/parameters/count'
3506 - $ref: '#/components/parameters/sort'
3509 description: successful operation
3521 $ref: '#/components/schemas/VideoPlaylist'
3523 summary: Create a video playlist
3524 description: If the video playlist is set as public, `videoChannelId` is mandatory.
3525 operationId: addPlaylist
3532 description: successful operation
3542 $ref: '#/components/schemas/VideoPlaylist/properties/id'
3544 $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
3546 $ref: '#/components/schemas/VideoPlaylist/properties/shortUUID'
3549 multipart/form-data:
3554 description: Video playlist display name
3559 description: Video playlist thumbnail file
3563 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3565 description: Video playlist description
3571 - $ref: '#/components/schemas/id'
3572 description: Video channel in which the playlist will be published
3577 contentType: image/jpeg
3579 /video-playlists/{playlistId}:
3581 summary: Get a video playlist
3585 - $ref: '#/components/parameters/playlistId'
3588 description: successful operation
3592 $ref: '#/components/schemas/VideoPlaylist'
3594 summary: Update a video playlist
3595 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
3602 description: successful operation
3604 - $ref: '#/components/parameters/playlistId'
3607 multipart/form-data:
3612 description: Video playlist display name
3617 description: Video playlist thumbnail file
3621 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3623 description: Video playlist description
3627 - $ref: '#/components/schemas/id'
3628 description: Video channel in which the playlist will be published
3631 contentType: image/jpeg
3633 summary: Delete a video playlist
3639 - $ref: '#/components/parameters/playlistId'
3642 description: successful operation
3644 /video-playlists/{playlistId}/videos:
3646 summary: 'List videos of a playlist'
3647 operationId: getVideoPlaylistVideos
3652 - $ref: '#/components/parameters/playlistId'
3653 - $ref: '#/components/parameters/start'
3654 - $ref: '#/components/parameters/count'
3657 description: successful operation
3661 $ref: '#/components/schemas/VideoListResponse'
3663 summary: Add a video in a playlist
3664 operationId: addVideoPlaylistVideo
3671 - $ref: '#/components/parameters/playlistId'
3674 description: successful operation
3680 videoPlaylistElement:
3694 - $ref: '#/components/schemas/Video/properties/uuid'
3695 - $ref: '#/components/schemas/Video/properties/id'
3696 description: Video to add in the playlist
3700 description: Start the video at this specific timestamp
3704 description: Stop the video at this specific timestamp
3708 /video-playlists/{playlistId}/videos/reorder:
3710 summary: 'Reorder a playlist'
3711 operationId: reorderVideoPlaylist
3717 - $ref: '#/components/parameters/playlistId'
3720 description: successful operation
3729 description: 'Start position of the element to reorder'
3731 insertAfterPosition:
3733 description: 'New position for the block to reorder, to add the block before the first element'
3737 description: 'How many element from `startPosition` to reorder'
3741 - insertAfterPosition
3743 /video-playlists/{playlistId}/videos/{playlistElementId}:
3745 summary: Update a playlist element
3746 operationId: putVideoPlaylistVideo
3752 - $ref: '#/components/parameters/playlistId'
3753 - $ref: '#/components/parameters/playlistElementId'
3756 description: successful operation
3766 description: Start the video at this specific timestamp
3770 description: Stop the video at this specific timestamp
3772 summary: Delete an element from a playlist
3773 operationId: delVideoPlaylistVideo
3779 - $ref: '#/components/parameters/playlistId'
3780 - $ref: '#/components/parameters/playlistElementId'
3783 description: successful operation
3785 '/users/me/video-playlists/videos-exist':
3787 summary: Check video exists in my playlists
3796 description: The video ids to check
3800 $ref: '#/components/schemas/Video/properties/id'
3803 description: successful operation
3825 '/accounts/{name}/video-channels':
3827 summary: List video channels of an account
3832 - $ref: '#/components/parameters/name'
3835 description: include daily view statistics for the last 30 days and total views (only if authentified as the account user)
3838 - $ref: '#/components/parameters/start'
3839 - $ref: '#/components/parameters/count'
3840 - $ref: '#/components/parameters/sort'
3843 description: successful operation
3847 $ref: '#/components/schemas/VideoChannelList'
3849 '/accounts/{name}/video-channel-syncs':
3851 summary: List the synchronizations of video channels of an account
3857 - $ref: '#/components/parameters/name'
3858 - $ref: '#/components/parameters/start'
3859 - $ref: '#/components/parameters/count'
3860 - $ref: '#/components/parameters/sort'
3863 description: successful operation
3867 $ref: '#/components/schemas/VideoChannelSyncList'
3869 '/accounts/{name}/ratings':
3871 summary: List ratings of an account
3877 - $ref: '#/components/parameters/name'
3878 - $ref: '#/components/parameters/start'
3879 - $ref: '#/components/parameters/count'
3880 - $ref: '#/components/parameters/sort'
3884 description: Optionally filter which ratings to retrieve
3892 description: successful operation
3898 $ref: '#/components/schemas/VideoRating'
3900 '/videos/{id}/comment-threads':
3902 summary: List threads of a video
3906 - $ref: '#/components/parameters/idOrUUID'
3907 - $ref: '#/components/parameters/start'
3908 - $ref: '#/components/parameters/count'
3909 - $ref: '#/components/parameters/commentsSort'
3912 description: successful operation
3916 $ref: '#/components/schemas/CommentThreadResponse'
3918 summary: Create a thread
3924 - $ref: '#/components/parameters/idOrUUID'
3927 description: successful operation
3931 $ref: '#/components/schemas/CommentThreadPostResponse'
3933 description: video does not exist
3942 - $ref: '#/components/schemas/VideoComment/properties/text'
3948 '/videos/{id}/comment-threads/{threadId}':
3950 summary: Get a thread
3954 - $ref: '#/components/parameters/idOrUUID'
3955 - $ref: '#/components/parameters/threadId'
3958 description: successful operation
3962 $ref: '#/components/schemas/VideoCommentThreadTree'
3964 '/videos/{id}/comments/{commentId}':
3966 summary: Reply to a thread of a video
3972 - $ref: '#/components/parameters/idOrUUID'
3973 - $ref: '#/components/parameters/commentId'
3976 description: successful operation
3980 $ref: '#/components/schemas/CommentThreadPostResponse'
3982 description: thread or video does not exist
3991 - $ref: '#/components/schemas/VideoComment/properties/text'
3997 summary: Delete a comment or a reply
4003 - $ref: '#/components/parameters/idOrUUID'
4004 - $ref: '#/components/parameters/commentId'
4007 description: successful operation
4009 description: cannot remove comment of another user
4011 description: comment or video does not exist
4013 description: comment is already deleted
4015 '/videos/{id}/rate':
4017 summary: Like/dislike a video
4023 - $ref: '#/components/parameters/idOrUUID'
4039 description: successful operation
4041 description: video does not exist
4045 summary: Delete video HLS files
4051 operationId: delVideoHLS
4053 - $ref: '#/components/parameters/idOrUUID'
4056 description: successful operation
4058 description: video does not exist
4059 '/videos/{id}/webtorrent':
4061 summary: Delete video WebTorrent files
4067 operationId: delVideoWebTorrent
4069 - $ref: '#/components/parameters/idOrUUID'
4072 description: successful operation
4074 description: video does not exist
4076 '/videos/{id}/transcoding':
4078 summary: Create a transcoding job
4084 operationId: createVideoTranscoding
4086 - $ref: '#/components/parameters/idOrUUID'
4102 description: successful operation
4104 description: video does not exist
4110 summary: Search videos
4111 operationId: searchVideos
4116 allowEmptyValue: false
4118 String to search. If the user can make a remote URI search, and the string is an URI then the
4119 PeerTube instance will fetch the remote object and add it to its database. Then,
4120 you can use the REST API to fetch the complete video information and interact with it.
4123 - $ref: '#/components/parameters/categoryOneOf'
4124 - $ref: '#/components/parameters/isLive'
4125 - $ref: '#/components/parameters/tagsOneOf'
4126 - $ref: '#/components/parameters/tagsAllOf'
4127 - $ref: '#/components/parameters/licenceOneOf'
4128 - $ref: '#/components/parameters/languageOneOf'
4129 - $ref: '#/components/parameters/nsfw'
4130 - $ref: '#/components/parameters/isLocal'
4131 - $ref: '#/components/parameters/include'
4132 - $ref: '#/components/parameters/privacyOneOf'
4133 - $ref: '#/components/parameters/hasHLSFiles'
4134 - $ref: '#/components/parameters/hasWebtorrentFiles'
4135 - $ref: '#/components/parameters/skipCount'
4136 - $ref: '#/components/parameters/start'
4137 - $ref: '#/components/parameters/count'
4138 - $ref: '#/components/parameters/searchTarget'
4139 - $ref: '#/components/parameters/videosSearchSort'
4142 description: Get videos that are published after this date
4148 description: Get videos that are published before this date
4152 - name: originallyPublishedStartDate
4154 description: Get videos that are originally published after this date
4158 - name: originallyPublishedEndDate
4160 description: Get videos that are originally published before this date
4166 description: Get videos that have this minimum duration
4171 description: Get videos that have this maximum duration
4175 'searchTarget === search-index':
4176 $ref: '#/components/callbacks/searchIndex'
4179 description: successful operation
4183 $ref: '#/components/schemas/VideoListResponse'
4185 description: search index unavailable
4187 /search/video-channels:
4191 summary: Search channels
4192 operationId: searchChannels
4198 String to search. If the user can make a remote URI search, and the string is an URI then the
4199 PeerTube instance will fetch the remote object and add it to its database. Then,
4200 you can use the REST API to fetch the complete channel information and interact with it.
4203 - $ref: '#/components/parameters/start'
4204 - $ref: '#/components/parameters/count'
4205 - $ref: '#/components/parameters/searchTarget'
4206 - $ref: '#/components/parameters/sort'
4208 'searchTarget === search-index':
4209 $ref: '#/components/callbacks/searchIndex'
4212 description: successful operation
4216 $ref: '#/components/schemas/VideoChannelList'
4218 description: search index unavailable
4220 /search/video-playlists:
4224 summary: Search playlists
4225 operationId: searchPlaylists
4231 String to search. If the user can make a remote URI search, and the string is an URI then the
4232 PeerTube instance will fetch the remote object and add it to its database. Then,
4233 you can use the REST API to fetch the complete playlist information and interact with it.
4236 - $ref: '#/components/parameters/start'
4237 - $ref: '#/components/parameters/count'
4238 - $ref: '#/components/parameters/searchTarget'
4239 - $ref: '#/components/parameters/sort'
4241 'searchTarget === search-index':
4242 $ref: '#/components/callbacks/searchIndex'
4245 description: successful operation
4257 $ref: '#/components/schemas/VideoPlaylist'
4259 description: search index unavailable
4266 summary: Get block status of accounts/hosts
4271 description: 'Check if these accounts are blocked'
4272 example: [ 'goofy@example.com', 'donald@example.com' ]
4280 description: 'Check if these hosts are blocked'
4281 example: [ 'example.com' ]
4288 description: successful operation
4292 $ref: '#/components/schemas/BlockStatus'
4294 /server/blocklist/accounts:
4298 summary: List account blocks
4303 - $ref: '#/components/parameters/start'
4304 - $ref: '#/components/parameters/count'
4305 - $ref: '#/components/parameters/sort'
4308 description: successful operation
4312 summary: Block an account
4324 example: chocobozzz@example.org
4325 description: account to block, in the form `username@domain`
4330 description: successful operation
4332 description: self-blocking forbidden
4334 '/server/blocklist/accounts/{accountName}':
4338 summary: Unblock an account by its handle
4346 description: account to unblock, in the form `username@domain`
4351 description: successful operation
4353 description: account or account block does not exist
4355 /server/blocklist/servers:
4359 summary: List server blocks
4364 - $ref: '#/components/parameters/start'
4365 - $ref: '#/components/parameters/count'
4366 - $ref: '#/components/parameters/sort'
4369 description: successful operation
4373 summary: Block a server
4386 description: server domain to block
4391 description: successful operation
4393 description: self-blocking forbidden
4395 '/server/blocklist/servers/{host}':
4399 summary: Unblock a server by its domain
4407 description: server domain to unblock
4413 description: successful operation
4415 description: account block does not exist
4417 /server/redundancy/{host}:
4420 - Instance Redundancy
4421 summary: Update a server redundancy policy
4429 description: server domain to mirror
4441 description: allow mirroring of the host's local videos
4446 description: successful operation
4448 description: server is not already known
4450 /server/redundancy/videos:
4454 summary: List videos being mirrored
4455 operationId: getMirroredVideos
4463 description: direction of the mirror
4469 - $ref: '#/components/parameters/start'
4470 - $ref: '#/components/parameters/count'
4471 - $ref: '#/components/parameters/videoRedundanciesSort'
4474 description: successful operation
4480 $ref: '#/components/schemas/VideoRedundancy'
4484 summary: Mirror a video
4485 operationId: putMirroredVideo
4496 $ref: '#/components/schemas/Video/properties/id'
4501 description: successful operation
4503 description: cannot mirror a local video
4505 description: video does not exist
4507 description: video is already mirrored
4509 /server/redundancy/videos/{redundancyId}:
4513 summary: Delete a mirror done on a video
4514 operationId: delMirroredVideo
4519 - name: redundancyId
4522 description: id of an existing redundancy on a video
4527 description: successful operation
4529 description: video redundancy not found
4535 summary: Get instance stats
4536 description: Get instance public statistics. This endpoint is cached.
4537 operationId: getInstanceStats
4540 description: successful operation
4544 $ref: '#/components/schemas/ServerStats'
4546 /server/logs/client:
4550 summary: Send client log
4551 operationId: sendClientLog
4556 $ref: '#/components/schemas/SendClientLog'
4559 description: successful operation
4565 summary: Get instance logs
4566 operationId: getInstanceLogs
4572 description: successful operation
4584 summary: Get instance audit logs
4585 operationId: getInstanceAuditLogs
4591 description: successful operation
4599 '/feeds/video-comments.{format}':
4603 summary: List comments on videos
4604 operationId: getSyndicatedComments
4609 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4622 description: 'limit listing to a specific video'
4627 description: 'limit listing to a specific account'
4632 description: 'limit listing to a specific account'
4635 - name: videoChannelId
4637 description: 'limit listing to a specific video channel'
4640 - name: videoChannelName
4642 description: 'limit listing to a specific video channel'
4647 description: successful operation
4652 default: 'max-age=900' # 15 min cache
4656 $ref: '#/components/schemas/VideoCommentsForXML'
4659 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4660 application/rss+xml:
4662 $ref: '#/components/schemas/VideoCommentsForXML'
4665 externalValue: https://peertube2.cpy.re/feeds/video-comments.rss?filter=local
4668 $ref: '#/components/schemas/VideoCommentsForXML'
4671 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4672 application/atom+xml:
4674 $ref: '#/components/schemas/VideoCommentsForXML'
4677 externalValue: https://peertube2.cpy.re/feeds/video-comments.atom?filter=local
4683 externalValue: https://peertube2.cpy.re/feeds/video-comments.json?filter=local
4685 x-summary: field inconsistencies
4688 - videoId filter is mixed with a channel filter
4690 description: video, video channel or account not found
4692 description: accept header unsupported
4694 '/feeds/videos.{format}':
4698 summary: List videos
4699 operationId: getSyndicatedVideos
4704 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4717 description: 'limit listing to a specific account'
4722 description: 'limit listing to a specific account'
4725 - name: videoChannelId
4727 description: 'limit listing to a specific video channel'
4730 - name: videoChannelName
4732 description: 'limit listing to a specific video channel'
4735 - $ref: '#/components/parameters/sort'
4736 - $ref: '#/components/parameters/nsfw'
4737 - $ref: '#/components/parameters/isLocal'
4738 - $ref: '#/components/parameters/include'
4739 - $ref: '#/components/parameters/privacyOneOf'
4740 - $ref: '#/components/parameters/hasHLSFiles'
4741 - $ref: '#/components/parameters/hasWebtorrentFiles'
4744 description: successful operation
4749 default: 'max-age=900' # 15 min cache
4753 $ref: '#/components/schemas/VideosForXML'
4756 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4757 application/rss+xml:
4759 $ref: '#/components/schemas/VideosForXML'
4762 externalValue: https://peertube2.cpy.re/feeds/videos.rss?filter=local
4765 $ref: '#/components/schemas/VideosForXML'
4768 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4769 application/atom+xml:
4771 $ref: '#/components/schemas/VideosForXML'
4774 externalValue: https://peertube2.cpy.re/feeds/videos.atom?filter=local
4780 externalValue: https://peertube2.cpy.re/feeds/videos.json?filter=local
4782 description: video channel or account not found
4784 description: accept header unsupported
4786 '/feeds/subscriptions.{format}':
4791 summary: List videos of subscriptions tied to a token
4792 operationId: getSyndicatedSubscriptionVideos
4797 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4810 description: limit listing to a specific account
4816 description: private token allowing access
4820 - $ref: '#/components/parameters/sort'
4821 - $ref: '#/components/parameters/nsfw'
4822 - $ref: '#/components/parameters/isLocal'
4823 - $ref: '#/components/parameters/include'
4824 - $ref: '#/components/parameters/privacyOneOf'
4825 - $ref: '#/components/parameters/hasHLSFiles'
4826 - $ref: '#/components/parameters/hasWebtorrentFiles'
4829 description: successful operation
4834 default: 'max-age=900' # 15 min cache
4838 $ref: '#/components/schemas/VideosForXML'
4839 application/rss+xml:
4841 $ref: '#/components/schemas/VideosForXML'
4844 $ref: '#/components/schemas/VideosForXML'
4845 application/atom+xml:
4847 $ref: '#/components/schemas/VideosForXML'
4852 description: accept header unsupported
4858 summary: List plugins
4859 operationId: getPlugins
4872 - $ref: '#/components/parameters/start'
4873 - $ref: '#/components/parameters/count'
4874 - $ref: '#/components/parameters/sort'
4877 description: successful operation
4881 $ref: '#/components/schemas/PluginResponse'
4887 summary: List available plugins
4888 operationId: getAvailablePlugins
4901 - name: currentPeerTubeEngine
4905 - $ref: '#/components/parameters/start'
4906 - $ref: '#/components/parameters/count'
4907 - $ref: '#/components/parameters/sort'
4910 description: successful operation
4914 $ref: '#/components/schemas/PluginResponse'
4916 description: plugin index unavailable
4922 summary: Install a plugin
4923 operationId: addPlugin
4936 example: peertube-plugin-auth-ldap
4939 additionalProperties: false
4946 additionalProperties: false
4949 description: successful operation
4951 description: should have either `npmName` or `path` set
4957 summary: Update a plugin
4958 operationId: updatePlugin
4971 example: peertube-plugin-auth-ldap
4974 additionalProperties: false
4981 additionalProperties: false
4984 description: successful operation
4986 description: should have either `npmName` or `path` set
4988 description: existing plugin not found
4994 summary: Uninstall a plugin
4995 operationId: uninstallPlugin
5007 description: name of the plugin/theme in its package.json
5008 example: peertube-plugin-auth-ldap
5013 description: successful operation
5015 description: existing plugin not found
5021 summary: Get a plugin
5022 operationId: getPlugin
5027 - $ref: '#/components/parameters/npmName'
5030 description: successful operation
5034 $ref: '#/components/schemas/Plugin'
5036 description: plugin not found
5038 /plugins/{npmName}/settings:
5042 summary: Set a plugin's settings
5047 - $ref: '#/components/parameters/npmName'
5056 additionalProperties: true
5059 description: successful operation
5061 description: plugin not found
5063 /plugins/{npmName}/public-settings:
5067 summary: Get a plugin's public settings
5069 - $ref: '#/components/parameters/npmName'
5072 description: successful operation
5077 additionalProperties: true
5079 description: plugin not found
5081 /plugins/{npmName}/registered-settings:
5085 summary: Get a plugin's registered settings
5090 - $ref: '#/components/parameters/npmName'
5093 description: successful operation
5098 additionalProperties: true
5100 description: plugin not found
5104 summary: Create playback metrics
5105 description: These metrics are exposed by OpenTelemetry metrics exporter if enabled.
5112 $ref: '#/components/schemas/PlaybackMetricCreate'
5115 description: successful operation
5118 - url: 'https://peertube2.cpy.re/api/v1'
5119 description: Live Test Server (live data - latest nightly version)
5120 - url: 'https://peertube3.cpy.re/api/v1'
5121 description: Live Test Server (live data - latest RC version)
5122 - url: 'https://peertube.cpy.re/api/v1'
5123 description: Live Test Server (live data - stable version)
5130 description: Offset used to paginate results
5138 description: "Number of items to return"
5148 description: Sort column
5156 description: Plain text search, applied to various parts of the model depending on endpoint
5164 If the administrator enabled search index support, you can override the default search target.
5167 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
5168 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
5169 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
5170 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
5171 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
5172 * 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
5173 the data from the origin instance API
5196 Sort videos by criteria (prefixing with `-` means `DESC` order):
5197 * `hot` - Adaptation of Reddit "hot" algorithm taking into account video views, likes, dislikes and comments and publication date
5198 * `best` - Same than `hot`, but also takes into account user video history
5199 * `trending` - Sort videos by recent views ("recent" is defined by the admin)
5200 * `views` - Sort videos using their `views` counter
5201 * `publishedAt` - Sort by video publication date (when it became publicly available)
5207 Sort videos by criteria (prefixing with `-` means `DESC` order):
5222 description: Sort comments by criteria
5232 description: Sort blocklists by criteria
5248 description: Plain text search that will match with user usernames or emails
5255 description: Filter results down to (un)banned users
5262 description: Sort users by criteria
5273 description: Sort abuses by criteria
5280 videoRedundanciesSort:
5284 description: Sort abuses by criteria
5293 description: Sort followers by criteria
5302 description: The username or handle of the account
5305 example: chocobozzz | chocobozzz@example.org
5310 description: Entity id
5312 $ref: '#/components/schemas/id'
5317 description: The object id, uuid or short uuid
5320 - $ref: '#/components/schemas/id'
5321 - $ref: '#/components/schemas/UUIDv4'
5322 - $ref: '#/components/schemas/shortUUID'
5327 description: Playlist id
5329 $ref: '#/components/schemas/VideoPlaylist/properties/id'
5331 name: playlistElementId
5334 description: Playlist element id
5336 $ref: '#/components/schemas/id'
5341 description: Abuse id
5343 $ref: '#/components/schemas/Abuse/properties/id'
5345 name: abuseMessageId
5348 description: Abuse message id
5350 $ref: '#/components/schemas/AbuseMessage/properties/id'
5352 name: captionLanguage
5355 description: The caption language
5357 $ref: '#/components/schemas/VideoLanguageSet'
5362 description: The video channel handle
5365 example: my_username | my_username@example.com
5370 description: Channel Sync id
5372 $ref: '#/components/schemas/Abuse/properties/id'
5374 name: subscriptionHandle
5377 description: The subscription handle
5380 example: my_username | my_username@example.com
5385 description: The thread id (root comment id)
5392 description: The comment id
5394 $ref: '#/components/schemas/VideoComment/properties/id'
5399 description: whether or not the video is a live
5406 description: category id of the video (see [/videos/categories](#operation/getCategories))
5409 - $ref: '#/components/schemas/VideoCategorySet'
5412 $ref: '#/components/schemas/VideoCategorySet'
5419 description: tag(s) of the video
5433 description: tag(s) of the video, where all should be present in the video
5446 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
5449 - $ref: '#/components/schemas/VideoLanguageSet'
5452 $ref: '#/components/schemas/VideoLanguageSet'
5459 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5462 - $ref: '#/components/schemas/VideoLicenceSet'
5465 $ref: '#/components/schemas/VideoLicenceSet'
5472 description: if you don't need the `total` in the response
5483 description: whether to include nsfw videos, if any
5495 description: '**PeerTube >= 4.0** Display only local or remote videos'
5502 description: '**PeerTube >= 4.0** Display only videos that have HLS files'
5504 name: hasWebtorrentFiles
5509 description: '**PeerTube >= 4.0** Display only videos that have WebTorrent files'
5515 $ref: '#/components/schemas/VideoPrivacySet'
5516 description: '**PeerTube >= 4.0** Display only videos in this specific privacy/privacies'
5530 **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator)
5534 - `1` NOT_PUBLISHED_STATE
5545 description: list of uris to check if each is part of the user subscriptions
5555 description: name of the plugin/theme on npmjs.com or in its package.json
5558 example: peertube-plugin-auth-ldap
5563 description: job type
5567 - activitypub-follow
5568 - activitypub-http-broadcast
5569 - activitypub-http-fetcher
5570 - activitypub-http-unicast
5575 - videos-views-stats
5576 - activitypub-refresher
5579 - video-channel-import
5602 Authenticating via OAuth requires the following steps:
5603 - Have an activated account
5604 - [Generate] an access token for that account at `/api/v1/users/token`.
5605 - Make requests with the *Authorization: Bearer <token\>* header
5606 - Profit, depending on the role assigned to the account
5608 Note that the __access token is valid for 1 day__ and is given
5609 along with a __refresh token valid for 2 weeks__.
5611 [Generate]: https://docs.joinpeertube.org/api-rest-getting-started
5615 tokenUrl: /api/v1/users/token
5618 moderator: Moderator scope
5621 # Reusable core properties
5629 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
5630 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
5635 description: translation of a uuid v4 with a bigger alphabet to have a shorter uuid
5636 example: 2y84q2MQUMWPbiEcxNXMgC
5639 description: immutable name of the user, used to find or mention its actor
5641 pattern: '/^[a-z0-9._]+$/'
5646 description: immutable name of the channel, used to interact with its actor
5647 example: framasoft_videos
5648 pattern: '/^[a-zA-Z0-9\\-_.:]+$/'
5659 description: category id of the video (see [/videos/categories](#operation/getCategories))
5661 VideoConstantNumber-Category:
5664 $ref: '#/components/schemas/VideoCategorySet'
5667 example: Science & Technology
5671 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5673 VideoConstantNumber-Licence:
5676 $ref: '#/components/schemas/VideoLicenceSet'
5679 example: Attribution - Share Alike
5683 description: language id of the video (see [/videos/languages](#operation/getLanguages))
5685 VideoConstantString-Language:
5688 $ref: '#/components/schemas/VideoLanguageSet'
5693 VideoPlaylistPrivacySet:
5699 description: Video playlist privacy policy (see [/video-playlists/privacies])
5700 VideoPlaylistPrivacyConstant:
5703 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
5707 VideoPlaylistTypeSet:
5712 description: The video playlist type (Regular = `1`, Watch Later = `2`)
5713 VideoPlaylistTypeConstant:
5716 $ref: '#/components/schemas/VideoPlaylistTypeSet'
5727 description: privacy id of the video (see [/videos/privacies](#operation/getPrivacyPolicies))
5728 VideoPrivacyConstant:
5731 $ref: '#/components/schemas/VideoPrivacySet'
5739 additionalProperties:
5740 x-additionalPropertiesName: account
5749 additionalProperties:
5750 x-additionalPropertiesName: host
5771 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
5778 description: 'Admin flags for the user (None = `0`, Bypass video blocklist = `1`)'
5781 LiveVideoLatencyMode:
5787 description: 'The live latency mode (Default = `1`, High latency = `2`, Small Latency = `3`)'
5808 - `4`: Waiting for live stream
5810 - `6`: To move to an external storage (object storage...)
5811 - `7`: Transcoding failed
5812 - `8`: Moving to an external storage failed
5813 - `9`: To edit using studio edition feature
5823 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
5827 $ref: '#/components/schemas/AbuseStateSet'
5830 AbusePredefinedReasons:
5843 example: [spamOrMisleading]
5848 Video resolution (`0`, `240`, `360`, `720`, `1080`, `1440` or `2160`)
5850 `0` is used as a special value for stillimage videos dedicated to audio, a.k.a. audio-only videos.
5852 VideoResolutionConstant:
5853 description: resolutions and their labels for the video
5856 $ref: '#/components/schemas/VideoResolutionSet'
5860 VideoScheduledUpdate:
5863 $ref: '#/components/schemas/VideoPrivacySet'
5867 description: When to update the video
5887 $ref: '#/components/schemas/ActorImage'
5888 VideoChannelSummary:
5891 $ref: '#/components/schemas/id'
5905 $ref: '#/components/schemas/ActorImage'
5919 - $ref: '#/components/schemas/Video'
5924 $ref: '#/components/schemas/id'
5928 description: magnet URI allowing to resolve the video via BitTorrent without a metainfo file
5929 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
5931 $ref: '#/components/schemas/VideoResolutionConstant'
5934 description: Video file size in bytes
5937 description: Direct URL of the torrent file
5941 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
5945 description: Direct URL of the video
5949 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
5953 description: Frames per second of the video file
5957 description: URL dereferencing the output of ffprobe on the file
5958 VideoStreamingPlaylists:
5963 $ref: '#/components/schemas/id'
5971 - $ref: '#/components/schemas/VideoStreamingPlaylists-HLS'
5972 VideoStreamingPlaylists-HLS:
5983 Video files associated to this playlist.
5985 The difference with the root `files` property is that these files are fragmented, so they can be used in this streaming playlist (HLS, etc.)
5987 $ref: '#/components/schemas/VideoFile'
5999 $ref: '#/components/schemas/Video/properties/id'
6001 $ref: '#/components/schemas/Video/properties/uuid'
6003 $ref: '#/components/schemas/Video/properties/name'
6007 description: object id for the video
6009 - $ref: '#/components/schemas/id'
6011 description: universal identifier for the video, that can be used across instances
6013 - $ref: '#/components/schemas/UUIDv4'
6016 - $ref: '#/components/schemas/shortUUID'
6022 example: 2017-10-01T10:52:46.396Z
6023 description: time at which the video object was first drafted
6027 example: 2018-10-01T10:52:46.396Z
6028 description: time at which the video was marked as ready for playback (with restrictions depending on `privacy`). Usually set after a `state` evolution.
6032 example: 2021-05-04T08:01:01.502Z
6033 description: last time the video's metadata was modified
6034 originallyPublishedAt:
6037 example: 2010-10-01T10:52:46.396Z
6038 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
6041 - $ref: '#/components/schemas/VideoConstantNumber-Category'
6042 description: category in which the video is classified
6045 - $ref: '#/components/schemas/VideoConstantNumber-Licence'
6046 description: licence under which the video is distributed
6049 - $ref: '#/components/schemas/VideoConstantString-Language'
6050 description: main language used in the video
6053 - $ref: '#/components/schemas/VideoPrivacyConstant'
6054 description: privacy policy used to distribute the video
6058 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n
6059 **Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\r\n*A decentralized video hosting network, based on fr...
6063 truncated description of the video, written in Markdown.
6064 Resolve `descriptionPath` to get the full description of maximum `10000` characters.
6069 description: duration of the video in seconds
6074 description: title of the video
6075 example: What is PeerTube?
6080 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
6083 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
6086 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
6103 - $ref: '#/components/schemas/VideoStateConstant'
6104 description: represents the internal state of the video processing within the PeerTube instance
6108 - $ref: '#/components/schemas/VideoScheduledUpdate'
6116 $ref: '#/components/schemas/AccountSummary'
6118 $ref: '#/components/schemas/VideoChannelSummary'
6127 - $ref: '#/components/schemas/Video'
6132 description: If the video is a live, you have the amount of current viewers
6135 example: /api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/description
6136 description: path at which to get the full description of maximum `10000` characters
6139 description: A text tell the audience how to support the video creator
6140 example: Please support our work on https://soutenir.framasoft.org/en/ <3
6144 $ref: '#/components/schemas/VideoChannel'
6146 $ref: '#/components/schemas/Account'
6148 example: [flowers, gardening]
6166 - https://peertube2.cpy.re/tracker/announce
6167 - wss://peertube2.cpy.re/tracker/socket
6171 $ref: '#/components/schemas/VideoFile'
6173 WebTorrent/raw video files. If WebTorrent is disabled on the server:
6175 - field will be empty
6176 - video files will be found in `streamingPlaylists[].files` field
6180 $ref: '#/components/schemas/VideoStreamingPlaylists'
6182 HLS playlists/manifest files. If HLS is disabled on the server:
6184 - field will be empty
6185 - video files will be found in `files` field
6186 FileRedundancyInformation:
6189 $ref: '#/components/schemas/id'
6214 $ref: '#/components/schemas/id'
6221 $ref: '#/components/schemas/UUIDv4'
6228 $ref: '#/components/schemas/FileRedundancyInformation'
6232 $ref: '#/components/schemas/FileRedundancyInformation'
6233 VideoImportStateConstant:
6241 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
6248 additionalProperties: false
6252 $ref: '#/components/schemas/VideoImport/properties/targetUrl'
6253 required: [targetUrl]
6256 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
6257 required: [magnetUri]
6260 $ref: '#/components/schemas/VideoImport/properties/torrentfile'
6261 required: [torrentfile]
6262 - $ref: '#/components/schemas/VideoUploadRequestCommon'
6271 - $ref: '#/components/schemas/id'
6275 description: remote URL where to find the import's source video
6276 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
6280 description: magnet URI allowing to resolve the import's source video
6281 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
6286 description: Torrent file containing only the video file
6293 - $ref: '#/components/schemas/VideoImportStateConstant'
6309 - $ref: '#/components/schemas/Video'
6319 $ref: '#/components/schemas/VideoImport'
6323 $ref: '#/components/schemas/id'
6326 example: The video is a spam
6330 $ref: '#/components/schemas/AbusePredefinedReasons'
6332 $ref: '#/components/schemas/Account'
6334 $ref: '#/components/schemas/AbuseStateConstant'
6337 example: Decided to ban the server since it spams us regularly
6341 $ref: '#/components/schemas/VideoInfo'
6348 $ref: '#/components/schemas/id'
6359 $ref: '#/components/schemas/AccountSummary'
6363 $ref: '#/components/schemas/id'
6365 $ref: '#/components/schemas/Video/properties/id'
6377 $ref: '#/components/schemas/UUIDv4'
6395 $ref: '#/components/schemas/id'
6397 $ref: '#/components/schemas/UUIDv4'
6400 - $ref: '#/components/schemas/shortUUID'
6423 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
6425 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
6427 $ref: '#/components/schemas/AccountSummary'
6429 $ref: '#/components/schemas/VideoChannelSummary'
6433 $ref: '#/components/schemas/id'
6440 description: Text of the comment
6442 example: This video is wonderful!
6444 $ref: '#/components/schemas/id'
6448 - $ref: '#/components/schemas/id'
6450 $ref: '#/components/schemas/Video/properties/id'
6465 totalRepliesFromVideoAuthor:
6472 $ref: '#/components/schemas/Account'
6473 VideoCommentThreadTree:
6476 $ref: '#/components/schemas/VideoComment'
6480 $ref: '#/components/schemas/VideoCommentThreadTree'
6484 $ref: '#/components/schemas/VideoConstantString-Language'
6506 $ref: '#/components/schemas/id'
6517 $ref: '#/components/schemas/ActorImage'
6521 $ref: '#/components/schemas/id'
6526 description: immutable name of the actor, used to find or mention it
6528 - $ref: '#/components/schemas/username'
6532 description: server on which the actor is resident
6533 hostRedundancyAllowed:
6535 description: whether this actor's host allows redundancy of its videos
6539 description: number of actors subscribed to by this actor, as seen by this instance
6543 description: number of followers of this actor, as seen by this instance
6552 - $ref: '#/components/schemas/Actor'
6555 description: object id for the user tied to this account
6557 - $ref: '#/components/schemas/User/properties/id'
6560 description: editable name of the account, displayed in its representations
6565 description: text or bio displayed on the account's profile
6573 description: timestamp within the video, in seconds
6580 Event since last viewing call:
6581 * `seek` - If the user seeked the video
6604 VideoStatsRetention:
6616 VideoStatsTimeserie:
6693 allowedForCurrentIP:
6695 requiresEmailVerification:
6713 $ref: '#/components/schemas/VideoResolutionSet'
6730 videoChannelSynchronization:
6803 example: 16810141515
6844 description: URL of the current user page
6851 description: Stack trace of the error if there is one
6854 description: User agent of the web browser that sends the message
6857 description: Additional information regarding this log
6867 totalDailyActiveUsers:
6869 totalWeeklyActiveUsers:
6871 totalMonthlyActiveUsers:
6875 totalLocalVideoViews:
6877 description: Total video views made on the instance
6878 totalLocalVideoComments:
6880 description: Total comments made by local users
6881 totalLocalVideoFilesSize:
6887 totalLocalVideoChannels:
6889 totalLocalDailyActiveVideoChannels:
6891 totalLocalWeeklyActiveVideoChannels:
6893 totalLocalMonthlyActiveVideoChannels:
6895 totalLocalPlaylists:
6897 totalInstanceFollowers:
6899 totalInstanceFollowing:
6916 totalActivityPubMessagesProcessed:
6918 totalActivityPubMessagesSuccesses:
6920 totalActivityPubMessagesErrors:
6923 activityPubMessagesProcessedPerSecond:
6925 totalActivityPubMessagesWaiting:
7002 requiresEmailVerification:
7017 description: Settings that apply to new users, if registration is enabled
7021 example: 16810141515
7027 description: Settings pertaining to transcoding jobs
7031 allowAdditionalExtensions:
7033 description: Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
7036 description: If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
7039 description: Amount of threads used by ffmpeg for 1 transcoding job
7042 description: Amount of transcoding jobs to execute in parallel
7048 New profiles can be added by plugins ; available in core PeerTube: 'default'.
7051 description: Resolutions to transcode _new videos_ to
7073 description: WebTorrent-specific settings
7079 description: HLS-specific settings
7099 video_channel_synchronization:
7134 $ref: '#/components/schemas/id'
7136 $ref: '#/components/schemas/Actor'
7138 $ref: '#/components/schemas/Actor'
7141 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
7154 PredefinedAbuseReasons:
7155 description: Reason categories that help triage reports
7173 $ref: '#/components/schemas/id'
7185 - activitypub-http-unicast
7186 - activitypub-http-broadcast
7187 - activitypub-http-fetcher
7188 - activitypub-follow
7193 - videos-views-stats
7194 - activitypub-refresher
7196 - video-channel-import
7199 additionalProperties: true
7202 additionalProperties: true
7218 $ref: '#/components/schemas/id'
7223 $ref: '#/components/schemas/id'
7224 VideoUploadRequestCommon:
7227 description: Video name
7229 example: What is PeerTube?
7233 description: Channel id that will contain this video
7238 $ref: '#/components/schemas/VideoPrivacySet'
7240 $ref: '#/components/schemas/VideoCategorySet'
7242 $ref: '#/components/schemas/VideoLicenceSet'
7244 $ref: '#/components/schemas/VideoLanguageSet'
7246 description: Video description
7249 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**
7251 description: Whether or not we wait transcoding before publish the video
7254 description: A text tell the audience how to support the video creator
7255 example: Please support our work on https://soutenir.framasoft.org/en/ <3
7258 description: Whether or not this video contains sensitive content
7261 description: Video tags (maximum 5 tags each between 2 and 30 characters)
7274 description: Enable or disable comments for this video
7277 description: Enable or disable downloading for this video
7279 originallyPublishedAt:
7280 description: Date when the content was originally published
7284 $ref: '#/components/schemas/VideoScheduledUpdate'
7286 description: Video thumbnail file
7290 description: Video preview file
7296 VideoUploadRequestLegacy:
7298 - $ref: '#/components/schemas/VideoUploadRequestCommon'
7304 description: Video file
7307 VideoUploadRequestResumable:
7309 - $ref: '#/components/schemas/VideoUploadRequestCommon'
7315 description: Video filename including extension
7318 example: what_is_peertube.mp4
7320 description: Video thumbnail file
7324 description: Video preview file
7327 VideoUploadResponse:
7333 $ref: '#/components/schemas/Video/properties/id'
7335 $ref: '#/components/schemas/Video/properties/uuid'
7337 $ref: '#/components/schemas/Video/properties/shortUUID'
7338 CommentThreadResponse:
7347 $ref: '#/components/schemas/VideoComment'
7348 CommentThreadPostResponse:
7351 $ref: '#/components/schemas/VideoComment'
7361 $ref: '#/components/schemas/Video'
7365 $ref: '#/components/schemas/Account'
7368 description: Automatically start playing the upcoming video after the currently playing video
7369 autoPlayNextVideoPlaylist:
7371 description: Automatically start playing the video on the playlist after the currently playing video
7374 description: Automatically start playing the video on the watch page
7384 description: The user email
7387 description: Has the user confirmed their email address?
7390 - $ref: '#/components/schemas/id'
7394 description: Auth plugin to use to authenticate the user
7398 noInstanceConfigWarningModal:
7400 noAccountSetupWarningModal:
7405 $ref: '#/components/schemas/NSFWPolicy'
7407 $ref: '#/components/schemas/UserRole'
7416 description: Theme enabled by this user
7418 $ref: '#/components/schemas/username'
7422 $ref: '#/components/schemas/VideoChannel'
7425 description: The user video quota in bytes
7429 description: The user daily video quota in bytes
7433 description: Enable P2P in the player
7436 - $ref: '#/components/schemas/User'
7438 # optionally present fields: they require WITH_STATS scope
7441 description: Count of videos published
7444 description: Count of reports/abuses of which the user is a target
7445 abusesAcceptedCount:
7447 description: Count of reports/abuses created by the user and accepted/acted upon by the moderation team
7450 description: Count of reports/abuses created by the user
7453 description: Count of comments published
7457 $ref: '#/components/schemas/username'
7459 $ref: '#/components/schemas/password'
7463 description: The user email
7466 description: The user video quota in bytes
7470 description: The user daily video quota in bytes
7473 $ref: '#/components/schemas/usernameChannel'
7475 $ref: '#/components/schemas/UserRole'
7477 $ref: '#/components/schemas/UserAdminFlags'
7488 description: The updated email of the user
7490 - $ref: '#/components/schemas/User/properties/email'
7493 description: Set the email as verified
7496 description: The updated video quota of the user in bytes
7499 description: The updated daily video quota of the user in bytes
7503 description: The auth plugin to use to authenticate the user
7504 example: 'peertube-plugin-auth-saml2'
7506 $ref: '#/components/schemas/UserRole'
7508 $ref: '#/components/schemas/UserAdminFlags'
7510 $ref: '#/components/schemas/password'
7512 # see shared/models/users/user-update-me.model.ts:
7515 $ref: '#/components/schemas/password'
7517 $ref: '#/components/schemas/password'
7519 description: new email used for login and service communications
7521 - $ref: '#/components/schemas/User/properties/email'
7524 description: new name of the user in its representations
7529 description: new NSFW display policy
7536 description: whether to enable P2P in the player or not
7539 description: new preference regarding playing videos automatically
7542 description: new preference regarding playing following videos automatically
7543 autoPlayNextVideoPlaylist:
7545 description: new preference regarding playing following playlist videos automatically
7546 videosHistoryEnabled:
7548 description: whether to keep track of watched history or not
7553 description: list of languages to filter videos down to
7556 noInstanceConfigWarningModal:
7558 noAccountSetupWarningModal:
7565 $ref: '#/components/schemas/id'
7572 description: Rating of the video
7579 $ref: '#/components/schemas/Video'
7586 description: Rating of the video
7593 description: immutable name of the user, used to find or mention its actor
7595 - $ref: '#/components/schemas/username'
7597 $ref: '#/components/schemas/password'
7601 description: email of the user, used for login or service communications
7604 description: editable name of the user, displayed in its representations
7609 description: channel base information used to create the first channel of the user
7612 $ref: '#/components/schemas/usernameChannel'
7624 pattern: /^[a-z0-9]$/
7627 example: v1ikx5hnfop4mdpnci8nsqh93c45rldf
7630 pattern: /^[a-zA-Z0-9]$/
7633 example: AjWiOapPltI6EnsWQwlFarRtLh4u8tDt
7634 OAuthToken-password:
7636 - $ref: '#/components/schemas/OAuthClient'
7646 $ref: '#/components/schemas/User/properties/username'
7648 $ref: '#/components/schemas/password'
7655 OAuthToken-refresh_token:
7657 - $ref: '#/components/schemas/OAuthClient'
7668 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
7677 - $ref: '#/components/schemas/Actor'
7682 description: editable name of the channel, displayed in its representations
7683 example: Videos of Framasoft
7688 example: Videos made with <3 by Framasoft
7693 description: text shown by default on all videos of this channel, to tell the audience how to support it
7694 example: Please support our work on https://soutenir.framasoft.org/en/ <3
7707 $ref: '#/components/schemas/ActorImage'
7716 $ref: '#/components/schemas/UUIDv4'
7720 - $ref: '#/components/schemas/VideoChannel'
7723 description: username of the channel to create
7725 - $ref: '#/components/schemas/usernameChannel'
7731 - $ref: '#/components/schemas/VideoChannel'
7733 bulkVideosSupportUpdate:
7735 description: Update the support field for all videos of this channel
7745 - $ref: '#/components/schemas/VideoChannel'
7746 - $ref: '#/components/schemas/Actor'
7748 ImportVideosInChannelCreate:
7753 example: https://youtube.com/c/UC_myfancychannel
7756 description: If part of a channel sync process, specify its id to assign video imports to this channel synchronization
7758 - 'externalChannelUrl'
7764 $ref: '#/components/schemas/id'
7776 example: 'https://youtube.com/c/UC_myfancychannel'
7785 $ref: '#/components/schemas/VideoChannel'
7786 VideoChannelSyncList:
7796 - $ref: '#/components/schemas/VideoChannelSync'
7797 VideoChannelSyncCreate:
7802 example: https://youtube.com/c/UC_myfancychannel
7804 $ref: '#/components/schemas/id'
7808 name: 'media:peerLink'
7817 - application/x-bittorrent
7823 name: 'media:content'
7854 VideoCommentsForXML:
7889 description: video watch page URL
7892 description: video canonical URL
7896 description: video publication date
7899 description: video description
7902 description: video description
7905 description: publisher user name
7908 description: video category (MRSS)
7911 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
7926 description: video embed path, relative to the canonical URL domain (MRSS)
7935 description: video watch path, relative to the canonical URL domain (MRSS)
7956 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
7957 'media:description':
7964 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
7967 description: main streamable file for the video
7977 - application/x-bittorrent
7986 description: list of streamable files for the video. see [media:peerLink](https://www.rssboard.org/media-rss#media-peerlink) and [media:content](https://www.rssboard.org/media-rss#media-content) or (MRSS)
7989 - $ref: '#/components/schemas/MRSSPeerLink'
7990 - $ref: '#/components/schemas/MRSSGroupContent'
7991 NotificationSettingValue:
8008 $ref: '#/components/schemas/id'
8012 Notification type, following the `UserNotificationType` enum:
8014 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
8016 - `2` NEW_COMMENT_ON_MY_VIDEO
8018 - `3` NEW_ABUSE_FOR_MODERATORS
8020 - `4` BLACKLIST_ON_MY_VIDEO
8022 - `5` UNBLACKLIST_ON_MY_VIDEO
8024 - `6` MY_VIDEO_PUBLISHED
8026 - `7` MY_VIDEO_IMPORT_SUCCESS
8028 - `8` MY_VIDEO_IMPORT_ERROR
8030 - `9` NEW_USER_REGISTRATION
8034 - `11` COMMENT_MENTION
8036 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
8038 - `13` NEW_INSTANCE_FOLLOWER
8040 - `14` AUTO_INSTANCE_FOLLOWING
8042 - `15` ABUSE_STATE_CHANGE
8044 - `16` ABUSE_NEW_MESSAGE
8046 - `17` NEW_PLUGIN_VERSION
8048 - `18` NEW_PEERTUBE_VERSION
8054 - $ref: '#/components/schemas/VideoInfo'
8058 $ref: '#/components/schemas/ActorInfo'
8064 $ref: '#/components/schemas/id'
8067 $ref: '#/components/schemas/VideoInfo'
8072 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
8082 $ref: '#/components/schemas/id'
8086 $ref: '#/components/schemas/VideoInfo'
8088 $ref: '#/components/schemas/ActorInfo'
8094 $ref: '#/components/schemas/id'
8097 - $ref: '#/components/schemas/VideoInfo'
8103 $ref: '#/components/schemas/id'
8106 - $ref: '#/components/schemas/VideoInfo'
8110 - $ref: '#/components/schemas/ActorInfo'
8116 $ref: '#/components/schemas/id'
8118 $ref: '#/components/schemas/ActorInfo'
8146 NotificationListResponse:
8155 $ref: '#/components/schemas/Notification'
8160 example: peertube-plugin-auth-ldap
8188 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
8191 additionalProperties: true
8207 $ref: '#/components/schemas/Plugin'
8214 description: User can stream multiple times in a permanent live
8217 description: User can select live latency mode if enabled by the instance
8218 $ref: '#/components/schemas/LiveVideoLatencyMode'
8224 description: Included in the response if an appropriate token is provided
8227 description: Included in the response if an appropriate token is provided
8230 description: RTMP stream key to use to stream into this live video. Included in the response if an appropriate token is provided
8234 description: User can stream multiple times in a permanent live
8237 description: User can select live latency mode if enabled by the instance
8238 $ref: '#/components/schemas/LiveVideoLatencyMode'
8240 RequestTwoFactorResponse:
8247 description: The token to send to confirm this request
8250 description: The OTP secret
8253 description: The OTP URI
8255 VideoStudioCreateTask:
8303 title: add-watermark
8317 LiveVideoSessionResponse:
8324 description: Start date of the live session
8329 description: End date of the live session
8340 Error type if an error occurred during the live session:
8341 - `1`: Bad socket health (transcoding is too slow)
8342 - `2`: Max duration exceeded
8343 - `3`: Quota exceeded
8344 - `4`: Quota FFmpeg error
8345 - `5`: Video has been blacklisted during the live
8348 description: Video replay information
8353 $ref: '#/components/schemas/UUIDv4'
8355 $ref: '#/components/schemas/shortUUID'
8357 PlaybackMetricCreate:
8362 - 'p2p-media-loader'
8366 description: Current player video resolution
8369 description: Current player video fps
8372 description: How many resolution changes occured since the last metric creation
8375 description: How many errors occured since the last metric creation
8378 description: How many bytes were downloaded with P2P since the last metric creation
8379 downloadedBytesHTTP:
8381 description: How many bytes were downloaded with HTTP since the last metric creation
8384 description: How many bytes were uploaded with P2P since the last metric creation
8387 - $ref: '#/components/schemas/id'
8388 - $ref: '#/components/schemas/UUIDv4'
8389 - $ref: '#/components/schemas/shortUUID'
8394 - downloadedBytesP2P
8395 - downloadedBytesHTTP
8401 'https://search.example.org/api/v1/search/videos':
8403 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
8406 description: successful operation
8410 $ref: '#/components/schemas/VideoListResponse'