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 with 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 a session token. Only __one
31 session 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. The body of the response will be JSON in the following
46 "error": "Account not found" // error debug message
50 Some errors benefit from a more detailed message:
54 "id": { // where 'id' is the name of the parameter concerned by the error.
55 "value": "a117eb-c6a9-4756-bb09-2a956239f", // value that triggered the error.
56 "msg": "Should have an valid id", // error debug message
58 "location": "params" // 'params', 'body', 'header', 'query' or 'cookies'
66 We are rate-limiting all endpoints of PeerTube's API. Custom values can be set by administrators:
68 | Endpoint | Calls | Time frame |
69 |-------------------------|------------------|---------------------------|
70 | `/*` | 50 | 10 seconds |
71 | `POST /users/token` | 15 | 5 minutes |
72 | `POST /users/register` | 2<sup>*</sup> | 5 minutes |
73 | `POST /users/ask-send-verify-email` | 3 | 5 minutes |
75 Depending on the endpoint, <sup>*</sup>failed requests are not taken into account. A service
76 limit is announced by a `429 Too Many Requests` status code.
78 You can get details about the current state of your rate limit by reading the
81 | Header | Description |
82 |-------------------------|------------------------------------------------------------|
83 | X-RateLimit-Limit | Number of max requests allowed in the current time period |
84 | X-RateLimit-Remaining | Number of remaining requests in the current time period |
85 | X-RateLimit-Reset | Timestamp of end of current time period as UNIX timestamp |
86 | Retry-After | Seconds to delay after the first `429` is received |
88 url: https://docs.joinpeertube.org/api-rest-reference.html
92 Accounts encompass remote accounts discovered across the federation,
93 and correspond to the main Actor, along with video channels a user can create, which
96 When a comment is posted, it is done with your Account's Actor.
99 Using some features of PeerTube require authentication, for which User
100 provide different levels of permission as well as associated user
101 information. Each user has a corresponding local Account for federation.
104 Operations related to your own User, when logged-in.
105 - name: My Subscriptions
107 Operations related to your subscriptions to video channels, their
108 new videos, and how to keep up to date with their latest publications!
111 Operations related to your watch history.
112 - name: My Notifications
114 Notifications following new videos, follows or reports. They allow you
115 to keep track of the interactions and overall important information that
116 concerns you. You MAY set per-notification type delivery preference, to
117 receive the info either by mail, by in-browser notification or both.
120 Each server exposes public information regarding supported videos and
124 Jobs are long-running tasks enqueued and processed by the instance
125 itself. No additional worker registration is currently available.
126 - name: Instance Follows
128 Managing servers which the instance interacts with is crucial to the
129 concept of federation in PeerTube and external video indexation. The PeerTube
130 server then deals with inter-server ActivityPub operations and propagates
131 information across its social graph by posting activities to actors' inbox
134 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-follows
135 - name: Instance Redundancy
137 Redundancy is part of the inter-server solidarity that PeerTube fosters.
138 Manage the list of instances you wish to help by seeding their videos according
139 to the policy of video selection of your choice. Note that you have a similar functionality
140 to mirror individual videos, see [video mirroring](#tag/Video-Mirroring).
142 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-redundancy
145 Managing plugins installed from a local path or from NPM, or search for new ones.
147 url: https://docs.joinpeertube.org/api-plugins
150 Abuses deal with reports of local or remote videos/comments/accounts alike.
153 Operations dealing with listing, uploading, fetching or modifying videos.
156 Operations dealing with adding video or audio. PeerTube supports two upload modes, and three import modes.
160 - [_legacy_](#operation/uploadLegacy), where the video file is sent in a single request
161 - [_resumable_](#operation/uploadResumableInit), where the video file is sent in chunks
163 You can upload videos more reliably by using the resumable variant. Its protocol lets
164 you resume an upload operation after a network interruption or other transmission failure,
165 saving time and bandwidth in the event of network failures.
167 Favor using resumable uploads in any of the following cases:
168 - You are transferring large files
169 - The likelihood of a network interruption is high
170 - Uploads are originating from a device with a low-bandwidth or unstable Internet connection,
171 such as a mobile device
175 - _URL_-based: where the URL points to any service supported by [youtube-dl](https://ytdl-org.github.io/youtube-dl/)
176 - _magnet_-based: where the URI resolves to a BitTorrent ressource containing a single supported video file
177 - _torrent_-based: where the metainfo file resolves to a BitTorrent ressource containing a single supported video file
179 The import function is practical when the desired video/audio is available online. It makes PeerTube
180 download it for you, saving you as much bandwidth and avoiding any instability or limitation your network might have.
181 - name: Video Captions
182 description: Operations dealing with listing, adding and removing closed captions of a video.
183 - name: Video Channels
184 description: Operations dealing with the creation, modification and listing of videos within a channel.
185 - name: Video Comments
187 Operations dealing with comments to a video. Comments are organized in threads: adding a
188 comment in response to the video starts a thread, adding a reply to a comment adds it to
189 its root comment thread.
191 description: Operations dealing with blocking videos (removing them from view and preventing interactions).
193 description: Like/dislike a video.
194 - name: Video Playlists
195 description: Operations dealing with playlists of videos. Playlists are bound to users and/or channels.
197 description: Server syndication feeds
200 The search helps to find _videos_ or _channels_ from within the instance and beyond.
201 Videos from other instances federated by the instance (that is, instances
202 followed by the instance) can be found via keywords and other criteria of
205 Administrators can also enable the use of a remote search system, indexing
206 videos and channels not could be not federated by the instance.
207 - name: Video Mirroring
209 PeerTube instances can mirror videos from one another, and help distribute some videos.
211 For importing videos as your own, refer to [video imports](#operation/importVideo).
230 - Video Ownership Change
243 - name: Instance Configuration
247 - Instance Redundancy
257 summary: Get an account
259 - $ref: '#/components/parameters/name'
262 description: successful operation
266 $ref: '#/components/schemas/Account'
268 description: account not found
269 '/accounts/{name}/videos':
274 summary: 'List videos of an account'
276 - $ref: '#/components/parameters/name'
277 - $ref: '#/components/parameters/categoryOneOf'
278 - $ref: '#/components/parameters/isLive'
279 - $ref: '#/components/parameters/tagsOneOf'
280 - $ref: '#/components/parameters/tagsAllOf'
281 - $ref: '#/components/parameters/licenceOneOf'
282 - $ref: '#/components/parameters/languageOneOf'
283 - $ref: '#/components/parameters/nsfw'
284 - $ref: '#/components/parameters/filter'
285 - $ref: '#/components/parameters/skipCount'
286 - $ref: '#/components/parameters/start'
287 - $ref: '#/components/parameters/count'
288 - $ref: '#/components/parameters/videosSort'
291 description: successful operation
295 $ref: '#/components/schemas/VideoListResponse'
299 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
300 .then(function(response) {
301 return response.json()
302 }).then(function(data) {
308 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
314 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
316 http = Net::HTTP.new(uri.host, uri.port)
319 response = http.get(uri.request_uri)
321 puts JSON.parse(response.read_body)
326 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
334 summary: List accounts
336 - $ref: '#/components/parameters/start'
337 - $ref: '#/components/parameters/count'
338 - $ref: '#/components/parameters/sort'
341 description: successful operation
347 $ref: '#/components/schemas/Account'
352 summary: Get instance public configuration
355 description: successful operation
359 $ref: '#/components/schemas/ServerConfig'
362 externalValue: https://peertube2.cpy.re/api/v1/config
365 summary: Get instance "About" information
370 description: successful operation
374 $ref: '#/components/schemas/ServerConfigAbout'
377 externalValue: https://peertube2.cpy.re/api/v1/config/about
380 summary: Get instance runtime configuration
388 description: successful operation
392 $ref: '#/components/schemas/ServerConfigCustom'
394 summary: Set instance runtime configuration
402 description: successful operation
404 x-summary: field inconsistencies
407 - the emailer is disabled and the instance is open to registrations
408 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
410 summary: Delete instance runtime configuration
418 description: successful operation
421 summary: List instance jobs
431 description: The state of the job ('' for for no filter)
441 - $ref: '#/components/parameters/jobType'
442 - $ref: '#/components/parameters/start'
443 - $ref: '#/components/parameters/count'
444 - $ref: '#/components/parameters/sort'
447 description: successful operation
460 $ref: '#/components/schemas/Job'
461 '/server/following/{host}':
468 summary: Unfollow a server
473 description: 'The host to unfollow '
479 description: successful operation
484 summary: List instance followers
486 - $ref: '#/components/parameters/start'
487 - $ref: '#/components/parameters/count'
488 - $ref: '#/components/parameters/sort'
491 description: successful operation
497 $ref: '#/components/schemas/Follow'
502 summary: List instances followed by the server
521 - $ref: '#/components/parameters/start'
522 - $ref: '#/components/parameters/count'
523 - $ref: '#/components/parameters/sort'
526 description: successful operation
532 $ref: '#/components/schemas/Follow'
539 summary: Follow a server
542 description: successful operation
544 description: cannot follow a non-HTTPS server
559 summary: Create a user
567 description: user created
571 $ref: '#/components/schemas/AddUserResponse'
575 operationId: getUserId
577 id: '$response.body#/user/id'
580 operationId: putUserId
582 id: '$response.body#/user/id'
585 operationId: delUserId
587 id: '$response.body#/user/id'
589 description: insufficient authority to create an admin or moderator
594 $ref: '#/components/schemas/AddUser'
596 If the smtp server is configured, you can leave the password empty and an email will be sent
597 asking the user to set it first.
607 - $ref: '#/components/parameters/usersSearch'
608 - $ref: '#/components/parameters/usersBlocked'
609 - $ref: '#/components/parameters/start'
610 - $ref: '#/components/parameters/count'
611 - $ref: '#/components/parameters/usersSort'
614 description: successful operation
620 $ref: '#/components/schemas/User'
623 - $ref: '#/components/parameters/id'
625 summary: Delete a user
631 operationId: delUserId
634 description: successful operation
641 operationId: getUserId
645 description: include statistics about the user (only available as a moderator/admin)
650 x-summary: successful operation
652 As an admin/moderator, you can request a response augmented with statistics about the user's
653 moderation relations and videos usage, by using the `withStats` parameter.
658 - $ref: '#/components/schemas/User'
659 - $ref: '#/components/schemas/UserWithStats'
661 summary: Update a user
666 operationId: putUserId
669 description: successful operation
674 $ref: '#/components/schemas/UpdateUser'
678 summary: Register a user
683 description: successful operation
688 $ref: '#/components/schemas/RegisterUser'
692 summary: Get my user information
700 description: successful operation
706 $ref: '#/components/schemas/User'
708 summary: Update my user information
716 description: successful operation
721 $ref: '#/components/schemas/UpdateMe'
723 /users/me/videos/imports:
725 summary: Get video imports of my user
733 - $ref: '#/components/parameters/start'
734 - $ref: '#/components/parameters/count'
735 - $ref: '#/components/parameters/sort'
738 description: successful operation
742 $ref: '#/components/schemas/VideoImportsList'
743 /users/me/video-quota-used:
745 summary: Get my user used quota
753 description: successful operation
761 description: The user video quota used so far in bytes
765 description: The user video quota used today in bytes
767 '/users/me/videos/{videoId}/rating':
769 summary: Get rate of my user for a video
779 description: The video id
781 $ref: '#/components/schemas/Video/properties/id'
784 description: successful operation
788 $ref: '#/components/schemas/GetMeVideoRating'
791 summary: Get videos of my user
799 - $ref: '#/components/parameters/start'
800 - $ref: '#/components/parameters/count'
801 - $ref: '#/components/parameters/sort'
804 description: successful operation
808 $ref: '#/components/schemas/VideoListResponse'
809 /users/me/subscriptions:
811 summary: Get my user subscriptions
818 - $ref: '#/components/parameters/start'
819 - $ref: '#/components/parameters/count'
820 - $ref: '#/components/parameters/sort'
823 description: successful operation
827 $ref: '#/components/schemas/VideoChannelList'
831 summary: Add subscription to my user
844 description: uri of the video channels to subscribe to
850 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
853 description: successful operation
854 /users/me/subscriptions/exist:
856 summary: Get if subscriptions exist for my user
863 - $ref: '#/components/parameters/subscriptionsUris'
866 description: successful operation
871 /users/me/subscriptions/videos:
873 summary: List videos of subscriptions of my user
881 - $ref: '#/components/parameters/categoryOneOf'
882 - $ref: '#/components/parameters/isLive'
883 - $ref: '#/components/parameters/tagsOneOf'
884 - $ref: '#/components/parameters/tagsAllOf'
885 - $ref: '#/components/parameters/licenceOneOf'
886 - $ref: '#/components/parameters/languageOneOf'
887 - $ref: '#/components/parameters/nsfw'
888 - $ref: '#/components/parameters/filter'
889 - $ref: '#/components/parameters/skipCount'
890 - $ref: '#/components/parameters/start'
891 - $ref: '#/components/parameters/count'
892 - $ref: '#/components/parameters/videosSort'
895 description: successful operation
899 $ref: '#/components/schemas/VideoListResponse'
900 '/users/me/subscriptions/{subscriptionHandle}':
902 summary: Get subscription of my user
909 - $ref: '#/components/parameters/subscriptionHandle'
912 description: successful operation
916 $ref: '#/components/schemas/VideoChannel'
918 summary: Delete subscription of my user
925 - $ref: '#/components/parameters/subscriptionHandle'
928 description: successful operation
929 /users/me/notifications:
931 summary: List my notifications
939 description: only list unread notifications
942 - $ref: '#/components/parameters/start'
943 - $ref: '#/components/parameters/count'
944 - $ref: '#/components/parameters/sort'
947 description: successful operation
951 $ref: '#/components/schemas/NotificationListResponse'
952 /users/me/notifications/read:
954 summary: Mark notifications as read by their id
967 description: ids of the notifications to mark as read
974 description: successful operation
975 /users/me/notifications/read-all:
977 summary: Mark all my notification as read
984 description: successful operation
985 /users/me/notification-settings:
987 summary: Update my notification settings
998 newVideoFromSubscription:
999 $ref: '#/components/schemas/NotificationSettingValue'
1000 newCommentOnMyVideo:
1001 $ref: '#/components/schemas/NotificationSettingValue'
1003 $ref: '#/components/schemas/NotificationSettingValue'
1004 videoAutoBlacklistAsModerator:
1005 $ref: '#/components/schemas/NotificationSettingValue'
1007 $ref: '#/components/schemas/NotificationSettingValue'
1009 $ref: '#/components/schemas/NotificationSettingValue'
1010 myVideoImportFinished:
1011 $ref: '#/components/schemas/NotificationSettingValue'
1013 $ref: '#/components/schemas/NotificationSettingValue'
1014 newUserRegistration:
1015 $ref: '#/components/schemas/NotificationSettingValue'
1017 $ref: '#/components/schemas/NotificationSettingValue'
1018 newInstanceFollower:
1019 $ref: '#/components/schemas/NotificationSettingValue'
1020 autoInstanceFollowing:
1021 $ref: '#/components/schemas/NotificationSettingValue'
1024 description: successful operation
1025 /users/me/history/videos:
1027 summary: List watched videos history
1033 - $ref: '#/components/parameters/start'
1034 - $ref: '#/components/parameters/count'
1035 - $ref: '#/components/parameters/search'
1038 description: successful operation
1042 $ref: '#/components/schemas/VideoListResponse'
1043 /users/me/history/videos/remove:
1045 summary: Clear video history
1052 multipart/form-data:
1057 description: history before this date will be deleted
1062 description: successful operation
1063 /users/me/avatar/pick:
1065 summary: Update my user avatar
1072 description: successful operation
1079 $ref: '#/components/schemas/ActorImage'
1081 description: image file too large
1083 X-File-Maximum-Size:
1087 description: Maximum file size for the avatar
1090 multipart/form-data:
1095 description: The file to upload
1100 contentType: image/png, image/jpeg
1103 summary: Delete my avatar
1110 description: successful operation
1114 summary: List video ownership changes
1116 - Video Ownership Change
1121 description: successful operation
1122 '/videos/ownership/{id}/accept':
1124 summary: Accept ownership change request
1126 - Video Ownership Change
1130 - $ref: '#/components/parameters/idOrUUID'
1133 description: successful operation
1135 description: cannot terminate an ownership change of another user
1137 description: video owneship change not found
1138 '/videos/ownership/{id}/refuse':
1140 summary: Refuse ownership change request
1142 - Video Ownership Change
1146 - $ref: '#/components/parameters/idOrUUID'
1149 description: successful operation
1151 description: cannot terminate an ownership change of another user
1153 description: video owneship change not found
1154 '/videos/{id}/give-ownership':
1156 summary: Request ownership change
1158 - Video Ownership Change
1162 - $ref: '#/components/parameters/idOrUUID'
1166 application/x-www-form-urlencoded:
1176 description: successful operation
1178 description: changing video ownership to a remote account is not supported yet
1180 description: video not found
1183 summary: List videos
1187 - $ref: '#/components/parameters/categoryOneOf'
1188 - $ref: '#/components/parameters/isLive'
1189 - $ref: '#/components/parameters/tagsOneOf'
1190 - $ref: '#/components/parameters/tagsAllOf'
1191 - $ref: '#/components/parameters/licenceOneOf'
1192 - $ref: '#/components/parameters/languageOneOf'
1193 - $ref: '#/components/parameters/nsfw'
1194 - $ref: '#/components/parameters/filter'
1195 - $ref: '#/components/parameters/skipCount'
1196 - $ref: '#/components/parameters/start'
1197 - $ref: '#/components/parameters/count'
1198 - $ref: '#/components/parameters/videosSort'
1201 description: successful operation
1205 $ref: '#/components/schemas/VideoListResponse'
1208 summary: List available video categories
1209 operationId: getCategories
1214 description: successful operation
1223 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1226 summary: List available video licences
1227 operationId: getLicences
1232 description: successful operation
1241 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1244 summary: List available video languages
1245 operationId: getLanguages
1250 description: successful operation
1259 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1262 summary: List available video privacy policies
1263 operationId: getPrivacyPolicies
1268 description: successful operation
1277 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1280 summary: Update a video
1286 - $ref: '#/components/parameters/idOrUUID'
1289 description: successful operation
1292 multipart/form-data:
1297 description: Video thumbnail file
1301 description: Video preview file
1305 $ref: '#/components/schemas/VideoCategorySet'
1307 $ref: '#/components/schemas/VideoLicenceSet'
1309 $ref: '#/components/schemas/VideoLanguageSet'
1311 $ref: '#/components/schemas/VideoPrivacySet'
1313 description: Video description
1316 description: Whether or not we wait transcoding before publish the video
1319 description: A text tell the audience how to support the video creator
1320 example: Please support my work on <insert crowdfunding plateform>! <3
1323 description: Whether or not this video contains sensitive content
1326 description: Video name
1331 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1340 description: Enable or disable comments for this video
1342 originallyPublishedAt:
1343 description: Date when the content was originally published
1347 $ref: '#/components/schemas/VideoScheduledUpdate'
1350 contentType: image/jpeg
1352 contentType: image/jpeg
1354 summary: Get a video
1358 - $ref: '#/components/parameters/idOrUUID'
1361 description: successful operation
1365 $ref: '#/components/schemas/VideoDetails'
1367 summary: Delete a video
1373 - $ref: '#/components/parameters/idOrUUID'
1376 description: successful operation
1377 '/videos/{id}/description':
1379 summary: Get complete video description
1383 - $ref: '#/components/parameters/idOrUUID'
1386 description: successful operation
1395 **[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)**
1396 '/videos/{id}/views':
1398 summary: Add a view to a video
1402 - $ref: '#/components/parameters/idOrUUID'
1405 description: successful operation
1406 '/videos/{id}/watching':
1408 summary: Set watching progress of a video
1414 - $ref: '#/components/parameters/idOrUUID'
1419 $ref: '#/components/schemas/UserWatchingVideo'
1423 description: successful operation
1426 summary: Upload a video
1427 description: Uses a single request to upload a video.
1428 operationId: uploadLegacy
1436 description: successful operation
1440 $ref: '#/components/schemas/VideoUploadResponse'
1442 description: invalid file field, schedule date or parameter
1444 description: video didn't pass upload filter
1446 description: upload has timed out
1448 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1450 X-File-Maximum-Size:
1454 description: Maximum file size for the video
1456 description: video type unsupported
1458 description: video unreadable
1461 multipart/form-data:
1463 $ref: '#/components/schemas/VideoUploadRequestLegacy'
1466 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1468 contentType: image/jpeg
1470 contentType: image/jpeg
1475 USERNAME="<your_username>"
1476 PASSWORD="<your_password>"
1477 FILE_PATH="<your_file_path>"
1478 CHANNEL_ID="<your_channel_id>"
1481 API_PATH="https://peertube2.cpy.re/api/v1"
1483 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1484 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1485 token=$(curl -s "$API_PATH/users/token" \
1486 --data client_id="$client_id" \
1487 --data client_secret="$client_secret" \
1488 --data grant_type=password \
1489 --data response_type=code \
1490 --data username="$USERNAME" \
1491 --data password="$PASSWORD" \
1492 | jq -r ".access_token")
1494 curl -s "$API_PATH/videos/upload" \
1495 -H "Authorization: Bearer $token" \
1497 --form videofile=@"$FILE_PATH" \
1498 --form channelId=$CHANNEL_ID \
1500 /videos/upload-resumable:
1502 summary: Initialize the resumable upload of a video
1503 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to initialize the upload of a video
1504 operationId: uploadResumableInit
1511 - name: X-Upload-Content-Length
1517 description: Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
1518 - name: X-Upload-Content-Type
1525 description: MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
1530 $ref: '#/components/schemas/VideoUploadRequestResumable'
1533 description: file already exists, send a [`resume`](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) request instead
1535 description: created
1541 example: /api/v1/videos/upload-resumable?upload_id=471e97554f21dec3b8bb5d4602939c51
1547 description: invalid file field, schedule date or parameter
1549 description: video file too large, due to quota, absolute max file size or concurrent partial upload limit
1551 description: video type unsupported
1553 summary: Send chunk for the resumable upload of a video
1554 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
1555 operationId: uploadResumable
1566 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
1567 not valid anymore and you need to initialize a new upload.
1570 - name: Content-Range
1574 example: bytes 0-262143/2469036
1577 Specifies the bytes in the file that the request is uploading.
1579 For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first
1580 262144 bytes (256 x 1024) in a 2,469,036 byte file.
1581 - name: Content-Length
1588 Size of the chunk that the request is sending.
1590 The chunk size __must be a multiple of 256 KB__, and unlike [Google Resumable](https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol)
1591 doesn't mandate for chunks to have the same size throughout the upload sequence.
1593 Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from
1594 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
1597 application/octet-stream:
1603 description: last chunk received
1611 $ref: '#/components/schemas/VideoUploadResponse'
1613 description: resume incomplete
1618 example: bytes=0-262143
1624 description: video didn't pass upload filter
1626 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1628 description: video unreadable
1630 summary: Cancel the resumable upload of a video, deleting any data uploaded so far
1631 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to cancel the upload of a video
1632 operationId: uploadResumableCancel
1643 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
1644 not valid anymore and the upload session has already been deleted with its data ;-)
1647 - name: Content-Length
1655 description: upload cancelled
1663 summary: Import a video
1664 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1665 operationId: importVideo
1673 multipart/form-data:
1675 $ref: '#/components/schemas/VideoCreateImport'
1678 contentType: application/x-bittorrent
1680 contentType: image/jpeg
1682 contentType: image/jpeg
1685 description: successful operation
1689 $ref: '#/components/schemas/VideoUploadResponse'
1691 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1693 description: video didn't pass pre-import filter
1695 description: HTTP or Torrent/magnetURI import not enabled
1699 summary: Create a live
1700 operationId: createLive
1708 description: successful operation
1712 $ref: '#/components/schemas/VideoUploadResponse'
1714 description: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1717 multipart/form-data:
1722 description: Channel id that will contain this live video
1727 description: User can stream multiple times in a permanent live
1730 description: Live video/replay thumbnail file
1734 description: Live video/replay preview file
1738 $ref: '#/components/schemas/VideoPrivacySet'
1740 $ref: '#/components/schemas/VideoCategorySet'
1742 $ref: '#/components/schemas/VideoLicenceSet'
1744 $ref: '#/components/schemas/VideoLanguageSet'
1746 description: Live video/replay description
1749 description: A text tell the audience how to support the creator
1750 example: Please support my work on <insert crowdfunding plateform>! <3
1753 description: Whether or not this live video/replay contains sensitive content
1756 description: Live video/replay name
1761 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1770 description: Enable or disable comments for this live video/replay
1773 description: Enable or disable downloading for the replay of this live
1780 contentType: image/jpeg
1782 contentType: image/jpeg
1786 summary: Get information about a live
1787 operationId: getLiveId
1794 - $ref: '#/components/parameters/idOrUUID'
1797 description: successful operation
1801 $ref: '#/components/schemas/LiveVideoResponse'
1803 summary: Update information about a live
1804 operationId: updateLiveId
1811 - $ref: '#/components/parameters/idOrUUID'
1816 $ref: '#/components/schemas/LiveVideoUpdate'
1819 description: successful operation
1821 description: bad parameters or trying to update a live that has already started
1823 description: trying to save replay of the live but saving replay is not enabled on the instance
1827 summary: List my abuses
1828 operationId: getMyAbuses
1837 description: only list the report with this id
1843 $ref: '#/components/schemas/AbuseStateSet'
1844 - $ref: '#/components/parameters/abusesSort'
1845 - $ref: '#/components/parameters/start'
1846 - $ref: '#/components/parameters/count'
1849 description: successful operation
1861 $ref: '#/components/schemas/Abuse'
1865 summary: List abuses
1866 operationId: getAbuses
1876 description: only list the report with this id
1879 - name: predefinedReason
1881 description: predefined reason the listed reports should contain
1883 $ref: '#/components/schemas/PredefinedAbuseReasons'
1886 description: plain search that will match with video titles, reporter names and more
1892 $ref: '#/components/schemas/AbuseStateSet'
1893 - name: searchReporter
1895 description: only list reports of a specific reporter
1898 - name: searchReportee
1899 description: only list reports of a specific reportee
1905 description: only list reports of a specific video
1908 - name: searchVideoChannel
1910 description: only list reports of a specific video channel
1915 description: only list blacklisted or deleted videos
1923 description: only list account, comment or video reports
1930 - $ref: '#/components/parameters/start'
1931 - $ref: '#/components/parameters/count'
1932 - $ref: '#/components/parameters/abusesSort'
1935 description: successful operation
1947 $ref: '#/components/schemas/Abuse'
1950 summary: Report an abuse
1963 description: Reason why the user reports this video
1968 $ref: '#/components/schemas/PredefinedAbuseReasons'
1973 description: Video id to report
1975 - $ref: '#/components/schemas/Video/properties/id'
1978 description: Timestamp in the video that marks the beginning of the report
1982 description: Timestamp in the video that marks the ending of the report
1988 description: Comment id to report
1990 - $ref: '#/components/schemas/VideoComment/properties/id'
1995 description: Account id to report
2001 description: successful operation
2003 description: incorrect request parameters
2004 '/abuses/{abuseId}':
2006 summary: Update an abuse
2014 - $ref: '#/components/parameters/abuseId'
2022 $ref: '#/components/schemas/AbuseStateSet'
2025 description: Update the report comment visible only to the moderation team
2030 description: successful operation
2032 description: abuse not found
2036 summary: Delete an abuse
2042 - $ref: '#/components/parameters/abuseId'
2045 description: successful operation
2047 description: block not found
2048 '/abuses/{abuseId}/messages':
2050 summary: List messages of an abuse
2056 - $ref: '#/components/parameters/abuseId'
2059 description: successful operation
2065 $ref: '#/components/schemas/AbuseMessage'
2068 summary: Add message to an abuse
2074 - $ref: '#/components/parameters/abuseId'
2083 description: Message to send
2091 description: successful operation
2093 description: incorrect request parameters
2094 '/abuses/{abuseId}/messages/{abuseMessageId}':
2096 summary: Delete an abuse message
2102 - $ref: '#/components/parameters/abuseId'
2103 - $ref: '#/components/parameters/abuseMessageId'
2106 description: successful operation
2108 '/videos/{id}/blacklist':
2110 summary: Block a video
2118 - $ref: '#/components/parameters/idOrUUID'
2121 description: successful operation
2123 summary: Unblock a video by its id
2131 - $ref: '#/components/parameters/idOrUUID'
2134 description: successful operation
2136 description: block not found
2141 summary: List video blocks
2150 list only blocks that match this type:
2154 - `2`: automatic block that needs review
2162 description: plain search that will match with video titles, and more
2165 - $ref: '#/components/parameters/start'
2166 - $ref: '#/components/parameters/count'
2167 - $ref: '#/components/parameters/blacklistsSort'
2170 description: successful operation
2182 $ref: '#/components/schemas/VideoBlacklist'
2183 /videos/{id}/captions:
2185 summary: List captions of a video
2189 - $ref: '#/components/parameters/idOrUUID'
2192 description: successful operation
2204 $ref: '#/components/schemas/VideoCaption'
2205 /videos/{id}/captions/{captionLanguage}:
2207 summary: Add or replace a video caption
2214 - $ref: '#/components/parameters/idOrUUID'
2215 - $ref: '#/components/parameters/captionLanguage'
2218 multipart/form-data:
2223 description: The file to upload.
2228 contentType: text/vtt, application/x-subrip, text/plain
2231 description: successful operation
2233 description: video or language not found
2235 summary: Delete a video caption
2242 - $ref: '#/components/parameters/idOrUUID'
2243 - $ref: '#/components/parameters/captionLanguage'
2246 description: successful operation
2248 description: video or language or caption for that language not found
2251 summary: List video channels
2255 - $ref: '#/components/parameters/start'
2256 - $ref: '#/components/parameters/count'
2257 - $ref: '#/components/parameters/sort'
2260 description: successful operation
2264 $ref: '#/components/schemas/VideoChannelList'
2266 summary: Create a video channel
2273 description: successful operation
2278 $ref: '#/components/schemas/VideoChannelCreate'
2279 '/video-channels/{channelHandle}':
2281 summary: Get a video channel
2285 - $ref: '#/components/parameters/channelHandle'
2288 description: successful operation
2292 $ref: '#/components/schemas/VideoChannel'
2294 summary: Update a video channel
2300 - $ref: '#/components/parameters/channelHandle'
2303 description: successful operation
2308 $ref: '#/components/schemas/VideoChannelUpdate'
2310 summary: Delete a video channel
2316 - $ref: '#/components/parameters/channelHandle'
2319 description: successful operation
2320 '/video-channels/{channelHandle}/videos':
2322 summary: List videos of a video channel
2327 - $ref: '#/components/parameters/channelHandle'
2328 - $ref: '#/components/parameters/categoryOneOf'
2329 - $ref: '#/components/parameters/isLive'
2330 - $ref: '#/components/parameters/tagsOneOf'
2331 - $ref: '#/components/parameters/tagsAllOf'
2332 - $ref: '#/components/parameters/licenceOneOf'
2333 - $ref: '#/components/parameters/languageOneOf'
2334 - $ref: '#/components/parameters/nsfw'
2335 - $ref: '#/components/parameters/filter'
2336 - $ref: '#/components/parameters/skipCount'
2337 - $ref: '#/components/parameters/start'
2338 - $ref: '#/components/parameters/count'
2339 - $ref: '#/components/parameters/videosSort'
2342 description: successful operation
2346 $ref: '#/components/schemas/VideoListResponse'
2347 '/video-channels/{channelHandle}/avatar/pick':
2349 summary: Update channel avatar
2355 - $ref: '#/components/parameters/channelHandle'
2358 description: successful operation
2365 $ref: '#/components/schemas/ActorImage'
2367 description: image file too large
2369 X-File-Maximum-Size:
2373 description: Maximum file size for the avatar
2376 multipart/form-data:
2381 description: The file to upload.
2386 contentType: image/png, image/jpeg
2387 '/video-channels/{channelHandle}/avatar':
2389 summary: Delete channel avatar
2395 - $ref: '#/components/parameters/channelHandle'
2398 description: successful operation
2401 '/video-channels/{channelHandle}/banner/pick':
2403 summary: Update channel banner
2409 - $ref: '#/components/parameters/channelHandle'
2412 description: successful operation
2419 $ref: '#/components/schemas/ActorImage'
2421 description: image file too large
2423 X-File-Maximum-Size:
2427 description: Maximum file size for the banner
2430 multipart/form-data:
2435 description: The file to upload.
2440 contentType: image/png, image/jpeg
2441 '/video-channels/{channelHandle}/banner':
2443 summary: Delete channel banner
2449 - $ref: '#/components/parameters/channelHandle'
2452 description: successful operation
2454 /video-playlists/privacies:
2456 summary: List available playlist privacy policies
2457 operationId: getPlaylistPrivacyPolicies
2462 description: successful operation
2471 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2475 summary: List video playlists
2476 operationId: getPlaylists
2480 - $ref: '#/components/parameters/start'
2481 - $ref: '#/components/parameters/count'
2482 - $ref: '#/components/parameters/sort'
2485 description: successful operation
2497 $ref: '#/components/schemas/VideoPlaylist'
2499 summary: Create a video playlist
2500 description: If the video playlist is set as public, `videoChannelId` is mandatory.
2501 operationId: createPlaylist
2508 description: successful operation
2518 $ref: '#/components/schemas/VideoPlaylist/properties/id'
2520 $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
2523 multipart/form-data:
2528 description: Video playlist display name
2533 description: Video playlist thumbnail file
2537 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2539 description: Video playlist description
2545 - $ref: '#/components/schemas/id'
2546 description: Video channel in which the playlist will be published
2551 contentType: image/jpeg
2553 /video-playlists/{id}:
2555 summary: Get a video playlist
2559 - $ref: '#/components/parameters/idOrUUID'
2562 description: successful operation
2566 $ref: '#/components/schemas/VideoPlaylist'
2568 summary: Update a video playlist
2569 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2576 description: successful operation
2578 - $ref: '#/components/parameters/idOrUUID'
2581 multipart/form-data:
2586 description: Video playlist display name
2591 description: Video playlist thumbnail file
2595 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2597 description: Video playlist description
2601 - $ref: '#/components/schemas/id'
2602 description: Video channel in which the playlist will be published
2605 contentType: image/jpeg
2607 summary: Delete a video playlist
2613 - $ref: '#/components/parameters/idOrUUID'
2616 description: successful operation
2618 /video-playlists/{id}/videos:
2620 summary: 'List videos of a playlist'
2625 - $ref: '#/components/parameters/idOrUUID'
2628 description: successful operation
2632 $ref: '#/components/schemas/VideoListResponse'
2634 summary: 'Add a video in a playlist'
2641 - $ref: '#/components/parameters/idOrUUID'
2644 description: successful operation
2650 videoPlaylistElement:
2663 - $ref: '#/components/schemas/Video/properties/id'
2664 description: Video to add in the playlist
2667 description: Start the video at this specific timestamp (in seconds)
2670 description: Stop the video at this specific timestamp (in seconds)
2674 /video-playlists/{id}/videos/reorder:
2676 summary: 'Reorder a playlist'
2682 - $ref: '#/components/parameters/idOrUUID'
2685 description: successful operation
2694 description: 'Start position of the element to reorder'
2696 insertAfterPosition:
2698 description: 'New position for the block to reorder, to add the block before the first element'
2702 description: 'How many element from `startPosition` to reorder'
2706 - insertAfterPosition
2708 /video-playlists/{id}/videos/{playlistElementId}:
2710 summary: 'Update a playlist element'
2716 - $ref: '#/components/parameters/idOrUUID'
2717 - $ref: '#/components/parameters/playlistElementId'
2720 description: successful operation
2729 description: 'Start the video at this specific timestamp (in seconds)'
2732 description: 'Stop the video at this specific timestamp (in seconds)'
2734 summary: 'Delete an element from a playlist'
2740 - $ref: '#/components/parameters/idOrUUID'
2741 - $ref: '#/components/parameters/playlistElementId'
2744 description: successful operation
2746 '/users/me/video-playlists/videos-exist':
2748 summary: 'Check video exists in my playlists'
2757 description: The video ids to check
2761 $ref: '#/components/schemas/Video/properties/id'
2764 description: successful operation
2784 '/accounts/{name}/video-channels':
2786 summary: List video channels of an account
2791 - $ref: '#/components/parameters/name'
2794 description: include view statistics for the last 30 days (only if authentified as the account user)
2797 - $ref: '#/components/parameters/start'
2798 - $ref: '#/components/parameters/count'
2799 - $ref: '#/components/parameters/sort'
2802 description: successful operation
2806 $ref: '#/components/schemas/VideoChannelList'
2807 '/accounts/{name}/ratings':
2809 summary: List ratings of an account
2815 - $ref: '#/components/parameters/name'
2816 - $ref: '#/components/parameters/start'
2817 - $ref: '#/components/parameters/count'
2818 - $ref: '#/components/parameters/sort'
2822 description: Optionally filter which ratings to retrieve
2830 description: successful operation
2836 $ref: '#/components/schemas/VideoRating'
2837 '/videos/{id}/comment-threads':
2839 summary: List threads of a video
2843 - $ref: '#/components/parameters/idOrUUID'
2844 - $ref: '#/components/parameters/start'
2845 - $ref: '#/components/parameters/count'
2846 - $ref: '#/components/parameters/commentsSort'
2849 description: successful operation
2853 $ref: '#/components/schemas/CommentThreadResponse'
2855 summary: Create a thread
2861 - $ref: '#/components/parameters/idOrUUID'
2864 description: successful operation
2868 $ref: '#/components/schemas/CommentThreadPostResponse'
2870 description: video does not exist
2879 - $ref: '#/components/schemas/VideoComment/properties/text'
2885 '/videos/{id}/comment-threads/{threadId}':
2887 summary: Get a thread
2891 - $ref: '#/components/parameters/idOrUUID'
2892 - $ref: '#/components/parameters/threadId'
2895 description: successful operation
2899 $ref: '#/components/schemas/VideoCommentThreadTree'
2900 '/videos/{id}/comments/{commentId}':
2902 summary: Reply to a thread of a video
2908 - $ref: '#/components/parameters/idOrUUID'
2909 - $ref: '#/components/parameters/commentId'
2912 description: successful operation
2916 $ref: '#/components/schemas/CommentThreadPostResponse'
2918 description: thread or video does not exist
2927 - $ref: '#/components/schemas/VideoComment/properties/text'
2934 summary: Delete a comment or a reply
2940 - $ref: '#/components/parameters/idOrUUID'
2941 - $ref: '#/components/parameters/commentId'
2944 description: successful operation
2946 description: cannot remove comment of another user
2948 description: comment or video does not exist
2950 description: comment is already deleted
2951 '/videos/{id}/rate':
2953 summary: Like/dislike a video
2959 - $ref: '#/components/parameters/idOrUUID'
2973 description: successful operation
2975 description: video does not exist
2980 summary: Search videos
2985 allowEmptyValue: false
2987 String to search. If the user can make a remote URI search, and the string is an URI then the
2988 PeerTube instance will fetch the remote object and add it to its database. Then,
2989 you can use the REST API to fetch the complete video information and interact with it.
2992 - $ref: '#/components/parameters/categoryOneOf'
2993 - $ref: '#/components/parameters/isLive'
2994 - $ref: '#/components/parameters/tagsOneOf'
2995 - $ref: '#/components/parameters/tagsAllOf'
2996 - $ref: '#/components/parameters/licenceOneOf'
2997 - $ref: '#/components/parameters/languageOneOf'
2998 - $ref: '#/components/parameters/nsfw'
2999 - $ref: '#/components/parameters/filter'
3000 - $ref: '#/components/parameters/skipCount'
3001 - $ref: '#/components/parameters/start'
3002 - $ref: '#/components/parameters/count'
3003 - $ref: '#/components/parameters/searchTarget'
3004 - $ref: '#/components/parameters/videosSearchSort'
3007 description: Get videos that are published after this date
3013 description: Get videos that are published before this date
3017 - name: originallyPublishedStartDate
3019 description: Get videos that are originally published after this date
3023 - name: originallyPublishedEndDate
3025 description: Get videos that are originally published before this date
3031 description: Get videos that have this minimum duration
3036 description: Get videos that have this maximum duration
3040 'searchTarget === search-index':
3041 $ref: '#/components/callbacks/searchIndex'
3044 description: successful operation
3048 $ref: '#/components/schemas/VideoListResponse'
3050 description: search index unavailable
3051 /search/video-channels:
3055 summary: Search channels
3061 String to search. If the user can make a remote URI search, and the string is an URI then the
3062 PeerTube instance will fetch the remote object and add it to its database. Then,
3063 you can use the REST API to fetch the complete channel information and interact with it.
3066 - $ref: '#/components/parameters/start'
3067 - $ref: '#/components/parameters/count'
3068 - $ref: '#/components/parameters/searchTarget'
3069 - $ref: '#/components/parameters/sort'
3071 'searchTarget === search-index':
3072 $ref: '#/components/callbacks/searchIndex'
3075 description: successful operation
3079 $ref: '#/components/schemas/VideoChannelList'
3081 description: search index unavailable
3082 /blocklist/accounts:
3086 summary: List account blocks
3091 - $ref: '#/components/parameters/start'
3092 - $ref: '#/components/parameters/count'
3093 - $ref: '#/components/parameters/sort'
3096 description: successful operation
3100 summary: Block an account
3112 example: chocobozzz@example.org
3113 description: account to block, in the form `username@domain`
3118 description: successful operation
3120 description: self-blocking forbidden
3121 '/blocklist/accounts/{accountName}':
3125 summary: Unblock an account by its handle
3133 description: account to unblock, in the form `username@domain`
3138 description: successful operation
3140 description: account or account block does not exist
3145 summary: List server blocks
3150 - $ref: '#/components/parameters/start'
3151 - $ref: '#/components/parameters/count'
3152 - $ref: '#/components/parameters/sort'
3155 description: successful operation
3159 summary: Block a server
3172 description: server domain to block
3177 description: successful operation
3179 description: self-blocking forbidden
3180 '/blocklist/servers/{host}':
3184 summary: Unblock a server by its domain
3192 description: server domain to unblock
3198 description: successful operation
3200 description: account block does not exist
3204 - Instance Redundancy
3205 summary: Update a server redundancy policy
3213 description: server domain to mirror
3225 description: allow mirroring of the host's local videos
3230 description: successful operation
3232 description: server is not already known
3237 summary: List videos being mirrored
3245 description: direction of the mirror
3251 - $ref: '#/components/parameters/start'
3252 - $ref: '#/components/parameters/count'
3253 - $ref: '#/components/parameters/videoRedundanciesSort'
3256 description: successful operation
3262 $ref: '#/components/schemas/VideoRedundancy'
3266 summary: Mirror a video
3277 $ref: '#/components/schemas/Video/properties/id'
3282 description: successful operation
3284 description: cannot mirror a local video
3286 description: video does not exist
3288 description: video is already mirrored
3289 /redundancy/videos/{redundancyId}:
3293 summary: Delete a mirror done on a video
3298 - name: redundancyId
3301 description: id of an existing redundancy on a video
3306 description: successful operation
3308 description: video redundancy not found
3309 '/feeds/video-comments.{format}':
3313 summary: List comments on videos
3318 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3331 description: 'limit listing to a specific video'
3336 description: 'limit listing to a specific account'
3341 description: 'limit listing to a specific account'
3344 - name: videoChannelId
3346 description: 'limit listing to a specific video channel'
3349 - name: videoChannelName
3351 description: 'limit listing to a specific video channel'
3356 description: successful operation
3361 default: 'max-age=900' # 15 min cache
3365 $ref: '#/components/schemas/VideoCommentsForXML'
3368 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
3369 application/rss+xml:
3371 $ref: '#/components/schemas/VideoCommentsForXML'
3374 externalValue: https://peertube2.cpy.re/feeds/video-comments.rss?filter=local
3377 $ref: '#/components/schemas/VideoCommentsForXML'
3380 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
3381 application/atom+xml:
3383 $ref: '#/components/schemas/VideoCommentsForXML'
3386 externalValue: https://peertube2.cpy.re/feeds/video-comments.atom?filter=local
3392 externalValue: https://peertube2.cpy.re/feeds/video-comments.json?filter=local
3394 x-summary: field inconsistencies
3397 - videoId filter is mixed with a channel filter
3399 description: video, video channel or account not found
3401 description: accept header unsupported
3402 '/feeds/videos.{format}':
3406 summary: List videos
3411 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3424 description: 'limit listing to a specific account'
3429 description: 'limit listing to a specific account'
3432 - name: videoChannelId
3434 description: 'limit listing to a specific video channel'
3437 - name: videoChannelName
3439 description: 'limit listing to a specific video channel'
3442 - $ref: '#/components/parameters/sort'
3443 - $ref: '#/components/parameters/nsfw'
3444 - $ref: '#/components/parameters/filter'
3447 description: successful operation
3452 default: 'max-age=900' # 15 min cache
3456 $ref: '#/components/schemas/VideosForXML'
3459 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3460 application/rss+xml:
3462 $ref: '#/components/schemas/VideosForXML'
3465 externalValue: https://peertube2.cpy.re/feeds/videos.rss?filter=local
3468 $ref: '#/components/schemas/VideosForXML'
3471 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3472 application/atom+xml:
3474 $ref: '#/components/schemas/VideosForXML'
3477 externalValue: https://peertube2.cpy.re/feeds/videos.atom?filter=local
3483 externalValue: https://peertube2.cpy.re/feeds/videos.json?filter=local
3485 description: video channel or account not found
3487 description: accept header unsupported
3488 '/feeds/subscriptions.{format}':
3493 summary: List videos of subscriptions tied to a token
3498 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3511 description: limit listing to a specific account
3517 description: private token allowing access
3521 - $ref: '#/components/parameters/sort'
3522 - $ref: '#/components/parameters/nsfw'
3523 - $ref: '#/components/parameters/filter'
3526 description: successful operation
3531 default: 'max-age=900' # 15 min cache
3535 $ref: '#/components/schemas/VideosForXML'
3536 application/rss+xml:
3538 $ref: '#/components/schemas/VideosForXML'
3541 $ref: '#/components/schemas/VideosForXML'
3542 application/atom+xml:
3544 $ref: '#/components/schemas/VideosForXML'
3549 description: accept header unsupported
3554 summary: List plugins
3567 - $ref: '#/components/parameters/start'
3568 - $ref: '#/components/parameters/count'
3569 - $ref: '#/components/parameters/sort'
3572 description: successful operation
3576 $ref: '#/components/schemas/PluginResponse'
3581 summary: List available plugins
3594 - name: currentPeerTubeEngine
3598 - $ref: '#/components/parameters/start'
3599 - $ref: '#/components/parameters/count'
3600 - $ref: '#/components/parameters/sort'
3603 description: successful operation
3607 $ref: '#/components/schemas/PluginResponse'
3609 description: plugin index unavailable
3614 summary: Install a plugin
3627 example: peertube-plugin-auth-ldap
3630 additionalProperties: false
3637 additionalProperties: false
3640 description: successful operation
3642 description: should have either `npmName` or `path` set
3647 summary: Update a plugin
3660 example: peertube-plugin-auth-ldap
3663 additionalProperties: false
3670 additionalProperties: false
3673 description: successful operation
3675 description: should have either `npmName` or `path` set
3677 description: existing plugin not found
3682 summary: Uninstall a plugin
3694 description: name of the plugin/theme in its package.json
3695 example: peertube-plugin-auth-ldap
3700 description: successful operation
3702 description: existing plugin not found
3707 summary: Get a plugin
3712 - $ref: '#/components/parameters/npmName'
3715 description: successful operation
3719 $ref: '#/components/schemas/Plugin'
3721 description: plugin not found
3722 /plugins/{npmName}/settings:
3726 summary: Set a plugin's settings
3731 - $ref: '#/components/parameters/npmName'
3740 additionalProperties: true
3743 description: successful operation
3745 description: plugin not found
3746 /plugins/{npmName}/public-settings:
3750 summary: Get a plugin's public settings
3752 - $ref: '#/components/parameters/npmName'
3755 description: successful operation
3760 additionalProperties: true
3762 description: plugin not found
3763 /plugins/{npmName}/registered-settings:
3767 summary: Get a plugin's registered settings
3772 - $ref: '#/components/parameters/npmName'
3775 description: successful operation
3780 additionalProperties: true
3782 description: plugin not found
3784 - url: 'https://peertube2.cpy.re/api/v1'
3785 description: Live Test Server (live data - latest nightly version)
3786 - url: 'https://peertube3.cpy.re/api/v1'
3787 description: Live Test Server (live data - latest RC version)
3788 - url: 'https://peertube.cpy.re/api/v1'
3789 description: Live Test Server (live data - stable version)
3796 description: Offset used to paginate results
3804 description: "Number of items to return"
3814 description: Sort column
3822 description: Plain text search, applied to various parts of the model depending on endpoint
3830 If the administrator enabled search index support, you can override the default search target.
3833 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3834 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3835 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3836 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3837 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3838 * 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
3839 the data from the origin instance API
3849 description: Sort videos by criteria
3865 description: Sort videos by criteria
3880 description: Sort comments by criteria
3890 description: Sort blacklists by criteria
3906 description: Plain text search that will match with user usernames or emails
3913 description: Filter results down to (un)banned users
3920 description: Sort users by criteria
3931 description: Sort abuses by criteria
3938 videoRedundanciesSort:
3942 description: Sort abuses by criteria
3951 description: The username or handle of the account
3954 example: chocobozzz | chocobozzz@example.org
3959 description: The user id
3961 $ref: '#/components/schemas/id'
3966 description: The object id or uuid
3969 - $ref: '#/components/schemas/id'
3970 - $ref: '#/components/schemas/UUIDv4'
3972 name: playlistElementId
3975 description: Playlist element id
3977 $ref: '#/components/schemas/id'
3982 description: Abuse id
3984 $ref: '#/components/schemas/Abuse/properties/id'
3986 name: abuseMessageId
3989 description: Abuse message id
3991 $ref: '#/components/schemas/AbuseMessage/properties/id'
3993 name: captionLanguage
3996 description: The caption language
3998 $ref: '#/components/schemas/VideoLanguageSet'
4003 description: The video channel handle
4006 example: my_username | my_username@example.com
4008 name: subscriptionHandle
4011 description: The subscription handle
4014 example: my_username | my_username@example.com
4019 description: The thread id (root comment id)
4021 $ref: '#/components/schemas/VideoCommentThreadTree/properties/comment/properties/id'
4026 description: The comment id
4028 $ref: '#/components/schemas/VideoComment/properties/id'
4033 description: whether or not the video is a live
4040 description: category id of the video (see [/videos/categories](#operation/getCategories))
4043 - $ref: '#/components/schemas/VideoCategorySet'
4046 $ref: '#/components/schemas/VideoCategorySet'
4053 description: tag(s) of the video
4067 description: tag(s) of the video, where all should be present in the video
4080 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
4083 - $ref: '#/components/schemas/VideoLanguageSet'
4086 $ref: '#/components/schemas/VideoLanguageSet'
4093 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4096 - $ref: '#/components/schemas/VideoLicenceSet'
4099 $ref: '#/components/schemas/VideoLicenceSet'
4106 description: if you don't need the `total` in the response
4117 description: whether to include nsfw videos, if any
4128 Special filters which might require special rights:
4129 * `local` - only videos local to the instance
4130 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
4131 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
4141 description: list of uris to check if each is part of the user subscriptions
4151 description: name of the plugin/theme on npmjs.com or in its package.json
4154 example: peertube-plugin-auth-ldap
4159 description: job type
4163 - activitypub-follow
4164 - activitypub-http-broadcast
4165 - activitypub-http-fetcher
4166 - activitypub-http-unicast
4172 - activitypub-refresher
4178 Authenticating via OAuth requires the following steps:
4179 - Have an activated account
4180 - [Generate](https://docs.joinpeertube.org/api-rest-getting-started) a
4181 Bearer Token for that account at `/api/v1/users/token`
4182 - Make authenticated requests, putting *Authorization: Bearer <token\>*
4183 - Profit, depending on the role assigned to the account
4185 Note that the __access token is valid for 1 day__ and, and is given
4186 along with a __refresh token valid for 2 weeks__.
4190 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
4193 moderator: Moderator scope
4196 # Resuable core properties
4204 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4205 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
4210 description: immutable name of the user, used to find or mention its actor
4212 pattern: '/^[a-z0-9._]{1,50}$/'
4217 description: immutable name of the channel, used to interact with its actor
4218 example: The Capybara Channel
4219 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4228 description: category id of the video (see [/videos/categories](#operation/getCategories))
4230 VideoConstantNumber-Category:
4233 $ref: '#/components/schemas/VideoCategorySet'
4236 example: Science & Technology
4240 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4242 VideoConstantNumber-Licence:
4245 $ref: '#/components/schemas/VideoLicenceSet'
4248 example: Attribution - Share Alike
4252 description: language id of the video (see [/videos/languages](#operation/getLanguages))
4254 VideoConstantString-Language:
4257 $ref: '#/components/schemas/VideoLanguageSet'
4262 VideoPlaylistPrivacySet:
4268 description: Video playlist privacy policy (see [/video-playlists/privacies])
4269 VideoPlaylistPrivacyConstant:
4272 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
4276 VideoPlaylistTypeSet:
4281 description: The video playlist type (Regular = `1`, Watch Later = `2`)
4282 VideoPlaylistTypeConstant:
4285 $ref: '#/components/schemas/VideoPlaylistTypeSet'
4296 description: privacy id of the video (see [/videos/privacies](#operation/getPrivacyPolicies))
4297 VideoPrivacyConstant:
4300 $ref: '#/components/schemas/VideoPrivacySet'
4317 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
4324 description: 'Admin flags for the user (None = `0`, Bypass video blacklist = `1`)'
4335 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
4345 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
4349 $ref: '#/components/schemas/AbuseStateSet'
4352 AbusePredefinedReasons:
4365 example: [spamOrMisleading]
4370 Video resolution (`0`, `240`, `360`, `720`, `1080`, `1440` or `2160`)
4372 `0` is used as a special value for stillimage videos dedicated to audio, a.k.a. audio-only videos.
4374 VideoResolutionConstant:
4375 description: resolutions and their labels for the video
4378 $ref: '#/components/schemas/VideoResolutionSet'
4382 VideoScheduledUpdate:
4385 $ref: '#/components/schemas/VideoPrivacySet'
4389 description: When to update the video
4409 - $ref: '#/components/schemas/ActorImage'
4410 VideoChannelSummary:
4413 $ref: '#/components/schemas/id'
4427 - $ref: '#/components/schemas/ActorImage'
4439 - $ref: '#/components/schemas/Video'
4446 description: magnet URI allowing to resolve the video via BitTorrent without a metainfo file
4447 example: magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F9c9de5e8-0a1e-484a-b099-e80766180a6d-240.torrent&xt=urn:btih:38b4747ff788b30bf61f59d1965cd38f9e48e01f&dn=What+is+PeerTube%3F&tr=wss%3A%2F%2Fframatube.org%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F9c9de5e8-0a1e-484a-b099-e80766180a6d-240.mp4
4448 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
4450 $ref: '#/components/schemas/VideoResolutionConstant'
4453 description: Video file size in bytes
4456 description: Direct URL of the torrent file
4460 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
4464 description: Direct URL of the video
4468 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
4472 description: Frames per second of the video file
4476 description: URL dereferencing the output of ffprobe on the file
4477 VideoStreamingPlaylists:
4482 $ref: '#/components/schemas/id'
4490 - $ref: '#/components/schemas/VideoStreamingPlaylists-HLS'
4491 VideoStreamingPlaylists-HLS:
4502 Video files associated to this playlist.
4504 The difference with the root `files` property is that these files are fragmented, so they can be used in this streaming playlist (HLS, etc.)
4506 $ref: '#/components/schemas/VideoFile'
4518 $ref: '#/components/schemas/Video/properties/id'
4520 $ref: '#/components/schemas/Video/properties/uuid'
4522 $ref: '#/components/schemas/Video/properties/name'
4526 description: object id for the video
4528 - $ref: '#/components/schemas/id'
4530 description: universal identifier for the video, that can be used across instances
4532 - $ref: '#/components/schemas/UUIDv4'
4538 example: 2017-10-01T10:52:46.396Z
4539 description: time at which the video object was first drafted
4543 example: 2018-10-01T10:52:46.396Z
4544 description: time at which the video was marked as ready for playback (with restrictions depending on `privacy`). Usually set after a `state` evolution.
4548 example: 2021-05-04T08:01:01.502Z
4549 description: last time the video's metadata was modified
4550 originallyPublishedAt:
4553 example: 2010-10-01T10:52:46.396Z
4554 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
4557 - $ref: '#/components/schemas/VideoConstantNumber-Category'
4558 description: category in which the video is classified
4561 - $ref: '#/components/schemas/VideoConstantNumber-Licence'
4562 description: licence under which the video is distributed
4565 - $ref: '#/components/schemas/VideoConstantString-Language'
4566 description: main language used in the video
4569 - $ref: '#/components/schemas/VideoPrivacyConstant'
4570 description: privacy policy used to distribute the video
4574 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n
4575 **Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\r\n*A decentralized video hosting network, based on fr...
4579 truncated description of the video, written in Markdown.
4580 Resolve `descriptionPath` to get the full description of maximum `10000` characters.
4584 description: duration of the video in seconds
4589 description: title of the video
4590 example: What is PeerTube?
4595 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4598 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4601 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4618 - $ref: '#/components/schemas/VideoStateConstant'
4619 description: represents the internal state of the video processing within the PeerTube instance
4623 - $ref: '#/components/schemas/VideoScheduledUpdate'
4631 $ref: '#/components/schemas/AccountSummary'
4633 $ref: '#/components/schemas/VideoChannelSummary'
4642 - $ref: '#/components/schemas/Video'
4647 example: /api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/description
4648 description: path at which to get the full description of maximum `10000` characters
4651 description: A text tell the audience how to support the video creator
4652 example: Please support my work on <insert crowdfunding plateform>! <3
4656 $ref: '#/components/schemas/VideoChannel'
4658 $ref: '#/components/schemas/Account'
4660 example: [flowers, gardening]
4678 - https://peertube2.cpy.re/tracker/announce
4679 - wss://peertube2.cpy.re/tracker/socket
4683 $ref: '#/components/schemas/VideoFile'
4685 WebTorrent/raw video files. If WebTorrent is disabled on the server:
4687 - field will be empty
4688 - video files will be found in `streamingPlaylists[].files` field
4692 $ref: '#/components/schemas/VideoStreamingPlaylists'
4694 HLS playlists/manifest files. If HLS is disabled on the server:
4696 - field will be empty
4697 - video files will be found in `files` field
4698 FileRedundancyInformation:
4701 $ref: '#/components/schemas/id'
4726 $ref: '#/components/schemas/id'
4733 $ref: '#/components/schemas/UUIDv4'
4740 $ref: '#/components/schemas/FileRedundancyInformation'
4744 $ref: '#/components/schemas/FileRedundancyInformation'
4745 VideoImportStateConstant:
4753 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4760 additionalProperties: false
4764 $ref: '#/components/schemas/VideoImport/properties/targetUrl'
4765 required: [targetUrl]
4768 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
4769 required: [magnetUri]
4772 $ref: '#/components/schemas/VideoImport/properties/torrentfile'
4773 required: [torrentfile]
4774 - $ref: '#/components/schemas/VideoUploadRequestCommon'
4783 - $ref: '#/components/schemas/id'
4787 description: remote URL where to find the import's source video
4788 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4792 description: magnet URI allowing to resolve the import's source video
4793 example: magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F9c9de5e8-0a1e-484a-b099-e80766180a6d-240.torrent&xt=urn:btih:38b4747ff788b30bf61f59d1965cd38f9e48e01f&dn=What+is+PeerTube%3F&tr=wss%3A%2F%2Fframatube.org%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F9c9de5e8-0a1e-484a-b099-e80766180a6d-240.mp4
4794 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
4799 description: Torrent file containing only the video file
4806 - $ref: '#/components/schemas/VideoImportStateConstant'
4822 - $ref: '#/components/schemas/Video'
4832 $ref: '#/components/schemas/VideoImport'
4836 $ref: '#/components/schemas/id'
4839 example: The video is a spam
4843 $ref: '#/components/schemas/AbusePredefinedReasons'
4845 $ref: '#/components/schemas/Account'
4847 $ref: '#/components/schemas/AbuseStateConstant'
4850 example: Decided to ban the server since it spams us regularly
4854 $ref: '#/components/schemas/VideoInfo'
4861 $ref: '#/components/schemas/id'
4872 $ref: '#/components/schemas/AccountSummary'
4876 $ref: '#/components/schemas/id'
4878 $ref: '#/components/schemas/Video/properties/id'
4890 $ref: '#/components/schemas/UUIDv4'
4908 $ref: '#/components/schemas/id'
4910 $ref: '#/components/schemas/UUIDv4'
4933 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4935 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4937 $ref: '#/components/schemas/AccountSummary'
4939 $ref: '#/components/schemas/VideoChannelSummary'
4943 $ref: '#/components/schemas/id'
4950 description: Text of the comment
4952 example: This video is wonderful!
4954 $ref: '#/components/schemas/id'
4958 - $ref: '#/components/schemas/id'
4960 $ref: '#/components/schemas/Video/properties/id'
4975 totalRepliesFromVideoAuthor:
4982 $ref: '#/components/schemas/Account'
4983 VideoCommentThreadTree:
4986 $ref: '#/components/schemas/VideoComment'
4990 $ref: '#/components/schemas/VideoCommentThreadTree'
4994 $ref: '#/components/schemas/VideoConstantString-Language'
5010 $ref: '#/components/schemas/id'
5027 $ref: '#/components/schemas/id'
5032 description: immutable name of the actor, used to find or mention it
5034 - $ref: '#/components/schemas/username'
5038 description: server on which the actor is resident
5039 hostRedundancyAllowed:
5041 description: whether this actor's host allows redundancy of its videos
5045 description: number of actors subscribed to by this actor, as seen by this instance
5049 description: number of followers of this actor, as seen by this instance
5057 $ref: '#/components/schemas/ActorImage'
5060 - $ref: '#/components/schemas/Actor'
5063 description: object id for the user tied to this account
5065 - $ref: '#/components/schemas/User/properties/id'
5068 description: editable name of the account, displayed in its representations
5073 description: text or bio displayed on the account's profile
5078 description: timestamp within the video, in seconds
5145 allowedForCurrentIP:
5147 requiresEmailVerification:
5165 $ref: '#/components/schemas/VideoResolutionSet'
5250 example: 16810141515
5353 requiresEmailVerification:
5368 description: Settings that apply to new users, if registration is enabled
5372 example: 16810141515
5378 description: Settings pertaining to transcoding jobs
5382 allowAdditionalExtensions:
5384 description: Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
5387 description: If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
5390 description: Amount of threads used by ffmpeg for 1 transcoding job
5393 description: Amount of transcoding jobs to execute in parallel
5399 New profiles can be added by plugins ; available in core PeerTube: 'default'.
5402 description: Resolutions to transcode _new videos_ to
5422 description: WebTorrent-specific settings
5428 description: HLS-specific settings
5472 $ref: '#/components/schemas/id'
5474 $ref: '#/components/schemas/Actor'
5476 $ref: '#/components/schemas/Actor'
5479 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
5492 PredefinedAbuseReasons:
5493 description: Reason categories that help triage reports
5511 $ref: '#/components/schemas/id'
5523 - activitypub-http-unicast
5524 - activitypub-http-broadcast
5525 - activitypub-http-fetcher
5526 - activitypub-follow
5532 - activitypub-refresher
5536 additionalProperties: true
5539 additionalProperties: true
5555 $ref: '#/components/schemas/id'
5560 $ref: '#/components/schemas/id'
5561 VideoUploadRequestCommon:
5564 description: Video name
5566 example: What is PeerTube?
5570 description: Channel id that will contain this video
5575 $ref: '#/components/schemas/VideoPrivacySet'
5577 $ref: '#/components/schemas/VideoCategorySet'
5579 $ref: '#/components/schemas/VideoLicenceSet'
5581 $ref: '#/components/schemas/VideoLanguageSet'
5583 description: Video description
5586 **[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)**
5588 description: Whether or not we wait transcoding before publish the video
5591 description: A text tell the audience how to support the video creator
5592 example: Please support my work on <insert crowdfunding plateform>! <3
5595 description: Whether or not this video contains sensitive content
5598 description: Video tags (maximum 5 tags each between 2 and 30 characters)
5611 description: Enable or disable comments for this video
5614 description: Enable or disable downloading for this video
5616 originallyPublishedAt:
5617 description: Date when the content was originally published
5621 $ref: '#/components/schemas/VideoScheduledUpdate'
5623 description: Video thumbnail file
5627 description: Video preview file
5633 VideoUploadRequestLegacy:
5635 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5641 description: Video file
5644 VideoUploadRequestResumable:
5646 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5652 description: Video filename including extension
5655 example: what_is_peertube.mp4
5657 description: Video thumbnail file
5661 description: Video preview file
5664 VideoUploadResponse:
5670 $ref: '#/components/schemas/Video/properties/id'
5672 $ref: '#/components/schemas/Video/properties/uuid'
5673 CommentThreadResponse:
5682 $ref: '#/components/schemas/VideoComment'
5683 CommentThreadPostResponse:
5686 $ref: '#/components/schemas/VideoComment'
5696 $ref: '#/components/schemas/Video'
5700 $ref: '#/components/schemas/Account'
5703 description: Automatically start playing the upcoming video after the currently playing video
5704 autoPlayNextVideoPlaylist:
5706 description: Automatically start playing the video on the playlist after the currently playing video
5709 description: Automatically start playing the video on the watch page
5719 description: The user email
5722 description: Has the user confirmed their email address?
5725 - $ref: '#/components/schemas/id'
5729 description: Auth plugin to use to authenticate the user
5733 noInstanceConfigWarningModal:
5738 $ref: '#/components/schemas/NSFWPolicy'
5740 $ref: '#/components/schemas/UserRole'
5749 description: Theme enabled by this user
5751 $ref: '#/components/schemas/username'
5755 $ref: '#/components/schemas/VideoChannel'
5758 description: The user video quota in bytes
5762 description: The user daily video quota in bytes
5766 description: Enable P2P in the player
5769 - $ref: '#/components/schemas/User'
5771 # optionally present fields: they require WITH_STATS scope
5774 description: Count of videos published
5777 description: Count of reports/abuses of which the user is a target
5778 abusesAcceptedCount:
5780 description: Count of reports/abuses created by the user and accepted/acted upon by the moderation team
5783 description: Count of reports/abuses created by the user
5786 description: Count of comments published
5790 $ref: '#/components/schemas/username'
5792 $ref: '#/components/schemas/password'
5796 description: The user email
5799 description: The user video quota in bytes
5803 description: The user daily video quota in bytes
5806 $ref: '#/components/schemas/usernameChannel'
5808 $ref: '#/components/schemas/UserRole'
5810 $ref: '#/components/schemas/UserAdminFlags'
5821 description: The updated email of the user
5823 - $ref: '#/components/schemas/User/properties/email'
5826 description: Set the email as verified
5829 description: The updated video quota of the user in bytes
5832 description: The updated daily video quota of the user in bytes
5836 description: The auth plugin to use to authenticate the user
5837 example: 'peertube-plugin-auth-saml2'
5839 $ref: '#/components/schemas/UserRole'
5841 $ref: '#/components/schemas/UserAdminFlags'
5843 # see shared/models/users/user-update-me.model.ts:
5846 $ref: '#/components/schemas/password'
5848 $ref: '#/components/schemas/password'
5850 description: new email used for login and service communications
5852 - $ref: '#/components/schemas/User/properties/email'
5855 description: new name of the user in its representations
5860 description: new NSFW display policy
5867 description: whether to enable P2P in the player or not
5870 description: new preference regarding playing videos automatically
5873 description: new preference regarding playing following videos automatically
5874 autoPlayNextVideoPlaylist:
5876 description: new preference regarding playing following playlist videos automatically
5877 videosHistoryEnabled:
5879 description: whether to keep track of watched history or not
5884 description: list of languages to filter videos down to
5887 noInstanceConfigWarningModal:
5894 $ref: '#/components/schemas/id'
5901 description: Rating of the video
5908 $ref: '#/components/schemas/Video'
5915 description: Rating of the video
5922 description: immutable name of the user, used to find or mention its actor
5924 - $ref: '#/components/schemas/username'
5926 $ref: '#/components/schemas/password'
5930 description: email of the user, used for login or service communications
5933 description: editable name of the user, displayed in its representations
5938 description: channel base information used to create the first channel of the user
5941 $ref: '#/components/schemas/usernameChannel'
5943 $ref: '#/components/schemas/VideoChannel/properties/displayName'
5951 # GET/POST/PUT properties
5954 description: editable name of the channel, displayed in its representations
5955 example: Videos of Framasoft
5960 example: Videos made with <3 by Framasoft
5965 description: text shown by default on all videos of this channel, to tell the audience how to support it
5966 example: Please support my work on <insert crowdfunding plateform>! <3
5969 # GET-only properties
5973 - $ref: '#/components/schemas/id'
5989 $ref: '#/components/schemas/UUIDv4'
5992 - $ref: '#/components/schemas/VideoChannel'
5995 description: username of the channel to create
5997 - $ref: '#/components/schemas/usernameChannel'
6003 - $ref: '#/components/schemas/VideoChannel'
6005 bulkVideosSupportUpdate:
6007 description: Update the support field for all videos of this channel
6017 - $ref: '#/components/schemas/VideoChannel'
6018 - $ref: '#/components/schemas/Actor'
6023 name: 'media:peerLink'
6032 - application/x-bittorrent
6038 name: 'media:content'
6069 VideoCommentsForXML:
6104 description: video watch page URL
6107 description: video canonical URL
6111 description: video publication date
6114 description: video description
6117 description: video description
6120 description: publisher user name
6123 description: video category (MRSS)
6126 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
6141 description: video embed path, relative to the canonical URL domain (MRSS)
6150 description: video watch path, relative to the canonical URL domain (MRSS)
6171 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
6172 'media:description':
6179 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
6182 description: main streamable file for the video
6192 - application/x-bittorrent
6201 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)
6204 - $ref: '#/components/schemas/MRSSPeerLink'
6205 - $ref: '#/components/schemas/MRSSGroupContent'
6206 NotificationSettingValue:
6223 $ref: '#/components/schemas/id'
6227 Notification type, following the `UserNotificationType` enum:
6229 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
6231 - `2` NEW_COMMENT_ON_MY_VIDEO
6233 - `3` NEW_ABUSE_FOR_MODERATORS
6235 - `4` BLACKLIST_ON_MY_VIDEO
6237 - `5` UNBLACKLIST_ON_MY_VIDEO
6239 - `6` MY_VIDEO_PUBLISHED
6241 - `7` MY_VIDEO_IMPORT_SUCCESS
6243 - `8` MY_VIDEO_IMPORT_ERROR
6245 - `9` NEW_USER_REGISTRATION
6249 - `11` COMMENT_MENTION
6251 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
6253 - `13` NEW_INSTANCE_FOLLOWER
6255 - `14` AUTO_INSTANCE_FOLLOWING
6261 - $ref: '#/components/schemas/VideoInfo'
6265 $ref: '#/components/schemas/ActorInfo'
6271 $ref: '#/components/schemas/id'
6274 $ref: '#/components/schemas/VideoInfo'
6279 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
6289 $ref: '#/components/schemas/id'
6293 $ref: '#/components/schemas/VideoInfo'
6295 $ref: '#/components/schemas/ActorInfo'
6301 $ref: '#/components/schemas/id'
6304 - $ref: '#/components/schemas/VideoInfo'
6310 $ref: '#/components/schemas/id'
6313 - $ref: '#/components/schemas/VideoInfo'
6317 - $ref: '#/components/schemas/ActorInfo'
6323 $ref: '#/components/schemas/id'
6325 $ref: '#/components/schemas/ActorInfo'
6353 NotificationListResponse:
6362 $ref: '#/components/schemas/Notification'
6367 example: peertube-plugin-auth-ldap
6395 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
6398 additionalProperties: true
6414 $ref: '#/components/schemas/Plugin'
6421 description: User can stream multiple times in a permanent live
6430 description: RTMP stream key to use to stream into this live video
6434 description: User can stream multiple times in a permanent live
6441 'https://search.example.org/api/v1/search/videos':
6443 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
6446 description: successful operation
6450 $ref: '#/components/schemas/VideoListResponse'