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 Validation errors benefit from a more detailed error type and return the HTTP `400 Bad Request` status code.
55 "id": { // where 'id' is the name of the parameter concerned by the error.
56 "value": "a117eb-c6a9-4756-bb09-2a956239f", // value that triggered the error.
57 "msg": "Should have an valid id", // error debug message
59 "location": "params" // 'params', 'body', 'header', 'query' or 'cookies'
67 We are rate-limiting all endpoints of PeerTube's API. Custom values can be set by administrators:
69 | Endpoint | Calls | Time frame |
70 |-------------------------|------------------|---------------------------|
71 | `/*` | 50 | 10 seconds |
72 | `POST /users/token` | 15 | 5 minutes |
73 | `POST /users/register` | 2<sup>*</sup> | 5 minutes |
74 | `POST /users/ask-send-verify-email` | 3 | 5 minutes |
76 Depending on the endpoint, <sup>*</sup>failed requests are not taken into account. A service
77 limit is announced by a `429 Too Many Requests` status code.
79 You can get details about the current state of your rate limit by reading the
82 | Header | Description |
83 |-------------------------|------------------------------------------------------------|
84 | `X-RateLimit-Limit` | Number of max requests allowed in the current time period |
85 | `X-RateLimit-Remaining` | Number of remaining requests in the current time period |
86 | `X-RateLimit-Reset` | Timestamp of end of current time period as UNIX timestamp |
87 | `Retry-After` | Seconds to delay after the first `429` is received |
89 url: https://docs.joinpeertube.org/api-rest-reference.html
93 Accounts encompass remote accounts discovered across the federation,
94 and correspond to the main Actor, along with video channels a user can create, which
97 When a comment is posted, it is done with your Account's Actor.
100 Using some features of PeerTube require authentication, for which User
101 provide different levels of permission as well as associated user
102 information. Each user has a corresponding local Account for federation.
105 Operations related to your own User, when logged-in.
106 - name: My Subscriptions
108 Operations related to your subscriptions to video channels, their
109 new videos, and how to keep up to date with their latest publications!
112 Operations related to your watch history.
113 - name: My Notifications
115 Notifications following new videos, follows or reports. They allow you
116 to keep track of the interactions and overall important information that
117 concerns you. You MAY set per-notification type delivery preference, to
118 receive the info either by mail, by in-browser notification or both.
121 Each server exposes public information regarding supported videos and
125 Jobs are long-running tasks enqueued and processed by the instance
126 itself. No additional worker registration is currently available.
127 - name: Instance Follows
129 Managing servers which the instance interacts with is crucial to the
130 concept of federation in PeerTube and external video indexation. The PeerTube
131 server then deals with inter-server ActivityPub operations and propagates
132 information across its social graph by posting activities to actors' inbox
135 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-follows
136 - name: Instance Redundancy
138 Redundancy is part of the inter-server solidarity that PeerTube fosters.
139 Manage the list of instances you wish to help by seeding their videos according
140 to the policy of video selection of your choice. Note that you have a similar functionality
141 to mirror individual videos, see [video mirroring](#tag/Video-Mirroring).
143 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-redundancy
146 Managing plugins installed from a local path or from NPM, or search for new ones.
148 url: https://docs.joinpeertube.org/api-plugins
151 Abuses deal with reports of local or remote videos/comments/accounts alike.
154 Operations dealing with listing, uploading, fetching or modifying videos.
157 Operations dealing with adding video or audio. PeerTube supports two upload modes, and three import modes.
161 - [_legacy_](#operation/uploadLegacy), where the video file is sent in a single request
162 - [_resumable_](#operation/uploadResumableInit), where the video file is sent in chunks
164 You can upload videos more reliably by using the resumable variant. Its protocol lets
165 you resume an upload operation after a network interruption or other transmission failure,
166 saving time and bandwidth in the event of network failures.
168 Favor using resumable uploads in any of the following cases:
169 - You are transferring large files
170 - The likelihood of a network interruption is high
171 - Uploads are originating from a device with a low-bandwidth or unstable Internet connection,
172 such as a mobile device
176 - _URL_-based: where the URL points to any service supported by [youtube-dl](https://ytdl-org.github.io/youtube-dl/)
177 - _magnet_-based: where the URI resolves to a BitTorrent ressource containing a single supported video file
178 - _torrent_-based: where the metainfo file resolves to a BitTorrent ressource containing a single supported video file
180 The import function is practical when the desired video/audio is available online. It makes PeerTube
181 download it for you, saving you as much bandwidth and avoiding any instability or limitation your network might have.
182 - name: Video Captions
183 description: Operations dealing with listing, adding and removing closed captions of a video.
184 - name: Video Channels
185 description: Operations dealing with the creation, modification and listing of videos within a channel.
186 - name: Video Comments
188 Operations dealing with comments to a video. Comments are organized in threads: adding a
189 comment in response to the video starts a thread, adding a reply to a comment adds it to
190 its root comment thread.
192 description: Operations dealing with blocking videos (removing them from view and preventing interactions).
194 description: Like/dislike a video.
195 - name: Video Playlists
196 description: Operations dealing with playlists of videos. Playlists are bound to users and/or channels.
198 description: Server syndication feeds
201 The search helps to find _videos_ or _channels_ from within the instance and beyond.
202 Videos from other instances federated by the instance (that is, instances
203 followed by the instance) can be found via keywords and other criteria of
206 Administrators can also enable the use of a remote search system, indexing
207 videos and channels not could be not federated by the instance.
208 - name: Video Mirroring
210 PeerTube instances can mirror videos from one another, and help distribute some videos.
212 For importing videos as your own, refer to [video imports](#operation/importVideo).
231 - Video Ownership Change
244 - name: Instance Configuration
248 - Instance Redundancy
258 summary: Get an account
260 - $ref: '#/components/parameters/name'
263 description: successful operation
267 $ref: '#/components/schemas/Account'
269 description: account not found
270 '/accounts/{name}/videos':
275 summary: 'List videos of an account'
277 - $ref: '#/components/parameters/name'
278 - $ref: '#/components/parameters/categoryOneOf'
279 - $ref: '#/components/parameters/isLive'
280 - $ref: '#/components/parameters/tagsOneOf'
281 - $ref: '#/components/parameters/tagsAllOf'
282 - $ref: '#/components/parameters/licenceOneOf'
283 - $ref: '#/components/parameters/languageOneOf'
284 - $ref: '#/components/parameters/nsfw'
285 - $ref: '#/components/parameters/filter'
286 - $ref: '#/components/parameters/skipCount'
287 - $ref: '#/components/parameters/start'
288 - $ref: '#/components/parameters/count'
289 - $ref: '#/components/parameters/videosSort'
292 description: successful operation
296 $ref: '#/components/schemas/VideoListResponse'
300 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
301 .then(function(response) {
302 return response.json()
303 }).then(function(data) {
309 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
315 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
317 http = Net::HTTP.new(uri.host, uri.port)
320 response = http.get(uri.request_uri)
322 puts JSON.parse(response.read_body)
327 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
335 summary: List accounts
337 - $ref: '#/components/parameters/start'
338 - $ref: '#/components/parameters/count'
339 - $ref: '#/components/parameters/sort'
342 description: successful operation
348 $ref: '#/components/schemas/Account'
353 summary: Get instance public configuration
356 description: successful operation
360 $ref: '#/components/schemas/ServerConfig'
363 externalValue: https://peertube2.cpy.re/api/v1/config
366 summary: Get instance "About" information
371 description: successful operation
375 $ref: '#/components/schemas/ServerConfigAbout'
378 externalValue: https://peertube2.cpy.re/api/v1/config/about
381 summary: Get instance runtime configuration
389 description: successful operation
393 $ref: '#/components/schemas/ServerConfigCustom'
395 summary: Set instance runtime configuration
403 description: successful operation
405 x-summary: field inconsistencies
408 - the emailer is disabled and the instance is open to registrations
409 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
411 summary: Delete instance runtime configuration
419 description: successful operation
422 summary: List instance jobs
432 description: The state of the job ('' for for no filter)
442 - $ref: '#/components/parameters/jobType'
443 - $ref: '#/components/parameters/start'
444 - $ref: '#/components/parameters/count'
445 - $ref: '#/components/parameters/sort'
448 description: successful operation
461 $ref: '#/components/schemas/Job'
462 '/server/following/{host}':
469 summary: Unfollow a server
474 description: 'The host to unfollow '
480 description: successful operation
485 summary: List instance followers
487 - $ref: '#/components/parameters/start'
488 - $ref: '#/components/parameters/count'
489 - $ref: '#/components/parameters/sort'
492 description: successful operation
498 $ref: '#/components/schemas/Follow'
503 summary: List instances followed by the server
522 - $ref: '#/components/parameters/start'
523 - $ref: '#/components/parameters/count'
524 - $ref: '#/components/parameters/sort'
527 description: successful operation
533 $ref: '#/components/schemas/Follow'
540 summary: Follow a server
543 description: successful operation
545 description: cannot follow a non-HTTPS server
560 summary: Create a user
568 description: user created
572 $ref: '#/components/schemas/AddUserResponse'
576 operationId: getUserId
578 id: '$response.body#/user/id'
581 operationId: putUserId
583 id: '$response.body#/user/id'
586 operationId: delUserId
588 id: '$response.body#/user/id'
590 description: insufficient authority to create an admin or moderator
595 $ref: '#/components/schemas/AddUser'
597 If the smtp server is configured, you can leave the password empty and an email will be sent
598 asking the user to set it first.
608 - $ref: '#/components/parameters/usersSearch'
609 - $ref: '#/components/parameters/usersBlocked'
610 - $ref: '#/components/parameters/start'
611 - $ref: '#/components/parameters/count'
612 - $ref: '#/components/parameters/usersSort'
615 description: successful operation
621 $ref: '#/components/schemas/User'
624 - $ref: '#/components/parameters/id'
626 summary: Delete a user
632 operationId: delUserId
635 description: successful operation
642 operationId: getUserId
646 description: include statistics about the user (only available as a moderator/admin)
651 x-summary: successful operation
653 As an admin/moderator, you can request a response augmented with statistics about the user's
654 moderation relations and videos usage, by using the `withStats` parameter.
659 - $ref: '#/components/schemas/User'
660 - $ref: '#/components/schemas/UserWithStats'
662 summary: Update a user
667 operationId: putUserId
670 description: successful operation
675 $ref: '#/components/schemas/UpdateUser'
679 summary: Register a user
684 description: successful operation
689 $ref: '#/components/schemas/RegisterUser'
693 summary: Get my user information
701 description: successful operation
707 $ref: '#/components/schemas/User'
709 summary: Update my user information
717 description: successful operation
722 $ref: '#/components/schemas/UpdateMe'
724 /users/me/videos/imports:
726 summary: Get video imports of my user
734 - $ref: '#/components/parameters/start'
735 - $ref: '#/components/parameters/count'
736 - $ref: '#/components/parameters/sort'
739 description: successful operation
743 $ref: '#/components/schemas/VideoImportsList'
744 /users/me/video-quota-used:
746 summary: Get my user used quota
754 description: successful operation
762 description: The user video quota used so far in bytes
766 description: The user video quota used today in bytes
768 '/users/me/videos/{videoId}/rating':
770 summary: Get rate of my user for a video
780 description: The video id
782 $ref: '#/components/schemas/Video/properties/id'
785 description: successful operation
789 $ref: '#/components/schemas/GetMeVideoRating'
792 summary: Get videos of my user
800 - $ref: '#/components/parameters/start'
801 - $ref: '#/components/parameters/count'
802 - $ref: '#/components/parameters/sort'
805 description: successful operation
809 $ref: '#/components/schemas/VideoListResponse'
810 /users/me/subscriptions:
812 summary: Get my user subscriptions
819 - $ref: '#/components/parameters/start'
820 - $ref: '#/components/parameters/count'
821 - $ref: '#/components/parameters/sort'
824 description: successful operation
828 $ref: '#/components/schemas/VideoChannelList'
832 summary: Add subscription to my user
845 description: uri of the video channels to subscribe to
851 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
854 description: successful operation
855 /users/me/subscriptions/exist:
857 summary: Get if subscriptions exist for my user
864 - $ref: '#/components/parameters/subscriptionsUris'
867 description: successful operation
872 /users/me/subscriptions/videos:
874 summary: List videos of subscriptions of my user
882 - $ref: '#/components/parameters/categoryOneOf'
883 - $ref: '#/components/parameters/isLive'
884 - $ref: '#/components/parameters/tagsOneOf'
885 - $ref: '#/components/parameters/tagsAllOf'
886 - $ref: '#/components/parameters/licenceOneOf'
887 - $ref: '#/components/parameters/languageOneOf'
888 - $ref: '#/components/parameters/nsfw'
889 - $ref: '#/components/parameters/filter'
890 - $ref: '#/components/parameters/skipCount'
891 - $ref: '#/components/parameters/start'
892 - $ref: '#/components/parameters/count'
893 - $ref: '#/components/parameters/videosSort'
896 description: successful operation
900 $ref: '#/components/schemas/VideoListResponse'
901 '/users/me/subscriptions/{subscriptionHandle}':
903 summary: Get subscription of my user
910 - $ref: '#/components/parameters/subscriptionHandle'
913 description: successful operation
917 $ref: '#/components/schemas/VideoChannel'
919 summary: Delete subscription of my user
926 - $ref: '#/components/parameters/subscriptionHandle'
929 description: successful operation
930 /users/me/notifications:
932 summary: List my notifications
940 description: only list unread notifications
943 - $ref: '#/components/parameters/start'
944 - $ref: '#/components/parameters/count'
945 - $ref: '#/components/parameters/sort'
948 description: successful operation
952 $ref: '#/components/schemas/NotificationListResponse'
953 /users/me/notifications/read:
955 summary: Mark notifications as read by their id
968 description: ids of the notifications to mark as read
975 description: successful operation
976 /users/me/notifications/read-all:
978 summary: Mark all my notification as read
985 description: successful operation
986 /users/me/notification-settings:
988 summary: Update my notification settings
999 newVideoFromSubscription:
1000 $ref: '#/components/schemas/NotificationSettingValue'
1001 newCommentOnMyVideo:
1002 $ref: '#/components/schemas/NotificationSettingValue'
1004 $ref: '#/components/schemas/NotificationSettingValue'
1005 videoAutoBlacklistAsModerator:
1006 $ref: '#/components/schemas/NotificationSettingValue'
1008 $ref: '#/components/schemas/NotificationSettingValue'
1010 $ref: '#/components/schemas/NotificationSettingValue'
1011 myVideoImportFinished:
1012 $ref: '#/components/schemas/NotificationSettingValue'
1014 $ref: '#/components/schemas/NotificationSettingValue'
1015 newUserRegistration:
1016 $ref: '#/components/schemas/NotificationSettingValue'
1018 $ref: '#/components/schemas/NotificationSettingValue'
1019 newInstanceFollower:
1020 $ref: '#/components/schemas/NotificationSettingValue'
1021 autoInstanceFollowing:
1022 $ref: '#/components/schemas/NotificationSettingValue'
1025 description: successful operation
1026 /users/me/history/videos:
1028 summary: List watched videos history
1034 - $ref: '#/components/parameters/start'
1035 - $ref: '#/components/parameters/count'
1036 - $ref: '#/components/parameters/search'
1039 description: successful operation
1043 $ref: '#/components/schemas/VideoListResponse'
1044 /users/me/history/videos/remove:
1046 summary: Clear video history
1053 multipart/form-data:
1058 description: history before this date will be deleted
1063 description: successful operation
1064 /users/me/avatar/pick:
1066 summary: Update my user avatar
1073 description: successful operation
1080 $ref: '#/components/schemas/ActorImage'
1082 description: image file too large
1084 X-File-Maximum-Size:
1088 description: Maximum file size for the avatar
1091 multipart/form-data:
1096 description: The file to upload
1101 contentType: image/png, image/jpeg
1104 summary: Delete my avatar
1111 description: successful operation
1115 summary: List video ownership changes
1117 - Video Ownership Change
1122 description: successful operation
1123 '/videos/ownership/{id}/accept':
1125 summary: Accept ownership change request
1127 - Video Ownership Change
1131 - $ref: '#/components/parameters/idOrUUID'
1134 description: successful operation
1136 description: cannot terminate an ownership change of another user
1138 description: video owneship change not found
1139 '/videos/ownership/{id}/refuse':
1141 summary: Refuse ownership change request
1143 - Video Ownership Change
1147 - $ref: '#/components/parameters/idOrUUID'
1150 description: successful operation
1152 description: cannot terminate an ownership change of another user
1154 description: video owneship change not found
1155 '/videos/{id}/give-ownership':
1157 summary: Request ownership change
1159 - Video Ownership Change
1163 - $ref: '#/components/parameters/idOrUUID'
1167 application/x-www-form-urlencoded:
1177 description: successful operation
1179 description: changing video ownership to a remote account is not supported yet
1181 description: video not found
1184 summary: List videos
1188 - $ref: '#/components/parameters/categoryOneOf'
1189 - $ref: '#/components/parameters/isLive'
1190 - $ref: '#/components/parameters/tagsOneOf'
1191 - $ref: '#/components/parameters/tagsAllOf'
1192 - $ref: '#/components/parameters/licenceOneOf'
1193 - $ref: '#/components/parameters/languageOneOf'
1194 - $ref: '#/components/parameters/nsfw'
1195 - $ref: '#/components/parameters/filter'
1196 - $ref: '#/components/parameters/skipCount'
1197 - $ref: '#/components/parameters/start'
1198 - $ref: '#/components/parameters/count'
1199 - $ref: '#/components/parameters/videosSort'
1202 description: successful operation
1206 $ref: '#/components/schemas/VideoListResponse'
1209 summary: List available video categories
1210 operationId: getCategories
1215 description: successful operation
1224 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1227 summary: List available video licences
1228 operationId: getLicences
1233 description: successful operation
1242 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1245 summary: List available video languages
1246 operationId: getLanguages
1251 description: successful operation
1260 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1263 summary: List available video privacy policies
1264 operationId: getPrivacyPolicies
1269 description: successful operation
1278 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1281 summary: Update a video
1287 - $ref: '#/components/parameters/idOrUUID'
1290 description: successful operation
1293 multipart/form-data:
1298 description: Video thumbnail file
1302 description: Video preview file
1306 $ref: '#/components/schemas/VideoCategorySet'
1308 $ref: '#/components/schemas/VideoLicenceSet'
1310 $ref: '#/components/schemas/VideoLanguageSet'
1312 $ref: '#/components/schemas/VideoPrivacySet'
1314 description: Video description
1317 description: Whether or not we wait transcoding before publish the video
1320 description: A text tell the audience how to support the video creator
1321 example: Please support our work on https://soutenir.framasoft.org/en/ <3
1324 description: Whether or not this video contains sensitive content
1327 description: Video name
1332 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1341 description: Enable or disable comments for this video
1343 originallyPublishedAt:
1344 description: Date when the content was originally published
1348 $ref: '#/components/schemas/VideoScheduledUpdate'
1351 contentType: image/jpeg
1353 contentType: image/jpeg
1355 summary: Get a video
1359 - $ref: '#/components/parameters/idOrUUID'
1362 description: successful operation
1366 $ref: '#/components/schemas/VideoDetails'
1368 summary: Delete a video
1374 - $ref: '#/components/parameters/idOrUUID'
1377 description: successful operation
1378 '/videos/{id}/description':
1380 summary: Get complete video description
1384 - $ref: '#/components/parameters/idOrUUID'
1387 description: successful operation
1396 **[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)**
1397 '/videos/{id}/views':
1399 summary: Add a view to a video
1403 - $ref: '#/components/parameters/idOrUUID'
1406 description: successful operation
1407 '/videos/{id}/watching':
1409 summary: Set watching progress of a video
1415 - $ref: '#/components/parameters/idOrUUID'
1420 $ref: '#/components/schemas/UserWatchingVideo'
1424 description: successful operation
1427 summary: Upload a video
1428 description: Uses a single request to upload a video.
1429 operationId: uploadLegacy
1437 description: successful operation
1441 $ref: '#/components/schemas/VideoUploadResponse'
1443 description: invalid file field, schedule date or parameter
1445 description: video didn't pass upload filter
1447 description: upload has timed out
1449 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1451 X-File-Maximum-Size:
1455 description: Maximum file size for the video
1457 description: video type unsupported
1459 description: video unreadable
1462 multipart/form-data:
1464 $ref: '#/components/schemas/VideoUploadRequestLegacy'
1467 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1469 contentType: image/jpeg
1471 contentType: image/jpeg
1476 USERNAME="<your_username>"
1477 PASSWORD="<your_password>"
1478 FILE_PATH="<your_file_path>"
1479 CHANNEL_ID="<your_channel_id>"
1482 API_PATH="https://peertube2.cpy.re/api/v1"
1484 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1485 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1486 token=$(curl -s "$API_PATH/users/token" \
1487 --data client_id="$client_id" \
1488 --data client_secret="$client_secret" \
1489 --data grant_type=password \
1490 --data response_type=code \
1491 --data username="$USERNAME" \
1492 --data password="$PASSWORD" \
1493 | jq -r ".access_token")
1495 curl -s "$API_PATH/videos/upload" \
1496 -H "Authorization: Bearer $token" \
1498 --form videofile=@"$FILE_PATH" \
1499 --form channelId=$CHANNEL_ID \
1501 /videos/upload-resumable:
1503 summary: Initialize the resumable upload of a video
1504 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to initialize the upload of a video
1505 operationId: uploadResumableInit
1512 - name: X-Upload-Content-Length
1518 description: Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
1519 - name: X-Upload-Content-Type
1526 description: MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
1531 $ref: '#/components/schemas/VideoUploadRequestResumable'
1534 description: file already exists, send a [`resume`](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) request instead
1536 description: created
1542 example: /api/v1/videos/upload-resumable?upload_id=471e97554f21dec3b8bb5d4602939c51
1548 description: invalid file field, schedule date or parameter
1550 description: video file too large, due to quota, absolute max file size or concurrent partial upload limit
1552 description: video type unsupported
1554 summary: Send chunk for the resumable upload of a video
1555 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
1556 operationId: uploadResumable
1567 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
1568 not valid anymore and you need to initialize a new upload.
1571 - name: Content-Range
1575 example: bytes 0-262143/2469036
1578 Specifies the bytes in the file that the request is uploading.
1580 For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first
1581 262144 bytes (256 x 1024) in a 2,469,036 byte file.
1582 - name: Content-Length
1589 Size of the chunk that the request is sending.
1591 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)
1592 doesn't mandate for chunks to have the same size throughout the upload sequence.
1594 Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from
1595 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
1598 application/octet-stream:
1604 description: last chunk received
1612 $ref: '#/components/schemas/VideoUploadResponse'
1614 description: resume incomplete
1619 example: bytes=0-262143
1625 description: video didn't pass upload filter
1627 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1629 description: video unreadable
1631 summary: Cancel the resumable upload of a video, deleting any data uploaded so far
1632 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to cancel the upload of a video
1633 operationId: uploadResumableCancel
1644 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
1645 not valid anymore and the upload session has already been deleted with its data ;-)
1648 - name: Content-Length
1656 description: upload cancelled
1664 summary: Import a video
1665 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1666 operationId: importVideo
1674 multipart/form-data:
1676 $ref: '#/components/schemas/VideoCreateImport'
1679 contentType: application/x-bittorrent
1681 contentType: image/jpeg
1683 contentType: image/jpeg
1686 description: successful operation
1690 $ref: '#/components/schemas/VideoUploadResponse'
1692 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1694 description: video didn't pass pre-import filter
1696 description: HTTP or Torrent/magnetURI import not enabled
1700 summary: Create a live
1701 operationId: createLive
1709 description: successful operation
1713 $ref: '#/components/schemas/VideoUploadResponse'
1715 description: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1718 multipart/form-data:
1723 description: Channel id that will contain this live video
1728 description: User can stream multiple times in a permanent live
1731 description: Live video/replay thumbnail file
1735 description: Live video/replay preview file
1739 $ref: '#/components/schemas/VideoPrivacySet'
1741 $ref: '#/components/schemas/VideoCategorySet'
1743 $ref: '#/components/schemas/VideoLicenceSet'
1745 $ref: '#/components/schemas/VideoLanguageSet'
1747 description: Live video/replay description
1750 description: A text tell the audience how to support the creator
1751 example: Please support our work on https://soutenir.framasoft.org/en/ <3
1754 description: Whether or not this live video/replay contains sensitive content
1757 description: Live video/replay name
1762 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1771 description: Enable or disable comments for this live video/replay
1774 description: Enable or disable downloading for the replay of this live
1781 contentType: image/jpeg
1783 contentType: image/jpeg
1787 summary: Get information about a live
1788 operationId: getLiveId
1795 - $ref: '#/components/parameters/idOrUUID'
1798 description: successful operation
1802 $ref: '#/components/schemas/LiveVideoResponse'
1804 summary: Update information about a live
1805 operationId: updateLiveId
1812 - $ref: '#/components/parameters/idOrUUID'
1817 $ref: '#/components/schemas/LiveVideoUpdate'
1820 description: successful operation
1822 description: bad parameters or trying to update a live that has already started
1824 description: trying to save replay of the live but saving replay is not enabled on the instance
1828 summary: List my abuses
1829 operationId: getMyAbuses
1838 description: only list the report with this id
1844 $ref: '#/components/schemas/AbuseStateSet'
1845 - $ref: '#/components/parameters/abusesSort'
1846 - $ref: '#/components/parameters/start'
1847 - $ref: '#/components/parameters/count'
1850 description: successful operation
1862 $ref: '#/components/schemas/Abuse'
1866 summary: List abuses
1867 operationId: getAbuses
1877 description: only list the report with this id
1880 - name: predefinedReason
1882 description: predefined reason the listed reports should contain
1884 $ref: '#/components/schemas/PredefinedAbuseReasons'
1887 description: plain search that will match with video titles, reporter names and more
1893 $ref: '#/components/schemas/AbuseStateSet'
1894 - name: searchReporter
1896 description: only list reports of a specific reporter
1899 - name: searchReportee
1900 description: only list reports of a specific reportee
1906 description: only list reports of a specific video
1909 - name: searchVideoChannel
1911 description: only list reports of a specific video channel
1916 description: only list blacklisted or deleted videos
1924 description: only list account, comment or video reports
1931 - $ref: '#/components/parameters/start'
1932 - $ref: '#/components/parameters/count'
1933 - $ref: '#/components/parameters/abusesSort'
1936 description: successful operation
1948 $ref: '#/components/schemas/Abuse'
1951 summary: Report an abuse
1964 description: Reason why the user reports this video
1969 $ref: '#/components/schemas/PredefinedAbuseReasons'
1974 description: Video id to report
1976 - $ref: '#/components/schemas/Video/properties/id'
1980 description: Timestamp in the video that marks the beginning of the report
1985 description: Timestamp in the video that marks the ending of the report
1991 description: Comment id to report
1993 - $ref: '#/components/schemas/VideoComment/properties/id'
1998 description: Account id to report
2004 description: successful operation
2006 description: incorrect request parameters
2007 '/abuses/{abuseId}':
2009 summary: Update an abuse
2017 - $ref: '#/components/parameters/abuseId'
2025 $ref: '#/components/schemas/AbuseStateSet'
2028 description: Update the report comment visible only to the moderation team
2033 description: successful operation
2035 description: abuse not found
2039 summary: Delete an abuse
2045 - $ref: '#/components/parameters/abuseId'
2048 description: successful operation
2050 description: block not found
2051 '/abuses/{abuseId}/messages':
2053 summary: List messages of an abuse
2059 - $ref: '#/components/parameters/abuseId'
2062 description: successful operation
2068 $ref: '#/components/schemas/AbuseMessage'
2071 summary: Add message to an abuse
2077 - $ref: '#/components/parameters/abuseId'
2086 description: Message to send
2094 description: successful operation
2096 description: incorrect request parameters
2097 '/abuses/{abuseId}/messages/{abuseMessageId}':
2099 summary: Delete an abuse message
2105 - $ref: '#/components/parameters/abuseId'
2106 - $ref: '#/components/parameters/abuseMessageId'
2109 description: successful operation
2111 '/videos/{id}/blacklist':
2113 summary: Block a video
2121 - $ref: '#/components/parameters/idOrUUID'
2124 description: successful operation
2126 summary: Unblock a video by its id
2134 - $ref: '#/components/parameters/idOrUUID'
2137 description: successful operation
2139 description: block not found
2144 summary: List video blocks
2153 list only blocks that match this type:
2157 - `2`: automatic block that needs review
2165 description: plain search that will match with video titles, and more
2168 - $ref: '#/components/parameters/start'
2169 - $ref: '#/components/parameters/count'
2170 - $ref: '#/components/parameters/blacklistsSort'
2173 description: successful operation
2185 $ref: '#/components/schemas/VideoBlacklist'
2186 /videos/{id}/captions:
2188 summary: List captions of a video
2192 - $ref: '#/components/parameters/idOrUUID'
2195 description: successful operation
2207 $ref: '#/components/schemas/VideoCaption'
2208 /videos/{id}/captions/{captionLanguage}:
2210 summary: Add or replace a video caption
2217 - $ref: '#/components/parameters/idOrUUID'
2218 - $ref: '#/components/parameters/captionLanguage'
2221 multipart/form-data:
2226 description: The file to upload.
2231 contentType: text/vtt, application/x-subrip, text/plain
2234 description: successful operation
2236 description: video or language not found
2238 summary: Delete a video caption
2245 - $ref: '#/components/parameters/idOrUUID'
2246 - $ref: '#/components/parameters/captionLanguage'
2249 description: successful operation
2251 description: video or language or caption for that language not found
2254 summary: List video channels
2255 operationId: getVideoChannels
2259 - $ref: '#/components/parameters/start'
2260 - $ref: '#/components/parameters/count'
2261 - $ref: '#/components/parameters/sort'
2264 description: successful operation
2268 $ref: '#/components/schemas/VideoChannelList'
2270 summary: Create a video channel
2271 operationId: createVideoChannel
2278 description: successful operation
2288 $ref: '#/components/schemas/VideoChannel/properties/id'
2293 $ref: '#/components/schemas/VideoChannelCreate'
2294 '/video-channels/{channelHandle}':
2296 summary: Get a video channel
2297 operationId: getVideoChannel
2301 - $ref: '#/components/parameters/channelHandle'
2304 description: successful operation
2308 $ref: '#/components/schemas/VideoChannel'
2310 summary: Update a video channel
2316 - $ref: '#/components/parameters/channelHandle'
2319 description: successful operation
2324 $ref: '#/components/schemas/VideoChannelUpdate'
2326 summary: Delete a video channel
2332 - $ref: '#/components/parameters/channelHandle'
2335 description: successful operation
2336 '/video-channels/{channelHandle}/videos':
2338 summary: List videos of a video channel
2343 - $ref: '#/components/parameters/channelHandle'
2344 - $ref: '#/components/parameters/categoryOneOf'
2345 - $ref: '#/components/parameters/isLive'
2346 - $ref: '#/components/parameters/tagsOneOf'
2347 - $ref: '#/components/parameters/tagsAllOf'
2348 - $ref: '#/components/parameters/licenceOneOf'
2349 - $ref: '#/components/parameters/languageOneOf'
2350 - $ref: '#/components/parameters/nsfw'
2351 - $ref: '#/components/parameters/filter'
2352 - $ref: '#/components/parameters/skipCount'
2353 - $ref: '#/components/parameters/start'
2354 - $ref: '#/components/parameters/count'
2355 - $ref: '#/components/parameters/videosSort'
2358 description: successful operation
2362 $ref: '#/components/schemas/VideoListResponse'
2363 '/video-channels/{channelHandle}/avatar/pick':
2365 summary: Update channel avatar
2371 - $ref: '#/components/parameters/channelHandle'
2374 description: successful operation
2381 $ref: '#/components/schemas/ActorImage'
2383 description: image file too large
2385 X-File-Maximum-Size:
2389 description: Maximum file size for the avatar
2392 multipart/form-data:
2397 description: The file to upload.
2402 contentType: image/png, image/jpeg
2403 '/video-channels/{channelHandle}/avatar':
2405 summary: Delete channel avatar
2411 - $ref: '#/components/parameters/channelHandle'
2414 description: successful operation
2417 '/video-channels/{channelHandle}/banner/pick':
2419 summary: Update channel banner
2425 - $ref: '#/components/parameters/channelHandle'
2428 description: successful operation
2435 $ref: '#/components/schemas/ActorImage'
2437 description: image file too large
2439 X-File-Maximum-Size:
2443 description: Maximum file size for the banner
2446 multipart/form-data:
2451 description: The file to upload.
2456 contentType: image/png, image/jpeg
2457 '/video-channels/{channelHandle}/banner':
2459 summary: Delete channel banner
2465 - $ref: '#/components/parameters/channelHandle'
2468 description: successful operation
2470 /video-playlists/privacies:
2472 summary: List available playlist privacy policies
2473 operationId: getPlaylistPrivacyPolicies
2478 description: successful operation
2487 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2491 summary: List video playlists
2492 operationId: getPlaylists
2496 - $ref: '#/components/parameters/start'
2497 - $ref: '#/components/parameters/count'
2498 - $ref: '#/components/parameters/sort'
2501 description: successful operation
2513 $ref: '#/components/schemas/VideoPlaylist'
2515 summary: Create a video playlist
2516 description: If the video playlist is set as public, `videoChannelId` is mandatory.
2517 operationId: createPlaylist
2524 description: successful operation
2534 $ref: '#/components/schemas/VideoPlaylist/properties/id'
2536 $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
2539 multipart/form-data:
2544 description: Video playlist display name
2549 description: Video playlist thumbnail file
2553 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2555 description: Video playlist description
2561 - $ref: '#/components/schemas/id'
2562 description: Video channel in which the playlist will be published
2567 contentType: image/jpeg
2569 /video-playlists/{playlistId}:
2571 summary: Get a video playlist
2575 - $ref: '#/components/parameters/playlistId'
2578 description: successful operation
2582 $ref: '#/components/schemas/VideoPlaylist'
2584 summary: Update a video playlist
2585 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2592 description: successful operation
2594 - $ref: '#/components/parameters/playlistId'
2597 multipart/form-data:
2602 description: Video playlist display name
2607 description: Video playlist thumbnail file
2611 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2613 description: Video playlist description
2617 - $ref: '#/components/schemas/id'
2618 description: Video channel in which the playlist will be published
2621 contentType: image/jpeg
2623 summary: Delete a video playlist
2629 - $ref: '#/components/parameters/playlistId'
2632 description: successful operation
2634 /video-playlists/{playlistId}/videos:
2636 summary: 'List videos of a playlist'
2641 - $ref: '#/components/parameters/playlistId'
2644 description: successful operation
2648 $ref: '#/components/schemas/VideoListResponse'
2650 summary: Add a video in a playlist
2657 - $ref: '#/components/parameters/playlistId'
2660 description: successful operation
2666 videoPlaylistElement:
2680 - $ref: '#/components/schemas/Video/properties/uuid'
2681 - $ref: '#/components/schemas/Video/properties/id'
2682 description: Video to add in the playlist
2686 description: Start the video at this specific timestamp
2690 description: Stop the video at this specific timestamp
2694 /video-playlists/{playlistId}/videos/reorder:
2696 summary: 'Reorder a playlist'
2702 - $ref: '#/components/parameters/playlistId'
2705 description: successful operation
2714 description: 'Start position of the element to reorder'
2716 insertAfterPosition:
2718 description: 'New position for the block to reorder, to add the block before the first element'
2722 description: 'How many element from `startPosition` to reorder'
2726 - insertAfterPosition
2728 /video-playlists/{playlistId}/videos/{playlistElementId}:
2730 summary: Update a playlist element
2736 - $ref: '#/components/parameters/playlistId'
2737 - $ref: '#/components/parameters/playlistElementId'
2740 description: successful operation
2750 description: Start the video at this specific timestamp
2754 description: Stop the video at this specific timestamp
2756 summary: Delete an element from a playlist
2762 - $ref: '#/components/parameters/playlistId'
2763 - $ref: '#/components/parameters/playlistElementId'
2766 description: successful operation
2768 '/users/me/video-playlists/videos-exist':
2770 summary: Check video exists in my playlists
2779 description: The video ids to check
2783 $ref: '#/components/schemas/Video/properties/id'
2786 description: successful operation
2808 '/accounts/{name}/video-channels':
2810 summary: List video channels of an account
2815 - $ref: '#/components/parameters/name'
2818 description: include view statistics for the last 30 days (only if authentified as the account user)
2821 - $ref: '#/components/parameters/start'
2822 - $ref: '#/components/parameters/count'
2823 - $ref: '#/components/parameters/sort'
2826 description: successful operation
2830 $ref: '#/components/schemas/VideoChannelList'
2831 '/accounts/{name}/ratings':
2833 summary: List ratings of an account
2839 - $ref: '#/components/parameters/name'
2840 - $ref: '#/components/parameters/start'
2841 - $ref: '#/components/parameters/count'
2842 - $ref: '#/components/parameters/sort'
2846 description: Optionally filter which ratings to retrieve
2854 description: successful operation
2860 $ref: '#/components/schemas/VideoRating'
2861 '/videos/{id}/comment-threads':
2863 summary: List threads of a video
2867 - $ref: '#/components/parameters/idOrUUID'
2868 - $ref: '#/components/parameters/start'
2869 - $ref: '#/components/parameters/count'
2870 - $ref: '#/components/parameters/commentsSort'
2873 description: successful operation
2877 $ref: '#/components/schemas/CommentThreadResponse'
2879 summary: Create a thread
2885 - $ref: '#/components/parameters/idOrUUID'
2888 description: successful operation
2892 $ref: '#/components/schemas/CommentThreadPostResponse'
2894 description: video does not exist
2903 - $ref: '#/components/schemas/VideoComment/properties/text'
2909 '/videos/{id}/comment-threads/{threadId}':
2911 summary: Get a thread
2915 - $ref: '#/components/parameters/idOrUUID'
2916 - $ref: '#/components/parameters/threadId'
2919 description: successful operation
2923 $ref: '#/components/schemas/VideoCommentThreadTree'
2924 '/videos/{id}/comments/{commentId}':
2926 summary: Reply to a thread of a video
2932 - $ref: '#/components/parameters/idOrUUID'
2933 - $ref: '#/components/parameters/commentId'
2936 description: successful operation
2940 $ref: '#/components/schemas/CommentThreadPostResponse'
2942 description: thread or video does not exist
2951 - $ref: '#/components/schemas/VideoComment/properties/text'
2958 summary: Delete a comment or a reply
2964 - $ref: '#/components/parameters/idOrUUID'
2965 - $ref: '#/components/parameters/commentId'
2968 description: successful operation
2970 description: cannot remove comment of another user
2972 description: comment or video does not exist
2974 description: comment is already deleted
2975 '/videos/{id}/rate':
2977 summary: Like/dislike a video
2983 - $ref: '#/components/parameters/idOrUUID'
2999 description: successful operation
3001 description: video does not exist
3006 summary: Search videos
3011 allowEmptyValue: false
3013 String to search. If the user can make a remote URI search, and the string is an URI then the
3014 PeerTube instance will fetch the remote object and add it to its database. Then,
3015 you can use the REST API to fetch the complete video information and interact with it.
3018 - $ref: '#/components/parameters/categoryOneOf'
3019 - $ref: '#/components/parameters/isLive'
3020 - $ref: '#/components/parameters/tagsOneOf'
3021 - $ref: '#/components/parameters/tagsAllOf'
3022 - $ref: '#/components/parameters/licenceOneOf'
3023 - $ref: '#/components/parameters/languageOneOf'
3024 - $ref: '#/components/parameters/nsfw'
3025 - $ref: '#/components/parameters/filter'
3026 - $ref: '#/components/parameters/skipCount'
3027 - $ref: '#/components/parameters/start'
3028 - $ref: '#/components/parameters/count'
3029 - $ref: '#/components/parameters/searchTarget'
3030 - $ref: '#/components/parameters/videosSearchSort'
3033 description: Get videos that are published after this date
3039 description: Get videos that are published before this date
3043 - name: originallyPublishedStartDate
3045 description: Get videos that are originally published after this date
3049 - name: originallyPublishedEndDate
3051 description: Get videos that are originally published before this date
3057 description: Get videos that have this minimum duration
3062 description: Get videos that have this maximum duration
3066 'searchTarget === search-index':
3067 $ref: '#/components/callbacks/searchIndex'
3070 description: successful operation
3074 $ref: '#/components/schemas/VideoListResponse'
3076 description: search index unavailable
3077 /search/video-channels:
3081 summary: Search channels
3087 String to search. If the user can make a remote URI search, and the string is an URI then the
3088 PeerTube instance will fetch the remote object and add it to its database. Then,
3089 you can use the REST API to fetch the complete channel information and interact with it.
3092 - $ref: '#/components/parameters/start'
3093 - $ref: '#/components/parameters/count'
3094 - $ref: '#/components/parameters/searchTarget'
3095 - $ref: '#/components/parameters/sort'
3097 'searchTarget === search-index':
3098 $ref: '#/components/callbacks/searchIndex'
3101 description: successful operation
3105 $ref: '#/components/schemas/VideoChannelList'
3107 description: search index unavailable
3108 /blocklist/accounts:
3112 summary: List account blocks
3117 - $ref: '#/components/parameters/start'
3118 - $ref: '#/components/parameters/count'
3119 - $ref: '#/components/parameters/sort'
3122 description: successful operation
3126 summary: Block an account
3138 example: chocobozzz@example.org
3139 description: account to block, in the form `username@domain`
3144 description: successful operation
3146 description: self-blocking forbidden
3147 '/blocklist/accounts/{accountName}':
3151 summary: Unblock an account by its handle
3159 description: account to unblock, in the form `username@domain`
3164 description: successful operation
3166 description: account or account block does not exist
3171 summary: List server blocks
3176 - $ref: '#/components/parameters/start'
3177 - $ref: '#/components/parameters/count'
3178 - $ref: '#/components/parameters/sort'
3181 description: successful operation
3185 summary: Block a server
3198 description: server domain to block
3203 description: successful operation
3205 description: self-blocking forbidden
3206 '/blocklist/servers/{host}':
3210 summary: Unblock a server by its domain
3218 description: server domain to unblock
3224 description: successful operation
3226 description: account block does not exist
3230 - Instance Redundancy
3231 summary: Update a server redundancy policy
3239 description: server domain to mirror
3251 description: allow mirroring of the host's local videos
3256 description: successful operation
3258 description: server is not already known
3263 summary: List videos being mirrored
3271 description: direction of the mirror
3277 - $ref: '#/components/parameters/start'
3278 - $ref: '#/components/parameters/count'
3279 - $ref: '#/components/parameters/videoRedundanciesSort'
3282 description: successful operation
3288 $ref: '#/components/schemas/VideoRedundancy'
3292 summary: Mirror a video
3303 $ref: '#/components/schemas/Video/properties/id'
3308 description: successful operation
3310 description: cannot mirror a local video
3312 description: video does not exist
3314 description: video is already mirrored
3315 /redundancy/videos/{redundancyId}:
3319 summary: Delete a mirror done on a video
3324 - name: redundancyId
3327 description: id of an existing redundancy on a video
3332 description: successful operation
3334 description: video redundancy not found
3335 '/feeds/video-comments.{format}':
3339 summary: List comments on videos
3344 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3357 description: 'limit listing to a specific video'
3362 description: 'limit listing to a specific account'
3367 description: 'limit listing to a specific account'
3370 - name: videoChannelId
3372 description: 'limit listing to a specific video channel'
3375 - name: videoChannelName
3377 description: 'limit listing to a specific video channel'
3382 description: successful operation
3387 default: 'max-age=900' # 15 min cache
3391 $ref: '#/components/schemas/VideoCommentsForXML'
3394 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
3395 application/rss+xml:
3397 $ref: '#/components/schemas/VideoCommentsForXML'
3400 externalValue: https://peertube2.cpy.re/feeds/video-comments.rss?filter=local
3403 $ref: '#/components/schemas/VideoCommentsForXML'
3406 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
3407 application/atom+xml:
3409 $ref: '#/components/schemas/VideoCommentsForXML'
3412 externalValue: https://peertube2.cpy.re/feeds/video-comments.atom?filter=local
3418 externalValue: https://peertube2.cpy.re/feeds/video-comments.json?filter=local
3420 x-summary: field inconsistencies
3423 - videoId filter is mixed with a channel filter
3425 description: video, video channel or account not found
3427 description: accept header unsupported
3428 '/feeds/videos.{format}':
3432 summary: List videos
3437 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3450 description: 'limit listing to a specific account'
3455 description: 'limit listing to a specific account'
3458 - name: videoChannelId
3460 description: 'limit listing to a specific video channel'
3463 - name: videoChannelName
3465 description: 'limit listing to a specific video channel'
3468 - $ref: '#/components/parameters/sort'
3469 - $ref: '#/components/parameters/nsfw'
3470 - $ref: '#/components/parameters/filter'
3473 description: successful operation
3478 default: 'max-age=900' # 15 min cache
3482 $ref: '#/components/schemas/VideosForXML'
3485 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3486 application/rss+xml:
3488 $ref: '#/components/schemas/VideosForXML'
3491 externalValue: https://peertube2.cpy.re/feeds/videos.rss?filter=local
3494 $ref: '#/components/schemas/VideosForXML'
3497 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3498 application/atom+xml:
3500 $ref: '#/components/schemas/VideosForXML'
3503 externalValue: https://peertube2.cpy.re/feeds/videos.atom?filter=local
3509 externalValue: https://peertube2.cpy.re/feeds/videos.json?filter=local
3511 description: video channel or account not found
3513 description: accept header unsupported
3514 '/feeds/subscriptions.{format}':
3519 summary: List videos of subscriptions tied to a token
3524 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3537 description: limit listing to a specific account
3543 description: private token allowing access
3547 - $ref: '#/components/parameters/sort'
3548 - $ref: '#/components/parameters/nsfw'
3549 - $ref: '#/components/parameters/filter'
3552 description: successful operation
3557 default: 'max-age=900' # 15 min cache
3561 $ref: '#/components/schemas/VideosForXML'
3562 application/rss+xml:
3564 $ref: '#/components/schemas/VideosForXML'
3567 $ref: '#/components/schemas/VideosForXML'
3568 application/atom+xml:
3570 $ref: '#/components/schemas/VideosForXML'
3575 description: accept header unsupported
3580 summary: List plugins
3593 - $ref: '#/components/parameters/start'
3594 - $ref: '#/components/parameters/count'
3595 - $ref: '#/components/parameters/sort'
3598 description: successful operation
3602 $ref: '#/components/schemas/PluginResponse'
3607 summary: List available plugins
3620 - name: currentPeerTubeEngine
3624 - $ref: '#/components/parameters/start'
3625 - $ref: '#/components/parameters/count'
3626 - $ref: '#/components/parameters/sort'
3629 description: successful operation
3633 $ref: '#/components/schemas/PluginResponse'
3635 description: plugin index unavailable
3640 summary: Install a plugin
3653 example: peertube-plugin-auth-ldap
3656 additionalProperties: false
3663 additionalProperties: false
3666 description: successful operation
3668 description: should have either `npmName` or `path` set
3673 summary: Update a plugin
3686 example: peertube-plugin-auth-ldap
3689 additionalProperties: false
3696 additionalProperties: false
3699 description: successful operation
3701 description: should have either `npmName` or `path` set
3703 description: existing plugin not found
3708 summary: Uninstall a plugin
3720 description: name of the plugin/theme in its package.json
3721 example: peertube-plugin-auth-ldap
3726 description: successful operation
3728 description: existing plugin not found
3733 summary: Get a plugin
3738 - $ref: '#/components/parameters/npmName'
3741 description: successful operation
3745 $ref: '#/components/schemas/Plugin'
3747 description: plugin not found
3748 /plugins/{npmName}/settings:
3752 summary: Set a plugin's settings
3757 - $ref: '#/components/parameters/npmName'
3766 additionalProperties: true
3769 description: successful operation
3771 description: plugin not found
3772 /plugins/{npmName}/public-settings:
3776 summary: Get a plugin's public settings
3778 - $ref: '#/components/parameters/npmName'
3781 description: successful operation
3786 additionalProperties: true
3788 description: plugin not found
3789 /plugins/{npmName}/registered-settings:
3793 summary: Get a plugin's registered settings
3798 - $ref: '#/components/parameters/npmName'
3801 description: successful operation
3806 additionalProperties: true
3808 description: plugin not found
3810 - url: 'https://peertube2.cpy.re/api/v1'
3811 description: Live Test Server (live data - latest nightly version)
3812 - url: 'https://peertube3.cpy.re/api/v1'
3813 description: Live Test Server (live data - latest RC version)
3814 - url: 'https://peertube.cpy.re/api/v1'
3815 description: Live Test Server (live data - stable version)
3822 description: Offset used to paginate results
3830 description: "Number of items to return"
3840 description: Sort column
3848 description: Plain text search, applied to various parts of the model depending on endpoint
3856 If the administrator enabled search index support, you can override the default search target.
3859 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3860 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3861 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3862 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3863 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3864 * 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
3865 the data from the origin instance API
3875 description: Sort videos by criteria
3891 description: Sort videos by criteria
3906 description: Sort comments by criteria
3916 description: Sort blacklists by criteria
3932 description: Plain text search that will match with user usernames or emails
3939 description: Filter results down to (un)banned users
3946 description: Sort users by criteria
3957 description: Sort abuses by criteria
3964 videoRedundanciesSort:
3968 description: Sort abuses by criteria
3977 description: The username or handle of the account
3980 example: chocobozzz | chocobozzz@example.org
3985 description: The user id
3987 $ref: '#/components/schemas/id'
3992 description: The object id or uuid
3995 - $ref: '#/components/schemas/id'
3996 - $ref: '#/components/schemas/UUIDv4'
4001 description: Playlist id
4003 $ref: '#/components/schemas/VideoPlaylist/properties/id'
4005 name: playlistElementId
4008 description: Playlist element id
4010 $ref: '#/components/schemas/id'
4015 description: Abuse id
4017 $ref: '#/components/schemas/Abuse/properties/id'
4019 name: abuseMessageId
4022 description: Abuse message id
4024 $ref: '#/components/schemas/AbuseMessage/properties/id'
4026 name: captionLanguage
4029 description: The caption language
4031 $ref: '#/components/schemas/VideoLanguageSet'
4036 description: The video channel handle
4039 example: my_username | my_username@example.com
4041 name: subscriptionHandle
4044 description: The subscription handle
4047 example: my_username | my_username@example.com
4052 description: The thread id (root comment id)
4054 $ref: '#/components/schemas/VideoCommentThreadTree/properties/comment/properties/id'
4059 description: The comment id
4061 $ref: '#/components/schemas/VideoComment/properties/id'
4066 description: whether or not the video is a live
4073 description: category id of the video (see [/videos/categories](#operation/getCategories))
4076 - $ref: '#/components/schemas/VideoCategorySet'
4079 $ref: '#/components/schemas/VideoCategorySet'
4086 description: tag(s) of the video
4100 description: tag(s) of the video, where all should be present in the video
4113 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
4116 - $ref: '#/components/schemas/VideoLanguageSet'
4119 $ref: '#/components/schemas/VideoLanguageSet'
4126 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4129 - $ref: '#/components/schemas/VideoLicenceSet'
4132 $ref: '#/components/schemas/VideoLicenceSet'
4139 description: if you don't need the `total` in the response
4150 description: whether to include nsfw videos, if any
4161 Special filters which might require special rights:
4162 * `local` - only videos local to the instance
4163 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
4164 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
4174 description: list of uris to check if each is part of the user subscriptions
4184 description: name of the plugin/theme on npmjs.com or in its package.json
4187 example: peertube-plugin-auth-ldap
4192 description: job type
4196 - activitypub-follow
4197 - activitypub-http-broadcast
4198 - activitypub-http-fetcher
4199 - activitypub-http-unicast
4205 - activitypub-refresher
4211 Authenticating via OAuth requires the following steps:
4212 - Have an activated account
4213 - [Generate](https://docs.joinpeertube.org/api-rest-getting-started) a
4214 Bearer Token for that account at `/api/v1/users/token`
4215 - Make authenticated requests, putting *Authorization: Bearer <token\>*
4216 - Profit, depending on the role assigned to the account
4218 Note that the __access token is valid for 1 day__ and, and is given
4219 along with a __refresh token valid for 2 weeks__.
4223 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
4226 moderator: Moderator scope
4229 # Resuable core properties
4237 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4238 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
4243 description: immutable name of the user, used to find or mention its actor
4245 pattern: '/^[a-z0-9._]{1,50}$/'
4250 description: immutable name of the channel, used to interact with its actor
4251 example: framasoft_videos
4252 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4261 description: category id of the video (see [/videos/categories](#operation/getCategories))
4263 VideoConstantNumber-Category:
4266 $ref: '#/components/schemas/VideoCategorySet'
4269 example: Science & Technology
4273 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4275 VideoConstantNumber-Licence:
4278 $ref: '#/components/schemas/VideoLicenceSet'
4281 example: Attribution - Share Alike
4285 description: language id of the video (see [/videos/languages](#operation/getLanguages))
4287 VideoConstantString-Language:
4290 $ref: '#/components/schemas/VideoLanguageSet'
4295 VideoPlaylistPrivacySet:
4301 description: Video playlist privacy policy (see [/video-playlists/privacies])
4302 VideoPlaylistPrivacyConstant:
4305 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
4309 VideoPlaylistTypeSet:
4314 description: The video playlist type (Regular = `1`, Watch Later = `2`)
4315 VideoPlaylistTypeConstant:
4318 $ref: '#/components/schemas/VideoPlaylistTypeSet'
4329 description: privacy id of the video (see [/videos/privacies](#operation/getPrivacyPolicies))
4330 VideoPrivacyConstant:
4333 $ref: '#/components/schemas/VideoPrivacySet'
4350 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
4357 description: 'Admin flags for the user (None = `0`, Bypass video blacklist = `1`)'
4368 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
4378 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
4382 $ref: '#/components/schemas/AbuseStateSet'
4385 AbusePredefinedReasons:
4398 example: [spamOrMisleading]
4403 Video resolution (`0`, `240`, `360`, `720`, `1080`, `1440` or `2160`)
4405 `0` is used as a special value for stillimage videos dedicated to audio, a.k.a. audio-only videos.
4407 VideoResolutionConstant:
4408 description: resolutions and their labels for the video
4411 $ref: '#/components/schemas/VideoResolutionSet'
4415 VideoScheduledUpdate:
4418 $ref: '#/components/schemas/VideoPrivacySet'
4422 description: When to update the video
4442 - $ref: '#/components/schemas/ActorImage'
4443 VideoChannelSummary:
4446 $ref: '#/components/schemas/id'
4460 - $ref: '#/components/schemas/ActorImage'
4474 - $ref: '#/components/schemas/Video'
4481 description: magnet URI allowing to resolve the video via BitTorrent without a metainfo file
4482 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
4483 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
4485 $ref: '#/components/schemas/VideoResolutionConstant'
4488 description: Video file size in bytes
4491 description: Direct URL of the torrent file
4495 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
4499 description: Direct URL of the video
4503 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
4507 description: Frames per second of the video file
4511 description: URL dereferencing the output of ffprobe on the file
4512 VideoStreamingPlaylists:
4517 $ref: '#/components/schemas/id'
4525 - $ref: '#/components/schemas/VideoStreamingPlaylists-HLS'
4526 VideoStreamingPlaylists-HLS:
4537 Video files associated to this playlist.
4539 The difference with the root `files` property is that these files are fragmented, so they can be used in this streaming playlist (HLS, etc.)
4541 $ref: '#/components/schemas/VideoFile'
4553 $ref: '#/components/schemas/Video/properties/id'
4555 $ref: '#/components/schemas/Video/properties/uuid'
4557 $ref: '#/components/schemas/Video/properties/name'
4561 description: object id for the video
4563 - $ref: '#/components/schemas/id'
4565 description: universal identifier for the video, that can be used across instances
4567 - $ref: '#/components/schemas/UUIDv4'
4573 example: 2017-10-01T10:52:46.396Z
4574 description: time at which the video object was first drafted
4578 example: 2018-10-01T10:52:46.396Z
4579 description: time at which the video was marked as ready for playback (with restrictions depending on `privacy`). Usually set after a `state` evolution.
4583 example: 2021-05-04T08:01:01.502Z
4584 description: last time the video's metadata was modified
4585 originallyPublishedAt:
4588 example: 2010-10-01T10:52:46.396Z
4589 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
4592 - $ref: '#/components/schemas/VideoConstantNumber-Category'
4593 description: category in which the video is classified
4596 - $ref: '#/components/schemas/VideoConstantNumber-Licence'
4597 description: licence under which the video is distributed
4600 - $ref: '#/components/schemas/VideoConstantString-Language'
4601 description: main language used in the video
4604 - $ref: '#/components/schemas/VideoPrivacyConstant'
4605 description: privacy policy used to distribute the video
4609 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n
4610 **Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\r\n*A decentralized video hosting network, based on fr...
4614 truncated description of the video, written in Markdown.
4615 Resolve `descriptionPath` to get the full description of maximum `10000` characters.
4620 description: duration of the video in seconds
4625 description: title of the video
4626 example: What is PeerTube?
4631 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4634 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4637 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4654 - $ref: '#/components/schemas/VideoStateConstant'
4655 description: represents the internal state of the video processing within the PeerTube instance
4659 - $ref: '#/components/schemas/VideoScheduledUpdate'
4667 $ref: '#/components/schemas/AccountSummary'
4669 $ref: '#/components/schemas/VideoChannelSummary'
4678 - $ref: '#/components/schemas/Video'
4683 example: /api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/description
4684 description: path at which to get the full description of maximum `10000` characters
4687 description: A text tell the audience how to support the video creator
4688 example: Please support our work on https://soutenir.framasoft.org/en/ <3
4692 $ref: '#/components/schemas/VideoChannel'
4694 $ref: '#/components/schemas/Account'
4696 example: [flowers, gardening]
4714 - https://peertube2.cpy.re/tracker/announce
4715 - wss://peertube2.cpy.re/tracker/socket
4719 $ref: '#/components/schemas/VideoFile'
4721 WebTorrent/raw video files. If WebTorrent is disabled on the server:
4723 - field will be empty
4724 - video files will be found in `streamingPlaylists[].files` field
4728 $ref: '#/components/schemas/VideoStreamingPlaylists'
4730 HLS playlists/manifest files. If HLS is disabled on the server:
4732 - field will be empty
4733 - video files will be found in `files` field
4734 FileRedundancyInformation:
4737 $ref: '#/components/schemas/id'
4762 $ref: '#/components/schemas/id'
4769 $ref: '#/components/schemas/UUIDv4'
4776 $ref: '#/components/schemas/FileRedundancyInformation'
4780 $ref: '#/components/schemas/FileRedundancyInformation'
4781 VideoImportStateConstant:
4789 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4796 additionalProperties: false
4800 $ref: '#/components/schemas/VideoImport/properties/targetUrl'
4801 required: [targetUrl]
4804 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
4805 required: [magnetUri]
4808 $ref: '#/components/schemas/VideoImport/properties/torrentfile'
4809 required: [torrentfile]
4810 - $ref: '#/components/schemas/VideoUploadRequestCommon'
4819 - $ref: '#/components/schemas/id'
4823 description: remote URL where to find the import's source video
4824 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4828 description: magnet URI allowing to resolve the import's source video
4829 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
4830 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
4835 description: Torrent file containing only the video file
4842 - $ref: '#/components/schemas/VideoImportStateConstant'
4858 - $ref: '#/components/schemas/Video'
4868 $ref: '#/components/schemas/VideoImport'
4872 $ref: '#/components/schemas/id'
4875 example: The video is a spam
4879 $ref: '#/components/schemas/AbusePredefinedReasons'
4881 $ref: '#/components/schemas/Account'
4883 $ref: '#/components/schemas/AbuseStateConstant'
4886 example: Decided to ban the server since it spams us regularly
4890 $ref: '#/components/schemas/VideoInfo'
4897 $ref: '#/components/schemas/id'
4908 $ref: '#/components/schemas/AccountSummary'
4912 $ref: '#/components/schemas/id'
4914 $ref: '#/components/schemas/Video/properties/id'
4926 $ref: '#/components/schemas/UUIDv4'
4944 $ref: '#/components/schemas/id'
4946 $ref: '#/components/schemas/UUIDv4'
4969 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4971 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4973 $ref: '#/components/schemas/AccountSummary'
4975 $ref: '#/components/schemas/VideoChannelSummary'
4979 $ref: '#/components/schemas/id'
4986 description: Text of the comment
4988 example: This video is wonderful!
4990 $ref: '#/components/schemas/id'
4994 - $ref: '#/components/schemas/id'
4996 $ref: '#/components/schemas/Video/properties/id'
5011 totalRepliesFromVideoAuthor:
5018 $ref: '#/components/schemas/Account'
5019 VideoCommentThreadTree:
5022 $ref: '#/components/schemas/VideoComment'
5026 $ref: '#/components/schemas/VideoCommentThreadTree'
5030 $ref: '#/components/schemas/VideoConstantString-Language'
5046 $ref: '#/components/schemas/id'
5063 $ref: '#/components/schemas/id'
5068 description: immutable name of the actor, used to find or mention it
5070 - $ref: '#/components/schemas/username'
5074 description: server on which the actor is resident
5075 hostRedundancyAllowed:
5077 description: whether this actor's host allows redundancy of its videos
5081 description: number of actors subscribed to by this actor, as seen by this instance
5085 description: number of followers of this actor, as seen by this instance
5093 $ref: '#/components/schemas/ActorImage'
5096 - $ref: '#/components/schemas/Actor'
5099 description: object id for the user tied to this account
5101 - $ref: '#/components/schemas/User/properties/id'
5104 description: editable name of the account, displayed in its representations
5109 description: text or bio displayed on the account's profile
5115 description: timestamp within the video, in seconds
5182 allowedForCurrentIP:
5184 requiresEmailVerification:
5202 $ref: '#/components/schemas/VideoResolutionSet'
5287 example: 16810141515
5390 requiresEmailVerification:
5405 description: Settings that apply to new users, if registration is enabled
5409 example: 16810141515
5415 description: Settings pertaining to transcoding jobs
5419 allowAdditionalExtensions:
5421 description: Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
5424 description: If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
5427 description: Amount of threads used by ffmpeg for 1 transcoding job
5430 description: Amount of transcoding jobs to execute in parallel
5436 New profiles can be added by plugins ; available in core PeerTube: 'default'.
5439 description: Resolutions to transcode _new videos_ to
5459 description: WebTorrent-specific settings
5465 description: HLS-specific settings
5509 $ref: '#/components/schemas/id'
5511 $ref: '#/components/schemas/Actor'
5513 $ref: '#/components/schemas/Actor'
5516 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
5529 PredefinedAbuseReasons:
5530 description: Reason categories that help triage reports
5548 $ref: '#/components/schemas/id'
5560 - activitypub-http-unicast
5561 - activitypub-http-broadcast
5562 - activitypub-http-fetcher
5563 - activitypub-follow
5569 - activitypub-refresher
5573 additionalProperties: true
5576 additionalProperties: true
5592 $ref: '#/components/schemas/id'
5597 $ref: '#/components/schemas/id'
5598 VideoUploadRequestCommon:
5601 description: Video name
5603 example: What is PeerTube?
5607 description: Channel id that will contain this video
5612 $ref: '#/components/schemas/VideoPrivacySet'
5614 $ref: '#/components/schemas/VideoCategorySet'
5616 $ref: '#/components/schemas/VideoLicenceSet'
5618 $ref: '#/components/schemas/VideoLanguageSet'
5620 description: Video description
5623 **[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)**
5625 description: Whether or not we wait transcoding before publish the video
5628 description: A text tell the audience how to support the video creator
5629 example: Please support our work on https://soutenir.framasoft.org/en/ <3
5632 description: Whether or not this video contains sensitive content
5635 description: Video tags (maximum 5 tags each between 2 and 30 characters)
5648 description: Enable or disable comments for this video
5651 description: Enable or disable downloading for this video
5653 originallyPublishedAt:
5654 description: Date when the content was originally published
5658 $ref: '#/components/schemas/VideoScheduledUpdate'
5660 description: Video thumbnail file
5664 description: Video preview file
5670 VideoUploadRequestLegacy:
5672 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5678 description: Video file
5681 VideoUploadRequestResumable:
5683 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5689 description: Video filename including extension
5692 example: what_is_peertube.mp4
5694 description: Video thumbnail file
5698 description: Video preview file
5701 VideoUploadResponse:
5707 $ref: '#/components/schemas/Video/properties/id'
5709 $ref: '#/components/schemas/Video/properties/uuid'
5710 CommentThreadResponse:
5719 $ref: '#/components/schemas/VideoComment'
5720 CommentThreadPostResponse:
5723 $ref: '#/components/schemas/VideoComment'
5733 $ref: '#/components/schemas/Video'
5737 $ref: '#/components/schemas/Account'
5740 description: Automatically start playing the upcoming video after the currently playing video
5741 autoPlayNextVideoPlaylist:
5743 description: Automatically start playing the video on the playlist after the currently playing video
5746 description: Automatically start playing the video on the watch page
5756 description: The user email
5759 description: Has the user confirmed their email address?
5762 - $ref: '#/components/schemas/id'
5766 description: Auth plugin to use to authenticate the user
5770 noInstanceConfigWarningModal:
5775 $ref: '#/components/schemas/NSFWPolicy'
5777 $ref: '#/components/schemas/UserRole'
5786 description: Theme enabled by this user
5788 $ref: '#/components/schemas/username'
5792 $ref: '#/components/schemas/VideoChannel'
5795 description: The user video quota in bytes
5799 description: The user daily video quota in bytes
5803 description: Enable P2P in the player
5806 - $ref: '#/components/schemas/User'
5808 # optionally present fields: they require WITH_STATS scope
5811 description: Count of videos published
5814 description: Count of reports/abuses of which the user is a target
5815 abusesAcceptedCount:
5817 description: Count of reports/abuses created by the user and accepted/acted upon by the moderation team
5820 description: Count of reports/abuses created by the user
5823 description: Count of comments published
5827 $ref: '#/components/schemas/username'
5829 $ref: '#/components/schemas/password'
5833 description: The user email
5836 description: The user video quota in bytes
5840 description: The user daily video quota in bytes
5843 $ref: '#/components/schemas/usernameChannel'
5845 $ref: '#/components/schemas/UserRole'
5847 $ref: '#/components/schemas/UserAdminFlags'
5858 description: The updated email of the user
5860 - $ref: '#/components/schemas/User/properties/email'
5863 description: Set the email as verified
5866 description: The updated video quota of the user in bytes
5869 description: The updated daily video quota of the user in bytes
5873 description: The auth plugin to use to authenticate the user
5874 example: 'peertube-plugin-auth-saml2'
5876 $ref: '#/components/schemas/UserRole'
5878 $ref: '#/components/schemas/UserAdminFlags'
5880 # see shared/models/users/user-update-me.model.ts:
5883 $ref: '#/components/schemas/password'
5885 $ref: '#/components/schemas/password'
5887 description: new email used for login and service communications
5889 - $ref: '#/components/schemas/User/properties/email'
5892 description: new name of the user in its representations
5897 description: new NSFW display policy
5904 description: whether to enable P2P in the player or not
5907 description: new preference regarding playing videos automatically
5910 description: new preference regarding playing following videos automatically
5911 autoPlayNextVideoPlaylist:
5913 description: new preference regarding playing following playlist videos automatically
5914 videosHistoryEnabled:
5916 description: whether to keep track of watched history or not
5921 description: list of languages to filter videos down to
5924 noInstanceConfigWarningModal:
5931 $ref: '#/components/schemas/id'
5938 description: Rating of the video
5945 $ref: '#/components/schemas/Video'
5952 description: Rating of the video
5959 description: immutable name of the user, used to find or mention its actor
5961 - $ref: '#/components/schemas/username'
5963 $ref: '#/components/schemas/password'
5967 description: email of the user, used for login or service communications
5970 description: editable name of the user, displayed in its representations
5975 description: channel base information used to create the first channel of the user
5978 $ref: '#/components/schemas/usernameChannel'
5980 $ref: '#/components/schemas/VideoChannel/properties/displayName'
5988 # GET/POST/PUT properties
5991 description: editable name of the channel, displayed in its representations
5992 example: Videos of Framasoft
5997 example: Videos made with <3 by Framasoft
6002 description: text shown by default on all videos of this channel, to tell the audience how to support it
6003 example: Please support our work on https://soutenir.framasoft.org/en/ <3
6006 # GET-only properties
6010 - $ref: '#/components/schemas/id'
6026 $ref: '#/components/schemas/UUIDv4'
6029 - $ref: '#/components/schemas/VideoChannel'
6032 description: username of the channel to create
6034 - $ref: '#/components/schemas/usernameChannel'
6040 - $ref: '#/components/schemas/VideoChannel'
6042 bulkVideosSupportUpdate:
6044 description: Update the support field for all videos of this channel
6054 - $ref: '#/components/schemas/VideoChannel'
6055 - $ref: '#/components/schemas/Actor'
6060 name: 'media:peerLink'
6069 - application/x-bittorrent
6075 name: 'media:content'
6106 VideoCommentsForXML:
6141 description: video watch page URL
6144 description: video canonical URL
6148 description: video publication date
6151 description: video description
6154 description: video description
6157 description: publisher user name
6160 description: video category (MRSS)
6163 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
6178 description: video embed path, relative to the canonical URL domain (MRSS)
6187 description: video watch path, relative to the canonical URL domain (MRSS)
6208 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
6209 'media:description':
6216 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
6219 description: main streamable file for the video
6229 - application/x-bittorrent
6238 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)
6241 - $ref: '#/components/schemas/MRSSPeerLink'
6242 - $ref: '#/components/schemas/MRSSGroupContent'
6243 NotificationSettingValue:
6260 $ref: '#/components/schemas/id'
6264 Notification type, following the `UserNotificationType` enum:
6266 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
6268 - `2` NEW_COMMENT_ON_MY_VIDEO
6270 - `3` NEW_ABUSE_FOR_MODERATORS
6272 - `4` BLACKLIST_ON_MY_VIDEO
6274 - `5` UNBLACKLIST_ON_MY_VIDEO
6276 - `6` MY_VIDEO_PUBLISHED
6278 - `7` MY_VIDEO_IMPORT_SUCCESS
6280 - `8` MY_VIDEO_IMPORT_ERROR
6282 - `9` NEW_USER_REGISTRATION
6286 - `11` COMMENT_MENTION
6288 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
6290 - `13` NEW_INSTANCE_FOLLOWER
6292 - `14` AUTO_INSTANCE_FOLLOWING
6298 - $ref: '#/components/schemas/VideoInfo'
6302 $ref: '#/components/schemas/ActorInfo'
6308 $ref: '#/components/schemas/id'
6311 $ref: '#/components/schemas/VideoInfo'
6316 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
6326 $ref: '#/components/schemas/id'
6330 $ref: '#/components/schemas/VideoInfo'
6332 $ref: '#/components/schemas/ActorInfo'
6338 $ref: '#/components/schemas/id'
6341 - $ref: '#/components/schemas/VideoInfo'
6347 $ref: '#/components/schemas/id'
6350 - $ref: '#/components/schemas/VideoInfo'
6354 - $ref: '#/components/schemas/ActorInfo'
6360 $ref: '#/components/schemas/id'
6362 $ref: '#/components/schemas/ActorInfo'
6390 NotificationListResponse:
6399 $ref: '#/components/schemas/Notification'
6404 example: peertube-plugin-auth-ldap
6432 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
6435 additionalProperties: true
6451 $ref: '#/components/schemas/Plugin'
6458 description: User can stream multiple times in a permanent live
6467 description: RTMP stream key to use to stream into this live video
6471 description: User can stream multiple times in a permanent live
6478 'https://search.example.org/api/v1/search/videos':
6480 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
6483 description: successful operation
6487 $ref: '#/components/schemas/VideoListResponse'