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 | `/live/segments-sha256/*` |
149 | `/.well-known/webfinger` |
151 In addition, all routes serving ActivityPub are CORS-enabled for all origins.
153 url: https://docs.joinpeertube.org/api-rest-reference.html
157 As a visitor, you can use this API to open an account (if registrations are open on
158 that PeerTube instance). As an admin, you should use the dedicated [User creation
159 API](#operation/addUser) instead.
161 x-displayName: Login/Logout
163 Sessions deal with access tokens over time. Only __one session token can currently be used at a time__.
166 Accounts encompass remote accounts discovered across the federation,
167 and correspond to the main Actor, along with video channels a user can create, which
170 When a comment is posted, it is done with your Account's Actor.
173 Using some features of PeerTube require authentication, for which User
174 provide different levels of permission as well as associated user
175 information. Each user has a corresponding local Account for federation.
178 Operations related to your own User, when logged-in.
179 - name: My Subscriptions
181 Operations related to your subscriptions to video channels, their
182 new videos, and how to keep up to date with their latest publications!
185 Operations related to your watch history.
186 - name: My Notifications
188 Notifications following new videos, follows or reports. They allow you
189 to keep track of the interactions and overall important information that
190 concerns you. You MAY set per-notification type delivery preference, to
191 receive the info either by mail, by in-browser notification or both.
194 Each server exposes public information regarding supported videos and
198 Jobs are long-running tasks enqueued and processed by the instance
199 itself. No additional worker registration is currently available.
200 - name: Instance Follows
202 Managing servers which the instance interacts with is crucial to the
203 concept of federation in PeerTube and external video indexation. The PeerTube
204 server then deals with inter-server ActivityPub operations and propagates
205 information across its social graph by posting activities to actors' inbox
208 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-follows
209 - name: Instance Redundancy
211 Redundancy is part of the inter-server solidarity that PeerTube fosters.
212 Manage the list of instances you wish to help by seeding their videos according
213 to the policy of video selection of your choice. Note that you have a similar functionality
214 to mirror individual videos, see [video mirroring](#tag/Video-Mirroring).
216 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-redundancy
219 Managing plugins installed from a local path or from NPM, or search for new ones.
221 url: https://docs.joinpeertube.org/api-plugins
224 Abuses deal with reports of local or remote videos/comments/accounts alike.
227 Operations dealing with listing, uploading, fetching or modifying videos.
230 Operations dealing with adding video or audio. PeerTube supports two upload modes, and three import modes.
234 - [_legacy_](#operation/uploadLegacy), where the video file is sent in a single request
235 - [_resumable_](#operation/uploadResumableInit), where the video file is sent in chunks
237 You can upload videos more reliably by using the resumable variant. Its protocol lets
238 you resume an upload operation after a network interruption or other transmission failure,
239 saving time and bandwidth in the event of network failures.
241 Favor using resumable uploads in any of the following cases:
242 - You are transferring large files
243 - The likelihood of a network interruption is high
244 - Uploads are originating from a device with a low-bandwidth or unstable Internet connection,
245 such as a mobile device
249 - _URL_-based: where the URL points to any service supported by [youtube-dl](https://ytdl-org.github.io/youtube-dl/)
250 - _magnet_-based: where the URI resolves to a BitTorrent resource containing a single supported video file
251 - _torrent_-based: where the metainfo file resolves to a BitTorrent resource containing a single supported video file
253 The import function is practical when the desired video/audio is available online. It makes PeerTube
254 download it for you, saving you as much bandwidth and avoiding any instability or limitation your network might have.
255 - name: Video Imports
256 description: Operations dealing with listing, adding and removing video imports.
257 - name: Video Captions
258 description: Operations dealing with listing, adding and removing closed captions of a video.
259 - name: Video Channels
260 description: Operations dealing with the creation, modification and listing of videos within a channel.
261 - name: Video Comments
263 Operations dealing with comments to a video. Comments are organized in threads: adding a
264 comment in response to the video starts a thread, adding a reply to a comment adds it to
265 its root comment thread.
267 description: Operations dealing with blocking videos (removing them from view and preventing interactions).
269 description: Like/dislike a video.
270 - name: Video Playlists
271 description: Operations dealing with playlists of videos. Playlists are bound to users and/or channels.
273 description: Operations on video files
274 - name: Video Transcoding
275 description: Video transcoding related operations
277 description: Video statistics
279 description: Server syndication feeds
282 The search helps to find _videos_ or _channels_ from within the instance and beyond.
283 Videos from other instances federated by the instance (that is, instances
284 followed by the instance) can be found via keywords and other criteria of
287 Administrators can also enable the use of a remote search system, indexing
288 videos and channels not could be not federated by the instance.
290 description: Get and update the custom homepage
291 - name: Video Mirroring
293 PeerTube instances can mirror videos from one another, and help distribute some videos.
295 For importing videos as your own, refer to [video imports](#operation/importVideo).
320 - Video Ownership Change
338 - name: Instance Configuration
342 - Instance Redundancy
352 summary: Get an account
353 operationId: getAccount
355 - $ref: '#/components/parameters/name'
358 description: successful operation
362 $ref: '#/components/schemas/Account'
364 description: account not found
366 '/accounts/{name}/videos':
371 summary: 'List videos of an account'
372 operationId: getAccountVideos
374 - $ref: '#/components/parameters/name'
375 - $ref: '#/components/parameters/categoryOneOf'
376 - $ref: '#/components/parameters/isLive'
377 - $ref: '#/components/parameters/tagsOneOf'
378 - $ref: '#/components/parameters/tagsAllOf'
379 - $ref: '#/components/parameters/licenceOneOf'
380 - $ref: '#/components/parameters/languageOneOf'
381 - $ref: '#/components/parameters/nsfw'
382 - $ref: '#/components/parameters/isLocal'
383 - $ref: '#/components/parameters/include'
384 - $ref: '#/components/parameters/privacyOneOf'
385 - $ref: '#/components/parameters/hasHLSFiles'
386 - $ref: '#/components/parameters/hasWebtorrentFiles'
387 - $ref: '#/components/parameters/skipCount'
388 - $ref: '#/components/parameters/start'
389 - $ref: '#/components/parameters/count'
390 - $ref: '#/components/parameters/videosSort'
393 description: successful operation
397 $ref: '#/components/schemas/VideoListResponse'
401 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
402 .then(function(response) {
403 return response.json()
404 }).then(function(data) {
410 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
416 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
418 http = Net::HTTP.new(uri.host, uri.port)
421 response = http.get(uri.request_uri)
423 puts JSON.parse(response.read_body)
428 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
433 '/accounts/{name}/followers':
437 summary: 'List followers of an account'
440 operationId: getAccountFollowers
442 - $ref: '#/components/parameters/name'
443 - $ref: '#/components/parameters/start'
444 - $ref: '#/components/parameters/count'
445 - $ref: '#/components/parameters/followersSort'
446 - $ref: '#/components/parameters/search'
449 description: successful operation
461 $ref: '#/components/schemas/Follow'
467 summary: List accounts
468 operationId: getAccounts
470 - $ref: '#/components/parameters/start'
471 - $ref: '#/components/parameters/count'
472 - $ref: '#/components/parameters/sort'
475 description: successful operation
481 $ref: '#/components/schemas/Account'
487 summary: Get instance public configuration
488 operationId: getConfig
491 description: successful operation
495 $ref: '#/components/schemas/ServerConfig'
498 externalValue: https://peertube2.cpy.re/api/v1/config
502 summary: Get instance "About" information
503 operationId: getAbout
508 description: successful operation
512 $ref: '#/components/schemas/ServerConfigAbout'
515 externalValue: https://peertube2.cpy.re/api/v1/config/about
519 summary: Get instance runtime configuration
520 operationId: getCustomConfig
528 description: successful operation
532 $ref: '#/components/schemas/ServerConfigCustom'
534 summary: Set instance runtime configuration
535 operationId: putCustomConfig
543 description: successful operation
545 x-summary: field inconsistencies
548 - the emailer is disabled and the instance is open to registrations
549 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
551 summary: Delete instance runtime configuration
552 operationId: delCustomConfig
560 description: successful operation
562 /custom-pages/homepage/instance:
564 summary: Get instance custom homepage
569 description: No homepage set
571 description: successful operation
575 $ref: '#/components/schemas/CustomHomepage'
577 summary: Set instance custom homepage
591 description: content of the homepage, that will be injected in the client
594 description: successful operation
598 summary: Pause job queue
606 description: successful operation
610 summary: Resume job queue
618 description: successful operation
622 summary: List instance jobs
633 description: The state of the job ('' for for no filter)
643 - $ref: '#/components/parameters/jobType'
644 - $ref: '#/components/parameters/start'
645 - $ref: '#/components/parameters/count'
646 - $ref: '#/components/parameters/sort'
649 description: successful operation
662 $ref: '#/components/schemas/Job'
668 summary: List instances following the server
670 - $ref: '#/components/parameters/followState'
671 - $ref: '#/components/parameters/actorType'
672 - $ref: '#/components/parameters/start'
673 - $ref: '#/components/parameters/count'
674 - $ref: '#/components/parameters/sort'
677 description: successful operation
689 $ref: '#/components/schemas/Follow'
691 '/server/followers/{nameWithHost}':
693 summary: Remove or reject a follower to your server
703 description: The remote actor handle to remove from your followers
709 description: successful operation
711 description: follower not found
713 '/server/followers/{nameWithHost}/reject':
715 summary: Reject a pending follower to your server
725 description: The remote actor handle to remove from your followers
731 description: successful operation
733 description: follower not found
735 '/server/followers/{nameWithHost}/accept':
737 summary: Accept a pending follower to your server
747 description: The remote actor handle to remove from your followers
753 description: successful operation
755 description: follower not found
761 summary: List instances followed by the server
763 - $ref: '#/components/parameters/followState'
764 - $ref: '#/components/parameters/actorType'
765 - $ref: '#/components/parameters/start'
766 - $ref: '#/components/parameters/count'
767 - $ref: '#/components/parameters/sort'
770 description: successful operation
782 $ref: '#/components/schemas/Follow'
789 summary: Follow a list of actors (PeerTube instance, channel or account)
792 description: successful operation
794 description: cannot follow a non-HTTPS server
813 '/server/following/{hostOrHandle}':
815 summary: Unfollow an actor (PeerTube instance, channel or account)
825 description: The hostOrHandle to unfollow
830 description: successful operation
832 description: host or handle not found
836 summary: Create a user
845 description: user created
849 $ref: '#/components/schemas/AddUserResponse'
855 id: '$response.body#/user/id'
860 id: '$response.body#/user/id'
865 id: '$response.body#/user/id'
867 description: insufficient authority to create an admin or moderator
872 $ref: '#/components/schemas/AddUser'
874 If the smtp server is configured, you can leave the password empty and an email will be sent
875 asking the user to set it first.
879 operationId: getUsers
886 - $ref: '#/components/parameters/usersSearch'
887 - $ref: '#/components/parameters/usersBlocked'
888 - $ref: '#/components/parameters/start'
889 - $ref: '#/components/parameters/count'
890 - $ref: '#/components/parameters/usersSort'
893 description: successful operation
899 $ref: '#/components/schemas/User'
903 - $ref: '#/components/parameters/id'
905 summary: Delete a user
914 description: successful operation
925 description: include statistics about the user (only available as a moderator/admin)
930 x-summary: successful operation
932 As an admin/moderator, you can request a response augmented with statistics about the user's
933 moderation relations and videos usage, by using the `withStats` parameter.
938 - $ref: '#/components/schemas/User'
939 - $ref: '#/components/schemas/UserWithStats'
941 summary: Update a user
949 description: successful operation
954 $ref: '#/components/schemas/UpdateUser'
957 /oauth-clients/local:
959 summary: Login prerequisite
960 description: You need to retrieve a client id and secret before [logging in](#operation/getOAuthToken).
961 operationId: getOAuthClient
966 description: successful operation
970 $ref: '#/components/schemas/OAuthClient'
972 UseOAuthClientToLogin:
973 operationId: getOAuthToken
975 client_id: '$response.body#/client_id'
976 client_secret: '$response.body#/client_secret'
980 API="https://peertube2.cpy.re/api/v1"
983 curl -s "$API/oauth-clients/local"
988 operationId: getOAuthToken
989 description: With your [client id and secret](#operation/getOAuthClient), you can retrieve an access and refresh tokens.
994 application/x-www-form-urlencoded:
997 - $ref: '#/components/schemas/OAuthToken-password'
998 - $ref: '#/components/schemas/OAuthToken-refresh_token'
1000 propertyName: grant_type
1002 password: '#/components/schemas/OAuthToken-password'
1003 refresh_token: '#/components/schemas/OAuthToken-refresh_token'
1006 description: successful operation
1017 example: 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0
1018 description: valid for 1 day
1021 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
1022 description: valid for 2 weeks
1027 refresh_token_expires_in:
1032 x-summary: client or credentials are invalid
1034 Disambiguate via `type`:
1035 - `invalid_client` for an unmatched `client_id`
1036 - `invalid_grant` for unmatched credentials
1038 x-summary: token expired
1040 Disambiguate via `type`:
1041 - default value for a regular authentication failure
1042 - `invalid_token` for an expired token
1047 API="https://peertube2.cpy.re/api/v1"
1048 USERNAME="<your_username>"
1049 PASSWORD="<your_password>"
1052 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
1053 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
1054 curl -s "$API/users/token" \
1055 --data client_id="$client_id" \
1056 --data client_secret="$client_secret" \
1057 --data grant_type=password \
1058 --data username="$USERNAME" \
1059 --data password="$PASSWORD" \
1060 | jq -r ".access_token"
1062 /users/revoke-token:
1065 description: Revokes your access token and its associated refresh token, destroying your current session.
1066 operationId: revokeOAuthToken
1073 description: successful operation
1077 summary: Register a user
1078 operationId: registerUser
1084 description: successful operation
1089 $ref: '#/components/schemas/RegisterUser'
1092 /users/{id}/verify-email:
1094 summary: Verify a user
1095 operationId: verifyUser
1097 Following a user registration, the new user will receive an email asking to click a link
1098 containing a secret.
1103 - $ref: '#/components/parameters/id'
1116 - verificationString
1119 description: successful operation
1121 description: invalid verification string
1123 description: user not found
1125 /users/ask-send-verify-email:
1127 summary: Resend user verification link
1128 operationId: resendEmailToVerifyUser
1134 description: successful operation
1138 summary: Get my user information
1139 operationId: getUserInfo
1147 description: successful operation
1153 $ref: '#/components/schemas/User'
1155 summary: Update my user information
1156 operationId: putUserInfo
1164 description: successful operation
1169 $ref: '#/components/schemas/UpdateMe'
1172 /users/me/videos/imports:
1174 summary: Get video imports of my user
1182 - $ref: '#/components/parameters/start'
1183 - $ref: '#/components/parameters/count'
1184 - $ref: '#/components/parameters/sort'
1187 description: successful operation
1191 $ref: '#/components/schemas/VideoImportsList'
1193 /users/me/video-quota-used:
1195 summary: Get my user used quota
1203 description: successful operation
1211 description: The user video quota used so far in bytes
1212 example: 16810141515
1213 videoQuotaUsedDaily:
1215 description: The user video quota used today in bytes
1218 '/users/me/videos/{videoId}/rating':
1220 summary: Get rate of my user for a video
1230 description: The video id
1232 $ref: '#/components/schemas/Video/properties/id'
1235 description: successful operation
1239 $ref: '#/components/schemas/GetMeVideoRating'
1243 summary: Get videos of my user
1251 - $ref: '#/components/parameters/start'
1252 - $ref: '#/components/parameters/count'
1253 - $ref: '#/components/parameters/sort'
1256 description: successful operation
1260 $ref: '#/components/schemas/VideoListResponse'
1262 /users/me/subscriptions:
1264 summary: Get my user subscriptions
1271 - $ref: '#/components/parameters/start'
1272 - $ref: '#/components/parameters/count'
1273 - $ref: '#/components/parameters/sort'
1276 description: successful operation
1280 $ref: '#/components/schemas/VideoChannelList'
1284 summary: Add subscription to my user
1297 description: uri of the video channels to subscribe to
1303 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
1306 description: successful operation
1308 /users/me/subscriptions/exist:
1310 summary: Get if subscriptions exist for my user
1317 - $ref: '#/components/parameters/subscriptionsUris'
1320 description: successful operation
1326 /users/me/subscriptions/videos:
1328 summary: List videos of subscriptions of my user
1336 - $ref: '#/components/parameters/categoryOneOf'
1337 - $ref: '#/components/parameters/isLive'
1338 - $ref: '#/components/parameters/tagsOneOf'
1339 - $ref: '#/components/parameters/tagsAllOf'
1340 - $ref: '#/components/parameters/licenceOneOf'
1341 - $ref: '#/components/parameters/languageOneOf'
1342 - $ref: '#/components/parameters/nsfw'
1343 - $ref: '#/components/parameters/isLocal'
1344 - $ref: '#/components/parameters/include'
1345 - $ref: '#/components/parameters/privacyOneOf'
1346 - $ref: '#/components/parameters/hasHLSFiles'
1347 - $ref: '#/components/parameters/hasWebtorrentFiles'
1348 - $ref: '#/components/parameters/skipCount'
1349 - $ref: '#/components/parameters/start'
1350 - $ref: '#/components/parameters/count'
1351 - $ref: '#/components/parameters/videosSort'
1354 description: successful operation
1358 $ref: '#/components/schemas/VideoListResponse'
1360 '/users/me/subscriptions/{subscriptionHandle}':
1362 summary: Get subscription of my user
1369 - $ref: '#/components/parameters/subscriptionHandle'
1372 description: successful operation
1376 $ref: '#/components/schemas/VideoChannel'
1378 summary: Delete subscription of my user
1385 - $ref: '#/components/parameters/subscriptionHandle'
1388 description: successful operation
1390 /users/me/notifications:
1392 summary: List my notifications
1400 description: only list unread notifications
1403 - $ref: '#/components/parameters/start'
1404 - $ref: '#/components/parameters/count'
1405 - $ref: '#/components/parameters/sort'
1408 description: successful operation
1412 $ref: '#/components/schemas/NotificationListResponse'
1414 /users/me/notifications/read:
1416 summary: Mark notifications as read by their id
1429 description: ids of the notifications to mark as read
1436 description: successful operation
1438 /users/me/notifications/read-all:
1440 summary: Mark all my notification as read
1447 description: successful operation
1449 /users/me/notification-settings:
1451 summary: Update my notification settings
1462 newVideoFromSubscription:
1463 $ref: '#/components/schemas/NotificationSettingValue'
1464 newCommentOnMyVideo:
1465 $ref: '#/components/schemas/NotificationSettingValue'
1467 $ref: '#/components/schemas/NotificationSettingValue'
1468 videoAutoBlacklistAsModerator:
1469 $ref: '#/components/schemas/NotificationSettingValue'
1471 $ref: '#/components/schemas/NotificationSettingValue'
1473 $ref: '#/components/schemas/NotificationSettingValue'
1474 myVideoImportFinished:
1475 $ref: '#/components/schemas/NotificationSettingValue'
1477 $ref: '#/components/schemas/NotificationSettingValue'
1478 newUserRegistration:
1479 $ref: '#/components/schemas/NotificationSettingValue'
1481 $ref: '#/components/schemas/NotificationSettingValue'
1482 newInstanceFollower:
1483 $ref: '#/components/schemas/NotificationSettingValue'
1484 autoInstanceFollowing:
1485 $ref: '#/components/schemas/NotificationSettingValue'
1488 description: successful operation
1490 /users/me/history/videos:
1492 summary: List watched videos history
1498 - $ref: '#/components/parameters/start'
1499 - $ref: '#/components/parameters/count'
1500 - $ref: '#/components/parameters/search'
1503 description: successful operation
1507 $ref: '#/components/schemas/VideoListResponse'
1509 /users/me/history/videos/{videoId}:
1511 summary: Delete history element
1521 $ref: '#/components/schemas/Video/properties/id'
1524 description: successful operation
1526 /users/me/history/videos/remove:
1528 summary: Clear video history
1535 multipart/form-data:
1540 description: history before this date will be deleted
1545 description: successful operation
1547 /users/me/avatar/pick:
1549 summary: Update my user avatar
1556 description: successful operation
1565 $ref: '#/components/schemas/ActorImage'
1567 description: image file too large
1569 X-File-Maximum-Size:
1573 description: Maximum file size for the avatar
1576 multipart/form-data:
1581 description: The file to upload
1586 contentType: image/png, image/jpeg
1590 summary: Delete my avatar
1597 description: successful operation
1601 summary: List video ownership changes
1603 - Video Ownership Change
1608 description: successful operation
1610 '/videos/ownership/{id}/accept':
1612 summary: Accept ownership change request
1614 - Video Ownership Change
1618 - $ref: '#/components/parameters/idOrUUID'
1621 description: successful operation
1623 description: cannot terminate an ownership change of another user
1625 description: video ownership change not found
1627 '/videos/ownership/{id}/refuse':
1629 summary: Refuse ownership change request
1631 - Video Ownership Change
1635 - $ref: '#/components/parameters/idOrUUID'
1638 description: successful operation
1640 description: cannot terminate an ownership change of another user
1642 description: video ownership change not found
1644 '/videos/{id}/give-ownership':
1646 summary: Request ownership change
1648 - Video Ownership Change
1652 - $ref: '#/components/parameters/idOrUUID'
1656 application/x-www-form-urlencoded:
1666 description: successful operation
1668 description: changing video ownership to a remote account is not supported yet
1670 description: video not found
1674 summary: List videos
1675 operationId: getVideos
1679 - $ref: '#/components/parameters/categoryOneOf'
1680 - $ref: '#/components/parameters/isLive'
1681 - $ref: '#/components/parameters/tagsOneOf'
1682 - $ref: '#/components/parameters/tagsAllOf'
1683 - $ref: '#/components/parameters/licenceOneOf'
1684 - $ref: '#/components/parameters/languageOneOf'
1685 - $ref: '#/components/parameters/nsfw'
1686 - $ref: '#/components/parameters/isLocal'
1687 - $ref: '#/components/parameters/include'
1688 - $ref: '#/components/parameters/privacyOneOf'
1689 - $ref: '#/components/parameters/hasHLSFiles'
1690 - $ref: '#/components/parameters/hasWebtorrentFiles'
1691 - $ref: '#/components/parameters/skipCount'
1692 - $ref: '#/components/parameters/start'
1693 - $ref: '#/components/parameters/count'
1694 - $ref: '#/components/parameters/videosSort'
1697 description: successful operation
1701 $ref: '#/components/schemas/VideoListResponse'
1705 summary: List available video categories
1706 operationId: getCategories
1711 description: successful operation
1720 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1724 summary: List available video licences
1725 operationId: getLicences
1730 description: successful operation
1739 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1743 summary: List available video languages
1744 operationId: getLanguages
1749 description: successful operation
1758 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1762 summary: List available video privacy policies
1763 operationId: getPrivacyPolicies
1768 description: successful operation
1777 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1781 summary: Update a video
1782 operationId: putVideo
1788 - $ref: '#/components/parameters/idOrUUID'
1791 description: successful operation
1794 multipart/form-data:
1799 description: Video thumbnail file
1803 description: Video preview file
1807 $ref: '#/components/schemas/VideoCategorySet'
1809 $ref: '#/components/schemas/VideoLicenceSet'
1811 $ref: '#/components/schemas/VideoLanguageSet'
1813 $ref: '#/components/schemas/VideoPrivacySet'
1815 description: Video description
1818 description: Whether or not we wait transcoding before publish the video
1821 description: A text tell the audience how to support the video creator
1822 example: Please support our work on https://soutenir.framasoft.org/en/ <3
1825 description: Whether or not this video contains sensitive content
1828 description: Video name
1833 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1842 description: Enable or disable comments for this video
1845 description: Enable or disable downloading for this video
1847 originallyPublishedAt:
1848 description: Date when the content was originally published
1852 $ref: '#/components/schemas/VideoScheduledUpdate'
1855 contentType: image/jpeg
1857 contentType: image/jpeg
1859 summary: Get a video
1860 operationId: getVideo
1864 - $ref: '#/components/parameters/idOrUUID'
1867 description: successful operation
1871 $ref: '#/components/schemas/VideoDetails'
1873 summary: Delete a video
1874 operationId: delVideo
1880 - $ref: '#/components/parameters/idOrUUID'
1883 description: successful operation
1885 '/videos/{id}/description':
1887 summary: Get complete video description
1888 operationId: getVideoDesc
1892 - $ref: '#/components/parameters/idOrUUID'
1895 description: successful operation
1904 **[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)**
1906 '/videos/{id}/source':
1908 summary: Get video source file metadata
1909 operationId: getVideoSource
1913 - $ref: '#/components/parameters/idOrUUID'
1916 description: successful operation
1920 $ref: '#/components/schemas/VideoSource'
1922 '/videos/{id}/views':
1924 summary: Notify user is watching a video
1925 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.
1926 operationId: addView
1930 - $ref: '#/components/parameters/idOrUUID'
1935 $ref: '#/components/schemas/UserViewingVideo'
1939 description: successful operation
1941 '/videos/{id}/watching':
1943 summary: Set watching progress of a video
1945 description: This endpoint has been deprecated. Use `/videos/{id}/views` instead
1951 - $ref: '#/components/parameters/idOrUUID'
1956 $ref: '#/components/schemas/UserViewingVideo'
1960 description: successful operation
1962 '/videos/{id}/stats/overall':
1964 summary: Get overall stats of a video
1970 - $ref: '#/components/parameters/idOrUUID'
1973 description: Filter stats by start date
1979 description: Filter stats by end date
1985 description: successful operation
1989 $ref: '#/components/schemas/VideoStatsOverall'
1991 '/videos/{id}/stats/retention':
1993 summary: Get retention stats of a video
1999 - $ref: '#/components/parameters/idOrUUID'
2002 description: successful operation
2006 $ref: '#/components/schemas/VideoStatsRetention'
2008 '/videos/{id}/stats/timeseries/{metric}':
2010 summary: Get timeserie stats of a video
2016 - $ref: '#/components/parameters/idOrUUID'
2021 description: The metric to get
2026 - 'aggregateWatchTime'
2029 description: Filter stats by start date
2035 description: Filter stats by end date
2041 description: successful operation
2045 $ref: '#/components/schemas/VideoStatsTimeserie'
2049 summary: Upload a video
2050 description: Uses a single request to upload a video.
2051 operationId: uploadLegacy
2059 description: successful operation
2063 $ref: '#/components/schemas/VideoUploadResponse'
2065 description: video didn't pass upload filter
2067 description: upload has timed out
2069 x-summary: video file too large, due to quota or max body size limit set by the reverse-proxy
2071 If the response has no body, it means the reverse-proxy didn't let it through. Otherwise disambiguate via `type`:
2072 - `quota_reached` for quota limits whether daily or global
2074 X-File-Maximum-Size:
2078 description: Maximum file size for the video
2080 description: video type unsupported
2082 description: video unreadable
2085 multipart/form-data:
2087 $ref: '#/components/schemas/VideoUploadRequestLegacy'
2090 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
2092 contentType: image/jpeg
2094 contentType: image/jpeg
2099 USERNAME="<your_username>"
2100 PASSWORD="<your_password>"
2101 FILE_PATH="<your_file_path>"
2102 CHANNEL_ID="<your_channel_id>"
2104 API="https://peertube2.cpy.re/api/v1"
2107 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
2108 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
2109 token=$(curl -s "$API/users/token" \
2110 --data client_id="$client_id" \
2111 --data client_secret="$client_secret" \
2112 --data grant_type=password \
2113 --data username="$USERNAME" \
2114 --data password="$PASSWORD" \
2115 | jq -r ".access_token")
2118 curl -s "$API/videos/upload" \
2119 -H "Authorization: Bearer $token" \
2121 --form videofile=@"$FILE_PATH" \
2122 --form channelId=$CHANNEL_ID \
2125 /videos/upload-resumable:
2127 summary: Initialize the resumable upload of a video
2128 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to initialize the upload of a video
2129 operationId: uploadResumableInit
2136 - name: X-Upload-Content-Length
2142 description: Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
2143 - name: X-Upload-Content-Type
2150 description: MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
2155 $ref: '#/components/schemas/VideoUploadRequestResumable'
2158 description: file already exists, send a [`resume`](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) request instead
2160 description: created
2166 example: /api/v1/videos/upload-resumable?upload_id=471e97554f21dec3b8bb5d4602939c51
2172 x-summary: video file too large, due to quota, absolute max file size or concurrent partial upload limit
2174 Disambiguate via `type`:
2175 - `max_file_size_reached` for the absolute file size limit
2176 - `quota_reached` for quota limits whether daily or global
2178 description: video type unsupported
2180 summary: Send chunk for the resumable upload of a video
2181 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
2182 operationId: uploadResumable
2193 Created session id to proceed with. If you didn't send chunks in the last hour, it is
2194 not valid anymore and you need to initialize a new upload.
2197 - name: Content-Range
2201 example: bytes 0-262143/2469036
2204 Specifies the bytes in the file that the request is uploading.
2206 For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first
2207 262144 bytes (256 x 1024) in a 2,469,036 byte file.
2208 - name: Content-Length
2215 Size of the chunk that the request is sending.
2217 Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from
2218 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
2221 application/octet-stream:
2227 description: last chunk received
2235 $ref: '#/components/schemas/VideoUploadResponse'
2237 description: resume incomplete
2242 example: bytes=0-262143
2248 description: video didn't pass upload filter
2250 description: upload not found
2252 description: chunk doesn't match range
2254 description: video unreadable
2256 description: too many concurrent requests
2258 description: upload is already being processed
2265 summary: Cancel the resumable upload of a video, deleting any data uploaded so far
2266 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to cancel the upload of a video
2267 operationId: uploadResumableCancel
2278 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
2279 not valid anymore and the upload session has already been deleted with its data ;-)
2282 - name: Content-Length
2290 description: upload cancelled
2297 description: upload not found
2301 summary: Import a video
2302 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
2303 operationId: importVideo
2311 multipart/form-data:
2313 $ref: '#/components/schemas/VideoCreateImport'
2316 contentType: application/x-bittorrent
2318 contentType: image/jpeg
2320 contentType: image/jpeg
2323 description: successful operation
2327 $ref: '#/components/schemas/VideoUploadResponse'
2329 description: '`magnetUri` or `targetUrl` or a torrent file missing'
2331 description: video didn't pass pre-import filter
2333 description: HTTP or Torrent/magnetURI import not enabled
2335 /videos/imports/{id}/cancel:
2337 summary: Cancel video import
2338 description: Cancel a pending video import
2344 - $ref: '#/components/parameters/id'
2347 description: successful operation
2349 /videos/imports/{id}:
2351 summary: Delete video import
2352 description: Delete ended video import
2358 - $ref: '#/components/parameters/id'
2361 description: successful operation
2365 summary: Create a live
2366 operationId: addLive
2374 description: successful operation
2378 $ref: '#/components/schemas/VideoUploadResponse'
2380 x-summary: validation error, or conflicting `saveReplay` and `permanentLive` parameter set
2382 Disambiguate via `type`:
2383 - default type for a validation error
2384 - `live_conflicting_permanent_and_save_replay` for conflicting parameters set
2386 x-summary: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
2388 Disambiguate via `type`:
2389 - `live_not_enabled` for a disabled live feature
2390 - `live_not_allowing_replay` for a disabled replay feature
2391 - `max_instance_lives_limit_reached` for the absolute concurrent live limit
2392 - `max_user_lives_limit_reached` for the user concurrent live limit
2395 multipart/form-data:
2400 description: Channel id that will contain this live video
2405 description: User can stream multiple times in a permanent live
2408 description: User can select live latency mode if enabled by the instance
2409 $ref: '#/components/schemas/LiveVideoLatencyMode'
2411 description: Live video/replay thumbnail file
2415 description: Live video/replay preview file
2419 $ref: '#/components/schemas/VideoPrivacySet'
2421 $ref: '#/components/schemas/VideoCategorySet'
2423 $ref: '#/components/schemas/VideoLicenceSet'
2425 $ref: '#/components/schemas/VideoLanguageSet'
2427 description: Live video/replay description
2430 description: A text tell the audience how to support the creator
2431 example: Please support our work on https://soutenir.framasoft.org/en/ <3
2434 description: Whether or not this live video/replay contains sensitive content
2437 description: Live video/replay name
2442 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
2451 description: Enable or disable comments for this live video/replay
2454 description: Enable or disable downloading for the replay of this live video
2461 contentType: image/jpeg
2463 contentType: image/jpeg
2467 summary: Get information about a live
2468 operationId: getLiveId
2475 - $ref: '#/components/parameters/idOrUUID'
2478 description: successful operation
2482 $ref: '#/components/schemas/LiveVideoResponse'
2484 summary: Update information about a live
2485 operationId: updateLiveId
2492 - $ref: '#/components/parameters/idOrUUID'
2497 $ref: '#/components/schemas/LiveVideoUpdate'
2500 description: successful operation
2502 description: bad parameters or trying to update a live that has already started
2504 description: trying to save replay of the live but saving replay is not enabled on the instance
2505 /videos/live/{id}/sessions:
2507 summary: List live sessions
2508 description: List all sessions created in a particular live
2514 - $ref: '#/components/parameters/idOrUUID'
2517 description: successful operation
2529 $ref: '#/components/schemas/LiveVideoSessionResponse'
2530 /videos/{id}/live-session:
2532 summary: Get live session of a replay
2533 description: If the video is a replay of a live, you can find the associated live session using this endpoint
2539 - $ref: '#/components/parameters/idOrUUID'
2542 description: successful operation
2546 $ref: '#/components/schemas/LiveVideoSessionResponse'
2550 summary: List my abuses
2551 operationId: getMyAbuses
2560 description: only list the report with this id
2566 $ref: '#/components/schemas/AbuseStateSet'
2567 - $ref: '#/components/parameters/abusesSort'
2568 - $ref: '#/components/parameters/start'
2569 - $ref: '#/components/parameters/count'
2572 description: successful operation
2584 $ref: '#/components/schemas/Abuse'
2588 summary: List abuses
2589 operationId: getAbuses
2599 description: only list the report with this id
2602 - name: predefinedReason
2604 description: predefined reason the listed reports should contain
2606 $ref: '#/components/schemas/PredefinedAbuseReasons'
2609 description: plain search that will match with video titles, reporter names and more
2615 $ref: '#/components/schemas/AbuseStateSet'
2616 - name: searchReporter
2618 description: only list reports of a specific reporter
2621 - name: searchReportee
2622 description: only list reports of a specific reportee
2628 description: only list reports of a specific video
2631 - name: searchVideoChannel
2633 description: only list reports of a specific video channel
2638 description: only list deleted or blocklisted videos
2646 description: only list account, comment or video reports
2653 - $ref: '#/components/parameters/start'
2654 - $ref: '#/components/parameters/count'
2655 - $ref: '#/components/parameters/abusesSort'
2658 description: successful operation
2670 $ref: '#/components/schemas/Abuse'
2672 summary: Report an abuse
2685 description: Reason why the user reports this video
2690 $ref: '#/components/schemas/PredefinedAbuseReasons'
2695 description: Video id to report
2697 - $ref: '#/components/schemas/Video/properties/id'
2701 description: Timestamp in the video that marks the beginning of the report
2706 description: Timestamp in the video that marks the ending of the report
2712 description: Comment id to report
2714 - $ref: '#/components/schemas/VideoComment/properties/id'
2719 description: Account id to report
2725 description: successful operation
2735 $ref: '#/components/schemas/id'
2737 description: incorrect request parameters
2739 '/abuses/{abuseId}':
2741 summary: Update an abuse
2749 - $ref: '#/components/parameters/abuseId'
2757 $ref: '#/components/schemas/AbuseStateSet'
2760 description: Update the report comment visible only to the moderation team
2765 description: successful operation
2767 description: abuse not found
2771 summary: Delete an abuse
2777 - $ref: '#/components/parameters/abuseId'
2780 description: successful operation
2782 description: block not found
2784 '/abuses/{abuseId}/messages':
2786 summary: List messages of an abuse
2792 - $ref: '#/components/parameters/abuseId'
2795 description: successful operation
2807 $ref: '#/components/schemas/AbuseMessage'
2809 summary: Add message to an abuse
2815 - $ref: '#/components/parameters/abuseId'
2824 description: Message to send
2832 description: successful operation
2834 description: incorrect request parameters
2836 '/abuses/{abuseId}/messages/{abuseMessageId}':
2838 summary: Delete an abuse message
2844 - $ref: '#/components/parameters/abuseId'
2845 - $ref: '#/components/parameters/abuseMessageId'
2848 description: successful operation
2850 '/videos/{id}/blacklist':
2852 summary: Block a video
2853 operationId: addVideoBlock
2861 - $ref: '#/components/parameters/idOrUUID'
2864 description: successful operation
2866 summary: Unblock a video by its id
2867 operationId: delVideoBlock
2875 - $ref: '#/components/parameters/idOrUUID'
2878 description: successful operation
2880 description: block not found
2886 summary: List video blocks
2887 operationId: getVideoBlocks
2896 list only blocks that match this type:
2900 - `2`: automatic block that needs review
2908 description: plain search that will match with video titles, and more
2911 - $ref: '#/components/parameters/start'
2912 - $ref: '#/components/parameters/count'
2913 - $ref: '#/components/parameters/blacklistsSort'
2916 description: successful operation
2928 $ref: '#/components/schemas/VideoBlacklist'
2930 /videos/{id}/captions:
2932 summary: List captions of a video
2933 operationId: getVideoCaptions
2937 - $ref: '#/components/parameters/idOrUUID'
2940 description: successful operation
2952 $ref: '#/components/schemas/VideoCaption'
2954 /videos/{id}/captions/{captionLanguage}:
2956 summary: Add or replace a video caption
2957 operationId: addVideoCaption
2964 - $ref: '#/components/parameters/idOrUUID'
2965 - $ref: '#/components/parameters/captionLanguage'
2968 multipart/form-data:
2973 description: The file to upload.
2978 contentType: text/vtt, application/x-subrip, text/plain
2981 description: successful operation
2983 description: video or language not found
2985 summary: Delete a video caption
2986 operationId: delVideoCaption
2993 - $ref: '#/components/parameters/idOrUUID'
2994 - $ref: '#/components/parameters/captionLanguage'
2997 description: successful operation
2999 description: video or language or caption for that language not found
3003 summary: List video channels
3004 operationId: getVideoChannels
3008 - $ref: '#/components/parameters/start'
3009 - $ref: '#/components/parameters/count'
3010 - $ref: '#/components/parameters/sort'
3013 description: successful operation
3017 $ref: '#/components/schemas/VideoChannelList'
3019 summary: Create a video channel
3020 operationId: addVideoChannel
3027 description: successful operation
3037 $ref: '#/components/schemas/id'
3042 $ref: '#/components/schemas/VideoChannelCreate'
3044 '/video-channels/{channelHandle}':
3046 summary: Get a video channel
3047 operationId: getVideoChannel
3051 - $ref: '#/components/parameters/channelHandle'
3054 description: successful operation
3058 $ref: '#/components/schemas/VideoChannel'
3060 summary: Update a video channel
3061 operationId: putVideoChannel
3067 - $ref: '#/components/parameters/channelHandle'
3070 description: successful operation
3075 $ref: '#/components/schemas/VideoChannelUpdate'
3077 summary: Delete a video channel
3078 operationId: delVideoChannel
3084 - $ref: '#/components/parameters/channelHandle'
3087 description: successful operation
3089 '/video-channels/{channelHandle}/videos':
3091 summary: List videos of a video channel
3092 operationId: getVideoChannelVideos
3097 - $ref: '#/components/parameters/channelHandle'
3098 - $ref: '#/components/parameters/categoryOneOf'
3099 - $ref: '#/components/parameters/isLive'
3100 - $ref: '#/components/parameters/tagsOneOf'
3101 - $ref: '#/components/parameters/tagsAllOf'
3102 - $ref: '#/components/parameters/licenceOneOf'
3103 - $ref: '#/components/parameters/languageOneOf'
3104 - $ref: '#/components/parameters/nsfw'
3105 - $ref: '#/components/parameters/isLocal'
3106 - $ref: '#/components/parameters/include'
3107 - $ref: '#/components/parameters/privacyOneOf'
3108 - $ref: '#/components/parameters/hasHLSFiles'
3109 - $ref: '#/components/parameters/hasWebtorrentFiles'
3110 - $ref: '#/components/parameters/skipCount'
3111 - $ref: '#/components/parameters/start'
3112 - $ref: '#/components/parameters/count'
3113 - $ref: '#/components/parameters/videosSort'
3116 description: successful operation
3120 $ref: '#/components/schemas/VideoListResponse'
3122 '/video-channels/{channelHandle}/followers':
3126 summary: 'List followers of a video channel'
3129 operationId: getVideoChannelFollowers
3131 - $ref: '#/components/parameters/channelHandle'
3132 - $ref: '#/components/parameters/start'
3133 - $ref: '#/components/parameters/count'
3134 - $ref: '#/components/parameters/followersSort'
3135 - $ref: '#/components/parameters/search'
3138 description: successful operation
3150 $ref: '#/components/schemas/Follow'
3152 '/video-channels/{channelHandle}/avatar/pick':
3154 summary: Update channel avatar
3160 - $ref: '#/components/parameters/channelHandle'
3163 description: successful operation
3172 $ref: '#/components/schemas/ActorImage'
3174 description: image file too large
3176 X-File-Maximum-Size:
3180 description: Maximum file size for the avatar
3183 multipart/form-data:
3188 description: The file to upload.
3193 contentType: image/png, image/jpeg
3195 '/video-channels/{channelHandle}/avatar':
3197 summary: Delete channel avatar
3203 - $ref: '#/components/parameters/channelHandle'
3206 description: successful operation
3208 '/video-channels/{channelHandle}/banner/pick':
3210 summary: Update channel banner
3216 - $ref: '#/components/parameters/channelHandle'
3219 description: successful operation
3228 $ref: '#/components/schemas/ActorImage'
3230 description: image file too large
3232 X-File-Maximum-Size:
3236 description: Maximum file size for the banner
3239 multipart/form-data:
3244 description: The file to upload.
3249 contentType: image/png, image/jpeg
3251 '/video-channels/{channelHandle}/banner':
3253 summary: Delete channel banner
3259 - $ref: '#/components/parameters/channelHandle'
3262 description: successful operation
3264 /video-playlists/privacies:
3266 summary: List available playlist privacy policies
3267 operationId: getPlaylistPrivacyPolicies
3272 description: successful operation
3281 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
3285 summary: List video playlists
3286 operationId: getPlaylists
3290 - $ref: '#/components/parameters/start'
3291 - $ref: '#/components/parameters/count'
3292 - $ref: '#/components/parameters/sort'
3295 description: successful operation
3307 $ref: '#/components/schemas/VideoPlaylist'
3309 summary: Create a video playlist
3310 description: If the video playlist is set as public, `videoChannelId` is mandatory.
3311 operationId: addPlaylist
3318 description: successful operation
3328 $ref: '#/components/schemas/VideoPlaylist/properties/id'
3330 $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
3332 $ref: '#/components/schemas/VideoPlaylist/properties/shortUUID'
3335 multipart/form-data:
3340 description: Video playlist display name
3345 description: Video playlist thumbnail file
3349 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3351 description: Video playlist description
3357 - $ref: '#/components/schemas/id'
3358 description: Video channel in which the playlist will be published
3363 contentType: image/jpeg
3365 /video-playlists/{playlistId}:
3367 summary: Get a video playlist
3371 - $ref: '#/components/parameters/playlistId'
3374 description: successful operation
3378 $ref: '#/components/schemas/VideoPlaylist'
3380 summary: Update a video playlist
3381 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
3388 description: successful operation
3390 - $ref: '#/components/parameters/playlistId'
3393 multipart/form-data:
3398 description: Video playlist display name
3403 description: Video playlist thumbnail file
3407 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3409 description: Video playlist description
3413 - $ref: '#/components/schemas/id'
3414 description: Video channel in which the playlist will be published
3417 contentType: image/jpeg
3419 summary: Delete a video playlist
3425 - $ref: '#/components/parameters/playlistId'
3428 description: successful operation
3430 /video-playlists/{playlistId}/videos:
3432 summary: 'List videos of a playlist'
3433 operationId: getVideoPlaylistVideos
3438 - $ref: '#/components/parameters/playlistId'
3439 - $ref: '#/components/parameters/start'
3440 - $ref: '#/components/parameters/count'
3443 description: successful operation
3447 $ref: '#/components/schemas/VideoListResponse'
3449 summary: Add a video in a playlist
3450 operationId: addVideoPlaylistVideo
3457 - $ref: '#/components/parameters/playlistId'
3460 description: successful operation
3466 videoPlaylistElement:
3480 - $ref: '#/components/schemas/Video/properties/uuid'
3481 - $ref: '#/components/schemas/Video/properties/id'
3482 description: Video to add in the playlist
3486 description: Start the video at this specific timestamp
3490 description: Stop the video at this specific timestamp
3494 /video-playlists/{playlistId}/videos/reorder:
3496 summary: 'Reorder a playlist'
3497 operationId: reorderVideoPlaylist
3503 - $ref: '#/components/parameters/playlistId'
3506 description: successful operation
3515 description: 'Start position of the element to reorder'
3517 insertAfterPosition:
3519 description: 'New position for the block to reorder, to add the block before the first element'
3523 description: 'How many element from `startPosition` to reorder'
3527 - insertAfterPosition
3529 /video-playlists/{playlistId}/videos/{playlistElementId}:
3531 summary: Update a playlist element
3532 operationId: putVideoPlaylistVideo
3538 - $ref: '#/components/parameters/playlistId'
3539 - $ref: '#/components/parameters/playlistElementId'
3542 description: successful operation
3552 description: Start the video at this specific timestamp
3556 description: Stop the video at this specific timestamp
3558 summary: Delete an element from a playlist
3559 operationId: delVideoPlaylistVideo
3565 - $ref: '#/components/parameters/playlistId'
3566 - $ref: '#/components/parameters/playlistElementId'
3569 description: successful operation
3571 '/users/me/video-playlists/videos-exist':
3573 summary: Check video exists in my playlists
3582 description: The video ids to check
3586 $ref: '#/components/schemas/Video/properties/id'
3589 description: successful operation
3611 '/accounts/{name}/video-channels':
3613 summary: List video channels of an account
3618 - $ref: '#/components/parameters/name'
3621 description: include daily view statistics for the last 30 days and total views (only if authentified as the account user)
3624 - $ref: '#/components/parameters/start'
3625 - $ref: '#/components/parameters/count'
3626 - $ref: '#/components/parameters/sort'
3629 description: successful operation
3633 $ref: '#/components/schemas/VideoChannelList'
3635 '/accounts/{name}/ratings':
3637 summary: List ratings of an account
3643 - $ref: '#/components/parameters/name'
3644 - $ref: '#/components/parameters/start'
3645 - $ref: '#/components/parameters/count'
3646 - $ref: '#/components/parameters/sort'
3650 description: Optionally filter which ratings to retrieve
3658 description: successful operation
3664 $ref: '#/components/schemas/VideoRating'
3666 '/videos/{id}/comment-threads':
3668 summary: List threads of a video
3672 - $ref: '#/components/parameters/idOrUUID'
3673 - $ref: '#/components/parameters/start'
3674 - $ref: '#/components/parameters/count'
3675 - $ref: '#/components/parameters/commentsSort'
3678 description: successful operation
3682 $ref: '#/components/schemas/CommentThreadResponse'
3684 summary: Create a thread
3690 - $ref: '#/components/parameters/idOrUUID'
3693 description: successful operation
3697 $ref: '#/components/schemas/CommentThreadPostResponse'
3699 description: video does not exist
3708 - $ref: '#/components/schemas/VideoComment/properties/text'
3714 '/videos/{id}/comment-threads/{threadId}':
3716 summary: Get a thread
3720 - $ref: '#/components/parameters/idOrUUID'
3721 - $ref: '#/components/parameters/threadId'
3724 description: successful operation
3728 $ref: '#/components/schemas/VideoCommentThreadTree'
3730 '/videos/{id}/comments/{commentId}':
3732 summary: Reply to a thread of a video
3738 - $ref: '#/components/parameters/idOrUUID'
3739 - $ref: '#/components/parameters/commentId'
3742 description: successful operation
3746 $ref: '#/components/schemas/CommentThreadPostResponse'
3748 description: thread or video does not exist
3757 - $ref: '#/components/schemas/VideoComment/properties/text'
3763 summary: Delete a comment or a reply
3769 - $ref: '#/components/parameters/idOrUUID'
3770 - $ref: '#/components/parameters/commentId'
3773 description: successful operation
3775 description: cannot remove comment of another user
3777 description: comment or video does not exist
3779 description: comment is already deleted
3781 '/videos/{id}/rate':
3783 summary: Like/dislike a video
3789 - $ref: '#/components/parameters/idOrUUID'
3805 description: successful operation
3807 description: video does not exist
3811 summary: Delete video HLS files
3817 operationId: delVideoHLS
3819 - $ref: '#/components/parameters/idOrUUID'
3822 description: successful operation
3824 description: video does not exist
3825 '/videos/{id}/webtorrent':
3827 summary: Delete video WebTorrent files
3833 operationId: delVideoWebTorrent
3835 - $ref: '#/components/parameters/idOrUUID'
3838 description: successful operation
3840 description: video does not exist
3842 '/videos/{id}/transcoding':
3844 summary: Create a transcoding job
3850 operationId: createVideoTranscoding
3852 - $ref: '#/components/parameters/idOrUUID'
3868 description: successful operation
3870 description: video does not exist
3876 summary: Search videos
3877 operationId: searchVideos
3882 allowEmptyValue: false
3884 String to search. If the user can make a remote URI search, and the string is an URI then the
3885 PeerTube instance will fetch the remote object and add it to its database. Then,
3886 you can use the REST API to fetch the complete video information and interact with it.
3889 - $ref: '#/components/parameters/categoryOneOf'
3890 - $ref: '#/components/parameters/isLive'
3891 - $ref: '#/components/parameters/tagsOneOf'
3892 - $ref: '#/components/parameters/tagsAllOf'
3893 - $ref: '#/components/parameters/licenceOneOf'
3894 - $ref: '#/components/parameters/languageOneOf'
3895 - $ref: '#/components/parameters/nsfw'
3896 - $ref: '#/components/parameters/isLocal'
3897 - $ref: '#/components/parameters/include'
3898 - $ref: '#/components/parameters/privacyOneOf'
3899 - $ref: '#/components/parameters/hasHLSFiles'
3900 - $ref: '#/components/parameters/hasWebtorrentFiles'
3901 - $ref: '#/components/parameters/skipCount'
3902 - $ref: '#/components/parameters/start'
3903 - $ref: '#/components/parameters/count'
3904 - $ref: '#/components/parameters/searchTarget'
3905 - $ref: '#/components/parameters/videosSearchSort'
3908 description: Get videos that are published after this date
3914 description: Get videos that are published before this date
3918 - name: originallyPublishedStartDate
3920 description: Get videos that are originally published after this date
3924 - name: originallyPublishedEndDate
3926 description: Get videos that are originally published before this date
3932 description: Get videos that have this minimum duration
3937 description: Get videos that have this maximum duration
3941 'searchTarget === search-index':
3942 $ref: '#/components/callbacks/searchIndex'
3945 description: successful operation
3949 $ref: '#/components/schemas/VideoListResponse'
3951 description: search index unavailable
3953 /search/video-channels:
3957 summary: Search channels
3958 operationId: searchChannels
3964 String to search. If the user can make a remote URI search, and the string is an URI then the
3965 PeerTube instance will fetch the remote object and add it to its database. Then,
3966 you can use the REST API to fetch the complete channel information and interact with it.
3969 - $ref: '#/components/parameters/start'
3970 - $ref: '#/components/parameters/count'
3971 - $ref: '#/components/parameters/searchTarget'
3972 - $ref: '#/components/parameters/sort'
3974 'searchTarget === search-index':
3975 $ref: '#/components/callbacks/searchIndex'
3978 description: successful operation
3982 $ref: '#/components/schemas/VideoChannelList'
3984 description: search index unavailable
3986 /search/video-playlists:
3990 summary: Search playlists
3991 operationId: searchPlaylists
3997 String to search. If the user can make a remote URI search, and the string is an URI then the
3998 PeerTube instance will fetch the remote object and add it to its database. Then,
3999 you can use the REST API to fetch the complete playlist information and interact with it.
4002 - $ref: '#/components/parameters/start'
4003 - $ref: '#/components/parameters/count'
4004 - $ref: '#/components/parameters/searchTarget'
4005 - $ref: '#/components/parameters/sort'
4007 'searchTarget === search-index':
4008 $ref: '#/components/callbacks/searchIndex'
4011 description: successful operation
4023 $ref: '#/components/schemas/VideoPlaylist'
4025 description: search index unavailable
4032 summary: Get block status of accounts/hosts
4037 description: 'Check if these accounts are blocked'
4038 example: [ 'goofy@example.com', 'donald@example.com' ]
4046 description: 'Check if these hosts are blocked'
4047 example: [ 'example.com' ]
4054 description: successful operation
4058 $ref: '#/components/schemas/BlockStatus'
4060 /server/blocklist/accounts:
4064 summary: List account blocks
4069 - $ref: '#/components/parameters/start'
4070 - $ref: '#/components/parameters/count'
4071 - $ref: '#/components/parameters/sort'
4074 description: successful operation
4078 summary: Block an account
4090 example: chocobozzz@example.org
4091 description: account to block, in the form `username@domain`
4096 description: successful operation
4098 description: self-blocking forbidden
4100 '/server/blocklist/accounts/{accountName}':
4104 summary: Unblock an account by its handle
4112 description: account to unblock, in the form `username@domain`
4117 description: successful operation
4119 description: account or account block does not exist
4121 /server/blocklist/servers:
4125 summary: List server blocks
4130 - $ref: '#/components/parameters/start'
4131 - $ref: '#/components/parameters/count'
4132 - $ref: '#/components/parameters/sort'
4135 description: successful operation
4139 summary: Block a server
4152 description: server domain to block
4157 description: successful operation
4159 description: self-blocking forbidden
4161 '/server/blocklist/servers/{host}':
4165 summary: Unblock a server by its domain
4173 description: server domain to unblock
4179 description: successful operation
4181 description: account block does not exist
4183 /server/redundancy/{host}:
4186 - Instance Redundancy
4187 summary: Update a server redundancy policy
4195 description: server domain to mirror
4207 description: allow mirroring of the host's local videos
4212 description: successful operation
4214 description: server is not already known
4216 /server/redundancy/videos:
4220 summary: List videos being mirrored
4221 operationId: getMirroredVideos
4229 description: direction of the mirror
4235 - $ref: '#/components/parameters/start'
4236 - $ref: '#/components/parameters/count'
4237 - $ref: '#/components/parameters/videoRedundanciesSort'
4240 description: successful operation
4246 $ref: '#/components/schemas/VideoRedundancy'
4250 summary: Mirror a video
4251 operationId: putMirroredVideo
4262 $ref: '#/components/schemas/Video/properties/id'
4267 description: successful operation
4269 description: cannot mirror a local video
4271 description: video does not exist
4273 description: video is already mirrored
4275 /server/redundancy/videos/{redundancyId}:
4279 summary: Delete a mirror done on a video
4280 operationId: delMirroredVideo
4285 - name: redundancyId
4288 description: id of an existing redundancy on a video
4293 description: successful operation
4295 description: video redundancy not found
4297 '/feeds/video-comments.{format}':
4301 summary: List comments on videos
4302 operationId: getSyndicatedComments
4307 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4320 description: 'limit listing to a specific video'
4325 description: 'limit listing to a specific account'
4330 description: 'limit listing to a specific account'
4333 - name: videoChannelId
4335 description: 'limit listing to a specific video channel'
4338 - name: videoChannelName
4340 description: 'limit listing to a specific video channel'
4345 description: successful operation
4350 default: 'max-age=900' # 15 min cache
4354 $ref: '#/components/schemas/VideoCommentsForXML'
4357 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4358 application/rss+xml:
4360 $ref: '#/components/schemas/VideoCommentsForXML'
4363 externalValue: https://peertube2.cpy.re/feeds/video-comments.rss?filter=local
4366 $ref: '#/components/schemas/VideoCommentsForXML'
4369 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4370 application/atom+xml:
4372 $ref: '#/components/schemas/VideoCommentsForXML'
4375 externalValue: https://peertube2.cpy.re/feeds/video-comments.atom?filter=local
4381 externalValue: https://peertube2.cpy.re/feeds/video-comments.json?filter=local
4383 x-summary: field inconsistencies
4386 - videoId filter is mixed with a channel filter
4388 description: video, video channel or account not found
4390 description: accept header unsupported
4392 '/feeds/videos.{format}':
4396 summary: List videos
4397 operationId: getSyndicatedVideos
4402 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4415 description: 'limit listing to a specific account'
4420 description: 'limit listing to a specific account'
4423 - name: videoChannelId
4425 description: 'limit listing to a specific video channel'
4428 - name: videoChannelName
4430 description: 'limit listing to a specific video channel'
4433 - $ref: '#/components/parameters/sort'
4434 - $ref: '#/components/parameters/nsfw'
4435 - $ref: '#/components/parameters/isLocal'
4436 - $ref: '#/components/parameters/include'
4437 - $ref: '#/components/parameters/privacyOneOf'
4438 - $ref: '#/components/parameters/hasHLSFiles'
4439 - $ref: '#/components/parameters/hasWebtorrentFiles'
4442 description: successful operation
4447 default: 'max-age=900' # 15 min cache
4451 $ref: '#/components/schemas/VideosForXML'
4454 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4455 application/rss+xml:
4457 $ref: '#/components/schemas/VideosForXML'
4460 externalValue: https://peertube2.cpy.re/feeds/videos.rss?filter=local
4463 $ref: '#/components/schemas/VideosForXML'
4466 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4467 application/atom+xml:
4469 $ref: '#/components/schemas/VideosForXML'
4472 externalValue: https://peertube2.cpy.re/feeds/videos.atom?filter=local
4478 externalValue: https://peertube2.cpy.re/feeds/videos.json?filter=local
4480 description: video channel or account not found
4482 description: accept header unsupported
4484 '/feeds/subscriptions.{format}':
4489 summary: List videos of subscriptions tied to a token
4490 operationId: getSyndicatedSubscriptionVideos
4495 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4508 description: limit listing to a specific account
4514 description: private token allowing access
4518 - $ref: '#/components/parameters/sort'
4519 - $ref: '#/components/parameters/nsfw'
4520 - $ref: '#/components/parameters/isLocal'
4521 - $ref: '#/components/parameters/include'
4522 - $ref: '#/components/parameters/privacyOneOf'
4523 - $ref: '#/components/parameters/hasHLSFiles'
4524 - $ref: '#/components/parameters/hasWebtorrentFiles'
4527 description: successful operation
4532 default: 'max-age=900' # 15 min cache
4536 $ref: '#/components/schemas/VideosForXML'
4537 application/rss+xml:
4539 $ref: '#/components/schemas/VideosForXML'
4542 $ref: '#/components/schemas/VideosForXML'
4543 application/atom+xml:
4545 $ref: '#/components/schemas/VideosForXML'
4550 description: accept header unsupported
4556 summary: List plugins
4557 operationId: getPlugins
4570 - $ref: '#/components/parameters/start'
4571 - $ref: '#/components/parameters/count'
4572 - $ref: '#/components/parameters/sort'
4575 description: successful operation
4579 $ref: '#/components/schemas/PluginResponse'
4585 summary: List available plugins
4586 operationId: getAvailablePlugins
4599 - name: currentPeerTubeEngine
4603 - $ref: '#/components/parameters/start'
4604 - $ref: '#/components/parameters/count'
4605 - $ref: '#/components/parameters/sort'
4608 description: successful operation
4612 $ref: '#/components/schemas/PluginResponse'
4614 description: plugin index unavailable
4620 summary: Install a plugin
4621 operationId: addPlugin
4634 example: peertube-plugin-auth-ldap
4637 additionalProperties: false
4644 additionalProperties: false
4647 description: successful operation
4649 description: should have either `npmName` or `path` set
4655 summary: Update a plugin
4656 operationId: updatePlugin
4669 example: peertube-plugin-auth-ldap
4672 additionalProperties: false
4679 additionalProperties: false
4682 description: successful operation
4684 description: should have either `npmName` or `path` set
4686 description: existing plugin not found
4692 summary: Uninstall a plugin
4693 operationId: uninstallPlugin
4705 description: name of the plugin/theme in its package.json
4706 example: peertube-plugin-auth-ldap
4711 description: successful operation
4713 description: existing plugin not found
4719 summary: Get a plugin
4720 operationId: getPlugin
4725 - $ref: '#/components/parameters/npmName'
4728 description: successful operation
4732 $ref: '#/components/schemas/Plugin'
4734 description: plugin not found
4736 /plugins/{npmName}/settings:
4740 summary: Set a plugin's settings
4745 - $ref: '#/components/parameters/npmName'
4754 additionalProperties: true
4757 description: successful operation
4759 description: plugin not found
4761 /plugins/{npmName}/public-settings:
4765 summary: Get a plugin's public settings
4767 - $ref: '#/components/parameters/npmName'
4770 description: successful operation
4775 additionalProperties: true
4777 description: plugin not found
4779 /plugins/{npmName}/registered-settings:
4783 summary: Get a plugin's registered settings
4788 - $ref: '#/components/parameters/npmName'
4791 description: successful operation
4796 additionalProperties: true
4798 description: plugin not found
4801 - url: 'https://peertube2.cpy.re/api/v1'
4802 description: Live Test Server (live data - latest nightly version)
4803 - url: 'https://peertube3.cpy.re/api/v1'
4804 description: Live Test Server (live data - latest RC version)
4805 - url: 'https://peertube.cpy.re/api/v1'
4806 description: Live Test Server (live data - stable version)
4813 description: Offset used to paginate results
4821 description: "Number of items to return"
4831 description: Sort column
4839 description: Plain text search, applied to various parts of the model depending on endpoint
4847 If the administrator enabled search index support, you can override the default search target.
4850 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
4851 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
4852 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
4853 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
4854 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
4855 * 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
4856 the data from the origin instance API
4879 Sort videos by criteria (prefixing with `-` means `DESC` order):
4880 * `hot` - Adaptation of Reddit "hot" algorithm taking into account video views, likes, dislikes and comments and publication date
4881 * `best` - Same than `hot`, but also takes into account user video history
4882 * `trending` - Sort videos by recent views ("recent" is defined by the admin)
4883 * `views` - Sort videos using their `views` counter
4884 * `publishedAt` - Sort by video publication date (when it became publicly available)
4890 Sort videos by criteria (prefixing with `-` means `DESC` order):
4905 description: Sort comments by criteria
4915 description: Sort blocklists by criteria
4931 description: Plain text search that will match with user usernames or emails
4938 description: Filter results down to (un)banned users
4945 description: Sort users by criteria
4956 description: Sort abuses by criteria
4963 videoRedundanciesSort:
4967 description: Sort abuses by criteria
4976 description: Sort followers by criteria
4985 description: The username or handle of the account
4988 example: chocobozzz | chocobozzz@example.org
4993 description: Entity id
4995 $ref: '#/components/schemas/id'
5000 description: The object id, uuid or short uuid
5003 - $ref: '#/components/schemas/id'
5004 - $ref: '#/components/schemas/UUIDv4'
5005 - $ref: '#/components/schemas/shortUUID'
5010 description: Playlist id
5012 $ref: '#/components/schemas/VideoPlaylist/properties/id'
5014 name: playlistElementId
5017 description: Playlist element id
5019 $ref: '#/components/schemas/id'
5024 description: Abuse id
5026 $ref: '#/components/schemas/Abuse/properties/id'
5028 name: abuseMessageId
5031 description: Abuse message id
5033 $ref: '#/components/schemas/AbuseMessage/properties/id'
5035 name: captionLanguage
5038 description: The caption language
5040 $ref: '#/components/schemas/VideoLanguageSet'
5045 description: The video channel handle
5048 example: my_username | my_username@example.com
5050 name: subscriptionHandle
5053 description: The subscription handle
5056 example: my_username | my_username@example.com
5061 description: The thread id (root comment id)
5068 description: The comment id
5070 $ref: '#/components/schemas/VideoComment/properties/id'
5075 description: whether or not the video is a live
5082 description: category id of the video (see [/videos/categories](#operation/getCategories))
5085 - $ref: '#/components/schemas/VideoCategorySet'
5088 $ref: '#/components/schemas/VideoCategorySet'
5095 description: tag(s) of the video
5109 description: tag(s) of the video, where all should be present in the video
5122 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
5125 - $ref: '#/components/schemas/VideoLanguageSet'
5128 $ref: '#/components/schemas/VideoLanguageSet'
5135 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5138 - $ref: '#/components/schemas/VideoLicenceSet'
5141 $ref: '#/components/schemas/VideoLicenceSet'
5148 description: if you don't need the `total` in the response
5159 description: whether to include nsfw videos, if any
5171 description: '**PeerTube >= 4.0** Display only local or remote videos'
5178 description: '**PeerTube >= 4.0** Display only videos that have HLS files'
5180 name: hasWebtorrentFiles
5185 description: '**PeerTube >= 4.0** Display only videos that have WebTorrent files'
5191 $ref: '#/components/schemas/VideoPrivacySet'
5192 description: '**PeerTube >= 4.0** Display only videos in this specific privacy/privacies'
5206 **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator)
5210 - `1` NOT_PUBLISHED_STATE
5221 description: list of uris to check if each is part of the user subscriptions
5231 description: name of the plugin/theme on npmjs.com or in its package.json
5234 example: peertube-plugin-auth-ldap
5239 description: job type
5243 - activitypub-follow
5244 - activitypub-http-broadcast
5245 - activitypub-http-fetcher
5246 - activitypub-http-unicast
5251 - videos-views-stats
5252 - activitypub-refresher
5277 Authenticating via OAuth requires the following steps:
5278 - Have an activated account
5279 - [Generate] an access token for that account at `/api/v1/users/token`.
5280 - Make requests with the *Authorization: Bearer <token\>* header
5281 - Profit, depending on the role assigned to the account
5283 Note that the __access token is valid for 1 day__ and is given
5284 along with a __refresh token valid for 2 weeks__.
5286 [Generate]: https://docs.joinpeertube.org/api-rest-getting-started
5290 tokenUrl: /api/v1/users/token
5293 moderator: Moderator scope
5296 # Reusable core properties
5304 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
5305 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
5310 description: translation of a uuid v4 with a bigger alphabet to have a shorter uuid
5311 example: 2y84q2MQUMWPbiEcxNXMgC
5314 description: immutable name of the user, used to find or mention its actor
5316 pattern: '/^[a-z0-9._]+$/'
5321 description: immutable name of the channel, used to interact with its actor
5322 example: framasoft_videos
5323 pattern: '/^[a-zA-Z0-9\\-_.:]+$/'
5334 description: category id of the video (see [/videos/categories](#operation/getCategories))
5336 VideoConstantNumber-Category:
5339 $ref: '#/components/schemas/VideoCategorySet'
5342 example: Science & Technology
5346 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5348 VideoConstantNumber-Licence:
5351 $ref: '#/components/schemas/VideoLicenceSet'
5354 example: Attribution - Share Alike
5358 description: language id of the video (see [/videos/languages](#operation/getLanguages))
5360 VideoConstantString-Language:
5363 $ref: '#/components/schemas/VideoLanguageSet'
5368 VideoPlaylistPrivacySet:
5374 description: Video playlist privacy policy (see [/video-playlists/privacies])
5375 VideoPlaylistPrivacyConstant:
5378 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
5382 VideoPlaylistTypeSet:
5387 description: The video playlist type (Regular = `1`, Watch Later = `2`)
5388 VideoPlaylistTypeConstant:
5391 $ref: '#/components/schemas/VideoPlaylistTypeSet'
5402 description: privacy id of the video (see [/videos/privacies](#operation/getPrivacyPolicies))
5403 VideoPrivacyConstant:
5406 $ref: '#/components/schemas/VideoPrivacySet'
5414 additionalProperties:
5415 x-additionalPropertiesName: account
5424 additionalProperties:
5425 x-additionalPropertiesName: host
5446 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
5453 description: 'Admin flags for the user (None = `0`, Bypass video blocklist = `1`)'
5456 LiveVideoLatencyMode:
5462 description: 'The live latency mode (Default = `1`, High latency = `2`, Small Latency = `3`)'
5483 - `4`: Waiting for live stream
5485 - `6`: To move to an external storage (object storage...)
5486 - `7`: Transcoding failed
5487 - `8`: Moving to an external storage failed
5488 - `9`: To edit using studio edition feature
5498 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
5502 $ref: '#/components/schemas/AbuseStateSet'
5505 AbusePredefinedReasons:
5518 example: [spamOrMisleading]
5523 Video resolution (`0`, `240`, `360`, `720`, `1080`, `1440` or `2160`)
5525 `0` is used as a special value for stillimage videos dedicated to audio, a.k.a. audio-only videos.
5527 VideoResolutionConstant:
5528 description: resolutions and their labels for the video
5531 $ref: '#/components/schemas/VideoResolutionSet'
5535 VideoScheduledUpdate:
5538 $ref: '#/components/schemas/VideoPrivacySet'
5542 description: When to update the video
5562 $ref: '#/components/schemas/ActorImage'
5563 VideoChannelSummary:
5566 $ref: '#/components/schemas/id'
5580 $ref: '#/components/schemas/ActorImage'
5594 - $ref: '#/components/schemas/Video'
5601 description: magnet URI allowing to resolve the video via BitTorrent without a metainfo file
5602 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
5604 $ref: '#/components/schemas/VideoResolutionConstant'
5607 description: Video file size in bytes
5610 description: Direct URL of the torrent file
5614 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
5618 description: Direct URL of the video
5622 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
5626 description: Frames per second of the video file
5630 description: URL dereferencing the output of ffprobe on the file
5631 VideoStreamingPlaylists:
5636 $ref: '#/components/schemas/id'
5644 - $ref: '#/components/schemas/VideoStreamingPlaylists-HLS'
5645 VideoStreamingPlaylists-HLS:
5656 Video files associated to this playlist.
5658 The difference with the root `files` property is that these files are fragmented, so they can be used in this streaming playlist (HLS, etc.)
5660 $ref: '#/components/schemas/VideoFile'
5672 $ref: '#/components/schemas/Video/properties/id'
5674 $ref: '#/components/schemas/Video/properties/uuid'
5676 $ref: '#/components/schemas/Video/properties/name'
5680 description: object id for the video
5682 - $ref: '#/components/schemas/id'
5684 description: universal identifier for the video, that can be used across instances
5686 - $ref: '#/components/schemas/UUIDv4'
5689 - $ref: '#/components/schemas/shortUUID'
5695 example: 2017-10-01T10:52:46.396Z
5696 description: time at which the video object was first drafted
5700 example: 2018-10-01T10:52:46.396Z
5701 description: time at which the video was marked as ready for playback (with restrictions depending on `privacy`). Usually set after a `state` evolution.
5705 example: 2021-05-04T08:01:01.502Z
5706 description: last time the video's metadata was modified
5707 originallyPublishedAt:
5710 example: 2010-10-01T10:52:46.396Z
5711 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
5714 - $ref: '#/components/schemas/VideoConstantNumber-Category'
5715 description: category in which the video is classified
5718 - $ref: '#/components/schemas/VideoConstantNumber-Licence'
5719 description: licence under which the video is distributed
5722 - $ref: '#/components/schemas/VideoConstantString-Language'
5723 description: main language used in the video
5726 - $ref: '#/components/schemas/VideoPrivacyConstant'
5727 description: privacy policy used to distribute the video
5731 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n
5732 **Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\r\n*A decentralized video hosting network, based on fr...
5736 truncated description of the video, written in Markdown.
5737 Resolve `descriptionPath` to get the full description of maximum `10000` characters.
5742 description: duration of the video in seconds
5747 description: title of the video
5748 example: What is PeerTube?
5753 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
5756 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
5759 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
5776 - $ref: '#/components/schemas/VideoStateConstant'
5777 description: represents the internal state of the video processing within the PeerTube instance
5781 - $ref: '#/components/schemas/VideoScheduledUpdate'
5789 $ref: '#/components/schemas/AccountSummary'
5791 $ref: '#/components/schemas/VideoChannelSummary'
5800 - $ref: '#/components/schemas/Video'
5805 description: If the video is a live, you have the amount of current viewers
5808 example: /api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/description
5809 description: path at which to get the full description of maximum `10000` characters
5812 description: A text tell the audience how to support the video creator
5813 example: Please support our work on https://soutenir.framasoft.org/en/ <3
5817 $ref: '#/components/schemas/VideoChannel'
5819 $ref: '#/components/schemas/Account'
5821 example: [flowers, gardening]
5839 - https://peertube2.cpy.re/tracker/announce
5840 - wss://peertube2.cpy.re/tracker/socket
5844 $ref: '#/components/schemas/VideoFile'
5846 WebTorrent/raw video files. If WebTorrent is disabled on the server:
5848 - field will be empty
5849 - video files will be found in `streamingPlaylists[].files` field
5853 $ref: '#/components/schemas/VideoStreamingPlaylists'
5855 HLS playlists/manifest files. If HLS is disabled on the server:
5857 - field will be empty
5858 - video files will be found in `files` field
5859 FileRedundancyInformation:
5862 $ref: '#/components/schemas/id'
5887 $ref: '#/components/schemas/id'
5894 $ref: '#/components/schemas/UUIDv4'
5901 $ref: '#/components/schemas/FileRedundancyInformation'
5905 $ref: '#/components/schemas/FileRedundancyInformation'
5906 VideoImportStateConstant:
5914 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
5921 additionalProperties: false
5925 $ref: '#/components/schemas/VideoImport/properties/targetUrl'
5926 required: [targetUrl]
5929 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
5930 required: [magnetUri]
5933 $ref: '#/components/schemas/VideoImport/properties/torrentfile'
5934 required: [torrentfile]
5935 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5944 - $ref: '#/components/schemas/id'
5948 description: remote URL where to find the import's source video
5949 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
5953 description: magnet URI allowing to resolve the import's source video
5954 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
5959 description: Torrent file containing only the video file
5966 - $ref: '#/components/schemas/VideoImportStateConstant'
5982 - $ref: '#/components/schemas/Video'
5992 $ref: '#/components/schemas/VideoImport'
5996 $ref: '#/components/schemas/id'
5999 example: The video is a spam
6003 $ref: '#/components/schemas/AbusePredefinedReasons'
6005 $ref: '#/components/schemas/Account'
6007 $ref: '#/components/schemas/AbuseStateConstant'
6010 example: Decided to ban the server since it spams us regularly
6014 $ref: '#/components/schemas/VideoInfo'
6021 $ref: '#/components/schemas/id'
6032 $ref: '#/components/schemas/AccountSummary'
6036 $ref: '#/components/schemas/id'
6038 $ref: '#/components/schemas/Video/properties/id'
6050 $ref: '#/components/schemas/UUIDv4'
6068 $ref: '#/components/schemas/id'
6070 $ref: '#/components/schemas/UUIDv4'
6073 - $ref: '#/components/schemas/shortUUID'
6096 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
6098 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
6100 $ref: '#/components/schemas/AccountSummary'
6102 $ref: '#/components/schemas/VideoChannelSummary'
6106 $ref: '#/components/schemas/id'
6113 description: Text of the comment
6115 example: This video is wonderful!
6117 $ref: '#/components/schemas/id'
6121 - $ref: '#/components/schemas/id'
6123 $ref: '#/components/schemas/Video/properties/id'
6138 totalRepliesFromVideoAuthor:
6145 $ref: '#/components/schemas/Account'
6146 VideoCommentThreadTree:
6149 $ref: '#/components/schemas/VideoComment'
6153 $ref: '#/components/schemas/VideoCommentThreadTree'
6157 $ref: '#/components/schemas/VideoConstantString-Language'
6179 $ref: '#/components/schemas/id'
6190 $ref: '#/components/schemas/ActorImage'
6194 $ref: '#/components/schemas/id'
6199 description: immutable name of the actor, used to find or mention it
6201 - $ref: '#/components/schemas/username'
6205 description: server on which the actor is resident
6206 hostRedundancyAllowed:
6208 description: whether this actor's host allows redundancy of its videos
6212 description: number of actors subscribed to by this actor, as seen by this instance
6216 description: number of followers of this actor, as seen by this instance
6225 - $ref: '#/components/schemas/Actor'
6228 description: object id for the user tied to this account
6230 - $ref: '#/components/schemas/User/properties/id'
6233 description: editable name of the account, displayed in its representations
6238 description: text or bio displayed on the account's profile
6246 description: timestamp within the video, in seconds
6253 Event since last viewing call:
6254 * `seek` - If the user seeked the video
6277 VideoStatsRetention:
6289 VideoStatsTimeserie:
6366 allowedForCurrentIP:
6368 requiresEmailVerification:
6386 $ref: '#/components/schemas/VideoResolutionSet'
6471 example: 16810141515
6580 requiresEmailVerification:
6595 description: Settings that apply to new users, if registration is enabled
6599 example: 16810141515
6605 description: Settings pertaining to transcoding jobs
6609 allowAdditionalExtensions:
6611 description: Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
6614 description: If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
6617 description: Amount of threads used by ffmpeg for 1 transcoding job
6620 description: Amount of transcoding jobs to execute in parallel
6626 New profiles can be added by plugins ; available in core PeerTube: 'default'.
6629 description: Resolutions to transcode _new videos_ to
6651 description: WebTorrent-specific settings
6657 description: HLS-specific settings
6707 $ref: '#/components/schemas/id'
6709 $ref: '#/components/schemas/Actor'
6711 $ref: '#/components/schemas/Actor'
6714 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
6727 PredefinedAbuseReasons:
6728 description: Reason categories that help triage reports
6746 $ref: '#/components/schemas/id'
6758 - activitypub-http-unicast
6759 - activitypub-http-broadcast
6760 - activitypub-http-fetcher
6761 - activitypub-follow
6766 - videos-views-stats
6767 - activitypub-refresher
6771 additionalProperties: true
6774 additionalProperties: true
6790 $ref: '#/components/schemas/id'
6795 $ref: '#/components/schemas/id'
6796 VideoUploadRequestCommon:
6799 description: Video name
6801 example: What is PeerTube?
6805 description: Channel id that will contain this video
6810 $ref: '#/components/schemas/VideoPrivacySet'
6812 $ref: '#/components/schemas/VideoCategorySet'
6814 $ref: '#/components/schemas/VideoLicenceSet'
6816 $ref: '#/components/schemas/VideoLanguageSet'
6818 description: Video description
6821 **[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)**
6823 description: Whether or not we wait transcoding before publish the video
6826 description: A text tell the audience how to support the video creator
6827 example: Please support our work on https://soutenir.framasoft.org/en/ <3
6830 description: Whether or not this video contains sensitive content
6833 description: Video tags (maximum 5 tags each between 2 and 30 characters)
6846 description: Enable or disable comments for this video
6849 description: Enable or disable downloading for this video
6851 originallyPublishedAt:
6852 description: Date when the content was originally published
6856 $ref: '#/components/schemas/VideoScheduledUpdate'
6858 description: Video thumbnail file
6862 description: Video preview file
6868 VideoUploadRequestLegacy:
6870 - $ref: '#/components/schemas/VideoUploadRequestCommon'
6876 description: Video file
6879 VideoUploadRequestResumable:
6881 - $ref: '#/components/schemas/VideoUploadRequestCommon'
6887 description: Video filename including extension
6890 example: what_is_peertube.mp4
6892 description: Video thumbnail file
6896 description: Video preview file
6899 VideoUploadResponse:
6905 $ref: '#/components/schemas/Video/properties/id'
6907 $ref: '#/components/schemas/Video/properties/uuid'
6909 $ref: '#/components/schemas/Video/properties/shortUUID'
6910 CommentThreadResponse:
6919 $ref: '#/components/schemas/VideoComment'
6920 CommentThreadPostResponse:
6923 $ref: '#/components/schemas/VideoComment'
6933 $ref: '#/components/schemas/Video'
6937 $ref: '#/components/schemas/Account'
6940 description: Automatically start playing the upcoming video after the currently playing video
6941 autoPlayNextVideoPlaylist:
6943 description: Automatically start playing the video on the playlist after the currently playing video
6946 description: Automatically start playing the video on the watch page
6956 description: The user email
6959 description: Has the user confirmed their email address?
6962 - $ref: '#/components/schemas/id'
6966 description: Auth plugin to use to authenticate the user
6970 noInstanceConfigWarningModal:
6972 noAccountSetupWarningModal:
6977 $ref: '#/components/schemas/NSFWPolicy'
6979 $ref: '#/components/schemas/UserRole'
6988 description: Theme enabled by this user
6990 $ref: '#/components/schemas/username'
6994 $ref: '#/components/schemas/VideoChannel'
6997 description: The user video quota in bytes
7001 description: The user daily video quota in bytes
7005 description: Enable P2P in the player
7008 - $ref: '#/components/schemas/User'
7010 # optionally present fields: they require WITH_STATS scope
7013 description: Count of videos published
7016 description: Count of reports/abuses of which the user is a target
7017 abusesAcceptedCount:
7019 description: Count of reports/abuses created by the user and accepted/acted upon by the moderation team
7022 description: Count of reports/abuses created by the user
7025 description: Count of comments published
7029 $ref: '#/components/schemas/username'
7031 $ref: '#/components/schemas/password'
7035 description: The user email
7038 description: The user video quota in bytes
7042 description: The user daily video quota in bytes
7045 $ref: '#/components/schemas/usernameChannel'
7047 $ref: '#/components/schemas/UserRole'
7049 $ref: '#/components/schemas/UserAdminFlags'
7060 description: The updated email of the user
7062 - $ref: '#/components/schemas/User/properties/email'
7065 description: Set the email as verified
7068 description: The updated video quota of the user in bytes
7071 description: The updated daily video quota of the user in bytes
7075 description: The auth plugin to use to authenticate the user
7076 example: 'peertube-plugin-auth-saml2'
7078 $ref: '#/components/schemas/UserRole'
7080 $ref: '#/components/schemas/UserAdminFlags'
7082 $ref: '#/components/schemas/password'
7084 # see shared/models/users/user-update-me.model.ts:
7087 $ref: '#/components/schemas/password'
7089 $ref: '#/components/schemas/password'
7091 description: new email used for login and service communications
7093 - $ref: '#/components/schemas/User/properties/email'
7096 description: new name of the user in its representations
7101 description: new NSFW display policy
7108 description: whether to enable P2P in the player or not
7111 description: new preference regarding playing videos automatically
7114 description: new preference regarding playing following videos automatically
7115 autoPlayNextVideoPlaylist:
7117 description: new preference regarding playing following playlist videos automatically
7118 videosHistoryEnabled:
7120 description: whether to keep track of watched history or not
7125 description: list of languages to filter videos down to
7128 noInstanceConfigWarningModal:
7130 noAccountSetupWarningModal:
7137 $ref: '#/components/schemas/id'
7144 description: Rating of the video
7151 $ref: '#/components/schemas/Video'
7158 description: Rating of the video
7165 description: immutable name of the user, used to find or mention its actor
7167 - $ref: '#/components/schemas/username'
7169 $ref: '#/components/schemas/password'
7173 description: email of the user, used for login or service communications
7176 description: editable name of the user, displayed in its representations
7181 description: channel base information used to create the first channel of the user
7184 $ref: '#/components/schemas/usernameChannel'
7196 pattern: /^[a-z0-9]$/
7199 example: v1ikx5hnfop4mdpnci8nsqh93c45rldf
7202 pattern: /^[a-zA-Z0-9]$/
7205 example: AjWiOapPltI6EnsWQwlFarRtLh4u8tDt
7206 OAuthToken-password:
7208 - $ref: '#/components/schemas/OAuthClient'
7218 $ref: '#/components/schemas/User/properties/username'
7220 $ref: '#/components/schemas/password'
7227 OAuthToken-refresh_token:
7229 - $ref: '#/components/schemas/OAuthClient'
7240 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
7249 - $ref: '#/components/schemas/Actor'
7254 description: editable name of the channel, displayed in its representations
7255 example: Videos of Framasoft
7260 example: Videos made with <3 by Framasoft
7265 description: text shown by default on all videos of this channel, to tell the audience how to support it
7266 example: Please support our work on https://soutenir.framasoft.org/en/ <3
7279 $ref: '#/components/schemas/ActorImage'
7288 $ref: '#/components/schemas/UUIDv4'
7291 - $ref: '#/components/schemas/VideoChannel'
7294 description: username of the channel to create
7296 - $ref: '#/components/schemas/usernameChannel'
7302 - $ref: '#/components/schemas/VideoChannel'
7304 bulkVideosSupportUpdate:
7306 description: Update the support field for all videos of this channel
7316 - $ref: '#/components/schemas/VideoChannel'
7317 - $ref: '#/components/schemas/Actor'
7322 name: 'media:peerLink'
7331 - application/x-bittorrent
7337 name: 'media:content'
7368 VideoCommentsForXML:
7403 description: video watch page URL
7406 description: video canonical URL
7410 description: video publication date
7413 description: video description
7416 description: video description
7419 description: publisher user name
7422 description: video category (MRSS)
7425 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
7440 description: video embed path, relative to the canonical URL domain (MRSS)
7449 description: video watch path, relative to the canonical URL domain (MRSS)
7470 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
7471 'media:description':
7478 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
7481 description: main streamable file for the video
7491 - application/x-bittorrent
7500 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)
7503 - $ref: '#/components/schemas/MRSSPeerLink'
7504 - $ref: '#/components/schemas/MRSSGroupContent'
7505 NotificationSettingValue:
7522 $ref: '#/components/schemas/id'
7526 Notification type, following the `UserNotificationType` enum:
7528 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
7530 - `2` NEW_COMMENT_ON_MY_VIDEO
7532 - `3` NEW_ABUSE_FOR_MODERATORS
7534 - `4` BLACKLIST_ON_MY_VIDEO
7536 - `5` UNBLACKLIST_ON_MY_VIDEO
7538 - `6` MY_VIDEO_PUBLISHED
7540 - `7` MY_VIDEO_IMPORT_SUCCESS
7542 - `8` MY_VIDEO_IMPORT_ERROR
7544 - `9` NEW_USER_REGISTRATION
7548 - `11` COMMENT_MENTION
7550 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
7552 - `13` NEW_INSTANCE_FOLLOWER
7554 - `14` AUTO_INSTANCE_FOLLOWING
7556 - `15` ABUSE_STATE_CHANGE
7558 - `16` ABUSE_NEW_MESSAGE
7560 - `17` NEW_PLUGIN_VERSION
7562 - `18` NEW_PEERTUBE_VERSION
7568 - $ref: '#/components/schemas/VideoInfo'
7572 $ref: '#/components/schemas/ActorInfo'
7578 $ref: '#/components/schemas/id'
7581 $ref: '#/components/schemas/VideoInfo'
7586 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
7596 $ref: '#/components/schemas/id'
7600 $ref: '#/components/schemas/VideoInfo'
7602 $ref: '#/components/schemas/ActorInfo'
7608 $ref: '#/components/schemas/id'
7611 - $ref: '#/components/schemas/VideoInfo'
7617 $ref: '#/components/schemas/id'
7620 - $ref: '#/components/schemas/VideoInfo'
7624 - $ref: '#/components/schemas/ActorInfo'
7630 $ref: '#/components/schemas/id'
7632 $ref: '#/components/schemas/ActorInfo'
7660 NotificationListResponse:
7669 $ref: '#/components/schemas/Notification'
7674 example: peertube-plugin-auth-ldap
7702 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
7705 additionalProperties: true
7721 $ref: '#/components/schemas/Plugin'
7728 description: User can stream multiple times in a permanent live
7731 description: User can select live latency mode if enabled by the instance
7732 $ref: '#/components/schemas/LiveVideoLatencyMode'
7738 description: Included in the response if an appropriate token is provided
7741 description: Included in the response if an appropriate token is provided
7744 description: RTMP stream key to use to stream into this live video. Included in the response if an appropriate token is provided
7748 description: User can stream multiple times in a permanent live
7751 description: User can select live latency mode if enabled by the instance
7752 $ref: '#/components/schemas/LiveVideoLatencyMode'
7754 LiveVideoSessionResponse:
7761 description: Start date of the live session
7766 description: End date of the live session
7777 Error type if an error occurred during the live session:
7778 - `1`: Bad socket health (transcoding is too slow)
7779 - `2`: Max duration exceeded
7780 - `3`: Quota exceeded
7781 - `4`: Quota FFmpeg error
7782 - `5`: Video has been blacklisted during the live
7785 description: Video replay information
7790 $ref: '#/components/schemas/UUIDv4'
7792 $ref: '#/components/schemas/shortUUID'
7796 'https://search.example.org/api/v1/search/videos':
7798 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
7801 description: successful operation
7805 $ref: '#/components/schemas/VideoListResponse'