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 "code": "unauthorized_request", // example inner error code
47 "error": "Token is invalid." // example exposed error message
53 We are rate-limiting all endpoints of PeerTube's API. Custom values can be set by administrators:
55 | Endpoint | Calls | Time frame |
56 |-------------------------|------------------|---------------------------|
57 | `/*` | 50 | 10 seconds |
58 | `POST /users/token` | 15 | 5 minutes |
59 | `POST /users/register` | 2¹ | 5 minutes |
60 | `POST /users/ask-send-verify-email` | 3 | 5 minutes |
62 Depending on the endpoint, ¹failed requests are not taken into account. A service
63 limit is announced by a `429 Too Many Requests` status code.
65 You can get details about the current state of your rate limit by reading the
68 | Header | Description |
69 |-------------------------|------------------------------------------------------------|
70 | X-RateLimit-Limit | Number of max requests allowed in the current time period |
71 | X-RateLimit-Remaining | Number of remaining requests in the current time period |
72 | X-RateLimit-Reset | Timestamp of end of current time period as UNIX timestamp |
73 | Retry-After | Seconds to delay after the first `429` is received |
75 url: https://docs.joinpeertube.org/api-rest-reference.html
79 Accounts encompass remote accounts discovered across the federation,
80 and correspond to the main Actor, along with video channels a user can create, which
83 When a comment is posted, it is done with your Account's Actor.
86 Using some features of PeerTube require authentication, for which User
87 provide different levels of permission as well as associated user
88 information. Each user has a corresponding local Account for federation.
91 Operations related to your own User, when logged-in.
92 - name: My Subscriptions
94 Operations related to your subscriptions to video channels, their
95 new videos, and how to keep up to date with their latest publications!
98 Operations related to your watch history.
99 - name: My Notifications
101 Notifications following new videos, follows or reports. They allow you
102 to keep track of the interactions and overall important information that
103 concerns you. You MAY set per-notification type delivery preference, to
104 receive the info either by mail, by in-browser notification or both.
107 Each server exposes public information regarding supported videos and
111 Jobs are long-running tasks enqueued and processed by the instance
112 itself. No additional worker registration is currently available.
113 - name: Instance Follows
115 Managing servers which the instance interacts with is crucial to the
116 concept of federation in PeerTube and external video indexation. The PeerTube
117 server then deals with inter-server ActivityPub operations and propagates
118 information across its social graph by posting activities to actors' inbox
121 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-follows
122 - name: Instance Redundancy
124 Redundancy is part of the inter-server solidarity that PeerTube fosters.
125 Manage the list of instances you wish to help by seeding their videos according
126 to the policy of video selection of your choice. Note that you have a similar functionality
127 to mirror individual videos, see [video mirroring](#tag/Video-Mirroring).
129 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-redundancy
132 Managing plugins installed from a local path or from NPM, or search for new ones.
134 url: https://docs.joinpeertube.org/api-plugins
137 Abuses deal with reports of local or remote videos/comments/accounts alike.
140 Operations dealing with listing, uploading, fetching or modifying videos.
143 Operations dealing with adding video or audio. PeerTube supports two upload modes, and three import modes.
147 - [_legacy_](#operation/uploadLegacy), where the video file is sent in a single request
148 - [_resumable_](#operation/uploadResumableInit), where the video file is sent in chunks
150 You can upload videos more reliably by using the resumable variant. Its protocol lets
151 you resume an upload operation after a network interruption or other transmission failure,
152 saving time and bandwidth in the event of network failures.
154 Favor using resumable uploads in any of the following cases:
155 - You are transferring large files
156 - The likelihood of a network interruption is high
157 - Uploads are originating from a device with a low-bandwidth or unstable Internet connection,
158 such as a mobile device
162 - _URL_-based: where the URL points to any service supported by [youtube-dl](https://ytdl-org.github.io/youtube-dl/)
163 - _magnet_-based: where the URI resolves to a BitTorrent ressource containing a single supported video file
164 - _torrent_-based: where the metainfo file resolves to a BitTorrent ressource containing a single supported video file
166 The import function is practical when the desired video/audio is available online. It makes PeerTube
167 download it for you, saving you as much bandwidth and avoiding any instability or limitation your network might have.
168 - name: Video Captions
169 description: Operations dealing with listing, adding and removing closed captions of a video.
170 - name: Video Channels
171 description: Operations dealing with the creation, modification and listing of videos within a channel.
172 - name: Video Comments
174 Operations dealing with comments to a video. Comments are organized in threads: adding a
175 comment in response to the video starts a thread, adding a reply to a comment adds it to
176 its root comment thread.
178 description: Operations dealing with blocking videos (removing them from view and preventing interactions).
180 description: Like/dislike a video.
181 - name: Video Playlists
182 description: Operations dealing with playlists of videos. Playlists are bound to users and/or channels.
184 description: Server syndication feeds
187 The search helps to find _videos_ or _channels_ from within the instance and beyond.
188 Videos from other instances federated by the instance (that is, instances
189 followed by the instance) can be found via keywords and other criteria of
192 Administrators can also enable the use of a remote search system, indexing
193 videos and channels not could be not federated by the instance.
194 - name: Video Mirroring
196 PeerTube instances can mirror videos from one another, and help distribute some videos.
198 For importing videos as your own, refer to [video imports](#tag/Video-Upload/paths/~1videos~1imports/post).
217 - Video Ownership Change
230 - name: Instance Configuration
234 - Instance Redundancy
244 summary: Get an account
246 - $ref: '#/components/parameters/name'
249 description: successful operation
253 $ref: '#/components/schemas/Account'
255 description: account not found
256 '/accounts/{name}/videos':
261 summary: 'List videos of an account'
263 - $ref: '#/components/parameters/name'
264 - $ref: '#/components/parameters/categoryOneOf'
265 - $ref: '#/components/parameters/isLive'
266 - $ref: '#/components/parameters/tagsOneOf'
267 - $ref: '#/components/parameters/tagsAllOf'
268 - $ref: '#/components/parameters/licenceOneOf'
269 - $ref: '#/components/parameters/languageOneOf'
270 - $ref: '#/components/parameters/nsfw'
271 - $ref: '#/components/parameters/filter'
272 - $ref: '#/components/parameters/skipCount'
273 - $ref: '#/components/parameters/start'
274 - $ref: '#/components/parameters/count'
275 - $ref: '#/components/parameters/videosSort'
278 description: successful operation
282 $ref: '#/components/schemas/VideoListResponse'
286 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
287 .then(function(response) {
288 return response.json()
289 }).then(function(data) {
295 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
301 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
303 http = Net::HTTP.new(uri.host, uri.port)
306 response = http.get(uri.request_uri)
308 puts JSON.parse(response.read_body)
313 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
321 summary: List accounts
323 - $ref: '#/components/parameters/start'
324 - $ref: '#/components/parameters/count'
325 - $ref: '#/components/parameters/sort'
328 description: successful operation
334 $ref: '#/components/schemas/Account'
339 summary: Get instance public configuration
342 description: successful operation
346 $ref: '#/components/schemas/ServerConfig'
349 externalValue: https://peertube2.cpy.re/api/v1/config
352 summary: Get instance "About" information
357 description: successful operation
361 $ref: '#/components/schemas/ServerConfigAbout'
364 externalValue: https://peertube2.cpy.re/api/v1/config/about
367 summary: Get instance runtime configuration
375 description: successful operation
379 $ref: '#/components/schemas/ServerConfigCustom'
381 summary: Set instance runtime configuration
389 description: successful operation
391 x-summary: field inconsistencies
394 - the emailer is disabled and the instance is open to registrations
395 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
397 summary: Delete instance runtime configuration
405 description: successful operation
408 summary: List instance jobs
418 description: The state of the job ('' for for no filter)
428 - $ref: '#/components/parameters/jobType'
429 - $ref: '#/components/parameters/start'
430 - $ref: '#/components/parameters/count'
431 - $ref: '#/components/parameters/sort'
434 description: successful operation
447 $ref: '#/components/schemas/Job'
448 '/server/following/{host}':
455 summary: Unfollow a server
460 description: 'The host to unfollow '
466 description: successful operation
471 summary: List instance followers
473 - $ref: '#/components/parameters/start'
474 - $ref: '#/components/parameters/count'
475 - $ref: '#/components/parameters/sort'
478 description: successful operation
484 $ref: '#/components/schemas/Follow'
489 summary: List instances followed by the server
508 - $ref: '#/components/parameters/start'
509 - $ref: '#/components/parameters/count'
510 - $ref: '#/components/parameters/sort'
513 description: successful operation
519 $ref: '#/components/schemas/Follow'
526 summary: Follow a server
529 description: successful operation
531 description: cannot follow a non-HTTPS server
546 summary: Create a user
554 description: user created
558 $ref: '#/components/schemas/AddUserResponse'
562 operationId: getUserId
564 id: '$response.body#/user/id'
567 operationId: putUserId
569 id: '$response.body#/user/id'
572 operationId: delUserId
574 id: '$response.body#/user/id'
576 description: insufficient authority to create an admin or moderator
581 $ref: '#/components/schemas/AddUser'
582 description: User to create
592 - $ref: '#/components/parameters/usersSearch'
593 - $ref: '#/components/parameters/usersBlocked'
594 - $ref: '#/components/parameters/start'
595 - $ref: '#/components/parameters/count'
596 - $ref: '#/components/parameters/usersSort'
599 description: successful operation
605 $ref: '#/components/schemas/User'
608 - $ref: '#/components/parameters/id'
610 summary: Delete a user
616 operationId: delUserId
619 description: successful operation
626 operationId: getUserId
630 description: include statistics about the user (only available as a moderator/admin)
635 x-summary: successful operation
637 As an admin/moderator, you can request a response augmented with statistics about the user's
638 moderation relations and videos usage, by using the `withStats` parameter.
643 - $ref: '#/components/schemas/User'
644 - $ref: '#/components/schemas/UserWithStats'
646 summary: Update a user
651 operationId: putUserId
654 description: successful operation
659 $ref: '#/components/schemas/UpdateUser'
663 summary: Register a user
668 description: successful operation
673 $ref: '#/components/schemas/RegisterUser'
677 summary: Get my user information
685 description: successful operation
691 $ref: '#/components/schemas/User'
693 summary: Update my user information
701 description: successful operation
706 $ref: '#/components/schemas/UpdateMe'
708 /users/me/videos/imports:
710 summary: Get video imports of my user
718 - $ref: '#/components/parameters/start'
719 - $ref: '#/components/parameters/count'
720 - $ref: '#/components/parameters/sort'
723 description: successful operation
727 $ref: '#/components/schemas/VideoImportsList'
728 /users/me/video-quota-used:
730 summary: Get my user used quota
738 description: successful operation
750 '/users/me/videos/{videoId}/rating':
752 summary: Get rate of my user for a video
762 description: 'The video id '
767 description: successful operation
771 $ref: '#/components/schemas/GetMeVideoRating'
774 summary: Get videos of my user
782 - $ref: '#/components/parameters/start'
783 - $ref: '#/components/parameters/count'
784 - $ref: '#/components/parameters/sort'
787 description: successful operation
791 $ref: '#/components/schemas/VideoListResponse'
792 /users/me/subscriptions:
794 summary: Get my user subscriptions
801 - $ref: '#/components/parameters/start'
802 - $ref: '#/components/parameters/count'
803 - $ref: '#/components/parameters/sort'
806 description: successful operation
810 $ref: '#/components/schemas/VideoChannelList'
814 summary: Add subscription to my user
827 description: uri of the video channels to subscribe to
833 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
836 description: successful operation
837 /users/me/subscriptions/exist:
839 summary: Get if subscriptions exist for my user
846 - $ref: '#/components/parameters/subscriptionsUris'
849 description: successful operation
854 /users/me/subscriptions/videos:
856 summary: List videos of subscriptions of my user
864 - $ref: '#/components/parameters/categoryOneOf'
865 - $ref: '#/components/parameters/isLive'
866 - $ref: '#/components/parameters/tagsOneOf'
867 - $ref: '#/components/parameters/tagsAllOf'
868 - $ref: '#/components/parameters/licenceOneOf'
869 - $ref: '#/components/parameters/languageOneOf'
870 - $ref: '#/components/parameters/nsfw'
871 - $ref: '#/components/parameters/filter'
872 - $ref: '#/components/parameters/skipCount'
873 - $ref: '#/components/parameters/start'
874 - $ref: '#/components/parameters/count'
875 - $ref: '#/components/parameters/videosSort'
878 description: successful operation
882 $ref: '#/components/schemas/VideoListResponse'
883 '/users/me/subscriptions/{subscriptionHandle}':
885 summary: Get subscription of my user
892 - $ref: '#/components/parameters/subscriptionHandle'
895 description: successful operation
899 $ref: '#/components/schemas/VideoChannel'
901 summary: Delete subscription of my user
908 - $ref: '#/components/parameters/subscriptionHandle'
911 description: successful operation
912 /users/me/notifications:
914 summary: List my notifications
922 description: only list unread notifications
925 - $ref: '#/components/parameters/start'
926 - $ref: '#/components/parameters/count'
927 - $ref: '#/components/parameters/sort'
930 description: successful operation
934 $ref: '#/components/schemas/NotificationListResponse'
935 /users/me/notifications/read:
937 summary: Mark notifications as read by their id
950 description: ids of the notifications to mark as read
957 description: successful operation
958 /users/me/notifications/read-all:
960 summary: Mark all my notification as read
967 description: successful operation
968 /users/me/notification-settings:
970 summary: Update my notification settings
981 newVideoFromSubscription:
982 $ref: '#/components/schemas/NotificationSettingValue'
984 $ref: '#/components/schemas/NotificationSettingValue'
986 $ref: '#/components/schemas/NotificationSettingValue'
987 videoAutoBlacklistAsModerator:
988 $ref: '#/components/schemas/NotificationSettingValue'
990 $ref: '#/components/schemas/NotificationSettingValue'
992 $ref: '#/components/schemas/NotificationSettingValue'
993 myVideoImportFinished:
994 $ref: '#/components/schemas/NotificationSettingValue'
996 $ref: '#/components/schemas/NotificationSettingValue'
998 $ref: '#/components/schemas/NotificationSettingValue'
1000 $ref: '#/components/schemas/NotificationSettingValue'
1001 newInstanceFollower:
1002 $ref: '#/components/schemas/NotificationSettingValue'
1003 autoInstanceFollowing:
1004 $ref: '#/components/schemas/NotificationSettingValue'
1007 description: successful operation
1008 /users/me/history/videos:
1010 summary: List watched videos history
1016 - $ref: '#/components/parameters/start'
1017 - $ref: '#/components/parameters/count'
1018 - $ref: '#/components/parameters/search'
1021 description: successful operation
1025 $ref: '#/components/schemas/VideoListResponse'
1026 /users/me/history/videos/remove:
1028 summary: Clear video history
1035 multipart/form-data:
1040 description: history before this date will be deleted
1045 description: successful operation
1046 /users/me/avatar/pick:
1048 summary: Update my user avatar
1055 description: successful operation
1062 $ref: '#/components/schemas/ActorImage'
1064 description: image file too large
1066 X-File-Maximum-Size:
1070 description: Maximum file size for the avatar
1073 multipart/form-data:
1078 description: The file to upload.
1083 contentType: image/png, image/jpeg
1086 summary: Delete my avatar
1093 description: successful operation
1097 summary: List video ownership changes
1099 - Video Ownership Change
1104 description: successful operation
1105 '/videos/ownership/{id}/accept':
1107 summary: Accept ownership change request
1109 - Video Ownership Change
1113 - $ref: '#/components/parameters/idOrUUID'
1116 description: successful operation
1118 description: cannot terminate an ownership change of another user
1120 description: video owneship change not found
1121 '/videos/ownership/{id}/refuse':
1123 summary: Refuse ownership change request
1125 - Video Ownership Change
1129 - $ref: '#/components/parameters/idOrUUID'
1132 description: successful operation
1134 description: cannot terminate an ownership change of another user
1136 description: video owneship change not found
1137 '/videos/{id}/give-ownership':
1139 summary: Request ownership change
1141 - Video Ownership Change
1145 - $ref: '#/components/parameters/idOrUUID'
1149 application/x-www-form-urlencoded:
1159 description: successful operation
1161 description: changing video ownership to a remote account is not supported yet
1163 description: video not found
1166 summary: List videos
1170 - $ref: '#/components/parameters/categoryOneOf'
1171 - $ref: '#/components/parameters/isLive'
1172 - $ref: '#/components/parameters/tagsOneOf'
1173 - $ref: '#/components/parameters/tagsAllOf'
1174 - $ref: '#/components/parameters/licenceOneOf'
1175 - $ref: '#/components/parameters/languageOneOf'
1176 - $ref: '#/components/parameters/nsfw'
1177 - $ref: '#/components/parameters/filter'
1178 - $ref: '#/components/parameters/skipCount'
1179 - $ref: '#/components/parameters/start'
1180 - $ref: '#/components/parameters/count'
1181 - $ref: '#/components/parameters/videosSort'
1184 description: successful operation
1188 $ref: '#/components/schemas/VideoListResponse'
1191 summary: List available video categories
1192 operationId: getCategories
1197 description: successful operation
1206 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1209 summary: List available video licences
1210 operationId: getLicences
1215 description: successful operation
1224 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1227 summary: List available video languages
1228 operationId: getLanguages
1233 description: successful operation
1242 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1245 summary: List available video privacy policies
1246 operationId: getPrivacyPolicies
1251 description: successful operation
1260 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1263 summary: Update a video
1269 - $ref: '#/components/parameters/idOrUUID'
1272 description: successful operation
1275 multipart/form-data:
1280 description: Video thumbnail file
1284 description: Video preview file
1288 $ref: '#/components/schemas/VideoCategorySet'
1290 $ref: '#/components/schemas/VideoLicenceSet'
1292 $ref: '#/components/schemas/VideoLanguageSet'
1294 $ref: '#/components/schemas/VideoPrivacySet'
1296 description: Video description
1299 description: Whether or not we wait transcoding before publish the video
1302 description: A text tell the audience how to support the video creator
1303 example: Please support my work on <insert crowdfunding plateform>! <3
1306 description: Whether or not this video contains sensitive content
1309 description: Video name
1314 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1323 description: Enable or disable comments for this video
1325 originallyPublishedAt:
1326 description: Date when the content was originally published
1330 $ref: '#/components/schemas/VideoScheduledUpdate'
1333 contentType: image/jpeg
1335 contentType: image/jpeg
1337 summary: Get a video
1341 - $ref: '#/components/parameters/idOrUUID'
1344 description: successful operation
1348 $ref: '#/components/schemas/VideoDetails'
1350 summary: Delete a video
1356 - $ref: '#/components/parameters/idOrUUID'
1359 description: successful operation
1360 '/videos/{id}/description':
1362 summary: Get complete video description
1366 - $ref: '#/components/parameters/idOrUUID'
1369 description: successful operation
1374 '/videos/{id}/views':
1376 summary: Add a view to a video
1380 - $ref: '#/components/parameters/idOrUUID'
1383 description: successful operation
1384 '/videos/{id}/watching':
1386 summary: Set watching progress of a video
1392 - $ref: '#/components/parameters/idOrUUID'
1397 $ref: '#/components/schemas/UserWatchingVideo'
1401 description: successful operation
1404 summary: Upload a video
1405 description: Uses a single request to upload a video.
1406 operationId: uploadLegacy
1414 description: successful operation
1418 $ref: '#/components/schemas/VideoUploadResponse'
1420 description: invalid file field, schedule date or parameter
1422 description: video didn't pass upload filter
1424 description: upload has timed out
1426 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1428 X-File-Maximum-Size:
1432 description: Maximum file size for the video
1434 description: video type unsupported
1436 description: video unreadable
1439 multipart/form-data:
1441 $ref: '#/components/schemas/VideoUploadRequestLegacy'
1444 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1446 contentType: image/jpeg
1448 contentType: image/jpeg
1453 USERNAME="<your_username>"
1454 PASSWORD="<your_password>"
1455 FILE_PATH="<your_file_path>"
1456 CHANNEL_ID="<your_channel_id>"
1459 API_PATH="https://peertube2.cpy.re/api/v1"
1461 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1462 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1463 token=$(curl -s "$API_PATH/users/token" \
1464 --data client_id="$client_id" \
1465 --data client_secret="$client_secret" \
1466 --data grant_type=password \
1467 --data response_type=code \
1468 --data username="$USERNAME" \
1469 --data password="$PASSWORD" \
1470 | jq -r ".access_token")
1472 curl -s "$API_PATH/videos/upload" \
1473 -H "Authorization: Bearer $token" \
1475 --form videofile=@"$FILE_PATH" \
1476 --form channelId=$CHANNEL_ID \
1478 /videos/upload-resumable:
1480 summary: Initialize the resumable upload of a video
1481 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to initialize the upload of a video
1482 operationId: uploadResumableInit
1489 - name: X-Upload-Content-Length
1495 description: Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
1496 - name: X-Upload-Content-Type
1503 description: MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
1508 $ref: '#/components/schemas/VideoUploadRequestResumable'
1511 description: file already exists, send a [`resume`](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) request instead
1513 description: created
1519 example: /api/v1/videos/upload-resumable?upload_id=471e97554f21dec3b8bb5d4602939c51
1525 description: invalid file field, schedule date or parameter
1527 description: video file too large, due to quota, absolute max file size or concurrent partial upload limit
1529 description: video type unsupported
1531 summary: Send chunk for the resumable upload of a video
1532 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
1533 operationId: uploadResumable
1544 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
1545 not valid anymore and you need to initialize a new upload.
1548 - name: Content-Range
1552 example: bytes 0-262143/2469036
1555 Specifies the bytes in the file that the request is uploading.
1557 For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first
1558 262144 bytes (256 x 1024) in a 2,469,036 byte file.
1559 - name: Content-Length
1566 Size of the chunk that the request is sending.
1568 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)
1569 doesn't mandate for chunks to have the same size throughout the upload sequence.
1571 Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from
1572 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
1575 application/octet-stream:
1581 description: last chunk received
1589 $ref: '#/components/schemas/VideoUploadResponse'
1591 description: resume incomplete
1596 example: bytes=0-262143
1602 description: video didn't pass upload filter
1604 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1606 description: video unreadable
1608 summary: Cancel the resumable upload of a video, deleting any data uploaded so far
1609 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to cancel the upload of a video
1610 operationId: uploadResumableCancel
1621 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
1622 not valid anymore and the upload session has already been deleted with its data ;-)
1625 - name: Content-Length
1633 description: upload cancelled
1641 summary: Import a video
1642 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1643 operationId: importVideo
1651 multipart/form-data:
1656 description: Torrent File
1660 description: HTTP target URL
1663 description: Magnet URI
1666 description: Channel id that will contain this video
1669 description: Video thumbnail file
1673 description: Video preview file
1677 $ref: '#/components/schemas/VideoPrivacySet'
1679 $ref: '#/components/schemas/VideoCategorySet'
1681 $ref: '#/components/schemas/VideoLicenceSet'
1683 $ref: '#/components/schemas/VideoLanguageSet'
1685 description: Video description
1688 description: Whether or not we wait transcoding before publish the video
1691 description: A text tell the audience how to support the video creator
1692 example: Please support my work on <insert crowdfunding plateform>! <3
1695 description: Whether or not this video contains sensitive content
1698 description: Video name
1703 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1712 description: Enable or disable comments for this video
1715 description: Enable or disable downloading for this video
1718 $ref: '#/components/schemas/VideoScheduledUpdate'
1724 contentType: application/x-bittorrent
1726 contentType: image/jpeg
1728 contentType: image/jpeg
1731 description: successful operation
1735 $ref: '#/components/schemas/VideoUploadResponse'
1737 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1739 description: video didn't pass pre-import filter
1741 description: HTTP or Torrent/magnetURI import not enabled
1745 summary: Create a live
1746 operationId: createLive
1754 description: successful operation
1758 $ref: '#/components/schemas/VideoUploadResponse'
1760 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1763 multipart/form-data:
1768 description: Channel id that will contain this live video
1773 description: User can stream multiple times in a permanent live
1776 description: Live video/replay thumbnail file
1780 description: Live video/replay preview file
1784 $ref: '#/components/schemas/VideoPrivacySet'
1786 $ref: '#/components/schemas/VideoCategorySet'
1788 $ref: '#/components/schemas/VideoLicenceSet'
1790 $ref: '#/components/schemas/VideoLanguageSet'
1792 description: Live video/replay description
1795 description: A text tell the audience how to support the creator
1796 example: Please support my work on <insert crowdfunding plateform>! <3
1799 description: Whether or not this live video/replay contains sensitive content
1802 description: Live video/replay name
1807 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1816 description: Enable or disable comments for this live video/replay
1819 description: Enable or disable downloading for the replay of this live
1826 contentType: image/jpeg
1828 contentType: image/jpeg
1832 summary: Get information about a live
1833 operationId: getLiveId
1840 - $ref: '#/components/parameters/idOrUUID'
1843 description: successful operation
1847 $ref: '#/components/schemas/LiveVideoResponse'
1849 summary: Update information about a live
1850 operationId: updateLiveId
1857 - $ref: '#/components/parameters/idOrUUID'
1862 $ref: '#/components/schemas/LiveVideoUpdate'
1865 description: Successful operation
1867 description: Bad parameters or trying to update a live that has already started
1869 description: Trying to save replay of the live but saving replay is not enabled on the instance
1873 summary: List my abuses
1874 operationId: getMyAbuses
1883 description: only list the report with this id
1889 $ref: '#/components/schemas/AbuseStateSet'
1890 - $ref: '#/components/parameters/abusesSort'
1891 - $ref: '#/components/parameters/start'
1892 - $ref: '#/components/parameters/count'
1895 description: successful operation
1907 $ref: '#/components/schemas/Abuse'
1911 summary: List abuses
1912 operationId: getAbuses
1922 description: only list the report with this id
1925 - name: predefinedReason
1927 description: predefined reason the listed reports should contain
1929 $ref: '#/components/schemas/PredefinedAbuseReasons'
1932 description: plain search that will match with video titles, reporter names and more
1938 $ref: '#/components/schemas/AbuseStateSet'
1939 - name: searchReporter
1941 description: only list reports of a specific reporter
1944 - name: searchReportee
1945 description: only list reports of a specific reportee
1951 description: only list reports of a specific video
1954 - name: searchVideoChannel
1956 description: only list reports of a specific video channel
1961 description: only list blacklisted or deleted videos
1969 description: only list account, comment or video reports
1976 - $ref: '#/components/parameters/start'
1977 - $ref: '#/components/parameters/count'
1978 - $ref: '#/components/parameters/abusesSort'
1981 description: successful operation
1993 $ref: '#/components/schemas/Abuse'
1996 summary: Report an abuse
2009 description: Reason why the user reports this video
2014 $ref: '#/components/schemas/PredefinedAbuseReasons'
2019 description: Video id to report
2023 description: Timestamp in the video that marks the beginning of the report
2027 description: Timestamp in the video that marks the ending of the report
2033 description: Comment id to report
2039 description: Account id to report
2045 description: successful operation
2047 description: incorrect request parameters
2048 '/abuses/{abuseId}':
2050 summary: Update an abuse
2058 - $ref: '#/components/parameters/abuseId'
2066 $ref: '#/components/schemas/AbuseStateSet'
2069 description: Update the report comment visible only to the moderation team
2074 description: successful operation
2076 description: abuse not found
2080 summary: Delete an abuse
2086 - $ref: '#/components/parameters/abuseId'
2089 description: successful operation
2091 description: block not found
2092 '/abuses/{abuseId}/messages':
2094 summary: List messages of an abuse
2100 - $ref: '#/components/parameters/abuseId'
2103 description: successful operation
2109 $ref: '#/components/schemas/AbuseMessage'
2112 summary: Add message to an abuse
2118 - $ref: '#/components/parameters/abuseId'
2127 description: Message to send
2135 description: successful operation
2137 description: incorrect request parameters
2138 '/abuses/{abuseId}/messages/{abuseMessageId}':
2140 summary: Delete an abuse message
2146 - $ref: '#/components/parameters/abuseId'
2147 - $ref: '#/components/parameters/abuseMessageId'
2150 description: successful operation
2152 '/videos/{id}/blacklist':
2154 summary: Block a video
2162 - $ref: '#/components/parameters/idOrUUID'
2165 description: successful operation
2167 summary: Unblock a video by its id
2175 - $ref: '#/components/parameters/idOrUUID'
2178 description: successful operation
2180 description: block not found
2185 summary: List video blocks
2194 list only blocks that match this type:
2198 - `2`: automatic block that needs review
2206 description: plain search that will match with video titles, and more
2209 - $ref: '#/components/parameters/start'
2210 - $ref: '#/components/parameters/count'
2211 - $ref: '#/components/parameters/blacklistsSort'
2214 description: successful operation
2226 $ref: '#/components/schemas/VideoBlacklist'
2227 /videos/{id}/captions:
2229 summary: List captions of a video
2233 - $ref: '#/components/parameters/idOrUUID'
2236 description: successful operation
2248 $ref: '#/components/schemas/VideoCaption'
2249 /videos/{id}/captions/{captionLanguage}:
2251 summary: Add or replace a video caption
2258 - $ref: '#/components/parameters/idOrUUID'
2259 - $ref: '#/components/parameters/captionLanguage'
2262 multipart/form-data:
2267 description: The file to upload.
2272 contentType: text/vtt, application/x-subrip, text/plain
2275 description: successful operation
2277 description: video or language not found
2279 summary: Delete a video caption
2286 - $ref: '#/components/parameters/idOrUUID'
2287 - $ref: '#/components/parameters/captionLanguage'
2290 description: successful operation
2292 description: video or language or caption for that language not found
2295 summary: List video channels
2299 - $ref: '#/components/parameters/start'
2300 - $ref: '#/components/parameters/count'
2301 - $ref: '#/components/parameters/sort'
2304 description: successful operation
2308 $ref: '#/components/schemas/VideoChannelList'
2310 summary: Create a video channel
2317 description: successful operation
2322 $ref: '#/components/schemas/VideoChannelCreate'
2323 '/video-channels/{channelHandle}':
2325 summary: Get a video channel
2329 - $ref: '#/components/parameters/channelHandle'
2332 description: successful operation
2336 $ref: '#/components/schemas/VideoChannel'
2338 summary: Update a video channel
2344 - $ref: '#/components/parameters/channelHandle'
2347 description: successful operation
2352 $ref: '#/components/schemas/VideoChannelUpdate'
2354 summary: Delete a video channel
2360 - $ref: '#/components/parameters/channelHandle'
2363 description: successful operation
2364 '/video-channels/{channelHandle}/videos':
2366 summary: List videos of a video channel
2371 - $ref: '#/components/parameters/channelHandle'
2372 - $ref: '#/components/parameters/categoryOneOf'
2373 - $ref: '#/components/parameters/isLive'
2374 - $ref: '#/components/parameters/tagsOneOf'
2375 - $ref: '#/components/parameters/tagsAllOf'
2376 - $ref: '#/components/parameters/licenceOneOf'
2377 - $ref: '#/components/parameters/languageOneOf'
2378 - $ref: '#/components/parameters/nsfw'
2379 - $ref: '#/components/parameters/filter'
2380 - $ref: '#/components/parameters/skipCount'
2381 - $ref: '#/components/parameters/start'
2382 - $ref: '#/components/parameters/count'
2383 - $ref: '#/components/parameters/videosSort'
2386 description: successful operation
2390 $ref: '#/components/schemas/VideoListResponse'
2391 '/video-channels/{channelHandle}/avatar/pick':
2393 summary: Update channel avatar
2399 - $ref: '#/components/parameters/channelHandle'
2402 description: successful operation
2409 $ref: '#/components/schemas/ActorImage'
2411 description: image file too large
2413 X-File-Maximum-Size:
2417 description: Maximum file size for the avatar
2420 multipart/form-data:
2425 description: The file to upload.
2430 contentType: image/png, image/jpeg
2431 '/video-channels/{channelHandle}/avatar':
2433 summary: Delete channel avatar
2439 - $ref: '#/components/parameters/channelHandle'
2442 description: successful operation
2445 '/video-channels/{channelHandle}/banner/pick':
2447 summary: Update channel banner
2453 - $ref: '#/components/parameters/channelHandle'
2456 description: successful operation
2463 $ref: '#/components/schemas/ActorImage'
2465 description: image file too large
2467 X-File-Maximum-Size:
2471 description: Maximum file size for the banner
2474 multipart/form-data:
2479 description: The file to upload.
2484 contentType: image/png, image/jpeg
2485 '/video-channels/{channelHandle}/banner':
2487 summary: Delete channel banner
2493 - $ref: '#/components/parameters/channelHandle'
2496 description: successful operation
2498 /video-playlists/privacies:
2500 summary: List available playlist privacy policies
2501 operationId: getPlaylistPrivacyPolicies
2506 description: successful operation
2515 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2519 summary: List video playlists
2520 operationId: getPlaylists
2524 - $ref: '#/components/parameters/start'
2525 - $ref: '#/components/parameters/count'
2526 - $ref: '#/components/parameters/sort'
2529 description: successful operation
2541 $ref: '#/components/schemas/VideoPlaylist'
2543 summary: Create a video playlist
2544 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2545 operationId: createPlaylist
2552 description: successful operation
2564 $ref: '#/components/schemas/UUIDv4'
2567 multipart/form-data:
2572 description: Video playlist display name
2577 description: Video playlist thumbnail file
2581 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2583 description: Video playlist description
2586 description: Video channel in which the playlist will be published
2592 contentType: image/jpeg
2594 /video-playlists/{id}:
2596 summary: Get a video playlist
2600 - $ref: '#/components/parameters/idOrUUID'
2603 description: successful operation
2607 $ref: '#/components/schemas/VideoPlaylist'
2609 summary: Update a video playlist
2610 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2617 description: successful operation
2619 - $ref: '#/components/parameters/idOrUUID'
2622 multipart/form-data:
2627 description: Video playlist display name
2632 description: Video playlist thumbnail file
2636 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2638 description: Video playlist description
2641 description: Video channel in which the playlist will be published
2645 contentType: image/jpeg
2647 summary: Delete a video playlist
2653 - $ref: '#/components/parameters/idOrUUID'
2656 description: successful operation
2658 /video-playlists/{id}/videos:
2660 summary: 'List videos of a playlist'
2665 - $ref: '#/components/parameters/idOrUUID'
2668 description: successful operation
2672 $ref: '#/components/schemas/VideoListResponse'
2674 summary: 'Add a video in a playlist'
2681 - $ref: '#/components/parameters/idOrUUID'
2684 description: successful operation
2690 videoPlaylistElement:
2703 description: 'Video to add in the playlist'
2706 description: 'Start the video at this specific timestamp (in seconds)'
2709 description: 'Stop the video at this specific timestamp (in seconds)'
2713 /video-playlists/{id}/videos/reorder:
2715 summary: 'Reorder a playlist'
2721 - $ref: '#/components/parameters/idOrUUID'
2724 description: successful operation
2733 description: 'Start position of the element to reorder'
2735 insertAfterPosition:
2737 description: 'New position for the block to reorder, to add the block before the first element'
2741 description: 'How many element from `startPosition` to reorder'
2745 - insertAfterPosition
2747 /video-playlists/{id}/videos/{playlistElementId}:
2749 summary: 'Update a playlist element'
2755 - $ref: '#/components/parameters/idOrUUID'
2756 - $ref: '#/components/parameters/playlistElementId'
2759 description: successful operation
2768 description: 'Start the video at this specific timestamp (in seconds)'
2771 description: 'Stop the video at this specific timestamp (in seconds)'
2773 summary: 'Delete an element from a playlist'
2779 - $ref: '#/components/parameters/idOrUUID'
2780 - $ref: '#/components/parameters/playlistElementId'
2783 description: successful operation
2785 '/users/me/video-playlists/videos-exist':
2787 summary: 'Check video exists in my playlists'
2796 description: The video ids to check
2803 description: successful operation
2823 '/accounts/{name}/video-channels':
2825 summary: List video channels of an account
2830 - $ref: '#/components/parameters/name'
2833 description: include view statistics for the last 30 days (only if authentified as the account user)
2836 - $ref: '#/components/parameters/start'
2837 - $ref: '#/components/parameters/count'
2838 - $ref: '#/components/parameters/sort'
2841 description: successful operation
2845 $ref: '#/components/schemas/VideoChannelList'
2846 '/accounts/{name}/ratings':
2848 summary: List ratings of an account
2854 - $ref: '#/components/parameters/name'
2855 - $ref: '#/components/parameters/start'
2856 - $ref: '#/components/parameters/count'
2857 - $ref: '#/components/parameters/sort'
2861 description: Optionally filter which ratings to retrieve
2869 description: successful operation
2875 $ref: '#/components/schemas/VideoRating'
2876 '/videos/{id}/comment-threads':
2878 summary: List threads of a video
2882 - $ref: '#/components/parameters/idOrUUID'
2883 - $ref: '#/components/parameters/start'
2884 - $ref: '#/components/parameters/count'
2885 - $ref: '#/components/parameters/commentsSort'
2888 description: successful operation
2892 $ref: '#/components/schemas/CommentThreadResponse'
2894 summary: Create a thread
2900 - $ref: '#/components/parameters/idOrUUID'
2903 description: successful operation
2907 $ref: '#/components/schemas/CommentThreadPostResponse'
2909 description: video does not exist
2918 description: 'Text comment'
2922 '/videos/{id}/comment-threads/{threadId}':
2924 summary: Get a thread
2928 - $ref: '#/components/parameters/idOrUUID'
2929 - $ref: '#/components/parameters/threadId'
2932 description: successful operation
2936 $ref: '#/components/schemas/VideoCommentThreadTree'
2937 '/videos/{id}/comments/{commentId}':
2939 summary: Reply to a thread of a video
2945 - $ref: '#/components/parameters/idOrUUID'
2946 - $ref: '#/components/parameters/commentId'
2949 description: successful operation
2953 $ref: '#/components/schemas/CommentThreadPostResponse'
2955 description: thread or video does not exist
2964 description: 'Text comment'
2969 summary: Delete a comment or a reply
2975 - $ref: '#/components/parameters/idOrUUID'
2976 - $ref: '#/components/parameters/commentId'
2979 description: successful operation
2981 description: cannot remove comment of another user
2983 description: comment or video does not exist
2985 description: comment is already deleted
2986 '/videos/{id}/rate':
2988 summary: Like/dislike a video
2994 - $ref: '#/components/parameters/idOrUUID'
2997 description: successful operation
2999 description: video does not exist
3004 summary: Search videos
3009 allowEmptyValue: false
3011 String to search. If the user can make a remote URI search, and the string is an URI then the
3012 PeerTube instance will fetch the remote object and add it to its database. Then,
3013 you can use the REST API to fetch the complete video information and interact with it.
3016 - $ref: '#/components/parameters/categoryOneOf'
3017 - $ref: '#/components/parameters/isLive'
3018 - $ref: '#/components/parameters/tagsOneOf'
3019 - $ref: '#/components/parameters/tagsAllOf'
3020 - $ref: '#/components/parameters/licenceOneOf'
3021 - $ref: '#/components/parameters/languageOneOf'
3022 - $ref: '#/components/parameters/nsfw'
3023 - $ref: '#/components/parameters/filter'
3024 - $ref: '#/components/parameters/skipCount'
3025 - $ref: '#/components/parameters/start'
3026 - $ref: '#/components/parameters/count'
3027 - $ref: '#/components/parameters/searchTarget'
3028 - $ref: '#/components/parameters/videosSearchSort'
3031 description: Get videos that are published after this date
3037 description: Get videos that are published before this date
3041 - name: originallyPublishedStartDate
3043 description: Get videos that are originally published after this date
3047 - name: originallyPublishedEndDate
3049 description: Get videos that are originally published before this date
3055 description: Get videos that have this minimum duration
3060 description: Get videos that have this maximum duration
3064 'searchTarget === search-index':
3065 $ref: '#/components/callbacks/searchIndex'
3068 description: successful operation
3072 $ref: '#/components/schemas/VideoListResponse'
3074 description: search index unavailable
3075 /search/video-channels:
3079 summary: Search channels
3085 String to search. If the user can make a remote URI search, and the string is an URI then the
3086 PeerTube instance will fetch the remote object and add it to its database. Then,
3087 you can use the REST API to fetch the complete channel information and interact with it.
3090 - $ref: '#/components/parameters/start'
3091 - $ref: '#/components/parameters/count'
3092 - $ref: '#/components/parameters/searchTarget'
3093 - $ref: '#/components/parameters/sort'
3095 'searchTarget === search-index':
3096 $ref: '#/components/callbacks/searchIndex'
3099 description: successful operation
3103 $ref: '#/components/schemas/VideoChannelList'
3105 description: search index unavailable
3106 /blocklist/accounts:
3110 summary: List account blocks
3115 - $ref: '#/components/parameters/start'
3116 - $ref: '#/components/parameters/count'
3117 - $ref: '#/components/parameters/sort'
3120 description: successful operation
3124 summary: Block an account
3136 example: chocobozzz@example.org
3137 description: account to block, in the form `username@domain`
3142 description: successful operation
3144 description: self-blocking forbidden
3145 '/blocklist/accounts/{accountName}':
3149 summary: Unblock an account by its handle
3157 description: account to unblock, in the form `username@domain`
3162 description: successful operation
3164 description: account or account block does not exist
3169 summary: List server blocks
3174 - $ref: '#/components/parameters/start'
3175 - $ref: '#/components/parameters/count'
3176 - $ref: '#/components/parameters/sort'
3179 description: successful operation
3183 summary: Block a server
3196 description: server domain to block
3201 description: successful operation
3203 description: self-blocking forbidden
3204 '/blocklist/servers/{host}':
3208 summary: Unblock a server by its domain
3216 description: server domain to unblock
3222 description: successful operation
3224 description: account block does not exist
3228 - Instance Redundancy
3229 summary: Update a server redundancy policy
3237 description: server domain to mirror
3249 description: allow mirroring of the host's local videos
3254 description: successful operation
3256 description: server is not already known
3261 summary: List videos being mirrored
3269 description: direction of the mirror
3275 - $ref: '#/components/parameters/start'
3276 - $ref: '#/components/parameters/count'
3277 - $ref: '#/components/parameters/videoRedundanciesSort'
3280 description: successful operation
3286 $ref: '#/components/schemas/VideoRedundancy'
3290 summary: Mirror a video
3306 description: successful operation
3308 description: cannot mirror a local video
3310 description: video does not exist
3312 description: video is already mirrored
3313 /redundancy/videos/{redundancyId}:
3317 summary: Delete a mirror done on a video
3322 - name: redundancyId
3325 description: id of an existing redundancy on a video
3330 description: successful operation
3332 description: video redundancy not found
3333 '/feeds/video-comments.{format}':
3337 summary: List comments on videos
3342 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3355 description: 'limit listing to a specific video'
3360 description: 'limit listing to a specific account'
3365 description: 'limit listing to a specific account'
3368 - name: videoChannelId
3370 description: 'limit listing to a specific video channel'
3373 - name: videoChannelName
3375 description: 'limit listing to a specific video channel'
3380 description: successful operation
3385 default: 'max-age=900' # 15 min cache
3389 $ref: '#/components/schemas/VideoCommentsForXML'
3392 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
3393 application/rss+xml:
3395 $ref: '#/components/schemas/VideoCommentsForXML'
3398 externalValue: https://peertube2.cpy.re/feeds/video-comments.rss?filter=local
3401 $ref: '#/components/schemas/VideoCommentsForXML'
3404 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
3405 application/atom+xml:
3407 $ref: '#/components/schemas/VideoCommentsForXML'
3410 externalValue: https://peertube2.cpy.re/feeds/video-comments.atom?filter=local
3416 externalValue: https://peertube2.cpy.re/feeds/video-comments.json?filter=local
3418 x-summary: field inconsistencies
3421 - videoId filter is mixed with a channel filter
3423 description: video, video channel or account not found
3425 description: accept header unsupported
3426 '/feeds/videos.{format}':
3430 summary: List videos
3435 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3448 description: 'limit listing to a specific account'
3453 description: 'limit listing to a specific account'
3456 - name: videoChannelId
3458 description: 'limit listing to a specific video channel'
3461 - name: videoChannelName
3463 description: 'limit listing to a specific video channel'
3466 - $ref: '#/components/parameters/sort'
3467 - $ref: '#/components/parameters/nsfw'
3468 - $ref: '#/components/parameters/filter'
3471 description: successful operation
3476 default: 'max-age=900' # 15 min cache
3480 $ref: '#/components/schemas/VideosForXML'
3483 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3484 application/rss+xml:
3486 $ref: '#/components/schemas/VideosForXML'
3489 externalValue: https://peertube2.cpy.re/feeds/videos.rss?filter=local
3492 $ref: '#/components/schemas/VideosForXML'
3495 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3496 application/atom+xml:
3498 $ref: '#/components/schemas/VideosForXML'
3501 externalValue: https://peertube2.cpy.re/feeds/videos.atom?filter=local
3507 externalValue: https://peertube2.cpy.re/feeds/videos.json?filter=local
3509 description: video channel or account not found
3511 description: accept header unsupported
3512 '/feeds/subscriptions.{format}':
3517 summary: List videos of subscriptions tied to a token
3522 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3535 description: limit listing to a specific account
3541 description: private token allowing access
3545 - $ref: '#/components/parameters/sort'
3546 - $ref: '#/components/parameters/nsfw'
3547 - $ref: '#/components/parameters/filter'
3550 description: successful operation
3555 default: 'max-age=900' # 15 min cache
3559 $ref: '#/components/schemas/VideosForXML'
3560 application/rss+xml:
3562 $ref: '#/components/schemas/VideosForXML'
3565 $ref: '#/components/schemas/VideosForXML'
3566 application/atom+xml:
3568 $ref: '#/components/schemas/VideosForXML'
3573 description: accept header unsupported
3578 summary: List plugins
3591 - $ref: '#/components/parameters/start'
3592 - $ref: '#/components/parameters/count'
3593 - $ref: '#/components/parameters/sort'
3596 description: successful operation
3600 $ref: '#/components/schemas/PluginResponse'
3605 summary: List available plugins
3618 - name: currentPeerTubeEngine
3622 - $ref: '#/components/parameters/start'
3623 - $ref: '#/components/parameters/count'
3624 - $ref: '#/components/parameters/sort'
3627 description: successful operation
3631 $ref: '#/components/schemas/PluginResponse'
3633 description: plugin index unavailable
3638 summary: Install a plugin
3651 example: peertube-plugin-auth-ldap
3654 additionalProperties: false
3661 additionalProperties: false
3664 description: successful operation
3666 description: should have either `npmName` or `path` set
3671 summary: Update a plugin
3684 example: peertube-plugin-auth-ldap
3687 additionalProperties: false
3694 additionalProperties: false
3697 description: successful operation
3699 description: should have either `npmName` or `path` set
3701 description: existing plugin not found
3706 summary: Uninstall a plugin
3718 description: name of the plugin/theme in its package.json
3719 example: peertube-plugin-auth-ldap
3724 description: successful operation
3726 description: existing plugin not found
3731 summary: Get a plugin
3736 - $ref: '#/components/parameters/npmName'
3739 description: successful operation
3743 $ref: '#/components/schemas/Plugin'
3745 description: plugin not found
3746 /plugins/{npmName}/settings:
3750 summary: Set a plugin's settings
3755 - $ref: '#/components/parameters/npmName'
3764 additionalProperties: true
3767 description: successful operation
3769 description: plugin not found
3770 /plugins/{npmName}/public-settings:
3774 summary: Get a plugin's public settings
3776 - $ref: '#/components/parameters/npmName'
3779 description: successful operation
3784 additionalProperties: true
3786 description: plugin not found
3787 /plugins/{npmName}/registered-settings:
3791 summary: Get a plugin's registered settings
3796 - $ref: '#/components/parameters/npmName'
3799 description: successful operation
3804 additionalProperties: true
3806 description: plugin not found
3808 - url: 'https://peertube2.cpy.re/api/v1'
3809 description: Live Test Server (live data - latest nightly version)
3810 - url: 'https://peertube3.cpy.re/api/v1'
3811 description: Live Test Server (live data - latest RC version)
3812 - url: 'https://peertube.cpy.re/api/v1'
3813 description: Live Test Server (live data - stable version)
3820 description: Offset used to paginate results
3828 description: "Number of items to return"
3838 description: Sort column
3846 description: Plain text search, applied to various parts of the model depending on endpoint
3854 If the administrator enabled search index support, you can override the default search target.
3857 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3858 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3859 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3860 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3861 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3862 * 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
3863 the data from the origin instance API
3873 description: Sort videos by criteria
3889 description: Sort videos by criteria
3904 description: Sort comments by criteria
3914 description: Sort blacklists by criteria
3930 description: Plain text search that will match with user usernames or emails
3937 description: Filter results down to (un)banned users
3944 description: Sort users by criteria
3955 description: Sort abuses by criteria
3962 videoRedundanciesSort:
3966 description: Sort abuses by criteria
3975 description: The username or handle of the account
3978 example: chocobozzz | chocobozzz@example.org
3983 description: The user id
3992 description: The object id or uuid
3998 - $ref: '#/components/schemas/UUIDv4'
4000 name: playlistElementId
4003 description: Playlist element id
4010 description: Abuse id
4014 name: abuseMessageId
4017 description: Abuse message id
4021 name: captionLanguage
4024 description: The caption language
4031 description: The video channel handle
4034 example: my_username | my_username@example.com
4036 name: subscriptionHandle
4039 description: The subscription handle
4042 example: my_username | my_username@example.com
4047 description: The thread id (root comment id)
4054 description: The comment id
4061 description: whether or not the video is a live
4068 description: category id of the video (see [/videos/categories](#operation/getCategories))
4081 description: tag(s) of the video
4095 description: tag(s) of the video, where all should be present in the video
4108 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
4121 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4134 description: if you don't need the `total` in the response
4145 description: whether to include nsfw videos, if any
4156 Special filters which might require special rights:
4157 * `local` - only videos local to the instance
4158 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
4159 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
4169 description: list of uris to check if each is part of the user subscriptions
4179 description: name of the plugin/theme on npmjs.com or in its package.json
4182 example: peertube-plugin-auth-ldap
4187 description: job type
4191 - activitypub-follow
4192 - activitypub-http-broadcast
4193 - activitypub-http-fetcher
4194 - activitypub-http-unicast
4200 - activitypub-refresher
4206 Authenticating via OAuth requires the following steps:
4207 - Have an activated account
4208 - [Generate](https://docs.joinpeertube.org/api-rest-getting-started) a
4209 Bearer Token for that account at `/api/v1/users/token`
4210 - Make authenticated requests, putting *Authorization: Bearer <token\>*
4211 - Profit, depending on the role assigned to the account
4213 Note that the __access token is valid for 1 day__ and, and is given
4214 along with a __refresh token valid for 2 weeks__.
4218 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
4221 moderator: Moderator scope
4227 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4228 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
4229 # the regex above limits the length;
4230 # however, some tools might require explicit settings:
4236 description: category id of the video (see [/videos/categories](#operation/getCategories))
4237 VideoConstantNumber-Category:
4240 $ref: '#/components/schemas/VideoCategorySet'
4246 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4247 VideoConstantNumber-Licence:
4250 $ref: '#/components/schemas/VideoLicenceSet'
4256 description: language id of the video (see [/videos/languages](#operation/getLanguages))
4257 VideoConstantString-Language:
4260 $ref: '#/components/schemas/VideoLanguageSet'
4264 VideoPlaylistPrivacySet:
4270 description: Video playlist privacy policy (see [/video-playlists/privacies])
4271 VideoPlaylistPrivacyConstant:
4274 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
4278 VideoPlaylistTypeSet:
4283 description: The video playlist type (Regular = `1`, Watch Later = `2`)
4284 VideoPlaylistTypeConstant:
4287 $ref: '#/components/schemas/VideoPlaylistTypeSet'
4298 description: privacy id of the video (see [/videos/privacies](#operation/getPrivacyPolicies))
4299 VideoPrivacyConstant:
4302 $ref: '#/components/schemas/VideoPrivacySet'
4319 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
4326 description: 'Admin flags for the user (None = `0`, Bypass video blacklist = `1`)'
4337 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
4347 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
4351 $ref: '#/components/schemas/AbuseStateSet'
4354 AbusePredefinedReasons:
4367 example: [spamOrMisleading]
4372 Video resolution (`0`, `240`, `360`, `720`, `1080`, `1440` or `2160`)
4374 `0` is used as a special value for stillimage videos dedicated to audio, a.k.a. audio-only videos.
4376 VideoResolutionConstant:
4379 $ref: '#/components/schemas/VideoResolutionSet'
4383 VideoScheduledUpdate:
4386 $ref: '#/components/schemas/VideoPrivacySet'
4390 description: When to update the video
4410 - $ref: '#/components/schemas/ActorImage'
4411 VideoChannelSummary:
4428 - $ref: '#/components/schemas/ActorImage'
4440 - $ref: '#/components/schemas/Video'
4446 $ref: '#/components/schemas/VideoResolutionConstant'
4449 description: 'Video file size in bytes'
4452 description: Direct URL of the torrent file
4456 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
4460 description: Direct URL of the video
4464 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
4471 VideoStreamingPlaylists:
4484 - $ref: '#/components/schemas/VideoStreamingPlaylists-HLS'
4485 VideoStreamingPlaylists-HLS:
4496 Video files associated to this playlist.
4498 The difference with the root `files` property is that these files are fragmented, so they can be used in this streaming playlist (HLS, etc.)
4500 $ref: '#/components/schemas/VideoFile'
4514 $ref: '#/components/schemas/UUIDv4'
4525 $ref: '#/components/schemas/UUIDv4'
4531 example: 2017-10-01T10:52:46.396Z
4532 description: time at which the video object was first drafted
4536 example: 2018-10-01T10:52:46.396Z
4537 description: time at which the video was marked as ready for playback (with restrictions depending on `privacy`). Usually set after a `state` evolution.
4541 example: 2021-05-04T08:01:01.502Z
4542 description: last time the video's metadata was modified
4543 originallyPublishedAt:
4546 example: 2010-10-01T10:52:46.396Z
4547 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
4549 $ref: '#/components/schemas/VideoConstantNumber-Category'
4551 $ref: '#/components/schemas/VideoConstantNumber-Licence'
4553 $ref: '#/components/schemas/VideoConstantString-Language'
4555 $ref: '#/components/schemas/VideoPrivacyConstant'
4559 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n
4560 **Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\r\n*A decentralized video hosting network, based on fr...
4564 truncated description of the video, written in Markdown.
4565 Resolve `descriptionPath` to get the full description of maximum `10000` characters.
4569 description: duration of the video in seconds
4574 example: What is PeerTube?
4579 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4582 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4585 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4601 $ref: '#/components/schemas/VideoStateConstant'
4605 - $ref: '#/components/schemas/VideoScheduledUpdate'
4613 $ref: '#/components/schemas/AccountSummary'
4615 $ref: '#/components/schemas/VideoChannelSummary'
4624 - $ref: '#/components/schemas/Video'
4629 example: /api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/description
4630 description: path at which to get the full description of maximum `10000` characters
4633 description: A text tell the audience how to support the video creator
4634 example: Please support my work on <insert crowdfunding plateform>! <3
4638 $ref: '#/components/schemas/VideoChannel'
4640 $ref: '#/components/schemas/Account'
4642 example: [flowers, gardening]
4662 $ref: '#/components/schemas/VideoFile'
4664 WebTorrent/raw video files. If WebTorrent is disabled on the server:
4666 - field will be empty
4667 - video files will be found in `streamingPlaylists[].files` field
4671 $ref: '#/components/schemas/VideoStreamingPlaylists'
4673 HLS playlists/manifest files. If HLS is disabled on the server:
4675 - field will be empty
4676 - video files will be found in `files` field
4677 FileRedundancyInformation:
4712 $ref: '#/components/schemas/UUIDv4'
4719 $ref: '#/components/schemas/FileRedundancyInformation'
4723 $ref: '#/components/schemas/FileRedundancyInformation'
4724 VideoImportStateConstant:
4732 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4744 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4748 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
4752 $ref: '#/components/schemas/VideoImportStateConstant'
4762 $ref: '#/components/schemas/Video'
4772 $ref: '#/components/schemas/VideoImport'
4780 example: The video is a spam
4784 $ref: '#/components/schemas/AbusePredefinedReasons'
4786 $ref: '#/components/schemas/Account'
4788 $ref: '#/components/schemas/AbuseStateConstant'
4791 example: Decided to ban the server since it spams us regularly
4795 $ref: '#/components/schemas/VideoInfo'
4813 $ref: '#/components/schemas/AccountSummary'
4831 $ref: '#/components/schemas/UUIDv4'
4864 $ref: '#/components/schemas/UUIDv4'
4880 $ref: '#/components/schemas/UUIDv4'
4892 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4894 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4896 $ref: '#/components/schemas/AccountSummary'
4898 $ref: '#/components/schemas/VideoChannelSummary'
4922 totalRepliesFromVideoAuthor:
4927 $ref: '#/components/schemas/Account'
4928 VideoCommentThreadTree:
4931 $ref: '#/components/schemas/VideoComment'
4935 $ref: '#/components/schemas/VideoCommentThreadTree'
4939 $ref: '#/components/schemas/VideoConstantString-Language'
4983 hostRedundancyAllowed:
4996 $ref: '#/components/schemas/ActorImage'
4999 - $ref: '#/components/schemas/Actor'
5012 description: timestamp within the video, in seconds
5079 allowedForCurrentIP:
5081 requiresEmailVerification:
5099 $ref: '#/components/schemas/VideoResolutionSet'
5285 requiresEmailVerification:
5300 description: Settings that apply to new users, if registration is enabled
5308 description: Settings pertaining to transcoding jobs
5312 allowAdditionalExtensions:
5314 description: Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
5317 description: If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
5320 description: Amount of threads used by ffmpeg for 1 transcoding job
5323 description: Amount of transcoding jobs to execute in parallel
5329 New profiles can be added by plugins ; available in core PeerTube: 'default'.
5332 description: Resolutions to transcode _new videos_ to
5352 description: WebTorrent-specific settings
5358 description: HLS-specific settings
5404 $ref: '#/components/schemas/Actor'
5406 $ref: '#/components/schemas/Actor'
5409 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
5422 PredefinedAbuseReasons:
5423 description: Reason categories that help triage reports
5455 - activitypub-http-unicast
5456 - activitypub-http-broadcast
5457 - activitypub-http-fetcher
5458 - activitypub-follow
5464 - activitypub-refresher
5468 additionalProperties: true
5471 additionalProperties: true
5495 VideoUploadRequestCommon:
5498 description: Video name
5501 description: Channel id that will contain this video
5504 $ref: '#/components/schemas/VideoPrivacySet'
5506 $ref: '#/components/schemas/VideoCategorySet'
5508 $ref: '#/components/schemas/VideoLicenceSet'
5510 $ref: '#/components/schemas/VideoLanguageSet'
5512 description: Video description
5515 description: Whether or not we wait transcoding before publish the video
5518 description: A text tell the audience how to support the video creator
5519 example: Please support my work on <insert crowdfunding plateform>! <3
5522 description: Whether or not this video contains sensitive content
5525 description: Video tags (maximum 5 tags each between 2 and 30 characters)
5535 description: Enable or disable comments for this video
5538 description: Enable or disable downloading for this video
5540 originallyPublishedAt:
5541 description: Date when the content was originally published
5545 $ref: '#/components/schemas/VideoScheduledUpdate'
5547 description: Video thumbnail file
5551 description: Video preview file
5557 VideoUploadRequestLegacy:
5559 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5565 description: Video file
5568 VideoUploadRequestResumable:
5570 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5576 description: Video filename including extension
5580 description: Video thumbnail file
5584 description: Video preview file
5587 VideoUploadResponse:
5596 $ref: '#/components/schemas/UUIDv4'
5597 CommentThreadResponse:
5606 $ref: '#/components/schemas/VideoComment'
5607 CommentThreadPostResponse:
5610 $ref: '#/components/schemas/VideoComment'
5620 $ref: '#/components/schemas/Video'
5624 $ref: '#/components/schemas/Account'
5627 description: Automatically start playing the upcoming video after the currently playing video
5628 autoPlayNextVideoPlaylist:
5630 description: Automatically start playing the video on the playlist after the currently playing video
5633 description: Automatically start playing the video on the watch page
5643 description: The user email
5646 description: Has the user confirmed their email address?
5652 description: Auth plugin to use to authenticate the user
5656 noInstanceConfigWarningModal:
5661 $ref: '#/components/schemas/NSFWPolicy'
5663 $ref: '#/components/schemas/UserRole'
5672 description: Theme enabled by this user
5675 description: The user username
5681 $ref: '#/components/schemas/VideoChannel'
5684 description: The user video quota in bytes
5688 description: The user daily video quota in bytes
5692 description: Enable P2P in the player
5695 - $ref: '#/components/schemas/User'
5697 # optionally present fields: they require WITH_STATS scope
5700 description: Count of videos published
5703 description: Count of reports/abuses of which the user is a target
5704 abusesAcceptedCount:
5706 description: Count of reports/abuses created by the user and accepted/acted upon by the moderation team
5709 description: Count of reports/abuses created by the user
5712 description: Count of comments published
5717 description: The user username
5720 pattern: '/^[a-z0-9._]{1,50}$/'
5724 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5730 description: The user email
5733 description: The user video quota
5736 description: The user daily video quota
5739 description: The user default channel username
5740 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5742 $ref: '#/components/schemas/UserRole'
5744 $ref: '#/components/schemas/UserAdminFlags'
5756 description: The user id
5760 description: The updated email of the user
5763 description: Set the email as verified
5766 description: The updated video quota of the user
5769 description: The updated daily video quota of the user
5773 description: The auth plugin to use to authenticate the user
5774 example: 'peertube-plugin-auth-saml2'
5776 $ref: '#/components/schemas/UserRole'
5778 $ref: '#/components/schemas/UserAdminFlags'
5786 description: Your new password
5792 description: Your new email
5795 description: Your new displayNSFW
5802 description: Your new autoPlayVideo
5812 description: Id of the video
5819 description: Rating of the video
5826 $ref: '#/components/schemas/Video'
5833 description: Rating of the video
5841 description: The username of the user
5844 pattern: '/^[a-z0-9._]{1,50}$/'
5848 description: The password of the user
5854 description: The email of the user
5857 description: The user display name
5865 description: The username for the default channel
5866 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5869 description: The display name for the default channel
5889 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5890 example: Please support my work on <insert crowdfunding plateform>! <3
5895 - $ref: '#/components/schemas/VideoChannelCommon'
5906 - $ref: '#/components/schemas/VideoChannelCommon'
5908 bulkVideosSupportUpdate:
5910 description: 'Update the support field for all videos of this channel'
5920 - $ref: '#/components/schemas/VideoChannel'
5921 - $ref: '#/components/schemas/Actor'
5926 name: 'media:peerLink'
5935 - application/x-bittorrent
5941 name: 'media:content'
5972 VideoCommentsForXML:
6007 description: video watch page URL
6010 description: video canonical URL
6014 description: video publication date
6017 description: video description
6020 description: video description
6023 description: publisher user name
6026 description: video category (MRSS)
6029 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
6044 description: video embed path, relative to the canonical URL domain (MRSS)
6053 description: video watch path, relative to the canonical URL domain (MRSS)
6074 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
6075 'media:description':
6082 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
6085 description: main streamable file for the video
6095 - application/x-bittorrent
6104 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)
6107 - $ref: '#/components/schemas/MRSSPeerLink'
6108 - $ref: '#/components/schemas/MRSSGroupContent'
6109 NotificationSettingValue:
6130 Notification type, following the `UserNotificationType` enum:
6132 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
6134 - `2` NEW_COMMENT_ON_MY_VIDEO
6136 - `3` NEW_ABUSE_FOR_MODERATORS
6138 - `4` BLACKLIST_ON_MY_VIDEO
6140 - `5` UNBLACKLIST_ON_MY_VIDEO
6142 - `6` MY_VIDEO_PUBLISHED
6144 - `7` MY_VIDEO_IMPORT_SUCCESS
6146 - `8` MY_VIDEO_IMPORT_ERROR
6148 - `9` NEW_USER_REGISTRATION
6152 - `11` COMMENT_MENTION
6154 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
6156 - `13` NEW_INSTANCE_FOLLOWER
6158 - `14` AUTO_INSTANCE_FOLLOWING
6164 - $ref: '#/components/schemas/VideoInfo'
6168 $ref: '#/components/schemas/ActorInfo'
6177 $ref: '#/components/schemas/VideoInfo'
6198 $ref: '#/components/schemas/VideoInfo'
6200 $ref: '#/components/schemas/ActorInfo'
6209 - $ref: '#/components/schemas/VideoInfo'
6218 - $ref: '#/components/schemas/VideoInfo'
6222 - $ref: '#/components/schemas/ActorInfo'
6230 $ref: '#/components/schemas/ActorInfo'
6258 NotificationListResponse:
6267 $ref: '#/components/schemas/Notification'
6272 example: peertube-plugin-auth-ldap
6300 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
6303 additionalProperties: true
6319 $ref: '#/components/schemas/Plugin'
6326 description: User can stream multiple times in a permanent live
6335 description: RTMP stream key to use to stream into this live video
6339 description: User can stream multiple times in a permanent live
6346 'https://search.example.org/api/v1/search/videos':
6348 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
6351 description: successful operation
6355 $ref: '#/components/schemas/VideoListResponse'