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 (prefix: `/api/v1`) | 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 |
91 This API features [Cross-Origin Resource Sharing (CORS)](https://fetch.spec.whatwg.org/),
92 allowing cross-domain communication from the browser for some routes:
95 |------------------------- ---|--------|
98 | `/lazy-static/*` | * |
99 | `/live/segments-sha256/*` | * |
100 | `/.well-known/webfinger` | * |
102 In addition, all routes serving ActivityPub are CORS-enabled for all origins.
104 url: https://docs.joinpeertube.org/api-rest-reference.html
108 Accounts encompass remote accounts discovered across the federation,
109 and correspond to the main Actor, along with video channels a user can create, which
112 When a comment is posted, it is done with your Account's Actor.
115 Using some features of PeerTube require authentication, for which User
116 provide different levels of permission as well as associated user
117 information. Each user has a corresponding local Account for federation.
120 Operations related to your own User, when logged-in.
121 - name: My Subscriptions
123 Operations related to your subscriptions to video channels, their
124 new videos, and how to keep up to date with their latest publications!
127 Operations related to your watch history.
128 - name: My Notifications
130 Notifications following new videos, follows or reports. They allow you
131 to keep track of the interactions and overall important information that
132 concerns you. You MAY set per-notification type delivery preference, to
133 receive the info either by mail, by in-browser notification or both.
136 Each server exposes public information regarding supported videos and
140 Jobs are long-running tasks enqueued and processed by the instance
141 itself. No additional worker registration is currently available.
142 - name: Instance Follows
144 Managing servers which the instance interacts with is crucial to the
145 concept of federation in PeerTube and external video indexation. The PeerTube
146 server then deals with inter-server ActivityPub operations and propagates
147 information across its social graph by posting activities to actors' inbox
150 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-follows
151 - name: Instance Redundancy
153 Redundancy is part of the inter-server solidarity that PeerTube fosters.
154 Manage the list of instances you wish to help by seeding their videos according
155 to the policy of video selection of your choice. Note that you have a similar functionality
156 to mirror individual videos, see [video mirroring](#tag/Video-Mirroring).
158 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-redundancy
161 Managing plugins installed from a local path or from NPM, or search for new ones.
163 url: https://docs.joinpeertube.org/api-plugins
166 Abuses deal with reports of local or remote videos/comments/accounts alike.
169 Operations dealing with listing, uploading, fetching or modifying videos.
172 Operations dealing with adding video or audio. PeerTube supports two upload modes, and three import modes.
176 - [_legacy_](#operation/uploadLegacy), where the video file is sent in a single request
177 - [_resumable_](#operation/uploadResumableInit), where the video file is sent in chunks
179 You can upload videos more reliably by using the resumable variant. Its protocol lets
180 you resume an upload operation after a network interruption or other transmission failure,
181 saving time and bandwidth in the event of network failures.
183 Favor using resumable uploads in any of the following cases:
184 - You are transferring large files
185 - The likelihood of a network interruption is high
186 - Uploads are originating from a device with a low-bandwidth or unstable Internet connection,
187 such as a mobile device
191 - _URL_-based: where the URL points to any service supported by [youtube-dl](https://ytdl-org.github.io/youtube-dl/)
192 - _magnet_-based: where the URI resolves to a BitTorrent ressource containing a single supported video file
193 - _torrent_-based: where the metainfo file resolves to a BitTorrent ressource containing a single supported video file
195 The import function is practical when the desired video/audio is available online. It makes PeerTube
196 download it for you, saving you as much bandwidth and avoiding any instability or limitation your network might have.
197 - name: Video Captions
198 description: Operations dealing with listing, adding and removing closed captions of a video.
199 - name: Video Channels
200 description: Operations dealing with the creation, modification and listing of videos within a channel.
201 - name: Video Comments
203 Operations dealing with comments to a video. Comments are organized in threads: adding a
204 comment in response to the video starts a thread, adding a reply to a comment adds it to
205 its root comment thread.
207 description: Operations dealing with blocking videos (removing them from view and preventing interactions).
209 description: Like/dislike a video.
210 - name: Video Playlists
211 description: Operations dealing with playlists of videos. Playlists are bound to users and/or channels.
213 description: Server syndication feeds
216 The search helps to find _videos_ or _channels_ from within the instance and beyond.
217 Videos from other instances federated by the instance (that is, instances
218 followed by the instance) can be found via keywords and other criteria of
221 Administrators can also enable the use of a remote search system, indexing
222 videos and channels not could be not federated by the instance.
223 - name: Video Mirroring
225 PeerTube instances can mirror videos from one another, and help distribute some videos.
227 For importing videos as your own, refer to [video imports](#operation/importVideo).
246 - Video Ownership Change
259 - name: Instance Configuration
263 - Instance Redundancy
273 summary: Get an account
275 - $ref: '#/components/parameters/name'
278 description: successful operation
282 $ref: '#/components/schemas/Account'
284 description: account not found
285 '/accounts/{name}/videos':
290 summary: 'List videos of an account'
292 - $ref: '#/components/parameters/name'
293 - $ref: '#/components/parameters/categoryOneOf'
294 - $ref: '#/components/parameters/isLive'
295 - $ref: '#/components/parameters/tagsOneOf'
296 - $ref: '#/components/parameters/tagsAllOf'
297 - $ref: '#/components/parameters/licenceOneOf'
298 - $ref: '#/components/parameters/languageOneOf'
299 - $ref: '#/components/parameters/nsfw'
300 - $ref: '#/components/parameters/filter'
301 - $ref: '#/components/parameters/skipCount'
302 - $ref: '#/components/parameters/start'
303 - $ref: '#/components/parameters/count'
304 - $ref: '#/components/parameters/videosSort'
307 description: successful operation
311 $ref: '#/components/schemas/VideoListResponse'
315 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
316 .then(function(response) {
317 return response.json()
318 }).then(function(data) {
324 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
330 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
332 http = Net::HTTP.new(uri.host, uri.port)
335 response = http.get(uri.request_uri)
337 puts JSON.parse(response.read_body)
342 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
350 summary: List accounts
352 - $ref: '#/components/parameters/start'
353 - $ref: '#/components/parameters/count'
354 - $ref: '#/components/parameters/sort'
357 description: successful operation
363 $ref: '#/components/schemas/Account'
368 summary: Get instance public configuration
371 description: successful operation
375 $ref: '#/components/schemas/ServerConfig'
378 externalValue: https://peertube2.cpy.re/api/v1/config
381 summary: Get instance "About" information
386 description: successful operation
390 $ref: '#/components/schemas/ServerConfigAbout'
393 externalValue: https://peertube2.cpy.re/api/v1/config/about
396 summary: Get instance runtime configuration
404 description: successful operation
408 $ref: '#/components/schemas/ServerConfigCustom'
410 summary: Set instance runtime configuration
418 description: successful operation
420 x-summary: field inconsistencies
423 - the emailer is disabled and the instance is open to registrations
424 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
426 summary: Delete instance runtime configuration
434 description: successful operation
437 summary: List instance jobs
447 description: The state of the job ('' for for no filter)
457 - $ref: '#/components/parameters/jobType'
458 - $ref: '#/components/parameters/start'
459 - $ref: '#/components/parameters/count'
460 - $ref: '#/components/parameters/sort'
463 description: successful operation
476 $ref: '#/components/schemas/Job'
477 '/server/following/{host}':
484 summary: Unfollow a server
489 description: 'The host to unfollow '
495 description: successful operation
500 summary: List instance followers
502 - $ref: '#/components/parameters/start'
503 - $ref: '#/components/parameters/count'
504 - $ref: '#/components/parameters/sort'
507 description: successful operation
513 $ref: '#/components/schemas/Follow'
518 summary: List instances followed by the server
537 - $ref: '#/components/parameters/start'
538 - $ref: '#/components/parameters/count'
539 - $ref: '#/components/parameters/sort'
542 description: successful operation
548 $ref: '#/components/schemas/Follow'
555 summary: Follow a server
558 description: successful operation
560 description: cannot follow a non-HTTPS server
575 summary: Create a user
583 description: user created
587 $ref: '#/components/schemas/AddUserResponse'
591 operationId: getUserId
593 id: '$response.body#/user/id'
596 operationId: putUserId
598 id: '$response.body#/user/id'
601 operationId: delUserId
603 id: '$response.body#/user/id'
605 description: insufficient authority to create an admin or moderator
610 $ref: '#/components/schemas/AddUser'
612 If the smtp server is configured, you can leave the password empty and an email will be sent
613 asking the user to set it first.
623 - $ref: '#/components/parameters/usersSearch'
624 - $ref: '#/components/parameters/usersBlocked'
625 - $ref: '#/components/parameters/start'
626 - $ref: '#/components/parameters/count'
627 - $ref: '#/components/parameters/usersSort'
630 description: successful operation
636 $ref: '#/components/schemas/User'
639 - $ref: '#/components/parameters/id'
641 summary: Delete a user
647 operationId: delUserId
650 description: successful operation
657 operationId: getUserId
661 description: include statistics about the user (only available as a moderator/admin)
666 x-summary: successful operation
668 As an admin/moderator, you can request a response augmented with statistics about the user's
669 moderation relations and videos usage, by using the `withStats` parameter.
674 - $ref: '#/components/schemas/User'
675 - $ref: '#/components/schemas/UserWithStats'
677 summary: Update a user
682 operationId: putUserId
685 description: successful operation
690 $ref: '#/components/schemas/UpdateUser'
694 summary: Register a user
699 description: successful operation
704 $ref: '#/components/schemas/RegisterUser'
708 summary: Get my user information
716 description: successful operation
722 $ref: '#/components/schemas/User'
724 summary: Update my user information
732 description: successful operation
737 $ref: '#/components/schemas/UpdateMe'
739 /users/me/videos/imports:
741 summary: Get video imports of my user
749 - $ref: '#/components/parameters/start'
750 - $ref: '#/components/parameters/count'
751 - $ref: '#/components/parameters/sort'
754 description: successful operation
758 $ref: '#/components/schemas/VideoImportsList'
759 /users/me/video-quota-used:
761 summary: Get my user used quota
769 description: successful operation
777 description: The user video quota used so far in bytes
781 description: The user video quota used today in bytes
783 '/users/me/videos/{videoId}/rating':
785 summary: Get rate of my user for a video
795 description: The video id
797 $ref: '#/components/schemas/Video/properties/id'
800 description: successful operation
804 $ref: '#/components/schemas/GetMeVideoRating'
807 summary: Get videos of my user
815 - $ref: '#/components/parameters/start'
816 - $ref: '#/components/parameters/count'
817 - $ref: '#/components/parameters/sort'
820 description: successful operation
824 $ref: '#/components/schemas/VideoListResponse'
825 /users/me/subscriptions:
827 summary: Get my user subscriptions
834 - $ref: '#/components/parameters/start'
835 - $ref: '#/components/parameters/count'
836 - $ref: '#/components/parameters/sort'
839 description: successful operation
843 $ref: '#/components/schemas/VideoChannelList'
847 summary: Add subscription to my user
860 description: uri of the video channels to subscribe to
866 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
869 description: successful operation
870 /users/me/subscriptions/exist:
872 summary: Get if subscriptions exist for my user
879 - $ref: '#/components/parameters/subscriptionsUris'
882 description: successful operation
887 /users/me/subscriptions/videos:
889 summary: List videos of subscriptions of my user
897 - $ref: '#/components/parameters/categoryOneOf'
898 - $ref: '#/components/parameters/isLive'
899 - $ref: '#/components/parameters/tagsOneOf'
900 - $ref: '#/components/parameters/tagsAllOf'
901 - $ref: '#/components/parameters/licenceOneOf'
902 - $ref: '#/components/parameters/languageOneOf'
903 - $ref: '#/components/parameters/nsfw'
904 - $ref: '#/components/parameters/filter'
905 - $ref: '#/components/parameters/skipCount'
906 - $ref: '#/components/parameters/start'
907 - $ref: '#/components/parameters/count'
908 - $ref: '#/components/parameters/videosSort'
911 description: successful operation
915 $ref: '#/components/schemas/VideoListResponse'
916 '/users/me/subscriptions/{subscriptionHandle}':
918 summary: Get subscription of my user
925 - $ref: '#/components/parameters/subscriptionHandle'
928 description: successful operation
932 $ref: '#/components/schemas/VideoChannel'
934 summary: Delete subscription of my user
941 - $ref: '#/components/parameters/subscriptionHandle'
944 description: successful operation
945 /users/me/notifications:
947 summary: List my notifications
955 description: only list unread notifications
958 - $ref: '#/components/parameters/start'
959 - $ref: '#/components/parameters/count'
960 - $ref: '#/components/parameters/sort'
963 description: successful operation
967 $ref: '#/components/schemas/NotificationListResponse'
968 /users/me/notifications/read:
970 summary: Mark notifications as read by their id
983 description: ids of the notifications to mark as read
990 description: successful operation
991 /users/me/notifications/read-all:
993 summary: Mark all my notification as read
1000 description: successful operation
1001 /users/me/notification-settings:
1003 summary: Update my notification settings
1014 newVideoFromSubscription:
1015 $ref: '#/components/schemas/NotificationSettingValue'
1016 newCommentOnMyVideo:
1017 $ref: '#/components/schemas/NotificationSettingValue'
1019 $ref: '#/components/schemas/NotificationSettingValue'
1020 videoAutoBlacklistAsModerator:
1021 $ref: '#/components/schemas/NotificationSettingValue'
1023 $ref: '#/components/schemas/NotificationSettingValue'
1025 $ref: '#/components/schemas/NotificationSettingValue'
1026 myVideoImportFinished:
1027 $ref: '#/components/schemas/NotificationSettingValue'
1029 $ref: '#/components/schemas/NotificationSettingValue'
1030 newUserRegistration:
1031 $ref: '#/components/schemas/NotificationSettingValue'
1033 $ref: '#/components/schemas/NotificationSettingValue'
1034 newInstanceFollower:
1035 $ref: '#/components/schemas/NotificationSettingValue'
1036 autoInstanceFollowing:
1037 $ref: '#/components/schemas/NotificationSettingValue'
1040 description: successful operation
1041 /users/me/history/videos:
1043 summary: List watched videos history
1049 - $ref: '#/components/parameters/start'
1050 - $ref: '#/components/parameters/count'
1051 - $ref: '#/components/parameters/search'
1054 description: successful operation
1058 $ref: '#/components/schemas/VideoListResponse'
1059 /users/me/history/videos/remove:
1061 summary: Clear video history
1068 multipart/form-data:
1073 description: history before this date will be deleted
1078 description: successful operation
1079 /users/me/avatar/pick:
1081 summary: Update my user avatar
1088 description: successful operation
1095 $ref: '#/components/schemas/ActorImage'
1097 description: image file too large
1099 X-File-Maximum-Size:
1103 description: Maximum file size for the avatar
1106 multipart/form-data:
1111 description: The file to upload
1116 contentType: image/png, image/jpeg
1119 summary: Delete my avatar
1126 description: successful operation
1130 summary: List video ownership changes
1132 - Video Ownership Change
1137 description: successful operation
1138 '/videos/ownership/{id}/accept':
1140 summary: Accept ownership change request
1142 - Video Ownership Change
1146 - $ref: '#/components/parameters/idOrUUID'
1149 description: successful operation
1151 description: cannot terminate an ownership change of another user
1153 description: video owneship change not found
1154 '/videos/ownership/{id}/refuse':
1156 summary: Refuse ownership change request
1158 - Video Ownership Change
1162 - $ref: '#/components/parameters/idOrUUID'
1165 description: successful operation
1167 description: cannot terminate an ownership change of another user
1169 description: video owneship change not found
1170 '/videos/{id}/give-ownership':
1172 summary: Request ownership change
1174 - Video Ownership Change
1178 - $ref: '#/components/parameters/idOrUUID'
1182 application/x-www-form-urlencoded:
1192 description: successful operation
1194 description: changing video ownership to a remote account is not supported yet
1196 description: video not found
1199 summary: List videos
1203 - $ref: '#/components/parameters/categoryOneOf'
1204 - $ref: '#/components/parameters/isLive'
1205 - $ref: '#/components/parameters/tagsOneOf'
1206 - $ref: '#/components/parameters/tagsAllOf'
1207 - $ref: '#/components/parameters/licenceOneOf'
1208 - $ref: '#/components/parameters/languageOneOf'
1209 - $ref: '#/components/parameters/nsfw'
1210 - $ref: '#/components/parameters/filter'
1211 - $ref: '#/components/parameters/skipCount'
1212 - $ref: '#/components/parameters/start'
1213 - $ref: '#/components/parameters/count'
1214 - $ref: '#/components/parameters/videosSort'
1217 description: successful operation
1221 $ref: '#/components/schemas/VideoListResponse'
1224 summary: List available video categories
1225 operationId: getCategories
1230 description: successful operation
1239 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1242 summary: List available video licences
1243 operationId: getLicences
1248 description: successful operation
1257 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1260 summary: List available video languages
1261 operationId: getLanguages
1266 description: successful operation
1275 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1278 summary: List available video privacy policies
1279 operationId: getPrivacyPolicies
1284 description: successful operation
1293 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1296 summary: Update a video
1302 - $ref: '#/components/parameters/idOrUUID'
1305 description: successful operation
1308 multipart/form-data:
1313 description: Video thumbnail file
1317 description: Video preview file
1321 $ref: '#/components/schemas/VideoCategorySet'
1323 $ref: '#/components/schemas/VideoLicenceSet'
1325 $ref: '#/components/schemas/VideoLanguageSet'
1327 $ref: '#/components/schemas/VideoPrivacySet'
1329 description: Video description
1332 description: Whether or not we wait transcoding before publish the video
1335 description: A text tell the audience how to support the video creator
1336 example: Please support our work on https://soutenir.framasoft.org/en/ <3
1339 description: Whether or not this video contains sensitive content
1342 description: Video name
1347 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1356 description: Enable or disable comments for this video
1358 originallyPublishedAt:
1359 description: Date when the content was originally published
1363 $ref: '#/components/schemas/VideoScheduledUpdate'
1366 contentType: image/jpeg
1368 contentType: image/jpeg
1370 summary: Get a video
1374 - $ref: '#/components/parameters/idOrUUID'
1377 description: successful operation
1381 $ref: '#/components/schemas/VideoDetails'
1383 summary: Delete a video
1389 - $ref: '#/components/parameters/idOrUUID'
1392 description: successful operation
1393 '/videos/{id}/description':
1395 summary: Get complete video description
1399 - $ref: '#/components/parameters/idOrUUID'
1402 description: successful operation
1411 **[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)**
1412 '/videos/{id}/views':
1414 summary: Add a view to a video
1418 - $ref: '#/components/parameters/idOrUUID'
1421 description: successful operation
1422 '/videos/{id}/watching':
1424 summary: Set watching progress of a video
1430 - $ref: '#/components/parameters/idOrUUID'
1435 $ref: '#/components/schemas/UserWatchingVideo'
1439 description: successful operation
1442 summary: Upload a video
1443 description: Uses a single request to upload a video.
1444 operationId: uploadLegacy
1452 description: successful operation
1456 $ref: '#/components/schemas/VideoUploadResponse'
1458 description: invalid file field, schedule date or parameter
1460 description: video didn't pass upload filter
1462 description: upload has timed out
1464 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1466 X-File-Maximum-Size:
1470 description: Maximum file size for the video
1472 description: video type unsupported
1474 description: video unreadable
1477 multipart/form-data:
1479 $ref: '#/components/schemas/VideoUploadRequestLegacy'
1482 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1484 contentType: image/jpeg
1486 contentType: image/jpeg
1491 USERNAME="<your_username>"
1492 PASSWORD="<your_password>"
1493 FILE_PATH="<your_file_path>"
1494 CHANNEL_ID="<your_channel_id>"
1497 API_PATH="https://peertube2.cpy.re/api/v1"
1499 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1500 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1501 token=$(curl -s "$API_PATH/users/token" \
1502 --data client_id="$client_id" \
1503 --data client_secret="$client_secret" \
1504 --data grant_type=password \
1505 --data response_type=code \
1506 --data username="$USERNAME" \
1507 --data password="$PASSWORD" \
1508 | jq -r ".access_token")
1510 curl -s "$API_PATH/videos/upload" \
1511 -H "Authorization: Bearer $token" \
1513 --form videofile=@"$FILE_PATH" \
1514 --form channelId=$CHANNEL_ID \
1516 /videos/upload-resumable:
1518 summary: Initialize the resumable upload of a video
1519 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to initialize the upload of a video
1520 operationId: uploadResumableInit
1527 - name: X-Upload-Content-Length
1533 description: Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
1534 - name: X-Upload-Content-Type
1541 description: MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
1546 $ref: '#/components/schemas/VideoUploadRequestResumable'
1549 description: file already exists, send a [`resume`](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) request instead
1551 description: created
1557 example: /api/v1/videos/upload-resumable?upload_id=471e97554f21dec3b8bb5d4602939c51
1563 description: invalid file field, schedule date or parameter
1565 description: video file too large, due to quota, absolute max file size or concurrent partial upload limit
1567 description: video type unsupported
1569 summary: Send chunk for the resumable upload of a video
1570 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
1571 operationId: uploadResumable
1582 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
1583 not valid anymore and you need to initialize a new upload.
1586 - name: Content-Range
1590 example: bytes 0-262143/2469036
1593 Specifies the bytes in the file that the request is uploading.
1595 For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first
1596 262144 bytes (256 x 1024) in a 2,469,036 byte file.
1597 - name: Content-Length
1604 Size of the chunk that the request is sending.
1606 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)
1607 doesn't mandate for chunks to have the same size throughout the upload sequence.
1609 Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from
1610 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
1613 application/octet-stream:
1619 description: last chunk received
1627 $ref: '#/components/schemas/VideoUploadResponse'
1629 description: resume incomplete
1634 example: bytes=0-262143
1640 description: video didn't pass upload filter
1642 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1644 description: video unreadable
1646 summary: Cancel the resumable upload of a video, deleting any data uploaded so far
1647 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to cancel the upload of a video
1648 operationId: uploadResumableCancel
1659 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
1660 not valid anymore and the upload session has already been deleted with its data ;-)
1663 - name: Content-Length
1671 description: upload cancelled
1679 summary: Import a video
1680 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1681 operationId: importVideo
1689 multipart/form-data:
1691 $ref: '#/components/schemas/VideoCreateImport'
1694 contentType: application/x-bittorrent
1696 contentType: image/jpeg
1698 contentType: image/jpeg
1701 description: successful operation
1705 $ref: '#/components/schemas/VideoUploadResponse'
1707 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1709 description: video didn't pass pre-import filter
1711 description: HTTP or Torrent/magnetURI import not enabled
1715 summary: Create a live
1716 operationId: createLive
1724 description: successful operation
1728 $ref: '#/components/schemas/VideoUploadResponse'
1730 description: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1733 multipart/form-data:
1738 description: Channel id that will contain this live video
1743 description: User can stream multiple times in a permanent live
1746 description: Live video/replay thumbnail file
1750 description: Live video/replay preview file
1754 $ref: '#/components/schemas/VideoPrivacySet'
1756 $ref: '#/components/schemas/VideoCategorySet'
1758 $ref: '#/components/schemas/VideoLicenceSet'
1760 $ref: '#/components/schemas/VideoLanguageSet'
1762 description: Live video/replay description
1765 description: A text tell the audience how to support the creator
1766 example: Please support our work on https://soutenir.framasoft.org/en/ <3
1769 description: Whether or not this live video/replay contains sensitive content
1772 description: Live video/replay name
1777 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1786 description: Enable or disable comments for this live video/replay
1789 description: Enable or disable downloading for the replay of this live
1796 contentType: image/jpeg
1798 contentType: image/jpeg
1802 summary: Get information about a live
1803 operationId: getLiveId
1810 - $ref: '#/components/parameters/idOrUUID'
1813 description: successful operation
1817 $ref: '#/components/schemas/LiveVideoResponse'
1819 summary: Update information about a live
1820 operationId: updateLiveId
1827 - $ref: '#/components/parameters/idOrUUID'
1832 $ref: '#/components/schemas/LiveVideoUpdate'
1835 description: successful operation
1837 description: bad parameters or trying to update a live that has already started
1839 description: trying to save replay of the live but saving replay is not enabled on the instance
1843 summary: List my abuses
1844 operationId: getMyAbuses
1853 description: only list the report with this id
1859 $ref: '#/components/schemas/AbuseStateSet'
1860 - $ref: '#/components/parameters/abusesSort'
1861 - $ref: '#/components/parameters/start'
1862 - $ref: '#/components/parameters/count'
1865 description: successful operation
1877 $ref: '#/components/schemas/Abuse'
1881 summary: List abuses
1882 operationId: getAbuses
1892 description: only list the report with this id
1895 - name: predefinedReason
1897 description: predefined reason the listed reports should contain
1899 $ref: '#/components/schemas/PredefinedAbuseReasons'
1902 description: plain search that will match with video titles, reporter names and more
1908 $ref: '#/components/schemas/AbuseStateSet'
1909 - name: searchReporter
1911 description: only list reports of a specific reporter
1914 - name: searchReportee
1915 description: only list reports of a specific reportee
1921 description: only list reports of a specific video
1924 - name: searchVideoChannel
1926 description: only list reports of a specific video channel
1931 description: only list blacklisted or deleted videos
1939 description: only list account, comment or video reports
1946 - $ref: '#/components/parameters/start'
1947 - $ref: '#/components/parameters/count'
1948 - $ref: '#/components/parameters/abusesSort'
1951 description: successful operation
1963 $ref: '#/components/schemas/Abuse'
1966 summary: Report an abuse
1979 description: Reason why the user reports this video
1984 $ref: '#/components/schemas/PredefinedAbuseReasons'
1989 description: Video id to report
1991 - $ref: '#/components/schemas/Video/properties/id'
1995 description: Timestamp in the video that marks the beginning of the report
2000 description: Timestamp in the video that marks the ending of the report
2006 description: Comment id to report
2008 - $ref: '#/components/schemas/VideoComment/properties/id'
2013 description: Account id to report
2019 description: successful operation
2021 description: incorrect request parameters
2022 '/abuses/{abuseId}':
2024 summary: Update an abuse
2032 - $ref: '#/components/parameters/abuseId'
2040 $ref: '#/components/schemas/AbuseStateSet'
2043 description: Update the report comment visible only to the moderation team
2048 description: successful operation
2050 description: abuse not found
2054 summary: Delete an abuse
2060 - $ref: '#/components/parameters/abuseId'
2063 description: successful operation
2065 description: block not found
2066 '/abuses/{abuseId}/messages':
2068 summary: List messages of an abuse
2074 - $ref: '#/components/parameters/abuseId'
2077 description: successful operation
2083 $ref: '#/components/schemas/AbuseMessage'
2086 summary: Add message to an abuse
2092 - $ref: '#/components/parameters/abuseId'
2101 description: Message to send
2109 description: successful operation
2111 description: incorrect request parameters
2112 '/abuses/{abuseId}/messages/{abuseMessageId}':
2114 summary: Delete an abuse message
2120 - $ref: '#/components/parameters/abuseId'
2121 - $ref: '#/components/parameters/abuseMessageId'
2124 description: successful operation
2126 '/videos/{id}/blacklist':
2128 summary: Block a video
2136 - $ref: '#/components/parameters/idOrUUID'
2139 description: successful operation
2141 summary: Unblock a video by its id
2149 - $ref: '#/components/parameters/idOrUUID'
2152 description: successful operation
2154 description: block not found
2159 summary: List video blocks
2168 list only blocks that match this type:
2172 - `2`: automatic block that needs review
2180 description: plain search that will match with video titles, and more
2183 - $ref: '#/components/parameters/start'
2184 - $ref: '#/components/parameters/count'
2185 - $ref: '#/components/parameters/blacklistsSort'
2188 description: successful operation
2200 $ref: '#/components/schemas/VideoBlacklist'
2201 /videos/{id}/captions:
2203 summary: List captions of a video
2207 - $ref: '#/components/parameters/idOrUUID'
2210 description: successful operation
2222 $ref: '#/components/schemas/VideoCaption'
2223 /videos/{id}/captions/{captionLanguage}:
2225 summary: Add or replace a video caption
2232 - $ref: '#/components/parameters/idOrUUID'
2233 - $ref: '#/components/parameters/captionLanguage'
2236 multipart/form-data:
2241 description: The file to upload.
2246 contentType: text/vtt, application/x-subrip, text/plain
2249 description: successful operation
2251 description: video or language not found
2253 summary: Delete a video caption
2260 - $ref: '#/components/parameters/idOrUUID'
2261 - $ref: '#/components/parameters/captionLanguage'
2264 description: successful operation
2266 description: video or language or caption for that language not found
2269 summary: List video channels
2270 operationId: getVideoChannels
2274 - $ref: '#/components/parameters/start'
2275 - $ref: '#/components/parameters/count'
2276 - $ref: '#/components/parameters/sort'
2279 description: successful operation
2283 $ref: '#/components/schemas/VideoChannelList'
2285 summary: Create a video channel
2286 operationId: createVideoChannel
2293 description: successful operation
2303 $ref: '#/components/schemas/VideoChannel/properties/id'
2308 $ref: '#/components/schemas/VideoChannelCreate'
2309 '/video-channels/{channelHandle}':
2311 summary: Get a video channel
2312 operationId: getVideoChannel
2316 - $ref: '#/components/parameters/channelHandle'
2319 description: successful operation
2323 $ref: '#/components/schemas/VideoChannel'
2325 summary: Update a video channel
2331 - $ref: '#/components/parameters/channelHandle'
2334 description: successful operation
2339 $ref: '#/components/schemas/VideoChannelUpdate'
2341 summary: Delete a video channel
2347 - $ref: '#/components/parameters/channelHandle'
2350 description: successful operation
2351 '/video-channels/{channelHandle}/videos':
2353 summary: List videos of a video channel
2358 - $ref: '#/components/parameters/channelHandle'
2359 - $ref: '#/components/parameters/categoryOneOf'
2360 - $ref: '#/components/parameters/isLive'
2361 - $ref: '#/components/parameters/tagsOneOf'
2362 - $ref: '#/components/parameters/tagsAllOf'
2363 - $ref: '#/components/parameters/licenceOneOf'
2364 - $ref: '#/components/parameters/languageOneOf'
2365 - $ref: '#/components/parameters/nsfw'
2366 - $ref: '#/components/parameters/filter'
2367 - $ref: '#/components/parameters/skipCount'
2368 - $ref: '#/components/parameters/start'
2369 - $ref: '#/components/parameters/count'
2370 - $ref: '#/components/parameters/videosSort'
2373 description: successful operation
2377 $ref: '#/components/schemas/VideoListResponse'
2378 '/video-channels/{channelHandle}/avatar/pick':
2380 summary: Update channel avatar
2386 - $ref: '#/components/parameters/channelHandle'
2389 description: successful operation
2396 $ref: '#/components/schemas/ActorImage'
2398 description: image file too large
2400 X-File-Maximum-Size:
2404 description: Maximum file size for the avatar
2407 multipart/form-data:
2412 description: The file to upload.
2417 contentType: image/png, image/jpeg
2418 '/video-channels/{channelHandle}/avatar':
2420 summary: Delete channel avatar
2426 - $ref: '#/components/parameters/channelHandle'
2429 description: successful operation
2432 '/video-channels/{channelHandle}/banner/pick':
2434 summary: Update channel banner
2440 - $ref: '#/components/parameters/channelHandle'
2443 description: successful operation
2450 $ref: '#/components/schemas/ActorImage'
2452 description: image file too large
2454 X-File-Maximum-Size:
2458 description: Maximum file size for the banner
2461 multipart/form-data:
2466 description: The file to upload.
2471 contentType: image/png, image/jpeg
2472 '/video-channels/{channelHandle}/banner':
2474 summary: Delete channel banner
2480 - $ref: '#/components/parameters/channelHandle'
2483 description: successful operation
2485 /video-playlists/privacies:
2487 summary: List available playlist privacy policies
2488 operationId: getPlaylistPrivacyPolicies
2493 description: successful operation
2502 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2506 summary: List video playlists
2507 operationId: getPlaylists
2511 - $ref: '#/components/parameters/start'
2512 - $ref: '#/components/parameters/count'
2513 - $ref: '#/components/parameters/sort'
2516 description: successful operation
2528 $ref: '#/components/schemas/VideoPlaylist'
2530 summary: Create a video playlist
2531 description: If the video playlist is set as public, `videoChannelId` is mandatory.
2532 operationId: createPlaylist
2539 description: successful operation
2549 $ref: '#/components/schemas/VideoPlaylist/properties/id'
2551 $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
2554 multipart/form-data:
2559 description: Video playlist display name
2564 description: Video playlist thumbnail file
2568 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2570 description: Video playlist description
2576 - $ref: '#/components/schemas/id'
2577 description: Video channel in which the playlist will be published
2582 contentType: image/jpeg
2584 /video-playlists/{playlistId}:
2586 summary: Get a video playlist
2590 - $ref: '#/components/parameters/playlistId'
2593 description: successful operation
2597 $ref: '#/components/schemas/VideoPlaylist'
2599 summary: Update a video playlist
2600 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2607 description: successful operation
2609 - $ref: '#/components/parameters/playlistId'
2612 multipart/form-data:
2617 description: Video playlist display name
2622 description: Video playlist thumbnail file
2626 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2628 description: Video playlist description
2632 - $ref: '#/components/schemas/id'
2633 description: Video channel in which the playlist will be published
2636 contentType: image/jpeg
2638 summary: Delete a video playlist
2644 - $ref: '#/components/parameters/playlistId'
2647 description: successful operation
2649 /video-playlists/{playlistId}/videos:
2651 summary: 'List videos of a playlist'
2656 - $ref: '#/components/parameters/playlistId'
2659 description: successful operation
2663 $ref: '#/components/schemas/VideoListResponse'
2665 summary: Add a video in a playlist
2672 - $ref: '#/components/parameters/playlistId'
2675 description: successful operation
2681 videoPlaylistElement:
2695 - $ref: '#/components/schemas/Video/properties/uuid'
2696 - $ref: '#/components/schemas/Video/properties/id'
2697 description: Video to add in the playlist
2701 description: Start the video at this specific timestamp
2705 description: Stop the video at this specific timestamp
2709 /video-playlists/{playlistId}/videos/reorder:
2711 summary: 'Reorder a playlist'
2717 - $ref: '#/components/parameters/playlistId'
2720 description: successful operation
2729 description: 'Start position of the element to reorder'
2731 insertAfterPosition:
2733 description: 'New position for the block to reorder, to add the block before the first element'
2737 description: 'How many element from `startPosition` to reorder'
2741 - insertAfterPosition
2743 /video-playlists/{playlistId}/videos/{playlistElementId}:
2745 summary: Update a playlist element
2751 - $ref: '#/components/parameters/playlistId'
2752 - $ref: '#/components/parameters/playlistElementId'
2755 description: successful operation
2765 description: Start the video at this specific timestamp
2769 description: Stop the video at this specific timestamp
2771 summary: Delete an element from a playlist
2777 - $ref: '#/components/parameters/playlistId'
2778 - $ref: '#/components/parameters/playlistElementId'
2781 description: successful operation
2783 '/users/me/video-playlists/videos-exist':
2785 summary: Check video exists in my playlists
2794 description: The video ids to check
2798 $ref: '#/components/schemas/Video/properties/id'
2801 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 - $ref: '#/components/schemas/VideoComment/properties/text'
2924 '/videos/{id}/comment-threads/{threadId}':
2926 summary: Get a thread
2930 - $ref: '#/components/parameters/idOrUUID'
2931 - $ref: '#/components/parameters/threadId'
2934 description: successful operation
2938 $ref: '#/components/schemas/VideoCommentThreadTree'
2939 '/videos/{id}/comments/{commentId}':
2941 summary: Reply to a thread of a video
2947 - $ref: '#/components/parameters/idOrUUID'
2948 - $ref: '#/components/parameters/commentId'
2951 description: successful operation
2955 $ref: '#/components/schemas/CommentThreadPostResponse'
2957 description: thread or video does not exist
2966 - $ref: '#/components/schemas/VideoComment/properties/text'
2973 summary: Delete a comment or a reply
2979 - $ref: '#/components/parameters/idOrUUID'
2980 - $ref: '#/components/parameters/commentId'
2983 description: successful operation
2985 description: cannot remove comment of another user
2987 description: comment or video does not exist
2989 description: comment is already deleted
2990 '/videos/{id}/rate':
2992 summary: Like/dislike a video
2998 - $ref: '#/components/parameters/idOrUUID'
3014 description: successful operation
3016 description: video does not exist
3021 summary: Search videos
3026 allowEmptyValue: false
3028 String to search. If the user can make a remote URI search, and the string is an URI then the
3029 PeerTube instance will fetch the remote object and add it to its database. Then,
3030 you can use the REST API to fetch the complete video information and interact with it.
3033 - $ref: '#/components/parameters/categoryOneOf'
3034 - $ref: '#/components/parameters/isLive'
3035 - $ref: '#/components/parameters/tagsOneOf'
3036 - $ref: '#/components/parameters/tagsAllOf'
3037 - $ref: '#/components/parameters/licenceOneOf'
3038 - $ref: '#/components/parameters/languageOneOf'
3039 - $ref: '#/components/parameters/nsfw'
3040 - $ref: '#/components/parameters/filter'
3041 - $ref: '#/components/parameters/skipCount'
3042 - $ref: '#/components/parameters/start'
3043 - $ref: '#/components/parameters/count'
3044 - $ref: '#/components/parameters/searchTarget'
3045 - $ref: '#/components/parameters/videosSearchSort'
3048 description: Get videos that are published after this date
3054 description: Get videos that are published before this date
3058 - name: originallyPublishedStartDate
3060 description: Get videos that are originally published after this date
3064 - name: originallyPublishedEndDate
3066 description: Get videos that are originally published before this date
3072 description: Get videos that have this minimum duration
3077 description: Get videos that have this maximum duration
3081 'searchTarget === search-index':
3082 $ref: '#/components/callbacks/searchIndex'
3085 description: successful operation
3089 $ref: '#/components/schemas/VideoListResponse'
3091 description: search index unavailable
3092 /search/video-channels:
3096 summary: Search channels
3102 String to search. If the user can make a remote URI search, and the string is an URI then the
3103 PeerTube instance will fetch the remote object and add it to its database. Then,
3104 you can use the REST API to fetch the complete channel information and interact with it.
3107 - $ref: '#/components/parameters/start'
3108 - $ref: '#/components/parameters/count'
3109 - $ref: '#/components/parameters/searchTarget'
3110 - $ref: '#/components/parameters/sort'
3112 'searchTarget === search-index':
3113 $ref: '#/components/callbacks/searchIndex'
3116 description: successful operation
3120 $ref: '#/components/schemas/VideoChannelList'
3122 description: search index unavailable
3123 /blocklist/accounts:
3127 summary: List account blocks
3132 - $ref: '#/components/parameters/start'
3133 - $ref: '#/components/parameters/count'
3134 - $ref: '#/components/parameters/sort'
3137 description: successful operation
3141 summary: Block an account
3153 example: chocobozzz@example.org
3154 description: account to block, in the form `username@domain`
3159 description: successful operation
3161 description: self-blocking forbidden
3162 '/blocklist/accounts/{accountName}':
3166 summary: Unblock an account by its handle
3174 description: account to unblock, in the form `username@domain`
3179 description: successful operation
3181 description: account or account block does not exist
3186 summary: List server blocks
3191 - $ref: '#/components/parameters/start'
3192 - $ref: '#/components/parameters/count'
3193 - $ref: '#/components/parameters/sort'
3196 description: successful operation
3200 summary: Block a server
3213 description: server domain to block
3218 description: successful operation
3220 description: self-blocking forbidden
3221 '/blocklist/servers/{host}':
3225 summary: Unblock a server by its domain
3233 description: server domain to unblock
3239 description: successful operation
3241 description: account block does not exist
3245 - Instance Redundancy
3246 summary: Update a server redundancy policy
3254 description: server domain to mirror
3266 description: allow mirroring of the host's local videos
3271 description: successful operation
3273 description: server is not already known
3278 summary: List videos being mirrored
3286 description: direction of the mirror
3292 - $ref: '#/components/parameters/start'
3293 - $ref: '#/components/parameters/count'
3294 - $ref: '#/components/parameters/videoRedundanciesSort'
3297 description: successful operation
3303 $ref: '#/components/schemas/VideoRedundancy'
3307 summary: Mirror a video
3318 $ref: '#/components/schemas/Video/properties/id'
3323 description: successful operation
3325 description: cannot mirror a local video
3327 description: video does not exist
3329 description: video is already mirrored
3330 /redundancy/videos/{redundancyId}:
3334 summary: Delete a mirror done on a video
3339 - name: redundancyId
3342 description: id of an existing redundancy on a video
3347 description: successful operation
3349 description: video redundancy not found
3350 '/feeds/video-comments.{format}':
3354 summary: List comments on videos
3359 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3372 description: 'limit listing to a specific video'
3377 description: 'limit listing to a specific account'
3382 description: 'limit listing to a specific account'
3385 - name: videoChannelId
3387 description: 'limit listing to a specific video channel'
3390 - name: videoChannelName
3392 description: 'limit listing to a specific video channel'
3397 description: successful operation
3402 default: 'max-age=900' # 15 min cache
3406 $ref: '#/components/schemas/VideoCommentsForXML'
3409 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
3410 application/rss+xml:
3412 $ref: '#/components/schemas/VideoCommentsForXML'
3415 externalValue: https://peertube2.cpy.re/feeds/video-comments.rss?filter=local
3418 $ref: '#/components/schemas/VideoCommentsForXML'
3421 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
3422 application/atom+xml:
3424 $ref: '#/components/schemas/VideoCommentsForXML'
3427 externalValue: https://peertube2.cpy.re/feeds/video-comments.atom?filter=local
3433 externalValue: https://peertube2.cpy.re/feeds/video-comments.json?filter=local
3435 x-summary: field inconsistencies
3438 - videoId filter is mixed with a channel filter
3440 description: video, video channel or account not found
3442 description: accept header unsupported
3443 '/feeds/videos.{format}':
3447 summary: List videos
3452 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3465 description: 'limit listing to a specific account'
3470 description: 'limit listing to a specific account'
3473 - name: videoChannelId
3475 description: 'limit listing to a specific video channel'
3478 - name: videoChannelName
3480 description: 'limit listing to a specific video channel'
3483 - $ref: '#/components/parameters/sort'
3484 - $ref: '#/components/parameters/nsfw'
3485 - $ref: '#/components/parameters/filter'
3488 description: successful operation
3493 default: 'max-age=900' # 15 min cache
3497 $ref: '#/components/schemas/VideosForXML'
3500 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3501 application/rss+xml:
3503 $ref: '#/components/schemas/VideosForXML'
3506 externalValue: https://peertube2.cpy.re/feeds/videos.rss?filter=local
3509 $ref: '#/components/schemas/VideosForXML'
3512 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3513 application/atom+xml:
3515 $ref: '#/components/schemas/VideosForXML'
3518 externalValue: https://peertube2.cpy.re/feeds/videos.atom?filter=local
3524 externalValue: https://peertube2.cpy.re/feeds/videos.json?filter=local
3526 description: video channel or account not found
3528 description: accept header unsupported
3529 '/feeds/subscriptions.{format}':
3534 summary: List videos of subscriptions tied to a token
3539 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3552 description: limit listing to a specific account
3558 description: private token allowing access
3562 - $ref: '#/components/parameters/sort'
3563 - $ref: '#/components/parameters/nsfw'
3564 - $ref: '#/components/parameters/filter'
3567 description: successful operation
3572 default: 'max-age=900' # 15 min cache
3576 $ref: '#/components/schemas/VideosForXML'
3577 application/rss+xml:
3579 $ref: '#/components/schemas/VideosForXML'
3582 $ref: '#/components/schemas/VideosForXML'
3583 application/atom+xml:
3585 $ref: '#/components/schemas/VideosForXML'
3590 description: accept header unsupported
3595 summary: List plugins
3608 - $ref: '#/components/parameters/start'
3609 - $ref: '#/components/parameters/count'
3610 - $ref: '#/components/parameters/sort'
3613 description: successful operation
3617 $ref: '#/components/schemas/PluginResponse'
3622 summary: List available plugins
3635 - name: currentPeerTubeEngine
3639 - $ref: '#/components/parameters/start'
3640 - $ref: '#/components/parameters/count'
3641 - $ref: '#/components/parameters/sort'
3644 description: successful operation
3648 $ref: '#/components/schemas/PluginResponse'
3650 description: plugin index unavailable
3655 summary: Install a plugin
3668 example: peertube-plugin-auth-ldap
3671 additionalProperties: false
3678 additionalProperties: false
3681 description: successful operation
3683 description: should have either `npmName` or `path` set
3688 summary: Update a plugin
3701 example: peertube-plugin-auth-ldap
3704 additionalProperties: false
3711 additionalProperties: false
3714 description: successful operation
3716 description: should have either `npmName` or `path` set
3718 description: existing plugin not found
3723 summary: Uninstall a plugin
3735 description: name of the plugin/theme in its package.json
3736 example: peertube-plugin-auth-ldap
3741 description: successful operation
3743 description: existing plugin not found
3748 summary: Get a plugin
3753 - $ref: '#/components/parameters/npmName'
3756 description: successful operation
3760 $ref: '#/components/schemas/Plugin'
3762 description: plugin not found
3763 /plugins/{npmName}/settings:
3767 summary: Set a plugin's settings
3772 - $ref: '#/components/parameters/npmName'
3781 additionalProperties: true
3784 description: successful operation
3786 description: plugin not found
3787 /plugins/{npmName}/public-settings:
3791 summary: Get a plugin's public settings
3793 - $ref: '#/components/parameters/npmName'
3796 description: successful operation
3801 additionalProperties: true
3803 description: plugin not found
3804 /plugins/{npmName}/registered-settings:
3808 summary: Get a plugin's registered settings
3813 - $ref: '#/components/parameters/npmName'
3816 description: successful operation
3821 additionalProperties: true
3823 description: plugin not found
3825 - url: 'https://peertube2.cpy.re/api/v1'
3826 description: Live Test Server (live data - latest nightly version)
3827 - url: 'https://peertube3.cpy.re/api/v1'
3828 description: Live Test Server (live data - latest RC version)
3829 - url: 'https://peertube.cpy.re/api/v1'
3830 description: Live Test Server (live data - stable version)
3837 description: Offset used to paginate results
3845 description: "Number of items to return"
3855 description: Sort column
3863 description: Plain text search, applied to various parts of the model depending on endpoint
3871 If the administrator enabled search index support, you can override the default search target.
3874 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3875 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3876 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3877 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3878 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3879 * 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
3880 the data from the origin instance API
3890 description: Sort videos by criteria
3906 description: Sort videos by criteria
3921 description: Sort comments by criteria
3931 description: Sort blacklists by criteria
3947 description: Plain text search that will match with user usernames or emails
3954 description: Filter results down to (un)banned users
3961 description: Sort users by criteria
3972 description: Sort abuses by criteria
3979 videoRedundanciesSort:
3983 description: Sort abuses by criteria
3992 description: The username or handle of the account
3995 example: chocobozzz | chocobozzz@example.org
4000 description: The user id
4002 $ref: '#/components/schemas/id'
4007 description: The object id or uuid
4010 - $ref: '#/components/schemas/id'
4011 - $ref: '#/components/schemas/UUIDv4'
4016 description: Playlist id
4018 $ref: '#/components/schemas/VideoPlaylist/properties/id'
4020 name: playlistElementId
4023 description: Playlist element id
4025 $ref: '#/components/schemas/id'
4030 description: Abuse id
4032 $ref: '#/components/schemas/Abuse/properties/id'
4034 name: abuseMessageId
4037 description: Abuse message id
4039 $ref: '#/components/schemas/AbuseMessage/properties/id'
4041 name: captionLanguage
4044 description: The caption language
4046 $ref: '#/components/schemas/VideoLanguageSet'
4051 description: The video channel handle
4054 example: my_username | my_username@example.com
4056 name: subscriptionHandle
4059 description: The subscription handle
4062 example: my_username | my_username@example.com
4067 description: The thread id (root comment id)
4069 $ref: '#/components/schemas/VideoCommentThreadTree/properties/comment/properties/id'
4074 description: The comment id
4076 $ref: '#/components/schemas/VideoComment/properties/id'
4081 description: whether or not the video is a live
4088 description: category id of the video (see [/videos/categories](#operation/getCategories))
4091 - $ref: '#/components/schemas/VideoCategorySet'
4094 $ref: '#/components/schemas/VideoCategorySet'
4101 description: tag(s) of the video
4115 description: tag(s) of the video, where all should be present in the video
4128 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
4131 - $ref: '#/components/schemas/VideoLanguageSet'
4134 $ref: '#/components/schemas/VideoLanguageSet'
4141 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4144 - $ref: '#/components/schemas/VideoLicenceSet'
4147 $ref: '#/components/schemas/VideoLicenceSet'
4154 description: if you don't need the `total` in the response
4165 description: whether to include nsfw videos, if any
4176 Special filters which might require special rights:
4177 * `local` - only videos local to the instance
4178 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
4179 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
4189 description: list of uris to check if each is part of the user subscriptions
4199 description: name of the plugin/theme on npmjs.com or in its package.json
4202 example: peertube-plugin-auth-ldap
4207 description: job type
4211 - activitypub-follow
4212 - activitypub-http-broadcast
4213 - activitypub-http-fetcher
4214 - activitypub-http-unicast
4220 - activitypub-refresher
4226 Authenticating via OAuth requires the following steps:
4227 - Have an activated account
4228 - [Generate](https://docs.joinpeertube.org/api-rest-getting-started) a
4229 Bearer Token for that account at `/api/v1/users/token`
4230 - Make authenticated requests, putting *Authorization: Bearer <token\>*
4231 - Profit, depending on the role assigned to the account
4233 Note that the __access token is valid for 1 day__ and, and is given
4234 along with a __refresh token valid for 2 weeks__.
4238 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
4241 moderator: Moderator scope
4244 # Resuable core properties
4252 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4253 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
4258 description: immutable name of the user, used to find or mention its actor
4260 pattern: '/^[a-z0-9._]{1,50}$/'
4265 description: immutable name of the channel, used to interact with its actor
4266 example: framasoft_videos
4267 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4276 description: category id of the video (see [/videos/categories](#operation/getCategories))
4278 VideoConstantNumber-Category:
4281 $ref: '#/components/schemas/VideoCategorySet'
4284 example: Science & Technology
4288 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4290 VideoConstantNumber-Licence:
4293 $ref: '#/components/schemas/VideoLicenceSet'
4296 example: Attribution - Share Alike
4300 description: language id of the video (see [/videos/languages](#operation/getLanguages))
4302 VideoConstantString-Language:
4305 $ref: '#/components/schemas/VideoLanguageSet'
4310 VideoPlaylistPrivacySet:
4316 description: Video playlist privacy policy (see [/video-playlists/privacies])
4317 VideoPlaylistPrivacyConstant:
4320 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
4324 VideoPlaylistTypeSet:
4329 description: The video playlist type (Regular = `1`, Watch Later = `2`)
4330 VideoPlaylistTypeConstant:
4333 $ref: '#/components/schemas/VideoPlaylistTypeSet'
4344 description: privacy id of the video (see [/videos/privacies](#operation/getPrivacyPolicies))
4345 VideoPrivacyConstant:
4348 $ref: '#/components/schemas/VideoPrivacySet'
4365 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
4372 description: 'Admin flags for the user (None = `0`, Bypass video blacklist = `1`)'
4383 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
4393 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
4397 $ref: '#/components/schemas/AbuseStateSet'
4400 AbusePredefinedReasons:
4413 example: [spamOrMisleading]
4418 Video resolution (`0`, `240`, `360`, `720`, `1080`, `1440` or `2160`)
4420 `0` is used as a special value for stillimage videos dedicated to audio, a.k.a. audio-only videos.
4422 VideoResolutionConstant:
4423 description: resolutions and their labels for the video
4426 $ref: '#/components/schemas/VideoResolutionSet'
4430 VideoScheduledUpdate:
4433 $ref: '#/components/schemas/VideoPrivacySet'
4437 description: When to update the video
4457 - $ref: '#/components/schemas/ActorImage'
4458 VideoChannelSummary:
4461 $ref: '#/components/schemas/id'
4475 - $ref: '#/components/schemas/ActorImage'
4489 - $ref: '#/components/schemas/Video'
4496 description: magnet URI allowing to resolve the video via BitTorrent without a metainfo file
4497 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
4498 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
4500 $ref: '#/components/schemas/VideoResolutionConstant'
4503 description: Video file size in bytes
4506 description: Direct URL of the torrent file
4510 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
4514 description: Direct URL of the video
4518 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
4522 description: Frames per second of the video file
4526 description: URL dereferencing the output of ffprobe on the file
4527 VideoStreamingPlaylists:
4532 $ref: '#/components/schemas/id'
4540 - $ref: '#/components/schemas/VideoStreamingPlaylists-HLS'
4541 VideoStreamingPlaylists-HLS:
4552 Video files associated to this playlist.
4554 The difference with the root `files` property is that these files are fragmented, so they can be used in this streaming playlist (HLS, etc.)
4556 $ref: '#/components/schemas/VideoFile'
4568 $ref: '#/components/schemas/Video/properties/id'
4570 $ref: '#/components/schemas/Video/properties/uuid'
4572 $ref: '#/components/schemas/Video/properties/name'
4576 description: object id for the video
4578 - $ref: '#/components/schemas/id'
4580 description: universal identifier for the video, that can be used across instances
4582 - $ref: '#/components/schemas/UUIDv4'
4588 example: 2017-10-01T10:52:46.396Z
4589 description: time at which the video object was first drafted
4593 example: 2018-10-01T10:52:46.396Z
4594 description: time at which the video was marked as ready for playback (with restrictions depending on `privacy`). Usually set after a `state` evolution.
4598 example: 2021-05-04T08:01:01.502Z
4599 description: last time the video's metadata was modified
4600 originallyPublishedAt:
4603 example: 2010-10-01T10:52:46.396Z
4604 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
4607 - $ref: '#/components/schemas/VideoConstantNumber-Category'
4608 description: category in which the video is classified
4611 - $ref: '#/components/schemas/VideoConstantNumber-Licence'
4612 description: licence under which the video is distributed
4615 - $ref: '#/components/schemas/VideoConstantString-Language'
4616 description: main language used in the video
4619 - $ref: '#/components/schemas/VideoPrivacyConstant'
4620 description: privacy policy used to distribute the video
4624 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n
4625 **Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\r\n*A decentralized video hosting network, based on fr...
4629 truncated description of the video, written in Markdown.
4630 Resolve `descriptionPath` to get the full description of maximum `10000` characters.
4635 description: duration of the video in seconds
4640 description: title of the video
4641 example: What is PeerTube?
4646 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4649 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4652 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4669 - $ref: '#/components/schemas/VideoStateConstant'
4670 description: represents the internal state of the video processing within the PeerTube instance
4674 - $ref: '#/components/schemas/VideoScheduledUpdate'
4682 $ref: '#/components/schemas/AccountSummary'
4684 $ref: '#/components/schemas/VideoChannelSummary'
4693 - $ref: '#/components/schemas/Video'
4698 example: /api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/description
4699 description: path at which to get the full description of maximum `10000` characters
4702 description: A text tell the audience how to support the video creator
4703 example: Please support our work on https://soutenir.framasoft.org/en/ <3
4707 $ref: '#/components/schemas/VideoChannel'
4709 $ref: '#/components/schemas/Account'
4711 example: [flowers, gardening]
4729 - https://peertube2.cpy.re/tracker/announce
4730 - wss://peertube2.cpy.re/tracker/socket
4734 $ref: '#/components/schemas/VideoFile'
4736 WebTorrent/raw video files. If WebTorrent is disabled on the server:
4738 - field will be empty
4739 - video files will be found in `streamingPlaylists[].files` field
4743 $ref: '#/components/schemas/VideoStreamingPlaylists'
4745 HLS playlists/manifest files. If HLS is disabled on the server:
4747 - field will be empty
4748 - video files will be found in `files` field
4749 FileRedundancyInformation:
4752 $ref: '#/components/schemas/id'
4777 $ref: '#/components/schemas/id'
4784 $ref: '#/components/schemas/UUIDv4'
4791 $ref: '#/components/schemas/FileRedundancyInformation'
4795 $ref: '#/components/schemas/FileRedundancyInformation'
4796 VideoImportStateConstant:
4804 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4811 additionalProperties: false
4815 $ref: '#/components/schemas/VideoImport/properties/targetUrl'
4816 required: [targetUrl]
4819 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
4820 required: [magnetUri]
4823 $ref: '#/components/schemas/VideoImport/properties/torrentfile'
4824 required: [torrentfile]
4825 - $ref: '#/components/schemas/VideoUploadRequestCommon'
4834 - $ref: '#/components/schemas/id'
4838 description: remote URL where to find the import's source video
4839 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4843 description: magnet URI allowing to resolve the import's source video
4844 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
4845 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
4850 description: Torrent file containing only the video file
4857 - $ref: '#/components/schemas/VideoImportStateConstant'
4873 - $ref: '#/components/schemas/Video'
4883 $ref: '#/components/schemas/VideoImport'
4887 $ref: '#/components/schemas/id'
4890 example: The video is a spam
4894 $ref: '#/components/schemas/AbusePredefinedReasons'
4896 $ref: '#/components/schemas/Account'
4898 $ref: '#/components/schemas/AbuseStateConstant'
4901 example: Decided to ban the server since it spams us regularly
4905 $ref: '#/components/schemas/VideoInfo'
4912 $ref: '#/components/schemas/id'
4923 $ref: '#/components/schemas/AccountSummary'
4927 $ref: '#/components/schemas/id'
4929 $ref: '#/components/schemas/Video/properties/id'
4941 $ref: '#/components/schemas/UUIDv4'
4959 $ref: '#/components/schemas/id'
4961 $ref: '#/components/schemas/UUIDv4'
4984 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4986 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4988 $ref: '#/components/schemas/AccountSummary'
4990 $ref: '#/components/schemas/VideoChannelSummary'
4994 $ref: '#/components/schemas/id'
5001 description: Text of the comment
5003 example: This video is wonderful!
5005 $ref: '#/components/schemas/id'
5009 - $ref: '#/components/schemas/id'
5011 $ref: '#/components/schemas/Video/properties/id'
5026 totalRepliesFromVideoAuthor:
5033 $ref: '#/components/schemas/Account'
5034 VideoCommentThreadTree:
5037 $ref: '#/components/schemas/VideoComment'
5041 $ref: '#/components/schemas/VideoCommentThreadTree'
5045 $ref: '#/components/schemas/VideoConstantString-Language'
5061 $ref: '#/components/schemas/id'
5078 $ref: '#/components/schemas/id'
5083 description: immutable name of the actor, used to find or mention it
5085 - $ref: '#/components/schemas/username'
5089 description: server on which the actor is resident
5090 hostRedundancyAllowed:
5092 description: whether this actor's host allows redundancy of its videos
5096 description: number of actors subscribed to by this actor, as seen by this instance
5100 description: number of followers of this actor, as seen by this instance
5108 $ref: '#/components/schemas/ActorImage'
5111 - $ref: '#/components/schemas/Actor'
5114 description: object id for the user tied to this account
5116 - $ref: '#/components/schemas/User/properties/id'
5119 description: editable name of the account, displayed in its representations
5124 description: text or bio displayed on the account's profile
5130 description: timestamp within the video, in seconds
5197 allowedForCurrentIP:
5199 requiresEmailVerification:
5217 $ref: '#/components/schemas/VideoResolutionSet'
5302 example: 16810141515
5405 requiresEmailVerification:
5420 description: Settings that apply to new users, if registration is enabled
5424 example: 16810141515
5430 description: Settings pertaining to transcoding jobs
5434 allowAdditionalExtensions:
5436 description: Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
5439 description: If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
5442 description: Amount of threads used by ffmpeg for 1 transcoding job
5445 description: Amount of transcoding jobs to execute in parallel
5451 New profiles can be added by plugins ; available in core PeerTube: 'default'.
5454 description: Resolutions to transcode _new videos_ to
5474 description: WebTorrent-specific settings
5480 description: HLS-specific settings
5524 $ref: '#/components/schemas/id'
5526 $ref: '#/components/schemas/Actor'
5528 $ref: '#/components/schemas/Actor'
5531 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
5544 PredefinedAbuseReasons:
5545 description: Reason categories that help triage reports
5563 $ref: '#/components/schemas/id'
5575 - activitypub-http-unicast
5576 - activitypub-http-broadcast
5577 - activitypub-http-fetcher
5578 - activitypub-follow
5584 - activitypub-refresher
5588 additionalProperties: true
5591 additionalProperties: true
5607 $ref: '#/components/schemas/id'
5612 $ref: '#/components/schemas/id'
5613 VideoUploadRequestCommon:
5616 description: Video name
5618 example: What is PeerTube?
5622 description: Channel id that will contain this video
5627 $ref: '#/components/schemas/VideoPrivacySet'
5629 $ref: '#/components/schemas/VideoCategorySet'
5631 $ref: '#/components/schemas/VideoLicenceSet'
5633 $ref: '#/components/schemas/VideoLanguageSet'
5635 description: Video description
5638 **[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)**
5640 description: Whether or not we wait transcoding before publish the video
5643 description: A text tell the audience how to support the video creator
5644 example: Please support our work on https://soutenir.framasoft.org/en/ <3
5647 description: Whether or not this video contains sensitive content
5650 description: Video tags (maximum 5 tags each between 2 and 30 characters)
5663 description: Enable or disable comments for this video
5666 description: Enable or disable downloading for this video
5668 originallyPublishedAt:
5669 description: Date when the content was originally published
5673 $ref: '#/components/schemas/VideoScheduledUpdate'
5675 description: Video thumbnail file
5679 description: Video preview file
5685 VideoUploadRequestLegacy:
5687 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5693 description: Video file
5696 VideoUploadRequestResumable:
5698 - $ref: '#/components/schemas/VideoUploadRequestCommon'
5704 description: Video filename including extension
5707 example: what_is_peertube.mp4
5709 description: Video thumbnail file
5713 description: Video preview file
5716 VideoUploadResponse:
5722 $ref: '#/components/schemas/Video/properties/id'
5724 $ref: '#/components/schemas/Video/properties/uuid'
5725 CommentThreadResponse:
5734 $ref: '#/components/schemas/VideoComment'
5735 CommentThreadPostResponse:
5738 $ref: '#/components/schemas/VideoComment'
5748 $ref: '#/components/schemas/Video'
5752 $ref: '#/components/schemas/Account'
5755 description: Automatically start playing the upcoming video after the currently playing video
5756 autoPlayNextVideoPlaylist:
5758 description: Automatically start playing the video on the playlist after the currently playing video
5761 description: Automatically start playing the video on the watch page
5771 description: The user email
5774 description: Has the user confirmed their email address?
5777 - $ref: '#/components/schemas/id'
5781 description: Auth plugin to use to authenticate the user
5785 noInstanceConfigWarningModal:
5790 $ref: '#/components/schemas/NSFWPolicy'
5792 $ref: '#/components/schemas/UserRole'
5801 description: Theme enabled by this user
5803 $ref: '#/components/schemas/username'
5807 $ref: '#/components/schemas/VideoChannel'
5810 description: The user video quota in bytes
5814 description: The user daily video quota in bytes
5818 description: Enable P2P in the player
5821 - $ref: '#/components/schemas/User'
5823 # optionally present fields: they require WITH_STATS scope
5826 description: Count of videos published
5829 description: Count of reports/abuses of which the user is a target
5830 abusesAcceptedCount:
5832 description: Count of reports/abuses created by the user and accepted/acted upon by the moderation team
5835 description: Count of reports/abuses created by the user
5838 description: Count of comments published
5842 $ref: '#/components/schemas/username'
5844 $ref: '#/components/schemas/password'
5848 description: The user email
5851 description: The user video quota in bytes
5855 description: The user daily video quota in bytes
5858 $ref: '#/components/schemas/usernameChannel'
5860 $ref: '#/components/schemas/UserRole'
5862 $ref: '#/components/schemas/UserAdminFlags'
5873 description: The updated email of the user
5875 - $ref: '#/components/schemas/User/properties/email'
5878 description: Set the email as verified
5881 description: The updated video quota of the user in bytes
5884 description: The updated daily video quota of the user in bytes
5888 description: The auth plugin to use to authenticate the user
5889 example: 'peertube-plugin-auth-saml2'
5891 $ref: '#/components/schemas/UserRole'
5893 $ref: '#/components/schemas/UserAdminFlags'
5895 # see shared/models/users/user-update-me.model.ts:
5898 $ref: '#/components/schemas/password'
5900 $ref: '#/components/schemas/password'
5902 description: new email used for login and service communications
5904 - $ref: '#/components/schemas/User/properties/email'
5907 description: new name of the user in its representations
5912 description: new NSFW display policy
5919 description: whether to enable P2P in the player or not
5922 description: new preference regarding playing videos automatically
5925 description: new preference regarding playing following videos automatically
5926 autoPlayNextVideoPlaylist:
5928 description: new preference regarding playing following playlist videos automatically
5929 videosHistoryEnabled:
5931 description: whether to keep track of watched history or not
5936 description: list of languages to filter videos down to
5939 noInstanceConfigWarningModal:
5946 $ref: '#/components/schemas/id'
5953 description: Rating of the video
5960 $ref: '#/components/schemas/Video'
5967 description: Rating of the video
5974 description: immutable name of the user, used to find or mention its actor
5976 - $ref: '#/components/schemas/username'
5978 $ref: '#/components/schemas/password'
5982 description: email of the user, used for login or service communications
5985 description: editable name of the user, displayed in its representations
5990 description: channel base information used to create the first channel of the user
5993 $ref: '#/components/schemas/usernameChannel'
5995 $ref: '#/components/schemas/VideoChannel/properties/displayName'
6003 # GET/POST/PUT properties
6006 description: editable name of the channel, displayed in its representations
6007 example: Videos of Framasoft
6012 example: Videos made with <3 by Framasoft
6017 description: text shown by default on all videos of this channel, to tell the audience how to support it
6018 example: Please support our work on https://soutenir.framasoft.org/en/ <3
6021 # GET-only properties
6025 - $ref: '#/components/schemas/id'
6041 $ref: '#/components/schemas/UUIDv4'
6044 - $ref: '#/components/schemas/VideoChannel'
6047 description: username of the channel to create
6049 - $ref: '#/components/schemas/usernameChannel'
6055 - $ref: '#/components/schemas/VideoChannel'
6057 bulkVideosSupportUpdate:
6059 description: Update the support field for all videos of this channel
6069 - $ref: '#/components/schemas/VideoChannel'
6070 - $ref: '#/components/schemas/Actor'
6075 name: 'media:peerLink'
6084 - application/x-bittorrent
6090 name: 'media:content'
6121 VideoCommentsForXML:
6156 description: video watch page URL
6159 description: video canonical URL
6163 description: video publication date
6166 description: video description
6169 description: video description
6172 description: publisher user name
6175 description: video category (MRSS)
6178 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
6193 description: video embed path, relative to the canonical URL domain (MRSS)
6202 description: video watch path, relative to the canonical URL domain (MRSS)
6223 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
6224 'media:description':
6231 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
6234 description: main streamable file for the video
6244 - application/x-bittorrent
6253 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)
6256 - $ref: '#/components/schemas/MRSSPeerLink'
6257 - $ref: '#/components/schemas/MRSSGroupContent'
6258 NotificationSettingValue:
6275 $ref: '#/components/schemas/id'
6279 Notification type, following the `UserNotificationType` enum:
6281 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
6283 - `2` NEW_COMMENT_ON_MY_VIDEO
6285 - `3` NEW_ABUSE_FOR_MODERATORS
6287 - `4` BLACKLIST_ON_MY_VIDEO
6289 - `5` UNBLACKLIST_ON_MY_VIDEO
6291 - `6` MY_VIDEO_PUBLISHED
6293 - `7` MY_VIDEO_IMPORT_SUCCESS
6295 - `8` MY_VIDEO_IMPORT_ERROR
6297 - `9` NEW_USER_REGISTRATION
6301 - `11` COMMENT_MENTION
6303 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
6305 - `13` NEW_INSTANCE_FOLLOWER
6307 - `14` AUTO_INSTANCE_FOLLOWING
6313 - $ref: '#/components/schemas/VideoInfo'
6317 $ref: '#/components/schemas/ActorInfo'
6323 $ref: '#/components/schemas/id'
6326 $ref: '#/components/schemas/VideoInfo'
6331 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
6341 $ref: '#/components/schemas/id'
6345 $ref: '#/components/schemas/VideoInfo'
6347 $ref: '#/components/schemas/ActorInfo'
6353 $ref: '#/components/schemas/id'
6356 - $ref: '#/components/schemas/VideoInfo'
6362 $ref: '#/components/schemas/id'
6365 - $ref: '#/components/schemas/VideoInfo'
6369 - $ref: '#/components/schemas/ActorInfo'
6375 $ref: '#/components/schemas/id'
6377 $ref: '#/components/schemas/ActorInfo'
6405 NotificationListResponse:
6414 $ref: '#/components/schemas/Notification'
6419 example: peertube-plugin-auth-ldap
6447 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
6450 additionalProperties: true
6466 $ref: '#/components/schemas/Plugin'
6473 description: User can stream multiple times in a permanent live
6482 description: RTMP stream key to use to stream into this live video
6486 description: User can stream multiple times in a permanent live
6493 'https://search.example.org/api/v1/search/videos':
6495 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
6498 description: successful operation
6502 $ref: '#/components/schemas/VideoListResponse'