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).
324 - Video Ownership Change
342 - name: Instance Configuration
346 - Instance Redundancy
359 summary: Get an account
360 operationId: getAccount
362 - $ref: '#/components/parameters/name'
365 description: successful operation
369 $ref: '#/components/schemas/Account'
371 description: account not found
373 '/accounts/{name}/videos':
378 summary: 'List videos of an account'
379 operationId: getAccountVideos
381 - $ref: '#/components/parameters/name'
382 - $ref: '#/components/parameters/categoryOneOf'
383 - $ref: '#/components/parameters/isLive'
384 - $ref: '#/components/parameters/tagsOneOf'
385 - $ref: '#/components/parameters/tagsAllOf'
386 - $ref: '#/components/parameters/licenceOneOf'
387 - $ref: '#/components/parameters/languageOneOf'
388 - $ref: '#/components/parameters/nsfw'
389 - $ref: '#/components/parameters/isLocal'
390 - $ref: '#/components/parameters/include'
391 - $ref: '#/components/parameters/privacyOneOf'
392 - $ref: '#/components/parameters/hasHLSFiles'
393 - $ref: '#/components/parameters/hasWebtorrentFiles'
394 - $ref: '#/components/parameters/skipCount'
395 - $ref: '#/components/parameters/start'
396 - $ref: '#/components/parameters/count'
397 - $ref: '#/components/parameters/videosSort'
400 description: successful operation
404 $ref: '#/components/schemas/VideoListResponse'
408 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
409 .then(function(response) {
410 return response.json()
411 }).then(function(data) {
417 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
423 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
425 http = Net::HTTP.new(uri.host, uri.port)
428 response = http.get(uri.request_uri)
430 puts JSON.parse(response.read_body)
435 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
440 '/accounts/{name}/followers':
444 summary: 'List followers of an account'
447 operationId: getAccountFollowers
449 - $ref: '#/components/parameters/name'
450 - $ref: '#/components/parameters/start'
451 - $ref: '#/components/parameters/count'
452 - $ref: '#/components/parameters/followersSort'
453 - $ref: '#/components/parameters/search'
456 description: successful operation
468 $ref: '#/components/schemas/Follow'
474 summary: List accounts
475 operationId: getAccounts
477 - $ref: '#/components/parameters/start'
478 - $ref: '#/components/parameters/count'
479 - $ref: '#/components/parameters/sort'
482 description: successful operation
488 $ref: '#/components/schemas/Account'
494 summary: Get instance public configuration
495 operationId: getConfig
498 description: successful operation
502 $ref: '#/components/schemas/ServerConfig'
505 externalValue: https://peertube2.cpy.re/api/v1/config
509 summary: Get instance "About" information
510 operationId: getAbout
515 description: successful operation
519 $ref: '#/components/schemas/ServerConfigAbout'
522 externalValue: https://peertube2.cpy.re/api/v1/config/about
526 summary: Get instance runtime configuration
527 operationId: getCustomConfig
535 description: successful operation
539 $ref: '#/components/schemas/ServerConfigCustom'
541 summary: Set instance runtime configuration
542 operationId: putCustomConfig
550 description: successful operation
552 x-summary: field inconsistencies
555 - the emailer is disabled and the instance is open to registrations
556 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
558 summary: Delete instance runtime configuration
559 operationId: delCustomConfig
567 description: successful operation
569 /custom-pages/homepage/instance:
571 summary: Get instance custom homepage
576 description: No homepage set
578 description: successful operation
582 $ref: '#/components/schemas/CustomHomepage'
584 summary: Set instance custom homepage
598 description: content of the homepage, that will be injected in the client
601 description: successful operation
605 summary: Pause job queue
613 description: successful operation
617 summary: Resume job queue
625 description: successful operation
629 summary: List instance jobs
640 description: The state of the job ('' for for no filter)
650 - $ref: '#/components/parameters/jobType'
651 - $ref: '#/components/parameters/start'
652 - $ref: '#/components/parameters/count'
653 - $ref: '#/components/parameters/sort'
656 description: successful operation
669 $ref: '#/components/schemas/Job'
675 summary: List instances following the server
677 - $ref: '#/components/parameters/followState'
678 - $ref: '#/components/parameters/actorType'
679 - $ref: '#/components/parameters/start'
680 - $ref: '#/components/parameters/count'
681 - $ref: '#/components/parameters/sort'
684 description: successful operation
696 $ref: '#/components/schemas/Follow'
698 '/server/followers/{nameWithHost}':
700 summary: Remove or reject a follower to your server
710 description: The remote actor handle to remove from your followers
716 description: successful operation
718 description: follower not found
720 '/server/followers/{nameWithHost}/reject':
722 summary: Reject a pending follower to your server
732 description: The remote actor handle to remove from your followers
738 description: successful operation
740 description: follower not found
742 '/server/followers/{nameWithHost}/accept':
744 summary: Accept a pending follower to your server
754 description: The remote actor handle to remove from your followers
760 description: successful operation
762 description: follower not found
768 summary: List instances followed by the server
770 - $ref: '#/components/parameters/followState'
771 - $ref: '#/components/parameters/actorType'
772 - $ref: '#/components/parameters/start'
773 - $ref: '#/components/parameters/count'
774 - $ref: '#/components/parameters/sort'
777 description: successful operation
789 $ref: '#/components/schemas/Follow'
796 summary: Follow a list of actors (PeerTube instance, channel or account)
799 description: successful operation
801 description: cannot follow a non-HTTPS server
820 '/server/following/{hostOrHandle}':
822 summary: Unfollow an actor (PeerTube instance, channel or account)
832 description: The hostOrHandle to unfollow
837 description: successful operation
839 description: host or handle not found
843 summary: Create a user
852 description: user created
856 $ref: '#/components/schemas/AddUserResponse'
862 id: '$response.body#/user/id'
867 id: '$response.body#/user/id'
872 id: '$response.body#/user/id'
874 description: insufficient authority to create an admin or moderator
879 $ref: '#/components/schemas/AddUser'
881 If the smtp server is configured, you can leave the password empty and an email will be sent
882 asking the user to set it first.
886 operationId: getUsers
893 - $ref: '#/components/parameters/usersSearch'
894 - $ref: '#/components/parameters/usersBlocked'
895 - $ref: '#/components/parameters/start'
896 - $ref: '#/components/parameters/count'
897 - $ref: '#/components/parameters/usersSort'
900 description: successful operation
906 $ref: '#/components/schemas/User'
910 - $ref: '#/components/parameters/id'
912 summary: Delete a user
921 description: successful operation
932 description: include statistics about the user (only available as a moderator/admin)
937 x-summary: successful operation
939 As an admin/moderator, you can request a response augmented with statistics about the user's
940 moderation relations and videos usage, by using the `withStats` parameter.
945 - $ref: '#/components/schemas/User'
946 - $ref: '#/components/schemas/UserWithStats'
948 summary: Update a user
956 description: successful operation
961 $ref: '#/components/schemas/UpdateUser'
964 /oauth-clients/local:
966 summary: Login prerequisite
967 description: You need to retrieve a client id and secret before [logging in](#operation/getOAuthToken).
968 operationId: getOAuthClient
973 description: successful operation
977 $ref: '#/components/schemas/OAuthClient'
979 UseOAuthClientToLogin:
980 operationId: getOAuthToken
982 client_id: '$response.body#/client_id'
983 client_secret: '$response.body#/client_secret'
987 API="https://peertube2.cpy.re/api/v1"
990 curl -s "$API/oauth-clients/local"
995 operationId: getOAuthToken
996 description: With your [client id and secret](#operation/getOAuthClient), you can retrieve an access and refresh tokens.
1001 application/x-www-form-urlencoded:
1004 - $ref: '#/components/schemas/OAuthToken-password'
1005 - $ref: '#/components/schemas/OAuthToken-refresh_token'
1007 propertyName: grant_type
1009 password: '#/components/schemas/OAuthToken-password'
1010 refresh_token: '#/components/schemas/OAuthToken-refresh_token'
1013 description: successful operation
1024 example: 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0
1025 description: valid for 1 day
1028 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
1029 description: valid for 2 weeks
1034 refresh_token_expires_in:
1039 x-summary: client or credentials are invalid
1041 Disambiguate via `type`:
1042 - `invalid_client` for an unmatched `client_id`
1043 - `invalid_grant` for unmatched credentials
1045 x-summary: token expired
1047 Disambiguate via `type`:
1048 - default value for a regular authentication failure
1049 - `invalid_token` for an expired token
1054 API="https://peertube2.cpy.re/api/v1"
1055 USERNAME="<your_username>"
1056 PASSWORD="<your_password>"
1059 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
1060 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
1061 curl -s "$API/users/token" \
1062 --data client_id="$client_id" \
1063 --data client_secret="$client_secret" \
1064 --data grant_type=password \
1065 --data username="$USERNAME" \
1066 --data password="$PASSWORD" \
1067 | jq -r ".access_token"
1069 /users/revoke-token:
1072 description: Revokes your access token and its associated refresh token, destroying your current session.
1073 operationId: revokeOAuthToken
1080 description: successful operation
1084 summary: Register a user
1085 operationId: registerUser
1091 description: successful operation
1096 $ref: '#/components/schemas/RegisterUser'
1099 /users/{id}/verify-email:
1101 summary: Verify a user
1102 operationId: verifyUser
1104 Following a user registration, the new user will receive an email asking to click a link
1105 containing a secret.
1110 - $ref: '#/components/parameters/id'
1123 - verificationString
1126 description: successful operation
1128 description: invalid verification string
1130 description: user not found
1132 /users/ask-send-verify-email:
1134 summary: Resend user verification link
1135 operationId: resendEmailToVerifyUser
1141 description: successful operation
1145 summary: Get my user information
1146 operationId: getUserInfo
1154 description: successful operation
1160 $ref: '#/components/schemas/User'
1162 summary: Update my user information
1163 operationId: putUserInfo
1171 description: successful operation
1176 $ref: '#/components/schemas/UpdateMe'
1179 /users/me/videos/imports:
1181 summary: Get video imports of my user
1189 - $ref: '#/components/parameters/start'
1190 - $ref: '#/components/parameters/count'
1191 - $ref: '#/components/parameters/sort'
1194 description: successful operation
1198 $ref: '#/components/schemas/VideoImportsList'
1200 /users/me/video-quota-used:
1202 summary: Get my user used quota
1210 description: successful operation
1218 description: The user video quota used so far in bytes
1219 example: 16810141515
1220 videoQuotaUsedDaily:
1222 description: The user video quota used today in bytes
1225 '/users/me/videos/{videoId}/rating':
1227 summary: Get rate of my user for a video
1237 description: The video id
1239 $ref: '#/components/schemas/Video/properties/id'
1242 description: successful operation
1246 $ref: '#/components/schemas/GetMeVideoRating'
1250 summary: Get videos of my user
1258 - $ref: '#/components/parameters/start'
1259 - $ref: '#/components/parameters/count'
1260 - $ref: '#/components/parameters/sort'
1263 description: successful operation
1267 $ref: '#/components/schemas/VideoListResponse'
1269 /users/me/subscriptions:
1271 summary: Get my user subscriptions
1278 - $ref: '#/components/parameters/start'
1279 - $ref: '#/components/parameters/count'
1280 - $ref: '#/components/parameters/sort'
1283 description: successful operation
1287 $ref: '#/components/schemas/VideoChannelList'
1291 summary: Add subscription to my user
1304 description: uri of the video channels to subscribe to
1310 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
1313 description: successful operation
1315 /users/me/subscriptions/exist:
1317 summary: Get if subscriptions exist for my user
1324 - $ref: '#/components/parameters/subscriptionsUris'
1327 description: successful operation
1333 /users/me/subscriptions/videos:
1335 summary: List videos of subscriptions of my user
1343 - $ref: '#/components/parameters/categoryOneOf'
1344 - $ref: '#/components/parameters/isLive'
1345 - $ref: '#/components/parameters/tagsOneOf'
1346 - $ref: '#/components/parameters/tagsAllOf'
1347 - $ref: '#/components/parameters/licenceOneOf'
1348 - $ref: '#/components/parameters/languageOneOf'
1349 - $ref: '#/components/parameters/nsfw'
1350 - $ref: '#/components/parameters/isLocal'
1351 - $ref: '#/components/parameters/include'
1352 - $ref: '#/components/parameters/privacyOneOf'
1353 - $ref: '#/components/parameters/hasHLSFiles'
1354 - $ref: '#/components/parameters/hasWebtorrentFiles'
1355 - $ref: '#/components/parameters/skipCount'
1356 - $ref: '#/components/parameters/start'
1357 - $ref: '#/components/parameters/count'
1358 - $ref: '#/components/parameters/videosSort'
1361 description: successful operation
1365 $ref: '#/components/schemas/VideoListResponse'
1367 '/users/me/subscriptions/{subscriptionHandle}':
1369 summary: Get subscription of my user
1376 - $ref: '#/components/parameters/subscriptionHandle'
1379 description: successful operation
1383 $ref: '#/components/schemas/VideoChannel'
1385 summary: Delete subscription of my user
1392 - $ref: '#/components/parameters/subscriptionHandle'
1395 description: successful operation
1397 /users/me/notifications:
1399 summary: List my notifications
1407 description: only list unread notifications
1410 - $ref: '#/components/parameters/start'
1411 - $ref: '#/components/parameters/count'
1412 - $ref: '#/components/parameters/sort'
1415 description: successful operation
1419 $ref: '#/components/schemas/NotificationListResponse'
1421 /users/me/notifications/read:
1423 summary: Mark notifications as read by their id
1436 description: ids of the notifications to mark as read
1443 description: successful operation
1445 /users/me/notifications/read-all:
1447 summary: Mark all my notification as read
1454 description: successful operation
1456 /users/me/notification-settings:
1458 summary: Update my notification settings
1469 newVideoFromSubscription:
1470 $ref: '#/components/schemas/NotificationSettingValue'
1471 newCommentOnMyVideo:
1472 $ref: '#/components/schemas/NotificationSettingValue'
1474 $ref: '#/components/schemas/NotificationSettingValue'
1475 videoAutoBlacklistAsModerator:
1476 $ref: '#/components/schemas/NotificationSettingValue'
1478 $ref: '#/components/schemas/NotificationSettingValue'
1480 $ref: '#/components/schemas/NotificationSettingValue'
1481 myVideoImportFinished:
1482 $ref: '#/components/schemas/NotificationSettingValue'
1484 $ref: '#/components/schemas/NotificationSettingValue'
1485 newUserRegistration:
1486 $ref: '#/components/schemas/NotificationSettingValue'
1488 $ref: '#/components/schemas/NotificationSettingValue'
1489 newInstanceFollower:
1490 $ref: '#/components/schemas/NotificationSettingValue'
1491 autoInstanceFollowing:
1492 $ref: '#/components/schemas/NotificationSettingValue'
1495 description: successful operation
1497 /users/me/history/videos:
1499 summary: List watched videos history
1505 - $ref: '#/components/parameters/start'
1506 - $ref: '#/components/parameters/count'
1507 - $ref: '#/components/parameters/search'
1510 description: successful operation
1514 $ref: '#/components/schemas/VideoListResponse'
1516 /users/me/history/videos/{videoId}:
1518 summary: Delete history element
1528 $ref: '#/components/schemas/Video/properties/id'
1531 description: successful operation
1533 /users/me/history/videos/remove:
1535 summary: Clear video history
1542 multipart/form-data:
1547 description: history before this date will be deleted
1552 description: successful operation
1554 /users/me/avatar/pick:
1556 summary: Update my user avatar
1563 description: successful operation
1572 $ref: '#/components/schemas/ActorImage'
1574 description: image file too large
1576 X-File-Maximum-Size:
1580 description: Maximum file size for the avatar
1583 multipart/form-data:
1588 description: The file to upload
1593 contentType: image/png, image/jpeg
1597 summary: Delete my avatar
1604 description: successful operation
1608 summary: List video ownership changes
1610 - Video Ownership Change
1615 description: successful operation
1617 '/videos/ownership/{id}/accept':
1619 summary: Accept ownership change request
1621 - Video Ownership Change
1625 - $ref: '#/components/parameters/idOrUUID'
1628 description: successful operation
1630 description: cannot terminate an ownership change of another user
1632 description: video ownership change not found
1634 '/videos/ownership/{id}/refuse':
1636 summary: Refuse ownership change request
1638 - Video Ownership Change
1642 - $ref: '#/components/parameters/idOrUUID'
1645 description: successful operation
1647 description: cannot terminate an ownership change of another user
1649 description: video ownership change not found
1651 '/videos/{id}/give-ownership':
1653 summary: Request ownership change
1655 - Video Ownership Change
1659 - $ref: '#/components/parameters/idOrUUID'
1663 application/x-www-form-urlencoded:
1673 description: successful operation
1675 description: changing video ownership to a remote account is not supported yet
1677 description: video not found
1681 summary: List videos
1682 operationId: getVideos
1686 - $ref: '#/components/parameters/categoryOneOf'
1687 - $ref: '#/components/parameters/isLive'
1688 - $ref: '#/components/parameters/tagsOneOf'
1689 - $ref: '#/components/parameters/tagsAllOf'
1690 - $ref: '#/components/parameters/licenceOneOf'
1691 - $ref: '#/components/parameters/languageOneOf'
1692 - $ref: '#/components/parameters/nsfw'
1693 - $ref: '#/components/parameters/isLocal'
1694 - $ref: '#/components/parameters/include'
1695 - $ref: '#/components/parameters/privacyOneOf'
1696 - $ref: '#/components/parameters/hasHLSFiles'
1697 - $ref: '#/components/parameters/hasWebtorrentFiles'
1698 - $ref: '#/components/parameters/skipCount'
1699 - $ref: '#/components/parameters/start'
1700 - $ref: '#/components/parameters/count'
1701 - $ref: '#/components/parameters/videosSort'
1704 description: successful operation
1708 $ref: '#/components/schemas/VideoListResponse'
1712 summary: List available video categories
1713 operationId: getCategories
1718 description: successful operation
1727 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1731 summary: List available video licences
1732 operationId: getLicences
1737 description: successful operation
1746 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1750 summary: List available video languages
1751 operationId: getLanguages
1756 description: successful operation
1765 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1769 summary: List available video privacy policies
1770 operationId: getPrivacyPolicies
1775 description: successful operation
1784 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1788 summary: Update a video
1789 operationId: putVideo
1795 - $ref: '#/components/parameters/idOrUUID'
1798 description: successful operation
1801 multipart/form-data:
1806 description: Video thumbnail file
1810 description: Video preview file
1814 $ref: '#/components/schemas/VideoCategorySet'
1816 $ref: '#/components/schemas/VideoLicenceSet'
1818 $ref: '#/components/schemas/VideoLanguageSet'
1820 $ref: '#/components/schemas/VideoPrivacySet'
1822 description: Video description
1825 description: Whether or not we wait transcoding before publish the video
1828 description: A text tell the audience how to support the video creator
1829 example: Please support our work on https://soutenir.framasoft.org/en/ <3
1832 description: Whether or not this video contains sensitive content
1835 description: Video name
1840 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1849 description: Enable or disable comments for this video
1852 description: Enable or disable downloading for this video
1854 originallyPublishedAt:
1855 description: Date when the content was originally published
1859 $ref: '#/components/schemas/VideoScheduledUpdate'
1862 contentType: image/jpeg
1864 contentType: image/jpeg
1866 summary: Get a video
1867 operationId: getVideo
1871 - $ref: '#/components/parameters/idOrUUID'
1874 description: successful operation
1878 $ref: '#/components/schemas/VideoDetails'
1880 summary: Delete a video
1881 operationId: delVideo
1887 - $ref: '#/components/parameters/idOrUUID'
1890 description: successful operation
1892 '/videos/{id}/description':
1894 summary: Get complete video description
1895 operationId: getVideoDesc
1899 - $ref: '#/components/parameters/idOrUUID'
1902 description: successful operation
1911 **[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)**
1913 '/videos/{id}/source':
1915 summary: Get video source file metadata
1916 operationId: getVideoSource
1920 - $ref: '#/components/parameters/idOrUUID'
1923 description: successful operation
1927 $ref: '#/components/schemas/VideoSource'
1929 '/videos/{id}/views':
1931 summary: Notify user is watching a video
1932 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.
1933 operationId: addView
1937 - $ref: '#/components/parameters/idOrUUID'
1942 $ref: '#/components/schemas/UserViewingVideo'
1946 description: successful operation
1948 '/videos/{id}/watching':
1950 summary: Set watching progress of a video
1952 description: This endpoint has been deprecated. Use `/videos/{id}/views` instead
1958 - $ref: '#/components/parameters/idOrUUID'
1963 $ref: '#/components/schemas/UserViewingVideo'
1967 description: successful operation
1969 '/videos/{id}/stats/overall':
1971 summary: Get overall stats of a video
1977 - $ref: '#/components/parameters/idOrUUID'
1980 description: Filter stats by start date
1986 description: Filter stats by end date
1992 description: successful operation
1996 $ref: '#/components/schemas/VideoStatsOverall'
1998 '/videos/{id}/stats/retention':
2000 summary: Get retention stats of a video
2006 - $ref: '#/components/parameters/idOrUUID'
2009 description: successful operation
2013 $ref: '#/components/schemas/VideoStatsRetention'
2015 '/videos/{id}/stats/timeseries/{metric}':
2017 summary: Get timeserie stats of a video
2023 - $ref: '#/components/parameters/idOrUUID'
2028 description: The metric to get
2033 - 'aggregateWatchTime'
2036 description: Filter stats by start date
2042 description: Filter stats by end date
2048 description: successful operation
2052 $ref: '#/components/schemas/VideoStatsTimeserie'
2056 summary: Upload a video
2057 description: Uses a single request to upload a video.
2058 operationId: uploadLegacy
2066 description: successful operation
2070 $ref: '#/components/schemas/VideoUploadResponse'
2072 description: video didn't pass upload filter
2074 description: upload has timed out
2076 x-summary: video file too large, due to quota or max body size limit set by the reverse-proxy
2078 If the response has no body, it means the reverse-proxy didn't let it through. Otherwise disambiguate via `type`:
2079 - `quota_reached` for quota limits whether daily or global
2081 X-File-Maximum-Size:
2085 description: Maximum file size for the video
2087 description: video type unsupported
2089 description: video unreadable
2092 multipart/form-data:
2094 $ref: '#/components/schemas/VideoUploadRequestLegacy'
2097 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
2099 contentType: image/jpeg
2101 contentType: image/jpeg
2106 USERNAME="<your_username>"
2107 PASSWORD="<your_password>"
2108 FILE_PATH="<your_file_path>"
2109 CHANNEL_ID="<your_channel_id>"
2111 API="https://peertube2.cpy.re/api/v1"
2114 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
2115 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
2116 token=$(curl -s "$API/users/token" \
2117 --data client_id="$client_id" \
2118 --data client_secret="$client_secret" \
2119 --data grant_type=password \
2120 --data username="$USERNAME" \
2121 --data password="$PASSWORD" \
2122 | jq -r ".access_token")
2125 curl -s "$API/videos/upload" \
2126 -H "Authorization: Bearer $token" \
2128 --form videofile=@"$FILE_PATH" \
2129 --form channelId=$CHANNEL_ID \
2132 /videos/upload-resumable:
2134 summary: Initialize the resumable upload of a video
2135 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to initialize the upload of a video
2136 operationId: uploadResumableInit
2143 - name: X-Upload-Content-Length
2149 description: Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
2150 - name: X-Upload-Content-Type
2157 description: MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
2162 $ref: '#/components/schemas/VideoUploadRequestResumable'
2165 description: file already exists, send a [`resume`](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) request instead
2167 description: created
2173 example: /api/v1/videos/upload-resumable?upload_id=471e97554f21dec3b8bb5d4602939c51
2179 x-summary: video file too large, due to quota, absolute max file size or concurrent partial upload limit
2181 Disambiguate via `type`:
2182 - `max_file_size_reached` for the absolute file size limit
2183 - `quota_reached` for quota limits whether daily or global
2185 description: video type unsupported
2187 summary: Send chunk for the resumable upload of a video
2188 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
2189 operationId: uploadResumable
2200 Created session id to proceed with. If you didn't send chunks in the last hour, it is
2201 not valid anymore and you need to initialize a new upload.
2204 - name: Content-Range
2208 example: bytes 0-262143/2469036
2211 Specifies the bytes in the file that the request is uploading.
2213 For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first
2214 262144 bytes (256 x 1024) in a 2,469,036 byte file.
2215 - name: Content-Length
2222 Size of the chunk that the request is sending.
2224 Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from
2225 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
2228 application/octet-stream:
2234 description: last chunk received
2242 $ref: '#/components/schemas/VideoUploadResponse'
2244 description: resume incomplete
2249 example: bytes=0-262143
2255 description: video didn't pass upload filter
2257 description: upload not found
2259 description: chunk doesn't match range
2261 description: video unreadable
2263 description: too many concurrent requests
2265 description: upload is already being processed
2272 summary: Cancel the resumable upload of a video, deleting any data uploaded so far
2273 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to cancel the upload of a video
2274 operationId: uploadResumableCancel
2285 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
2286 not valid anymore and the upload session has already been deleted with its data ;-)
2289 - name: Content-Length
2297 description: upload cancelled
2304 description: upload not found
2308 summary: Import a video
2309 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
2310 operationId: importVideo
2318 multipart/form-data:
2320 $ref: '#/components/schemas/VideoCreateImport'
2323 contentType: application/x-bittorrent
2325 contentType: image/jpeg
2327 contentType: image/jpeg
2330 description: successful operation
2334 $ref: '#/components/schemas/VideoUploadResponse'
2336 description: '`magnetUri` or `targetUrl` or a torrent file missing'
2338 description: video didn't pass pre-import filter
2340 description: HTTP or Torrent/magnetURI import not enabled
2342 /videos/imports/{id}/cancel:
2344 summary: Cancel video import
2345 description: Cancel a pending video import
2351 - $ref: '#/components/parameters/id'
2354 description: successful operation
2356 /videos/imports/{id}:
2358 summary: Delete video import
2359 description: Delete ended video import
2365 - $ref: '#/components/parameters/id'
2368 description: successful operation
2372 summary: Create a live
2373 operationId: addLive
2381 description: successful operation
2385 $ref: '#/components/schemas/VideoUploadResponse'
2387 x-summary: validation error, or conflicting `saveReplay` and `permanentLive` parameter set
2389 Disambiguate via `type`:
2390 - default type for a validation error
2391 - `live_conflicting_permanent_and_save_replay` for conflicting parameters set
2393 x-summary: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
2395 Disambiguate via `type`:
2396 - `live_not_enabled` for a disabled live feature
2397 - `live_not_allowing_replay` for a disabled replay feature
2398 - `max_instance_lives_limit_reached` for the absolute concurrent live limit
2399 - `max_user_lives_limit_reached` for the user concurrent live limit
2402 multipart/form-data:
2407 description: Channel id that will contain this live video
2412 description: User can stream multiple times in a permanent live
2415 description: User can select live latency mode if enabled by the instance
2416 $ref: '#/components/schemas/LiveVideoLatencyMode'
2418 description: Live video/replay thumbnail file
2422 description: Live video/replay preview file
2426 $ref: '#/components/schemas/VideoPrivacySet'
2428 $ref: '#/components/schemas/VideoCategorySet'
2430 $ref: '#/components/schemas/VideoLicenceSet'
2432 $ref: '#/components/schemas/VideoLanguageSet'
2434 description: Live video/replay description
2437 description: A text tell the audience how to support the creator
2438 example: Please support our work on https://soutenir.framasoft.org/en/ <3
2441 description: Whether or not this live video/replay contains sensitive content
2444 description: Live video/replay name
2449 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
2458 description: Enable or disable comments for this live video/replay
2461 description: Enable or disable downloading for the replay of this live video
2468 contentType: image/jpeg
2470 contentType: image/jpeg
2474 summary: Get information about a live
2475 operationId: getLiveId
2482 - $ref: '#/components/parameters/idOrUUID'
2485 description: successful operation
2489 $ref: '#/components/schemas/LiveVideoResponse'
2491 summary: Update information about a live
2492 operationId: updateLiveId
2499 - $ref: '#/components/parameters/idOrUUID'
2504 $ref: '#/components/schemas/LiveVideoUpdate'
2507 description: successful operation
2509 description: bad parameters or trying to update a live that has already started
2511 description: trying to save replay of the live but saving replay is not enabled on the instance
2512 /videos/live/{id}/sessions:
2514 summary: List live sessions
2515 description: List all sessions created in a particular live
2521 - $ref: '#/components/parameters/idOrUUID'
2524 description: successful operation
2536 $ref: '#/components/schemas/LiveVideoSessionResponse'
2537 /videos/{id}/live-session:
2539 summary: Get live session of a replay
2540 description: If the video is a replay of a live, you can find the associated live session using this endpoint
2546 - $ref: '#/components/parameters/idOrUUID'
2549 description: successful operation
2553 $ref: '#/components/schemas/LiveVideoSessionResponse'
2557 summary: List my abuses
2558 operationId: getMyAbuses
2567 description: only list the report with this id
2573 $ref: '#/components/schemas/AbuseStateSet'
2574 - $ref: '#/components/parameters/abusesSort'
2575 - $ref: '#/components/parameters/start'
2576 - $ref: '#/components/parameters/count'
2579 description: successful operation
2591 $ref: '#/components/schemas/Abuse'
2595 summary: List abuses
2596 operationId: getAbuses
2606 description: only list the report with this id
2609 - name: predefinedReason
2611 description: predefined reason the listed reports should contain
2613 $ref: '#/components/schemas/PredefinedAbuseReasons'
2616 description: plain search that will match with video titles, reporter names and more
2622 $ref: '#/components/schemas/AbuseStateSet'
2623 - name: searchReporter
2625 description: only list reports of a specific reporter
2628 - name: searchReportee
2629 description: only list reports of a specific reportee
2635 description: only list reports of a specific video
2638 - name: searchVideoChannel
2640 description: only list reports of a specific video channel
2645 description: only list deleted or blocklisted videos
2653 description: only list account, comment or video reports
2660 - $ref: '#/components/parameters/start'
2661 - $ref: '#/components/parameters/count'
2662 - $ref: '#/components/parameters/abusesSort'
2665 description: successful operation
2677 $ref: '#/components/schemas/Abuse'
2679 summary: Report an abuse
2692 description: Reason why the user reports this video
2697 $ref: '#/components/schemas/PredefinedAbuseReasons'
2702 description: Video id to report
2704 - $ref: '#/components/schemas/Video/properties/id'
2708 description: Timestamp in the video that marks the beginning of the report
2713 description: Timestamp in the video that marks the ending of the report
2719 description: Comment id to report
2721 - $ref: '#/components/schemas/VideoComment/properties/id'
2726 description: Account id to report
2732 description: successful operation
2742 $ref: '#/components/schemas/id'
2744 description: incorrect request parameters
2746 '/abuses/{abuseId}':
2748 summary: Update an abuse
2756 - $ref: '#/components/parameters/abuseId'
2764 $ref: '#/components/schemas/AbuseStateSet'
2767 description: Update the report comment visible only to the moderation team
2772 description: successful operation
2774 description: abuse not found
2778 summary: Delete an abuse
2784 - $ref: '#/components/parameters/abuseId'
2787 description: successful operation
2789 description: block not found
2791 '/abuses/{abuseId}/messages':
2793 summary: List messages of an abuse
2799 - $ref: '#/components/parameters/abuseId'
2802 description: successful operation
2814 $ref: '#/components/schemas/AbuseMessage'
2816 summary: Add message to an abuse
2822 - $ref: '#/components/parameters/abuseId'
2831 description: Message to send
2839 description: successful operation
2841 description: incorrect request parameters
2843 '/abuses/{abuseId}/messages/{abuseMessageId}':
2845 summary: Delete an abuse message
2851 - $ref: '#/components/parameters/abuseId'
2852 - $ref: '#/components/parameters/abuseMessageId'
2855 description: successful operation
2857 '/videos/{id}/blacklist':
2859 summary: Block a video
2860 operationId: addVideoBlock
2868 - $ref: '#/components/parameters/idOrUUID'
2871 description: successful operation
2873 summary: Unblock a video by its id
2874 operationId: delVideoBlock
2882 - $ref: '#/components/parameters/idOrUUID'
2885 description: successful operation
2887 description: block not found
2893 summary: List video blocks
2894 operationId: getVideoBlocks
2903 list only blocks that match this type:
2907 - `2`: automatic block that needs review
2915 description: plain search that will match with video titles, and more
2918 - $ref: '#/components/parameters/start'
2919 - $ref: '#/components/parameters/count'
2920 - $ref: '#/components/parameters/blacklistsSort'
2923 description: successful operation
2935 $ref: '#/components/schemas/VideoBlacklist'
2937 /videos/{id}/captions:
2939 summary: List captions of a video
2940 operationId: getVideoCaptions
2944 - $ref: '#/components/parameters/idOrUUID'
2947 description: successful operation
2959 $ref: '#/components/schemas/VideoCaption'
2961 /videos/{id}/captions/{captionLanguage}:
2963 summary: Add or replace a video caption
2964 operationId: addVideoCaption
2971 - $ref: '#/components/parameters/idOrUUID'
2972 - $ref: '#/components/parameters/captionLanguage'
2975 multipart/form-data:
2980 description: The file to upload.
2985 contentType: text/vtt, application/x-subrip, text/plain
2988 description: successful operation
2990 description: video or language not found
2992 summary: Delete a video caption
2993 operationId: delVideoCaption
3000 - $ref: '#/components/parameters/idOrUUID'
3001 - $ref: '#/components/parameters/captionLanguage'
3004 description: successful operation
3006 description: video or language or caption for that language not found
3010 summary: List video channels
3011 operationId: getVideoChannels
3015 - $ref: '#/components/parameters/start'
3016 - $ref: '#/components/parameters/count'
3017 - $ref: '#/components/parameters/sort'
3020 description: successful operation
3024 $ref: '#/components/schemas/VideoChannelList'
3026 summary: Create a video channel
3027 operationId: addVideoChannel
3034 description: successful operation
3044 $ref: '#/components/schemas/id'
3049 $ref: '#/components/schemas/VideoChannelCreate'
3051 '/video-channels/{channelHandle}':
3053 summary: Get a video channel
3054 operationId: getVideoChannel
3058 - $ref: '#/components/parameters/channelHandle'
3061 description: successful operation
3065 $ref: '#/components/schemas/VideoChannel'
3067 summary: Update a video channel
3068 operationId: putVideoChannel
3074 - $ref: '#/components/parameters/channelHandle'
3077 description: successful operation
3082 $ref: '#/components/schemas/VideoChannelUpdate'
3084 summary: Delete a video channel
3085 operationId: delVideoChannel
3091 - $ref: '#/components/parameters/channelHandle'
3094 description: successful operation
3096 '/video-channels/{channelHandle}/videos':
3098 summary: List videos of a video channel
3099 operationId: getVideoChannelVideos
3104 - $ref: '#/components/parameters/channelHandle'
3105 - $ref: '#/components/parameters/categoryOneOf'
3106 - $ref: '#/components/parameters/isLive'
3107 - $ref: '#/components/parameters/tagsOneOf'
3108 - $ref: '#/components/parameters/tagsAllOf'
3109 - $ref: '#/components/parameters/licenceOneOf'
3110 - $ref: '#/components/parameters/languageOneOf'
3111 - $ref: '#/components/parameters/nsfw'
3112 - $ref: '#/components/parameters/isLocal'
3113 - $ref: '#/components/parameters/include'
3114 - $ref: '#/components/parameters/privacyOneOf'
3115 - $ref: '#/components/parameters/hasHLSFiles'
3116 - $ref: '#/components/parameters/hasWebtorrentFiles'
3117 - $ref: '#/components/parameters/skipCount'
3118 - $ref: '#/components/parameters/start'
3119 - $ref: '#/components/parameters/count'
3120 - $ref: '#/components/parameters/videosSort'
3123 description: successful operation
3127 $ref: '#/components/schemas/VideoListResponse'
3129 '/video-channels/{channelHandle}/followers':
3133 summary: 'List followers of a video channel'
3136 operationId: getVideoChannelFollowers
3138 - $ref: '#/components/parameters/channelHandle'
3139 - $ref: '#/components/parameters/start'
3140 - $ref: '#/components/parameters/count'
3141 - $ref: '#/components/parameters/followersSort'
3142 - $ref: '#/components/parameters/search'
3145 description: successful operation
3157 $ref: '#/components/schemas/Follow'
3159 '/video-channels/{channelHandle}/avatar/pick':
3161 summary: Update channel avatar
3167 - $ref: '#/components/parameters/channelHandle'
3170 description: successful operation
3179 $ref: '#/components/schemas/ActorImage'
3181 description: image file too large
3183 X-File-Maximum-Size:
3187 description: Maximum file size for the avatar
3190 multipart/form-data:
3195 description: The file to upload.
3200 contentType: image/png, image/jpeg
3202 '/video-channels/{channelHandle}/avatar':
3204 summary: Delete channel avatar
3210 - $ref: '#/components/parameters/channelHandle'
3213 description: successful operation
3215 '/video-channels/{channelHandle}/banner/pick':
3217 summary: Update channel banner
3223 - $ref: '#/components/parameters/channelHandle'
3226 description: successful operation
3235 $ref: '#/components/schemas/ActorImage'
3237 description: image file too large
3239 X-File-Maximum-Size:
3243 description: Maximum file size for the banner
3246 multipart/form-data:
3251 description: The file to upload.
3256 contentType: image/png, image/jpeg
3258 '/video-channels/{channelHandle}/banner':
3260 summary: Delete channel banner
3266 - $ref: '#/components/parameters/channelHandle'
3269 description: successful operation
3271 /video-playlists/privacies:
3273 summary: List available playlist privacy policies
3274 operationId: getPlaylistPrivacyPolicies
3279 description: successful operation
3288 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
3292 summary: List video playlists
3293 operationId: getPlaylists
3297 - $ref: '#/components/parameters/start'
3298 - $ref: '#/components/parameters/count'
3299 - $ref: '#/components/parameters/sort'
3302 description: successful operation
3314 $ref: '#/components/schemas/VideoPlaylist'
3316 summary: Create a video playlist
3317 description: If the video playlist is set as public, `videoChannelId` is mandatory.
3318 operationId: addPlaylist
3325 description: successful operation
3335 $ref: '#/components/schemas/VideoPlaylist/properties/id'
3337 $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
3339 $ref: '#/components/schemas/VideoPlaylist/properties/shortUUID'
3342 multipart/form-data:
3347 description: Video playlist display name
3352 description: Video playlist thumbnail file
3356 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3358 description: Video playlist description
3364 - $ref: '#/components/schemas/id'
3365 description: Video channel in which the playlist will be published
3370 contentType: image/jpeg
3372 /video-playlists/{playlistId}:
3374 summary: Get a video playlist
3378 - $ref: '#/components/parameters/playlistId'
3381 description: successful operation
3385 $ref: '#/components/schemas/VideoPlaylist'
3387 summary: Update a video playlist
3388 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
3395 description: successful operation
3397 - $ref: '#/components/parameters/playlistId'
3400 multipart/form-data:
3405 description: Video playlist display name
3410 description: Video playlist thumbnail file
3414 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3416 description: Video playlist description
3420 - $ref: '#/components/schemas/id'
3421 description: Video channel in which the playlist will be published
3424 contentType: image/jpeg
3426 summary: Delete a video playlist
3432 - $ref: '#/components/parameters/playlistId'
3435 description: successful operation
3437 /video-playlists/{playlistId}/videos:
3439 summary: 'List videos of a playlist'
3440 operationId: getVideoPlaylistVideos
3445 - $ref: '#/components/parameters/playlistId'
3446 - $ref: '#/components/parameters/start'
3447 - $ref: '#/components/parameters/count'
3450 description: successful operation
3454 $ref: '#/components/schemas/VideoListResponse'
3456 summary: Add a video in a playlist
3457 operationId: addVideoPlaylistVideo
3464 - $ref: '#/components/parameters/playlistId'
3467 description: successful operation
3473 videoPlaylistElement:
3487 - $ref: '#/components/schemas/Video/properties/uuid'
3488 - $ref: '#/components/schemas/Video/properties/id'
3489 description: Video to add in the playlist
3493 description: Start the video at this specific timestamp
3497 description: Stop the video at this specific timestamp
3501 /video-playlists/{playlistId}/videos/reorder:
3503 summary: 'Reorder a playlist'
3504 operationId: reorderVideoPlaylist
3510 - $ref: '#/components/parameters/playlistId'
3513 description: successful operation
3522 description: 'Start position of the element to reorder'
3524 insertAfterPosition:
3526 description: 'New position for the block to reorder, to add the block before the first element'
3530 description: 'How many element from `startPosition` to reorder'
3534 - insertAfterPosition
3536 /video-playlists/{playlistId}/videos/{playlistElementId}:
3538 summary: Update a playlist element
3539 operationId: putVideoPlaylistVideo
3545 - $ref: '#/components/parameters/playlistId'
3546 - $ref: '#/components/parameters/playlistElementId'
3549 description: successful operation
3559 description: Start the video at this specific timestamp
3563 description: Stop the video at this specific timestamp
3565 summary: Delete an element from a playlist
3566 operationId: delVideoPlaylistVideo
3572 - $ref: '#/components/parameters/playlistId'
3573 - $ref: '#/components/parameters/playlistElementId'
3576 description: successful operation
3578 '/users/me/video-playlists/videos-exist':
3580 summary: Check video exists in my playlists
3589 description: The video ids to check
3593 $ref: '#/components/schemas/Video/properties/id'
3596 description: successful operation
3618 '/accounts/{name}/video-channels':
3620 summary: List video channels of an account
3625 - $ref: '#/components/parameters/name'
3628 description: include daily view statistics for the last 30 days and total views (only if authentified as the account user)
3631 - $ref: '#/components/parameters/start'
3632 - $ref: '#/components/parameters/count'
3633 - $ref: '#/components/parameters/sort'
3636 description: successful operation
3640 $ref: '#/components/schemas/VideoChannelList'
3642 '/accounts/{name}/ratings':
3644 summary: List ratings of an account
3650 - $ref: '#/components/parameters/name'
3651 - $ref: '#/components/parameters/start'
3652 - $ref: '#/components/parameters/count'
3653 - $ref: '#/components/parameters/sort'
3657 description: Optionally filter which ratings to retrieve
3665 description: successful operation
3671 $ref: '#/components/schemas/VideoRating'
3673 '/videos/{id}/comment-threads':
3675 summary: List threads of a video
3679 - $ref: '#/components/parameters/idOrUUID'
3680 - $ref: '#/components/parameters/start'
3681 - $ref: '#/components/parameters/count'
3682 - $ref: '#/components/parameters/commentsSort'
3685 description: successful operation
3689 $ref: '#/components/schemas/CommentThreadResponse'
3691 summary: Create a thread
3697 - $ref: '#/components/parameters/idOrUUID'
3700 description: successful operation
3704 $ref: '#/components/schemas/CommentThreadPostResponse'
3706 description: video does not exist
3715 - $ref: '#/components/schemas/VideoComment/properties/text'
3721 '/videos/{id}/comment-threads/{threadId}':
3723 summary: Get a thread
3727 - $ref: '#/components/parameters/idOrUUID'
3728 - $ref: '#/components/parameters/threadId'
3731 description: successful operation
3735 $ref: '#/components/schemas/VideoCommentThreadTree'
3737 '/videos/{id}/comments/{commentId}':
3739 summary: Reply to a thread of a video
3745 - $ref: '#/components/parameters/idOrUUID'
3746 - $ref: '#/components/parameters/commentId'
3749 description: successful operation
3753 $ref: '#/components/schemas/CommentThreadPostResponse'
3755 description: thread or video does not exist
3764 - $ref: '#/components/schemas/VideoComment/properties/text'
3770 summary: Delete a comment or a reply
3776 - $ref: '#/components/parameters/idOrUUID'
3777 - $ref: '#/components/parameters/commentId'
3780 description: successful operation
3782 description: cannot remove comment of another user
3784 description: comment or video does not exist
3786 description: comment is already deleted
3788 '/videos/{id}/rate':
3790 summary: Like/dislike a video
3796 - $ref: '#/components/parameters/idOrUUID'
3812 description: successful operation
3814 description: video does not exist
3818 summary: Delete video HLS files
3824 operationId: delVideoHLS
3826 - $ref: '#/components/parameters/idOrUUID'
3829 description: successful operation
3831 description: video does not exist
3832 '/videos/{id}/webtorrent':
3834 summary: Delete video WebTorrent files
3840 operationId: delVideoWebTorrent
3842 - $ref: '#/components/parameters/idOrUUID'
3845 description: successful operation
3847 description: video does not exist
3849 '/videos/{id}/transcoding':
3851 summary: Create a transcoding job
3857 operationId: createVideoTranscoding
3859 - $ref: '#/components/parameters/idOrUUID'
3875 description: successful operation
3877 description: video does not exist
3883 summary: Search videos
3884 operationId: searchVideos
3889 allowEmptyValue: false
3891 String to search. If the user can make a remote URI search, and the string is an URI then the
3892 PeerTube instance will fetch the remote object and add it to its database. Then,
3893 you can use the REST API to fetch the complete video information and interact with it.
3896 - $ref: '#/components/parameters/categoryOneOf'
3897 - $ref: '#/components/parameters/isLive'
3898 - $ref: '#/components/parameters/tagsOneOf'
3899 - $ref: '#/components/parameters/tagsAllOf'
3900 - $ref: '#/components/parameters/licenceOneOf'
3901 - $ref: '#/components/parameters/languageOneOf'
3902 - $ref: '#/components/parameters/nsfw'
3903 - $ref: '#/components/parameters/isLocal'
3904 - $ref: '#/components/parameters/include'
3905 - $ref: '#/components/parameters/privacyOneOf'
3906 - $ref: '#/components/parameters/hasHLSFiles'
3907 - $ref: '#/components/parameters/hasWebtorrentFiles'
3908 - $ref: '#/components/parameters/skipCount'
3909 - $ref: '#/components/parameters/start'
3910 - $ref: '#/components/parameters/count'
3911 - $ref: '#/components/parameters/searchTarget'
3912 - $ref: '#/components/parameters/videosSearchSort'
3915 description: Get videos that are published after this date
3921 description: Get videos that are published before this date
3925 - name: originallyPublishedStartDate
3927 description: Get videos that are originally published after this date
3931 - name: originallyPublishedEndDate
3933 description: Get videos that are originally published before this date
3939 description: Get videos that have this minimum duration
3944 description: Get videos that have this maximum duration
3948 'searchTarget === search-index':
3949 $ref: '#/components/callbacks/searchIndex'
3952 description: successful operation
3956 $ref: '#/components/schemas/VideoListResponse'
3958 description: search index unavailable
3960 /search/video-channels:
3964 summary: Search channels
3965 operationId: searchChannels
3971 String to search. If the user can make a remote URI search, and the string is an URI then the
3972 PeerTube instance will fetch the remote object and add it to its database. Then,
3973 you can use the REST API to fetch the complete channel information and interact with it.
3976 - $ref: '#/components/parameters/start'
3977 - $ref: '#/components/parameters/count'
3978 - $ref: '#/components/parameters/searchTarget'
3979 - $ref: '#/components/parameters/sort'
3981 'searchTarget === search-index':
3982 $ref: '#/components/callbacks/searchIndex'
3985 description: successful operation
3989 $ref: '#/components/schemas/VideoChannelList'
3991 description: search index unavailable
3993 /search/video-playlists:
3997 summary: Search playlists
3998 operationId: searchPlaylists
4004 String to search. If the user can make a remote URI search, and the string is an URI then the
4005 PeerTube instance will fetch the remote object and add it to its database. Then,
4006 you can use the REST API to fetch the complete playlist information and interact with it.
4009 - $ref: '#/components/parameters/start'
4010 - $ref: '#/components/parameters/count'
4011 - $ref: '#/components/parameters/searchTarget'
4012 - $ref: '#/components/parameters/sort'
4014 'searchTarget === search-index':
4015 $ref: '#/components/callbacks/searchIndex'
4018 description: successful operation
4030 $ref: '#/components/schemas/VideoPlaylist'
4032 description: search index unavailable
4039 summary: Get block status of accounts/hosts
4044 description: 'Check if these accounts are blocked'
4045 example: [ 'goofy@example.com', 'donald@example.com' ]
4053 description: 'Check if these hosts are blocked'
4054 example: [ 'example.com' ]
4061 description: successful operation
4065 $ref: '#/components/schemas/BlockStatus'
4067 /server/blocklist/accounts:
4071 summary: List account blocks
4076 - $ref: '#/components/parameters/start'
4077 - $ref: '#/components/parameters/count'
4078 - $ref: '#/components/parameters/sort'
4081 description: successful operation
4085 summary: Block an account
4097 example: chocobozzz@example.org
4098 description: account to block, in the form `username@domain`
4103 description: successful operation
4105 description: self-blocking forbidden
4107 '/server/blocklist/accounts/{accountName}':
4111 summary: Unblock an account by its handle
4119 description: account to unblock, in the form `username@domain`
4124 description: successful operation
4126 description: account or account block does not exist
4128 /server/blocklist/servers:
4132 summary: List server blocks
4137 - $ref: '#/components/parameters/start'
4138 - $ref: '#/components/parameters/count'
4139 - $ref: '#/components/parameters/sort'
4142 description: successful operation
4146 summary: Block a server
4159 description: server domain to block
4164 description: successful operation
4166 description: self-blocking forbidden
4168 '/server/blocklist/servers/{host}':
4172 summary: Unblock a server by its domain
4180 description: server domain to unblock
4186 description: successful operation
4188 description: account block does not exist
4190 /server/redundancy/{host}:
4193 - Instance Redundancy
4194 summary: Update a server redundancy policy
4202 description: server domain to mirror
4214 description: allow mirroring of the host's local videos
4219 description: successful operation
4221 description: server is not already known
4223 /server/redundancy/videos:
4227 summary: List videos being mirrored
4228 operationId: getMirroredVideos
4236 description: direction of the mirror
4242 - $ref: '#/components/parameters/start'
4243 - $ref: '#/components/parameters/count'
4244 - $ref: '#/components/parameters/videoRedundanciesSort'
4247 description: successful operation
4253 $ref: '#/components/schemas/VideoRedundancy'
4257 summary: Mirror a video
4258 operationId: putMirroredVideo
4269 $ref: '#/components/schemas/Video/properties/id'
4274 description: successful operation
4276 description: cannot mirror a local video
4278 description: video does not exist
4280 description: video is already mirrored
4282 /server/redundancy/videos/{redundancyId}:
4286 summary: Delete a mirror done on a video
4287 operationId: delMirroredVideo
4292 - name: redundancyId
4295 description: id of an existing redundancy on a video
4300 description: successful operation
4302 description: video redundancy not found
4308 summary: Get instance stats
4309 description: Get instance public statistics. This endpoint is cached.
4310 operationId: getInstanceStats
4313 description: successful operation
4317 $ref: '#/components/schemas/ServerStats'
4320 '/feeds/video-comments.{format}':
4324 summary: List comments on videos
4325 operationId: getSyndicatedComments
4330 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4343 description: 'limit listing to a specific video'
4348 description: 'limit listing to a specific account'
4353 description: 'limit listing to a specific account'
4356 - name: videoChannelId
4358 description: 'limit listing to a specific video channel'
4361 - name: videoChannelName
4363 description: 'limit listing to a specific video channel'
4368 description: successful operation
4373 default: 'max-age=900' # 15 min cache
4377 $ref: '#/components/schemas/VideoCommentsForXML'
4380 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4381 application/rss+xml:
4383 $ref: '#/components/schemas/VideoCommentsForXML'
4386 externalValue: https://peertube2.cpy.re/feeds/video-comments.rss?filter=local
4389 $ref: '#/components/schemas/VideoCommentsForXML'
4392 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4393 application/atom+xml:
4395 $ref: '#/components/schemas/VideoCommentsForXML'
4398 externalValue: https://peertube2.cpy.re/feeds/video-comments.atom?filter=local
4404 externalValue: https://peertube2.cpy.re/feeds/video-comments.json?filter=local
4406 x-summary: field inconsistencies
4409 - videoId filter is mixed with a channel filter
4411 description: video, video channel or account not found
4413 description: accept header unsupported
4415 '/feeds/videos.{format}':
4419 summary: List videos
4420 operationId: getSyndicatedVideos
4425 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4438 description: 'limit listing to a specific account'
4443 description: 'limit listing to a specific account'
4446 - name: videoChannelId
4448 description: 'limit listing to a specific video channel'
4451 - name: videoChannelName
4453 description: 'limit listing to a specific video channel'
4456 - $ref: '#/components/parameters/sort'
4457 - $ref: '#/components/parameters/nsfw'
4458 - $ref: '#/components/parameters/isLocal'
4459 - $ref: '#/components/parameters/include'
4460 - $ref: '#/components/parameters/privacyOneOf'
4461 - $ref: '#/components/parameters/hasHLSFiles'
4462 - $ref: '#/components/parameters/hasWebtorrentFiles'
4465 description: successful operation
4470 default: 'max-age=900' # 15 min cache
4474 $ref: '#/components/schemas/VideosForXML'
4477 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4478 application/rss+xml:
4480 $ref: '#/components/schemas/VideosForXML'
4483 externalValue: https://peertube2.cpy.re/feeds/videos.rss?filter=local
4486 $ref: '#/components/schemas/VideosForXML'
4489 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4490 application/atom+xml:
4492 $ref: '#/components/schemas/VideosForXML'
4495 externalValue: https://peertube2.cpy.re/feeds/videos.atom?filter=local
4501 externalValue: https://peertube2.cpy.re/feeds/videos.json?filter=local
4503 description: video channel or account not found
4505 description: accept header unsupported
4507 '/feeds/subscriptions.{format}':
4512 summary: List videos of subscriptions tied to a token
4513 operationId: getSyndicatedSubscriptionVideos
4518 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4531 description: limit listing to a specific account
4537 description: private token allowing access
4541 - $ref: '#/components/parameters/sort'
4542 - $ref: '#/components/parameters/nsfw'
4543 - $ref: '#/components/parameters/isLocal'
4544 - $ref: '#/components/parameters/include'
4545 - $ref: '#/components/parameters/privacyOneOf'
4546 - $ref: '#/components/parameters/hasHLSFiles'
4547 - $ref: '#/components/parameters/hasWebtorrentFiles'
4550 description: successful operation
4555 default: 'max-age=900' # 15 min cache
4559 $ref: '#/components/schemas/VideosForXML'
4560 application/rss+xml:
4562 $ref: '#/components/schemas/VideosForXML'
4565 $ref: '#/components/schemas/VideosForXML'
4566 application/atom+xml:
4568 $ref: '#/components/schemas/VideosForXML'
4573 description: accept header unsupported
4579 summary: List plugins
4580 operationId: getPlugins
4593 - $ref: '#/components/parameters/start'
4594 - $ref: '#/components/parameters/count'
4595 - $ref: '#/components/parameters/sort'
4598 description: successful operation
4602 $ref: '#/components/schemas/PluginResponse'
4608 summary: List available plugins
4609 operationId: getAvailablePlugins
4622 - name: currentPeerTubeEngine
4626 - $ref: '#/components/parameters/start'
4627 - $ref: '#/components/parameters/count'
4628 - $ref: '#/components/parameters/sort'
4631 description: successful operation
4635 $ref: '#/components/schemas/PluginResponse'
4637 description: plugin index unavailable
4643 summary: Install a plugin
4644 operationId: addPlugin
4657 example: peertube-plugin-auth-ldap
4660 additionalProperties: false
4667 additionalProperties: false
4670 description: successful operation
4672 description: should have either `npmName` or `path` set
4678 summary: Update a plugin
4679 operationId: updatePlugin
4692 example: peertube-plugin-auth-ldap
4695 additionalProperties: false
4702 additionalProperties: false
4705 description: successful operation
4707 description: should have either `npmName` or `path` set
4709 description: existing plugin not found
4715 summary: Uninstall a plugin
4716 operationId: uninstallPlugin
4728 description: name of the plugin/theme in its package.json
4729 example: peertube-plugin-auth-ldap
4734 description: successful operation
4736 description: existing plugin not found
4742 summary: Get a plugin
4743 operationId: getPlugin
4748 - $ref: '#/components/parameters/npmName'
4751 description: successful operation
4755 $ref: '#/components/schemas/Plugin'
4757 description: plugin not found
4759 /plugins/{npmName}/settings:
4763 summary: Set a plugin's settings
4768 - $ref: '#/components/parameters/npmName'
4777 additionalProperties: true
4780 description: successful operation
4782 description: plugin not found
4784 /plugins/{npmName}/public-settings:
4788 summary: Get a plugin's public settings
4790 - $ref: '#/components/parameters/npmName'
4793 description: successful operation
4798 additionalProperties: true
4800 description: plugin not found
4802 /plugins/{npmName}/registered-settings:
4806 summary: Get a plugin's registered settings
4811 - $ref: '#/components/parameters/npmName'
4814 description: successful operation
4819 additionalProperties: true
4821 description: plugin not found
4824 - url: 'https://peertube2.cpy.re/api/v1'
4825 description: Live Test Server (live data - latest nightly version)
4826 - url: 'https://peertube3.cpy.re/api/v1'
4827 description: Live Test Server (live data - latest RC version)
4828 - url: 'https://peertube.cpy.re/api/v1'
4829 description: Live Test Server (live data - stable version)
4836 description: Offset used to paginate results
4844 description: "Number of items to return"
4854 description: Sort column
4862 description: Plain text search, applied to various parts of the model depending on endpoint
4870 If the administrator enabled search index support, you can override the default search target.
4873 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
4874 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
4875 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
4876 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
4877 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
4878 * 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
4879 the data from the origin instance API
4902 Sort videos by criteria (prefixing with `-` means `DESC` order):
4903 * `hot` - Adaptation of Reddit "hot" algorithm taking into account video views, likes, dislikes and comments and publication date
4904 * `best` - Same than `hot`, but also takes into account user video history
4905 * `trending` - Sort videos by recent views ("recent" is defined by the admin)
4906 * `views` - Sort videos using their `views` counter
4907 * `publishedAt` - Sort by video publication date (when it became publicly available)
4913 Sort videos by criteria (prefixing with `-` means `DESC` order):
4928 description: Sort comments by criteria
4938 description: Sort blocklists by criteria
4954 description: Plain text search that will match with user usernames or emails
4961 description: Filter results down to (un)banned users
4968 description: Sort users by criteria
4979 description: Sort abuses by criteria
4986 videoRedundanciesSort:
4990 description: Sort abuses by criteria
4999 description: Sort followers by criteria
5008 description: The username or handle of the account
5011 example: chocobozzz | chocobozzz@example.org
5016 description: Entity id
5018 $ref: '#/components/schemas/id'
5023 description: The object id, uuid or short uuid
5026 - $ref: '#/components/schemas/id'
5027 - $ref: '#/components/schemas/UUIDv4'
5028 - $ref: '#/components/schemas/shortUUID'
5033 description: Playlist id
5035 $ref: '#/components/schemas/VideoPlaylist/properties/id'
5037 name: playlistElementId
5040 description: Playlist element id
5042 $ref: '#/components/schemas/id'
5047 description: Abuse id
5049 $ref: '#/components/schemas/Abuse/properties/id'
5051 name: abuseMessageId
5054 description: Abuse message id
5056 $ref: '#/components/schemas/AbuseMessage/properties/id'
5058 name: captionLanguage
5061 description: The caption language
5063 $ref: '#/components/schemas/VideoLanguageSet'
5068 description: The video channel handle
5071 example: my_username | my_username@example.com
5073 name: subscriptionHandle
5076 description: The subscription handle
5079 example: my_username | my_username@example.com
5084 description: The thread id (root comment id)
5091 description: The comment id
5093 $ref: '#/components/schemas/VideoComment/properties/id'
5098 description: whether or not the video is a live
5105 description: category id of the video (see [/videos/categories](#operation/getCategories))
5108 - $ref: '#/components/schemas/VideoCategorySet'
5111 $ref: '#/components/schemas/VideoCategorySet'
5118 description: tag(s) of the video
5132 description: tag(s) of the video, where all should be present in the video
5145 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
5148 - $ref: '#/components/schemas/VideoLanguageSet'
5151 $ref: '#/components/schemas/VideoLanguageSet'
5158 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5161 - $ref: '#/components/schemas/VideoLicenceSet'
5164 $ref: '#/components/schemas/VideoLicenceSet'
5171 description: if you don't need the `total` in the response
5182 description: whether to include nsfw videos, if any
5194 description: '**PeerTube >= 4.0** Display only local or remote videos'
5201 description: '**PeerTube >= 4.0** Display only videos that have HLS files'
5203 name: hasWebtorrentFiles
5208 description: '**PeerTube >= 4.0** Display only videos that have WebTorrent files'
5214 $ref: '#/components/schemas/VideoPrivacySet'
5215 description: '**PeerTube >= 4.0** Display only videos in this specific privacy/privacies'
5229 **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator)
5233 - `1` NOT_PUBLISHED_STATE
5244 description: list of uris to check if each is part of the user subscriptions
5254 description: name of the plugin/theme on npmjs.com or in its package.json
5257 example: peertube-plugin-auth-ldap
5262 description: job type
5266 - activitypub-follow
5267 - activitypub-http-broadcast
5268 - activitypub-http-fetcher
5269 - activitypub-http-unicast
5274 - videos-views-stats
5275 - activitypub-refresher
5300 Authenticating via OAuth requires the following steps:
5301 - Have an activated account
5302 - [Generate] an access token for that account at `/api/v1/users/token`.
5303 - Make requests with the *Authorization: Bearer <token\>* header
5304 - Profit, depending on the role assigned to the account
5306 Note that the __access token is valid for 1 day__ and is given
5307 along with a __refresh token valid for 2 weeks__.
5309 [Generate]: https://docs.joinpeertube.org/api-rest-getting-started
5313 tokenUrl: /api/v1/users/token
5316 moderator: Moderator scope
5319 # Reusable core properties
5327 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
5328 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
5333 description: translation of a uuid v4 with a bigger alphabet to have a shorter uuid
5334 example: 2y84q2MQUMWPbiEcxNXMgC
5337 description: immutable name of the user, used to find or mention its actor
5339 pattern: '/^[a-z0-9._]+$/'
5344 description: immutable name of the channel, used to interact with its actor
5345 example: framasoft_videos
5346 pattern: '/^[a-zA-Z0-9\\-_.:]+$/'
5357 description: category id of the video (see [/videos/categories](#operation/getCategories))
5359 VideoConstantNumber-Category:
5362 $ref: '#/components/schemas/VideoCategorySet'
5365 example: Science & Technology
5369 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5371 VideoConstantNumber-Licence:
5374 $ref: '#/components/schemas/VideoLicenceSet'
5377 example: Attribution - Share Alike
5381 description: language id of the video (see [/videos/languages](#operation/getLanguages))
5383 VideoConstantString-Language:
5386 $ref: '#/components/schemas/VideoLanguageSet'
5391 VideoPlaylistPrivacySet:
5397 description: Video playlist privacy policy (see [/video-playlists/privacies])
5398 VideoPlaylistPrivacyConstant:
5401 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
5405 VideoPlaylistTypeSet:
5410 description: The video playlist type (Regular = `1`, Watch Later = `2`)
5411 VideoPlaylistTypeConstant:
5414 $ref: '#/components/schemas/VideoPlaylistTypeSet'
5425 description: privacy id of the video (see [/videos/privacies](#operation/getPrivacyPolicies))
5426 VideoPrivacyConstant:
5429 $ref: '#/components/schemas/VideoPrivacySet'
5437 additionalProperties:
5438 x-additionalPropertiesName: account
5447 additionalProperties:
5448 x-additionalPropertiesName: host
5469 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
5476 description: 'Admin flags for the user (None = `0`, Bypass video blocklist = `1`)'
5479 LiveVideoLatencyMode:
5485 description: 'The live latency mode (Default = `1`, High latency = `2`, Small Latency = `3`)'
5506 - `4`: Waiting for live stream
5508 - `6`: To move to an external storage (object storage...)
5509 - `7`: Transcoding failed
5510 - `8`: Moving to an external storage failed
5511 - `9`: To edit using studio edition feature
5521 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
5525 $ref: '#/components/schemas/AbuseStateSet'
5528 AbusePredefinedReasons:
5541 example: [spamOrMisleading]
5546 Video resolution (`0`, `240`, `360`, `720`, `1080`, `1440` or `2160`)
5548 `0` is used as a special value for stillimage videos dedicated to audio, a.k.a. audio-only videos.
5550 VideoResolutionConstant:
5551 description: resolutions and their labels for the video
5554 $ref: '#/components/schemas/VideoResolutionSet'
5558 VideoScheduledUpdate:
5561 $ref: '#/components/schemas/VideoPrivacySet'
5565 description: When to update the video
5585 $ref: '#/components/schemas/ActorImage'
5586 VideoChannelSummary:
5589 $ref: '#/components/schemas/id'
5603 $ref: '#/components/schemas/ActorImage'
5617 - $ref: '#/components/schemas/Video'
5624 description: magnet URI allowing to resolve the video via BitTorrent without a metainfo file
5625 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
5627 $ref: '#/components/schemas/VideoResolutionConstant'
5630 description: Video file size in bytes
5633 description: Direct URL of the torrent file
5637 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
5641 description: Direct URL of the video
5645 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
5649 description: Frames per second of the video file
5653 description: URL dereferencing the output of ffprobe on the file
5654 VideoStreamingPlaylists:
5659 $ref: '#/components/schemas/id'
5667 - $ref: '#/components/schemas/VideoStreamingPlaylists-HLS'
5668 VideoStreamingPlaylists-HLS:
5679 Video files associated to this playlist.
5681 The difference with the root `files` property is that these files are fragmented, so they can be used in this streaming playlist (HLS, etc.)
5683 $ref: '#/components/schemas/VideoFile'
5695 $ref: '#/components/schemas/Video/properties/id'
5697 $ref: '#/components/schemas/Video/properties/uuid'
5699 $ref: '#/components/schemas/Video/properties/name'
5703 description: object id for the video
5705 - $ref: '#/components/schemas/id'
5707 description: universal identifier for the video, that can be used across instances
5709 - $ref: '#/components/schemas/UUIDv4'
5712 - $ref: '#/components/schemas/shortUUID'
5718 example: 2017-10-01T10:52:46.396Z
5719 description: time at which the video object was first drafted
5723 example: 2018-10-01T10:52:46.396Z
5724 description: time at which the video was marked as ready for playback (with restrictions depending on `privacy`). Usually set after a `state` evolution.
5728 example: 2021-05-04T08:01:01.502Z
5729 description: last time the video's metadata was modified
5730 originallyPublishedAt:
5733 example: 2010-10-01T10:52:46.396Z
5734 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
5737 - $ref: '#/components/schemas/VideoConstantNumber-Category'
5738 description: category in which the video is classified
5741 - $ref: '#/components/schemas/VideoConstantNumber-Licence'
5742 description: licence under which the video is distributed
5745 - $ref: '#/components/schemas/VideoConstantString-Language'
5746 description: main language used in the video
5749 - $ref: '#/components/schemas/VideoPrivacyConstant'
5750 description: privacy policy used to distribute the video
5754 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n
5755 **Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\r\n*A decentralized video hosting network, based on fr...
5759 truncated description of the video, written in Markdown.
5760 Resolve `descriptionPath` to get the full description of maximum `10000` characters.
5765 description: duration of the video in seconds
5770 description: title of the video
5771 example: What is PeerTube?
5776 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
5779 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
5782 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
5799 - $ref: '#/components/schemas/VideoStateConstant'
5800 description: represents the internal state of the video processing within the PeerTube instance
5804 - $ref: '#/components/schemas/VideoScheduledUpdate'
5812 $ref: '#/components/schemas/AccountSummary'
5814 $ref: '#/components/schemas/VideoChannelSummary'
5823 - $ref: '#/components/schemas/Video'
5828 description: If the video is a live, you have the amount of current viewers
5831 example: /api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/description
5832 description: path at which to get the full description of maximum `10000` characters
5835 description: A text tell the audience how to support the video creator
5836 example: Please support our work on https://soutenir.framasoft.org/en/ <3
5840 $ref: '#/components/schemas/VideoChannel'
5842 $ref: '#/components/schemas/Account'
5844 example: [flowers, gardening]
5862 - https://peertube2.cpy.re/tracker/announce
5863 - wss://peertube2.cpy.re/tracker/socket
5867 $ref: '#/components/schemas/VideoFile'
5869 WebTorrent/raw video files. If WebTorrent is disabled on the server:
5871 - field will be empty
5872 - video files will be found in `streamingPlaylists[].files` field
5876 $ref: '#/components/schemas/VideoStreamingPlaylists'
5878 HLS playlists/manifest files. If HLS is disabled on the server:
5880 - field will be empty
5881 - video files will be found in `files` field
5882 FileRedundancyInformation:
5885 $ref: '#/components/schemas/id'
5910 $ref: '#/components/schemas/id'
5917 $ref: '#/components/schemas/UUIDv4'
5924 $ref: '#/components/schemas/FileRedundancyInformation'
5928 $ref: '#/components/schemas/FileRedundancyInformation'
5929 VideoImportStateConstant:
5937 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
5944 additionalProperties: false
5948 $ref: '#/components/schemas/VideoImport/properties/targetUrl'
5949 required: [targetUrl]
5952 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
5953 required: [magnetUri]
5956 $ref: '#/components/schemas/VideoImport/properties/torrentfile'
5957 required: [torrentfile]
5958 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5967 - $ref: '#/components/schemas/id'
5971 description: remote URL where to find the import's source video
5972 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
5976 description: magnet URI allowing to resolve the import's source video
5977 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
5982 description: Torrent file containing only the video file
5989 - $ref: '#/components/schemas/VideoImportStateConstant'
6005 - $ref: '#/components/schemas/Video'
6015 $ref: '#/components/schemas/VideoImport'
6019 $ref: '#/components/schemas/id'
6022 example: The video is a spam
6026 $ref: '#/components/schemas/AbusePredefinedReasons'
6028 $ref: '#/components/schemas/Account'
6030 $ref: '#/components/schemas/AbuseStateConstant'
6033 example: Decided to ban the server since it spams us regularly
6037 $ref: '#/components/schemas/VideoInfo'
6044 $ref: '#/components/schemas/id'
6055 $ref: '#/components/schemas/AccountSummary'
6059 $ref: '#/components/schemas/id'
6061 $ref: '#/components/schemas/Video/properties/id'
6073 $ref: '#/components/schemas/UUIDv4'
6091 $ref: '#/components/schemas/id'
6093 $ref: '#/components/schemas/UUIDv4'
6096 - $ref: '#/components/schemas/shortUUID'
6119 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
6121 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
6123 $ref: '#/components/schemas/AccountSummary'
6125 $ref: '#/components/schemas/VideoChannelSummary'
6129 $ref: '#/components/schemas/id'
6136 description: Text of the comment
6138 example: This video is wonderful!
6140 $ref: '#/components/schemas/id'
6144 - $ref: '#/components/schemas/id'
6146 $ref: '#/components/schemas/Video/properties/id'
6161 totalRepliesFromVideoAuthor:
6168 $ref: '#/components/schemas/Account'
6169 VideoCommentThreadTree:
6172 $ref: '#/components/schemas/VideoComment'
6176 $ref: '#/components/schemas/VideoCommentThreadTree'
6180 $ref: '#/components/schemas/VideoConstantString-Language'
6202 $ref: '#/components/schemas/id'
6213 $ref: '#/components/schemas/ActorImage'
6217 $ref: '#/components/schemas/id'
6222 description: immutable name of the actor, used to find or mention it
6224 - $ref: '#/components/schemas/username'
6228 description: server on which the actor is resident
6229 hostRedundancyAllowed:
6231 description: whether this actor's host allows redundancy of its videos
6235 description: number of actors subscribed to by this actor, as seen by this instance
6239 description: number of followers of this actor, as seen by this instance
6248 - $ref: '#/components/schemas/Actor'
6251 description: object id for the user tied to this account
6253 - $ref: '#/components/schemas/User/properties/id'
6256 description: editable name of the account, displayed in its representations
6261 description: text or bio displayed on the account's profile
6269 description: timestamp within the video, in seconds
6276 Event since last viewing call:
6277 * `seek` - If the user seeked the video
6300 VideoStatsRetention:
6312 VideoStatsTimeserie:
6389 allowedForCurrentIP:
6391 requiresEmailVerification:
6409 $ref: '#/components/schemas/VideoResolutionSet'
6494 example: 16810141515
6533 totalDailyActiveUsers:
6535 totalWeeklyActiveUsers:
6537 totalMonthlyActiveUsers:
6541 totalLocalVideoViews:
6543 description: Total video views made on the instance
6544 totalLocalVideoComments:
6546 description: Total comments made by local users
6547 totalLocalVideoFilesSize:
6553 totalLocalVideoChannels:
6555 totalLocalDailyActiveVideoChannels:
6557 totalLocalWeeklyActiveVideoChannels:
6559 totalLocalMonthlyActiveVideoChannels:
6561 totalLocalPlaylists:
6563 totalInstanceFollowers:
6565 totalInstanceFollowing:
6582 totalActivityPubMessagesProcessed:
6584 totalActivityPubMessagesSuccesses:
6586 totalActivityPubMessagesErrors:
6589 activityPubMessagesProcessedPerSecond:
6591 totalActivityPubMessagesWaiting:
6668 requiresEmailVerification:
6683 description: Settings that apply to new users, if registration is enabled
6687 example: 16810141515
6693 description: Settings pertaining to transcoding jobs
6697 allowAdditionalExtensions:
6699 description: Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
6702 description: If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
6705 description: Amount of threads used by ffmpeg for 1 transcoding job
6708 description: Amount of transcoding jobs to execute in parallel
6714 New profiles can be added by plugins ; available in core PeerTube: 'default'.
6717 description: Resolutions to transcode _new videos_ to
6739 description: WebTorrent-specific settings
6745 description: HLS-specific settings
6795 $ref: '#/components/schemas/id'
6797 $ref: '#/components/schemas/Actor'
6799 $ref: '#/components/schemas/Actor'
6802 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
6815 PredefinedAbuseReasons:
6816 description: Reason categories that help triage reports
6834 $ref: '#/components/schemas/id'
6846 - activitypub-http-unicast
6847 - activitypub-http-broadcast
6848 - activitypub-http-fetcher
6849 - activitypub-follow
6854 - videos-views-stats
6855 - activitypub-refresher
6859 additionalProperties: true
6862 additionalProperties: true
6878 $ref: '#/components/schemas/id'
6883 $ref: '#/components/schemas/id'
6884 VideoUploadRequestCommon:
6887 description: Video name
6889 example: What is PeerTube?
6893 description: Channel id that will contain this video
6898 $ref: '#/components/schemas/VideoPrivacySet'
6900 $ref: '#/components/schemas/VideoCategorySet'
6902 $ref: '#/components/schemas/VideoLicenceSet'
6904 $ref: '#/components/schemas/VideoLanguageSet'
6906 description: Video description
6909 **[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)**
6911 description: Whether or not we wait transcoding before publish the video
6914 description: A text tell the audience how to support the video creator
6915 example: Please support our work on https://soutenir.framasoft.org/en/ <3
6918 description: Whether or not this video contains sensitive content
6921 description: Video tags (maximum 5 tags each between 2 and 30 characters)
6934 description: Enable or disable comments for this video
6937 description: Enable or disable downloading for this video
6939 originallyPublishedAt:
6940 description: Date when the content was originally published
6944 $ref: '#/components/schemas/VideoScheduledUpdate'
6946 description: Video thumbnail file
6950 description: Video preview file
6956 VideoUploadRequestLegacy:
6958 - $ref: '#/components/schemas/VideoUploadRequestCommon'
6964 description: Video file
6967 VideoUploadRequestResumable:
6969 - $ref: '#/components/schemas/VideoUploadRequestCommon'
6975 description: Video filename including extension
6978 example: what_is_peertube.mp4
6980 description: Video thumbnail file
6984 description: Video preview file
6987 VideoUploadResponse:
6993 $ref: '#/components/schemas/Video/properties/id'
6995 $ref: '#/components/schemas/Video/properties/uuid'
6997 $ref: '#/components/schemas/Video/properties/shortUUID'
6998 CommentThreadResponse:
7007 $ref: '#/components/schemas/VideoComment'
7008 CommentThreadPostResponse:
7011 $ref: '#/components/schemas/VideoComment'
7021 $ref: '#/components/schemas/Video'
7025 $ref: '#/components/schemas/Account'
7028 description: Automatically start playing the upcoming video after the currently playing video
7029 autoPlayNextVideoPlaylist:
7031 description: Automatically start playing the video on the playlist after the currently playing video
7034 description: Automatically start playing the video on the watch page
7044 description: The user email
7047 description: Has the user confirmed their email address?
7050 - $ref: '#/components/schemas/id'
7054 description: Auth plugin to use to authenticate the user
7058 noInstanceConfigWarningModal:
7060 noAccountSetupWarningModal:
7065 $ref: '#/components/schemas/NSFWPolicy'
7067 $ref: '#/components/schemas/UserRole'
7076 description: Theme enabled by this user
7078 $ref: '#/components/schemas/username'
7082 $ref: '#/components/schemas/VideoChannel'
7085 description: The user video quota in bytes
7089 description: The user daily video quota in bytes
7093 description: Enable P2P in the player
7096 - $ref: '#/components/schemas/User'
7098 # optionally present fields: they require WITH_STATS scope
7101 description: Count of videos published
7104 description: Count of reports/abuses of which the user is a target
7105 abusesAcceptedCount:
7107 description: Count of reports/abuses created by the user and accepted/acted upon by the moderation team
7110 description: Count of reports/abuses created by the user
7113 description: Count of comments published
7117 $ref: '#/components/schemas/username'
7119 $ref: '#/components/schemas/password'
7123 description: The user email
7126 description: The user video quota in bytes
7130 description: The user daily video quota in bytes
7133 $ref: '#/components/schemas/usernameChannel'
7135 $ref: '#/components/schemas/UserRole'
7137 $ref: '#/components/schemas/UserAdminFlags'
7148 description: The updated email of the user
7150 - $ref: '#/components/schemas/User/properties/email'
7153 description: Set the email as verified
7156 description: The updated video quota of the user in bytes
7159 description: The updated daily video quota of the user in bytes
7163 description: The auth plugin to use to authenticate the user
7164 example: 'peertube-plugin-auth-saml2'
7166 $ref: '#/components/schemas/UserRole'
7168 $ref: '#/components/schemas/UserAdminFlags'
7170 $ref: '#/components/schemas/password'
7172 # see shared/models/users/user-update-me.model.ts:
7175 $ref: '#/components/schemas/password'
7177 $ref: '#/components/schemas/password'
7179 description: new email used for login and service communications
7181 - $ref: '#/components/schemas/User/properties/email'
7184 description: new name of the user in its representations
7189 description: new NSFW display policy
7196 description: whether to enable P2P in the player or not
7199 description: new preference regarding playing videos automatically
7202 description: new preference regarding playing following videos automatically
7203 autoPlayNextVideoPlaylist:
7205 description: new preference regarding playing following playlist videos automatically
7206 videosHistoryEnabled:
7208 description: whether to keep track of watched history or not
7213 description: list of languages to filter videos down to
7216 noInstanceConfigWarningModal:
7218 noAccountSetupWarningModal:
7225 $ref: '#/components/schemas/id'
7232 description: Rating of the video
7239 $ref: '#/components/schemas/Video'
7246 description: Rating of the video
7253 description: immutable name of the user, used to find or mention its actor
7255 - $ref: '#/components/schemas/username'
7257 $ref: '#/components/schemas/password'
7261 description: email of the user, used for login or service communications
7264 description: editable name of the user, displayed in its representations
7269 description: channel base information used to create the first channel of the user
7272 $ref: '#/components/schemas/usernameChannel'
7284 pattern: /^[a-z0-9]$/
7287 example: v1ikx5hnfop4mdpnci8nsqh93c45rldf
7290 pattern: /^[a-zA-Z0-9]$/
7293 example: AjWiOapPltI6EnsWQwlFarRtLh4u8tDt
7294 OAuthToken-password:
7296 - $ref: '#/components/schemas/OAuthClient'
7306 $ref: '#/components/schemas/User/properties/username'
7308 $ref: '#/components/schemas/password'
7315 OAuthToken-refresh_token:
7317 - $ref: '#/components/schemas/OAuthClient'
7328 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
7337 - $ref: '#/components/schemas/Actor'
7342 description: editable name of the channel, displayed in its representations
7343 example: Videos of Framasoft
7348 example: Videos made with <3 by Framasoft
7353 description: text shown by default on all videos of this channel, to tell the audience how to support it
7354 example: Please support our work on https://soutenir.framasoft.org/en/ <3
7367 $ref: '#/components/schemas/ActorImage'
7376 $ref: '#/components/schemas/UUIDv4'
7379 - $ref: '#/components/schemas/VideoChannel'
7382 description: username of the channel to create
7384 - $ref: '#/components/schemas/usernameChannel'
7390 - $ref: '#/components/schemas/VideoChannel'
7392 bulkVideosSupportUpdate:
7394 description: Update the support field for all videos of this channel
7404 - $ref: '#/components/schemas/VideoChannel'
7405 - $ref: '#/components/schemas/Actor'
7410 name: 'media:peerLink'
7419 - application/x-bittorrent
7425 name: 'media:content'
7456 VideoCommentsForXML:
7491 description: video watch page URL
7494 description: video canonical URL
7498 description: video publication date
7501 description: video description
7504 description: video description
7507 description: publisher user name
7510 description: video category (MRSS)
7513 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
7528 description: video embed path, relative to the canonical URL domain (MRSS)
7537 description: video watch path, relative to the canonical URL domain (MRSS)
7558 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
7559 'media:description':
7566 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
7569 description: main streamable file for the video
7579 - application/x-bittorrent
7588 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)
7591 - $ref: '#/components/schemas/MRSSPeerLink'
7592 - $ref: '#/components/schemas/MRSSGroupContent'
7593 NotificationSettingValue:
7610 $ref: '#/components/schemas/id'
7614 Notification type, following the `UserNotificationType` enum:
7616 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
7618 - `2` NEW_COMMENT_ON_MY_VIDEO
7620 - `3` NEW_ABUSE_FOR_MODERATORS
7622 - `4` BLACKLIST_ON_MY_VIDEO
7624 - `5` UNBLACKLIST_ON_MY_VIDEO
7626 - `6` MY_VIDEO_PUBLISHED
7628 - `7` MY_VIDEO_IMPORT_SUCCESS
7630 - `8` MY_VIDEO_IMPORT_ERROR
7632 - `9` NEW_USER_REGISTRATION
7636 - `11` COMMENT_MENTION
7638 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
7640 - `13` NEW_INSTANCE_FOLLOWER
7642 - `14` AUTO_INSTANCE_FOLLOWING
7644 - `15` ABUSE_STATE_CHANGE
7646 - `16` ABUSE_NEW_MESSAGE
7648 - `17` NEW_PLUGIN_VERSION
7650 - `18` NEW_PEERTUBE_VERSION
7656 - $ref: '#/components/schemas/VideoInfo'
7660 $ref: '#/components/schemas/ActorInfo'
7666 $ref: '#/components/schemas/id'
7669 $ref: '#/components/schemas/VideoInfo'
7674 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
7684 $ref: '#/components/schemas/id'
7688 $ref: '#/components/schemas/VideoInfo'
7690 $ref: '#/components/schemas/ActorInfo'
7696 $ref: '#/components/schemas/id'
7699 - $ref: '#/components/schemas/VideoInfo'
7705 $ref: '#/components/schemas/id'
7708 - $ref: '#/components/schemas/VideoInfo'
7712 - $ref: '#/components/schemas/ActorInfo'
7718 $ref: '#/components/schemas/id'
7720 $ref: '#/components/schemas/ActorInfo'
7748 NotificationListResponse:
7757 $ref: '#/components/schemas/Notification'
7762 example: peertube-plugin-auth-ldap
7790 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
7793 additionalProperties: true
7809 $ref: '#/components/schemas/Plugin'
7816 description: User can stream multiple times in a permanent live
7819 description: User can select live latency mode if enabled by the instance
7820 $ref: '#/components/schemas/LiveVideoLatencyMode'
7826 description: Included in the response if an appropriate token is provided
7829 description: Included in the response if an appropriate token is provided
7832 description: RTMP stream key to use to stream into this live video. Included in the response if an appropriate token is provided
7836 description: User can stream multiple times in a permanent live
7839 description: User can select live latency mode if enabled by the instance
7840 $ref: '#/components/schemas/LiveVideoLatencyMode'
7842 LiveVideoSessionResponse:
7849 description: Start date of the live session
7854 description: End date of the live session
7865 Error type if an error occurred during the live session:
7866 - `1`: Bad socket health (transcoding is too slow)
7867 - `2`: Max duration exceeded
7868 - `3`: Quota exceeded
7869 - `4`: Quota FFmpeg error
7870 - `5`: Video has been blacklisted during the live
7873 description: Video replay information
7878 $ref: '#/components/schemas/UUIDv4'
7880 $ref: '#/components/schemas/shortUUID'
7884 'https://search.example.org/api/v1/search/videos':
7886 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
7889 description: successful operation
7893 $ref: '#/components/schemas/VideoListResponse'