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
17 The PeerTube API is built on HTTP(S) and is RESTful. You can use your favorite
18 HTTP/REST library for your programming language to use PeerTube. The spec API is fully compatible with
19 [openapi-generator](https://github.com/OpenAPITools/openapi-generator/wiki/API-client-generator-HOWTO)
20 which generates a client SDK in the language of your choice - we generate some client SDKs automatically:
22 - [Python](https://framagit.org/framasoft/peertube/clients/python)
23 - [Go](https://framagit.org/framasoft/peertube/clients/go)
24 - [Kotlin](https://framagit.org/framasoft/peertube/clients/kotlin)
26 See the [Quick Start guide](https://docs.joinpeertube.org/#/api-rest-getting-started) so you can play with the PeerTube API.
30 When you sign up for an account, you are given the possibility to generate
31 sessions, and authenticate using this session token. One session token can
32 currently be used at a time.
36 Accounts are given permissions based on their role. There are three roles on
37 PeerTube: Administrator, Moderator, and User. See the [roles guide](https://docs.joinpeertube.org/#/admin-managing-users?id=roles) for a detail of their permissions.
41 The API uses standard HTTP status codes to indicate the success or failure
42 of the API call. The body of the response will be JSON in the following
47 "code": "unauthorized_request", // example inner error code
48 "error": "Token is invalid." // example exposed error message
52 url: https://docs.joinpeertube.org/api-rest-reference.html
56 Accounts encompass remote accounts discovered across the federation,
57 and correspond to the main Actor, along with video channels a user can create, which
60 When a comment is posted, it is done with your Account's Actor.
63 Using some features of PeerTube require authentication, for which User
64 provide different levels of permission as well as associated user
65 information. Each user has a corresponding local Account for federation.
68 Operations related to your own User, when logged-in.
69 - name: My Subscriptions
71 Operations related to your subscriptions to video channels, their
72 new videos, and how to keep up to date with their latest publications!
73 - name: My Notifications
75 Notifications following new videos, follows or reports. They allow you
76 to keep track of the interactions and overall important information that
77 concerns you. You MAY set per-notification type delivery preference, to
78 receive the info either by mail, by in-browser notification or both.
81 Each server exposes public information regarding supported videos and
85 Jobs are long-running tasks enqueued and processed by the instance
86 itself. No additional worker registration is currently available.
87 - name: Instance Follows
89 Managing servers which the instance interacts with is crucial to the
90 concept of federation in PeerTube and external video indexation. The PeerTube
91 server then deals with inter-server ActivityPub operations and propagates
92 information across its social graph by posting activities to actors' inbox
95 url: https://docs.joinpeertube.org/#/admin-following-instances?id=instances-follows
96 - name: Instance Redundancy
98 Redundancy is part of the inter-server solidarity that PeerTube fosters.
99 Manage the list of instances you wish to help by seeding their videos according
100 to the policy of video selection of your choice. Note that you have a similar functionality
101 to mirror individual videos, see `Video Mirroring`.
103 url: https://docs.joinpeertube.org/#/admin-following-instances?id=instances-redundancy
106 Managing plugins installed from a local path or from NPM, or search for new ones.
108 url: https://docs.joinpeertube.org/#/api-plugins
111 Video abuses deal with reports of local or remote videos alike.
114 Operations dealing with listing, uploading, fetching or modifying videos.
117 The search helps to find _videos_ or _channels_ from within the instance and beyond.
118 Videos from other instances federated by the instance (that is, instances
119 followed by the instance) can be found via keywords and other criteria of
122 Administrators can also enable the use of a remote search system, indexing
123 videos and channels not could be not federated by the instance.
124 - name: Video Comments
126 Operations dealing with comments to a video. Comments are organized in
128 - name: Video Playlists
130 Operations dealing with playlists of videos. Playlists are bound to users
132 - name: Video Channels
134 Operations dealing with the creation, modification and listing of videos within a channel.
137 Operations dealing with blocking videos (removing them from view and
138 preventing interactions).
141 Like/dislike a video.
144 Server syndication feeds
161 - Video Ownership Change
173 - name: Instance Configuration
177 - Instance Redundancy
187 summary: Get an account
189 - $ref: '#/components/parameters/name'
192 description: successful operation
196 $ref: '#/components/schemas/Account'
198 description: account not found
199 '/accounts/{name}/videos':
204 summary: 'List videos of an account'
206 - $ref: '#/components/parameters/name'
207 - $ref: '#/components/parameters/categoryOneOf'
208 - $ref: '#/components/parameters/tagsOneOf'
209 - $ref: '#/components/parameters/tagsAllOf'
210 - $ref: '#/components/parameters/licenceOneOf'
211 - $ref: '#/components/parameters/languageOneOf'
212 - $ref: '#/components/parameters/nsfw'
213 - $ref: '#/components/parameters/filter'
214 - $ref: '#/components/parameters/skipCount'
215 - $ref: '#/components/parameters/start'
216 - $ref: '#/components/parameters/count'
217 - $ref: '#/components/parameters/videosSort'
220 description: successful operation
224 $ref: '#/components/schemas/VideoListResponse'
228 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
229 .then(function(response) {
230 return response.json()
231 }).then(function(data) {
237 http -b GET https://peertube2.cpy.re/api/v1/accounts/{name}/videos
243 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
245 http = Net::HTTP.new(uri.host, uri.port)
248 response = http.get(uri.request_uri)
250 puts JSON.parse(response.read_body)
255 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
263 summary: List accounts
265 - $ref: '#/components/parameters/start'
266 - $ref: '#/components/parameters/count'
267 - $ref: '#/components/parameters/sort'
270 description: successful operation
276 $ref: '#/components/schemas/Account'
281 summary: Get instance public configuration
284 description: successful operation
288 $ref: '#/components/schemas/ServerConfig'
291 summary: Get instance "About" information
296 description: successful operation
300 $ref: '#/components/schemas/ServerConfigAbout'
303 summary: Get instance runtime configuration
311 description: successful operation
315 $ref: '#/components/schemas/ServerConfigCustom'
317 summary: Set instance runtime configuration
325 description: successful operation
327 x-summary: field inconsistencies
330 - the emailer is disabled and the instance is open to registrations
331 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
333 summary: Delete instance runtime configuration
341 description: successful operation
344 summary: List instance jobs
354 description: The state of the job
363 - $ref: '#/components/parameters/start'
364 - $ref: '#/components/parameters/count'
365 - $ref: '#/components/parameters/sort'
368 description: successful operation
381 $ref: '#/components/schemas/Job'
382 '/server/following/{host}':
389 summary: Unfollow a server
394 description: 'The host to unfollow '
400 description: successful operation
405 summary: List instance followers
407 - $ref: '#/components/parameters/start'
408 - $ref: '#/components/parameters/count'
409 - $ref: '#/components/parameters/sort'
412 description: successful operation
418 $ref: '#/components/schemas/Follow'
423 summary: List instances followed by the server
442 - $ref: '#/components/parameters/start'
443 - $ref: '#/components/parameters/count'
444 - $ref: '#/components/parameters/sort'
447 description: successful operation
453 $ref: '#/components/schemas/Follow'
460 summary: Follow a server
463 description: successful operation
465 description: cannot follow a non-HTTPS server
480 summary: Create a user
488 description: user created
492 $ref: '#/components/schemas/AddUserResponse'
496 operationId: getUserId
498 id: '$response.body#/user/id'
501 operationId: putUserId
503 id: '$response.body#/user/id'
506 operationId: delUserId
508 id: '$response.body#/user/id'
510 description: insufficient authority to create an admin or moderator
515 $ref: '#/components/schemas/AddUser'
516 description: User to create
525 - $ref: '#/components/parameters/start'
526 - $ref: '#/components/parameters/count'
527 - $ref: '#/components/parameters/usersSort'
530 description: successful operation
536 $ref: '#/components/schemas/User'
539 - $ref: '#/components/parameters/id'
541 summary: Delete a user
547 operationId: delUserId
550 description: successful operation
557 operationId: getUserId
560 description: successful operation
564 $ref: '#/components/schemas/User'
566 summary: Update a user
571 operationId: putUserId
574 description: successful operation
579 $ref: '#/components/schemas/UpdateUser'
583 summary: Register a user
588 description: successful operation
593 $ref: '#/components/schemas/RegisterUser'
597 summary: Get my user information
605 description: successful operation
611 $ref: '#/components/schemas/User'
613 summary: Update my user information
621 description: successful operation
626 $ref: '#/components/schemas/UpdateMe'
628 /users/me/videos/imports:
630 summary: Get video imports of my user
638 - $ref: '#/components/parameters/start'
639 - $ref: '#/components/parameters/count'
640 - $ref: '#/components/parameters/sort'
643 description: successful operation
647 $ref: '#/components/schemas/VideoImport'
648 /users/me/video-quota-used:
650 summary: Get my user used quota
658 description: successful operation
663 '/users/me/videos/{videoId}/rating':
665 summary: Get rate of my user for a video
675 description: 'The video id '
680 description: successful operation
684 $ref: '#/components/schemas/GetMeVideoRating'
687 summary: Get videos of my user
695 - $ref: '#/components/parameters/start'
696 - $ref: '#/components/parameters/count'
697 - $ref: '#/components/parameters/sort'
700 description: successful operation
704 $ref: '#/components/schemas/VideoListResponse'
705 /users/me/subscriptions:
707 summary: Get my user subscriptions
714 - $ref: '#/components/parameters/start'
715 - $ref: '#/components/parameters/count'
716 - $ref: '#/components/parameters/sort'
719 description: successful operation
723 summary: Add subscription to my user
736 description: uri of the video channels to subscribe to
742 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
745 description: successful operation
746 /users/me/subscriptions/exist:
748 summary: Get if subscriptions exist for my user
755 - $ref: '#/components/parameters/subscriptionsUris'
758 description: successful operation
763 /users/me/subscriptions/videos:
765 summary: List videos of subscriptions of my user
773 - $ref: '#/components/parameters/categoryOneOf'
774 - $ref: '#/components/parameters/tagsOneOf'
775 - $ref: '#/components/parameters/tagsAllOf'
776 - $ref: '#/components/parameters/licenceOneOf'
777 - $ref: '#/components/parameters/languageOneOf'
778 - $ref: '#/components/parameters/nsfw'
779 - $ref: '#/components/parameters/filter'
780 - $ref: '#/components/parameters/skipCount'
781 - $ref: '#/components/parameters/start'
782 - $ref: '#/components/parameters/count'
783 - $ref: '#/components/parameters/videosSort'
786 description: successful operation
790 $ref: '#/components/schemas/VideoListResponse'
791 '/users/me/subscriptions/{subscriptionHandle}':
793 summary: Get subscription of my user
800 - $ref: '#/components/parameters/subscriptionHandle'
803 description: successful operation
807 $ref: '#/components/schemas/VideoChannel'
809 summary: Delete subscription of my user
816 - $ref: '#/components/parameters/subscriptionHandle'
819 description: successful operation
820 /users/me/notifications:
822 summary: List my notifications
830 description: only list unread notifications
833 - $ref: '#/components/parameters/start'
834 - $ref: '#/components/parameters/count'
835 - $ref: '#/components/parameters/sort'
838 description: successful operation
842 $ref: '#/components/schemas/NotificationListResponse'
843 /users/me/notifications/read:
845 summary: Mark notifications as read by their id
858 description: ids of the notifications to mark as read
865 description: successful operation
866 /users/me/notifications/read-all:
868 summary: Mark all my notification as read
875 description: successful operation
876 /users/me/notification-settings:
878 summary: Update my notification settings
889 newVideoFromSubscription:
890 $ref: '#/components/schemas/NotificationSettingValue'
892 $ref: '#/components/schemas/NotificationSettingValue'
893 videoAbuseAsModerator:
894 $ref: '#/components/schemas/NotificationSettingValue'
895 videoAutoBlacklistAsModerator:
896 $ref: '#/components/schemas/NotificationSettingValue'
898 $ref: '#/components/schemas/NotificationSettingValue'
900 $ref: '#/components/schemas/NotificationSettingValue'
901 myVideoImportFinished:
902 $ref: '#/components/schemas/NotificationSettingValue'
904 $ref: '#/components/schemas/NotificationSettingValue'
906 $ref: '#/components/schemas/NotificationSettingValue'
908 $ref: '#/components/schemas/NotificationSettingValue'
910 $ref: '#/components/schemas/NotificationSettingValue'
911 autoInstanceFollowing:
912 $ref: '#/components/schemas/NotificationSettingValue'
915 description: successful operation
916 /users/me/avatar/pick:
918 summary: Update my user avatar
925 description: successful operation
929 $ref: '#/components/schemas/Avatar'
937 description: The file to upload.
942 contentType: image/png, image/jpeg
945 summary: List video ownership changes
947 - Video Ownership Change
952 description: successful operation
953 '/videos/ownership/{id}/accept':
955 summary: Accept ownership change request
957 - Video Ownership Change
961 - $ref: '#/components/parameters/idOrUUID'
964 description: successful operation
966 description: cannot terminate an ownership change of another user
968 description: video owneship change not found
969 '/videos/ownership/{id}/refuse':
971 summary: Refuse ownership change request
973 - Video Ownership Change
977 - $ref: '#/components/parameters/idOrUUID'
980 description: successful operation
982 description: cannot terminate an ownership change of another user
984 description: video owneship change not found
985 '/videos/{id}/give-ownership':
987 summary: Request ownership change
989 - Video Ownership Change
993 - $ref: '#/components/parameters/idOrUUID'
997 application/x-www-form-urlencoded:
1007 description: successful operation
1009 description: changing video ownership to a remote account is not supported yet
1011 description: video not found
1014 summary: List videos
1018 - $ref: '#/components/parameters/categoryOneOf'
1019 - $ref: '#/components/parameters/tagsOneOf'
1020 - $ref: '#/components/parameters/tagsAllOf'
1021 - $ref: '#/components/parameters/licenceOneOf'
1022 - $ref: '#/components/parameters/languageOneOf'
1023 - $ref: '#/components/parameters/nsfw'
1024 - $ref: '#/components/parameters/filter'
1025 - $ref: '#/components/parameters/skipCount'
1026 - $ref: '#/components/parameters/start'
1027 - $ref: '#/components/parameters/count'
1028 - $ref: '#/components/parameters/videosSort'
1031 description: successful operation
1035 $ref: '#/components/schemas/VideoListResponse'
1038 summary: List available video categories
1043 description: successful operation
1052 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1055 summary: List available video licences
1060 description: successful operation
1069 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1072 summary: List available video languages
1077 description: successful operation
1086 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1089 summary: List available video privacies
1094 description: successful operation
1103 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1106 summary: Update a video
1112 - $ref: '#/components/parameters/idOrUUID'
1115 description: successful operation
1118 multipart/form-data:
1123 description: Video thumbnail file
1127 description: Video preview file
1131 description: Video category
1135 description: Video licence
1139 description: Video language
1142 $ref: '#/components/schemas/VideoPrivacySet'
1144 description: Video description
1147 description: Whether or not we wait transcoding before publish the video
1150 description: A text tell the audience how to support the video creator
1151 example: Please support my work on <insert crowdfunding plateform>! <3
1154 description: Whether or not this video contains sensitive content
1157 description: Video name
1160 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1169 description: Enable or disable comments for this video
1171 originallyPublishedAt:
1172 description: Date when the content was originally published
1176 $ref: '#/components/schemas/VideoScheduledUpdate'
1179 contentType: image/jpeg
1181 contentType: image/jpeg
1183 summary: Get a video
1187 - $ref: '#/components/parameters/idOrUUID'
1190 description: successful operation
1194 $ref: '#/components/schemas/VideoDetails'
1196 summary: Delete a video
1202 - $ref: '#/components/parameters/idOrUUID'
1205 description: successful operation
1206 '/videos/{id}/description':
1208 summary: Get complete video description
1212 - $ref: '#/components/parameters/idOrUUID'
1215 description: successful operation
1220 '/videos/{id}/views':
1222 summary: Add a view to a video
1226 - $ref: '#/components/parameters/idOrUUID'
1229 description: successful operation
1230 '/videos/{id}/watching':
1232 summary: Set watching progress of a video
1238 - $ref: '#/components/parameters/idOrUUID'
1243 $ref: '#/components/schemas/UserWatchingVideo'
1247 description: successful operation
1250 summary: Upload a video
1257 description: successful operation
1261 $ref: '#/components/schemas/VideoUploadResponse'
1263 description: user video quota is exceeded with this video
1265 description: upload has timed out
1267 description: invalid input file
1270 multipart/form-data:
1275 description: Video file
1279 description: Channel id that will contain this video
1282 description: Video thumbnail file
1286 description: Video preview file
1290 $ref: '#/components/schemas/VideoPrivacySet'
1292 description: Video category
1296 description: Video licence
1299 description: Video language
1303 description: Video description
1306 description: Whether or not we wait transcoding before publish the video
1309 description: A text tell the audience how to support the video creator
1310 example: Please support my work on <insert crowdfunding plateform>! <3
1313 description: Whether or not this video contains sensitive content
1316 description: Video name
1319 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1329 description: Enable or disable comments for this video
1331 originallyPublishedAt:
1332 description: Date when the content was originally published
1336 $ref: '#/components/schemas/VideoScheduledUpdate'
1343 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1345 contentType: image/jpeg
1347 contentType: image/jpeg
1351 ## DEPENDENCIES: httpie, jq
1352 # pip install httpie
1353 USERNAME="<your_username>"
1354 PASSWORD="<your_password>"
1355 FILE_PATH="<your_file_path>"
1356 CHANNEL_ID="<your_channel_id>"
1359 API_PATH="https://peertube2.cpy.re/api/v1"
1361 client_id=$(http -b GET "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1362 client_secret=$(http -b GET "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1363 token=$(http -b --form POST "$API_PATH/users/token" \
1364 client_id="$client_id" client_secret="$client_secret" grant_type=password response_type=code \
1365 username=$USERNAME \
1366 password=$PASSWORD \
1367 | jq -r ".access_token")
1369 http -b --form POST "$API_PATH/videos/upload" \
1370 videofile@$FILE_PATH \
1371 channelId=$CHANNEL_ID \
1373 "Authorization:Bearer $token"
1376 summary: Import a video
1377 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1384 multipart/form-data:
1389 description: Torrent File
1393 description: HTTP target URL
1396 description: Magnet URI
1399 description: Channel id that will contain this video
1402 description: Video thumbnail file
1406 description: Video preview file
1410 $ref: '#/components/schemas/VideoPrivacySet'
1412 description: Video category
1415 description: Video licence
1418 description: Video language
1421 description: Video description
1424 description: Whether or not we wait transcoding before publish the video
1427 description: A text tell the audience how to support the video creator
1428 example: Please support my work on <insert crowdfunding plateform>! <3
1431 description: Whether or not this video contains sensitive content
1434 description: Video name
1437 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1446 description: Enable or disable comments for this video
1449 $ref: '#/components/schemas/VideoScheduledUpdate'
1455 contentType: application/x-bittorrent
1457 contentType: image/jpeg
1459 contentType: image/jpeg
1462 description: successful operation
1466 $ref: '#/components/schemas/VideoUploadResponse'
1468 description: HTTP or Torrent/magnetURI import not enabled
1470 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1473 summary: List video abuses
1483 description: only list the report with this id
1486 - name: predefinedReason
1488 description: predefined reason the listed reports should contain
1502 description: plain search that will match with video titles, reporter names and more
1507 description: 'The video playlist privacy (Pending = `1`, Rejected = `2`, Accepted = `3`)'
1514 - name: searchReporter
1516 description: only list reports of a specific reporter
1519 - name: searchReportee
1520 description: only list reports of a specific reportee
1526 description: only list reports of a specific video
1529 - name: searchVideoChannel
1531 description: only list reports of a specific video channel
1534 - $ref: '#/components/parameters/start'
1535 - $ref: '#/components/parameters/count'
1536 - $ref: '#/components/parameters/abusesSort'
1539 description: successful operation
1545 $ref: '#/components/schemas/VideoAbuse'
1546 '/videos/{id}/abuse':
1548 summary: Report an abuse
1555 - $ref: '#/components/parameters/idOrUUID'
1564 description: Reason why the user reports this video
1568 description: Reason categories that help triage reports
1583 description: Timestamp in the video that marks the beginning of the report
1587 description: Timestamp in the video that marks the ending of the report
1593 description: successful operation
1595 description: incorrect request parameters
1596 '/videos/{id}/abuse/{abuseId}':
1598 summary: Update an abuse
1606 - $ref: '#/components/parameters/idOrUUID'
1607 - $ref: '#/components/parameters/abuseId'
1615 $ref: '#/components/schemas/VideoAbuseStateSet'
1618 description: Update the report comment visible only to the moderation team
1621 description: successful operation
1623 description: video abuse not found
1627 summary: Delete an abuse
1633 - $ref: '#/components/parameters/idOrUUID'
1634 - $ref: '#/components/parameters/abuseId'
1637 description: successful operation
1639 description: block not found
1641 '/videos/{id}/blacklist':
1643 summary: Block a video
1651 - $ref: '#/components/parameters/idOrUUID'
1654 description: successful operation
1656 summary: Unblock a video by its id
1664 - $ref: '#/components/parameters/idOrUUID'
1667 description: successful operation
1669 description: block not found
1674 summary: List video blocks
1683 list only blocks that match this type:
1687 - `2`: automatic block that needs review
1695 description: plain search that will match with video titles, and more
1698 - $ref: '#/components/parameters/start'
1699 - $ref: '#/components/parameters/count'
1700 - $ref: '#/components/parameters/blacklistsSort'
1703 description: successful operation
1715 $ref: '#/components/schemas/VideoBlacklist'
1716 /videos/{id}/captions:
1718 summary: List captions of a video
1722 - $ref: '#/components/parameters/idOrUUID'
1725 description: successful operation
1737 $ref: '#/components/schemas/VideoCaption'
1738 /videos/{id}/captions/{captionLanguage}:
1740 summary: Add or replace a video caption
1744 - $ref: '#/components/parameters/idOrUUID'
1745 - $ref: '#/components/parameters/captionLanguage'
1748 multipart/form-data:
1753 description: The file to upload.
1758 contentType: text/vtt, application/x-subrip, text/plain
1761 description: successful operation
1763 description: video or language not found
1765 summary: Delete a video caption
1769 - $ref: '#/components/parameters/idOrUUID'
1770 - $ref: '#/components/parameters/captionLanguage'
1773 description: successful operation
1775 description: video or language or caption for that language not found
1778 summary: List video channels
1782 - $ref: '#/components/parameters/start'
1783 - $ref: '#/components/parameters/count'
1784 - $ref: '#/components/parameters/sort'
1787 description: successful operation
1799 $ref: '#/components/schemas/VideoChannel'
1801 summary: Create a video channel
1808 description: successful operation
1813 $ref: '#/components/schemas/VideoChannelCreate'
1814 '/video-channels/{channelHandle}':
1816 summary: Get a video channel
1820 - $ref: '#/components/parameters/channelHandle'
1823 description: successful operation
1827 $ref: '#/components/schemas/VideoChannel'
1829 summary: Update a video channel
1835 - $ref: '#/components/parameters/channelHandle'
1838 description: successful operation
1843 $ref: '#/components/schemas/VideoChannelUpdate'
1845 summary: Delete a video channel
1851 - $ref: '#/components/parameters/channelHandle'
1854 description: successful operation
1855 '/video-channels/{channelHandle}/videos':
1857 summary: List videos of a video channel
1862 - $ref: '#/components/parameters/channelHandle'
1863 - $ref: '#/components/parameters/categoryOneOf'
1864 - $ref: '#/components/parameters/tagsOneOf'
1865 - $ref: '#/components/parameters/tagsAllOf'
1866 - $ref: '#/components/parameters/licenceOneOf'
1867 - $ref: '#/components/parameters/languageOneOf'
1868 - $ref: '#/components/parameters/nsfw'
1869 - $ref: '#/components/parameters/filter'
1870 - $ref: '#/components/parameters/skipCount'
1871 - $ref: '#/components/parameters/start'
1872 - $ref: '#/components/parameters/count'
1873 - $ref: '#/components/parameters/videosSort'
1876 description: successful operation
1880 $ref: '#/components/schemas/VideoListResponse'
1882 /video-playlists/privacies:
1884 summary: List available playlist privacies
1889 description: successful operation
1898 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
1902 summary: List video playlists
1906 - $ref: '#/components/parameters/start'
1907 - $ref: '#/components/parameters/count'
1908 - $ref: '#/components/parameters/sort'
1911 description: successful operation
1923 $ref: '#/components/schemas/VideoPlaylist'
1925 summary: Create a video playlist
1926 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
1933 description: successful operation
1948 multipart/form-data:
1953 description: Video playlist display name
1956 description: Video playlist thumbnail file
1960 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
1962 description: Video playlist description
1965 description: Video channel in which the playlist will be published
1971 contentType: image/jpeg
1973 /video-playlists/{id}:
1975 summary: Get a video playlist
1979 - $ref: '#/components/parameters/idOrUUID'
1982 description: successful operation
1986 $ref: '#/components/schemas/VideoPlaylist'
1988 summary: Update a video playlist
1989 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
1996 description: successful operation
1998 - $ref: '#/components/parameters/idOrUUID'
2001 multipart/form-data:
2006 description: Video playlist display name
2009 description: Video playlist thumbnail file
2013 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2015 description: Video playlist description
2018 description: Video channel in which the playlist will be published
2022 contentType: image/jpeg
2024 summary: Delete a video playlist
2030 - $ref: '#/components/parameters/idOrUUID'
2033 description: successful operation
2035 /video-playlists/{id}/videos:
2037 summary: 'List videos of a playlist'
2042 - $ref: '#/components/parameters/idOrUUID'
2045 description: successful operation
2049 $ref: '#/components/schemas/VideoListResponse'
2051 summary: 'Add a video in a playlist'
2058 - $ref: '#/components/parameters/idOrUUID'
2061 description: successful operation
2067 videoPlaylistElement:
2080 description: 'Video to add in the playlist'
2083 description: 'Start the video at this specific timestamp (in seconds)'
2086 description: 'Stop the video at this specific timestamp (in seconds)'
2090 /video-playlists/{id}/videos/reorder:
2092 summary: 'Reorder a playlist'
2098 - $ref: '#/components/parameters/idOrUUID'
2101 description: successful operation
2110 description: 'Start position of the element to reorder'
2112 insertAfterPosition:
2114 description: 'New position for the block to reorder, to add the block before the first element'
2118 description: 'How many element from `startPosition` to reorder'
2122 - insertAfterPosition
2124 /video-playlists/{id}/videos/{playlistElementId}:
2126 summary: 'Update a playlist element'
2132 - $ref: '#/components/parameters/idOrUUID'
2133 - $ref: '#/components/parameters/playlistElementId'
2136 description: successful operation
2145 description: 'Start the video at this specific timestamp (in seconds)'
2148 description: 'Stop the video at this specific timestamp (in seconds)'
2150 summary: 'Delete an element from a playlist'
2156 - $ref: '#/components/parameters/idOrUUID'
2157 - $ref: '#/components/parameters/playlistElementId'
2160 description: successful operation
2162 '/users/me/video-playlists/videos-exist':
2164 summary: 'Check video exists in my playlists'
2173 description: The video ids to check
2180 description: successful operation
2200 '/accounts/{name}/video-channels':
2202 summary: List video channels of an account
2207 - $ref: '#/components/parameters/name'
2210 description: include view statistics for the last 30 days (only if authentified as the account user)
2213 - $ref: '#/components/parameters/start'
2214 - $ref: '#/components/parameters/count'
2215 - $ref: '#/components/parameters/sort'
2218 description: successful operation
2224 $ref: '#/components/schemas/VideoChannel'
2225 '/accounts/{name}/ratings':
2227 summary: List ratings of an account
2233 - $ref: '#/components/parameters/name'
2234 - $ref: '#/components/parameters/start'
2235 - $ref: '#/components/parameters/count'
2236 - $ref: '#/components/parameters/sort'
2240 description: Optionally filter which ratings to retrieve
2248 description: successful operation
2254 $ref: '#/components/schemas/VideoRating'
2255 '/videos/{id}/comment-threads':
2257 summary: List threads of a video
2261 - $ref: '#/components/parameters/idOrUUID'
2262 - $ref: '#/components/parameters/start'
2263 - $ref: '#/components/parameters/count'
2264 - $ref: '#/components/parameters/commentsSort'
2267 description: successful operation
2271 $ref: '#/components/schemas/CommentThreadResponse'
2273 summary: Create a thread
2279 - $ref: '#/components/parameters/idOrUUID'
2282 description: successful operation
2286 $ref: '#/components/schemas/CommentThreadPostResponse'
2288 description: video does not exist
2297 description: 'Text comment'
2301 '/videos/{id}/comment-threads/{threadId}':
2303 summary: Get a thread
2307 - $ref: '#/components/parameters/idOrUUID'
2308 - $ref: '#/components/parameters/threadId'
2311 description: successful operation
2315 $ref: '#/components/schemas/VideoCommentThreadTree'
2316 '/videos/{id}/comments/{commentId}':
2318 summary: Reply to a thread of a video
2324 - $ref: '#/components/parameters/idOrUUID'
2325 - $ref: '#/components/parameters/commentId'
2328 description: successful operation
2332 $ref: '#/components/schemas/CommentThreadPostResponse'
2334 description: thread or video does not exist
2343 description: 'Text comment'
2348 summary: Delete a comment or a reply
2354 - $ref: '#/components/parameters/idOrUUID'
2355 - $ref: '#/components/parameters/commentId'
2358 description: successful operation
2360 description: cannot remove comment of another user
2362 description: comment or video does not exist
2364 description: comment is already deleted
2365 '/videos/{id}/rate':
2367 summary: Like/dislike a video
2373 - $ref: '#/components/parameters/idOrUUID'
2376 description: successful operation
2378 description: video does not exist
2383 summary: Search videos
2388 allowEmptyValue: false
2390 String to search. If the user can make a remote URI search, and the string is an URI then the
2391 PeerTube instance will fetch the remote object and add it to its database. Then,
2392 you can use the REST API to fetch the complete video information and interact with it.
2395 - $ref: '#/components/parameters/categoryOneOf'
2396 - $ref: '#/components/parameters/tagsOneOf'
2397 - $ref: '#/components/parameters/tagsAllOf'
2398 - $ref: '#/components/parameters/licenceOneOf'
2399 - $ref: '#/components/parameters/languageOneOf'
2400 - $ref: '#/components/parameters/nsfw'
2401 - $ref: '#/components/parameters/filter'
2402 - $ref: '#/components/parameters/skipCount'
2403 - $ref: '#/components/parameters/start'
2404 - $ref: '#/components/parameters/count'
2405 - $ref: '#/components/parameters/searchTarget'
2406 - $ref: '#/components/parameters/videosSearchSort'
2409 description: Get videos that are published after this date
2415 description: Get videos that are published before this date
2419 - name: originallyPublishedStartDate
2421 description: Get videos that are originally published after this date
2425 - name: originallyPublishedEndDate
2427 description: Get videos that are originally published before this date
2433 description: Get videos that have this minimum duration
2438 description: Get videos that have this maximum duration
2442 'searchTarget === search-index':
2443 $ref: '#/components/callbacks/searchIndex'
2446 description: successful operation
2450 $ref: '#/components/schemas/VideoListResponse'
2452 description: search index unavailable
2453 /search/video-channels:
2457 summary: Search channels
2463 String to search. If the user can make a remote URI search, and the string is an URI then the
2464 PeerTube instance will fetch the remote object and add it to its database. Then,
2465 you can use the REST API to fetch the complete channel information and interact with it.
2468 - $ref: '#/components/parameters/start'
2469 - $ref: '#/components/parameters/count'
2470 - $ref: '#/components/parameters/searchTarget'
2471 - $ref: '#/components/parameters/sort'
2473 'searchTarget === search-index':
2474 $ref: '#/components/callbacks/searchIndex'
2477 description: successful operation
2483 $ref: '#/components/schemas/VideoChannel'
2485 description: search index unavailable
2486 /blocklist/accounts:
2490 summary: List account blocks
2495 - $ref: '#/components/parameters/start'
2496 - $ref: '#/components/parameters/count'
2497 - $ref: '#/components/parameters/sort'
2500 description: successful operation
2504 summary: Block an account
2516 example: chocobozzz@example.org
2517 description: account to block, in the form `username@domain`
2522 description: successful operation
2524 description: self-blocking forbidden
2525 '/blocklist/accounts/{accountName}':
2529 summary: Unblock an account by its handle
2537 description: account to unblock, in the form `username@domain`
2542 description: successful operation
2544 description: account or account block does not exist
2549 summary: List server blocks
2554 - $ref: '#/components/parameters/start'
2555 - $ref: '#/components/parameters/count'
2556 - $ref: '#/components/parameters/sort'
2559 description: successful operation
2563 summary: Block a server
2576 description: server domain to block
2581 description: successful operation
2583 description: self-blocking forbidden
2584 '/blocklist/servers/{host}':
2588 summary: Unblock a server by its domain
2596 description: server domain to unblock
2602 description: successful operation
2604 description: account block does not exist
2608 - Instance Redundancy
2609 summary: Update a server redundancy policy
2617 description: server domain to mirror
2629 description: allow mirroring of the host's local videos
2634 description: successful operation
2636 description: server is not already known
2641 summary: List videos being mirrored
2649 description: direction of the mirror
2655 - $ref: '#/components/parameters/start'
2656 - $ref: '#/components/parameters/count'
2657 - $ref: '#/components/parameters/videoRedundanciesSort'
2660 description: successful operation
2666 $ref: '#/components/schemas/VideoRedundancy'
2670 summary: Mirror a video
2686 description: successful operation
2688 description: cannot mirror a local video
2690 description: video does not exist
2692 description: video is already mirrored
2693 /redundancy/videos/{redundancyId}:
2697 summary: Delete a mirror done on a video
2702 - name: redundancyId
2705 description: id of an existing redundancy on a video
2710 description: successful operation
2712 description: video redundancy not found
2713 '/feeds/video-comments.{format}':
2717 summary: List comments on videos
2719 - url: 'https://peertube2.cpy.re'
2720 description: Live Test Server (live data - latest nightly version)
2721 - url: 'https://peertube3.cpy.re'
2722 description: Live Test Server (live data - latest RC version)
2723 - url: 'https://peertube.cpy.re'
2724 description: Live Test Server (live data - stable version)
2729 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2742 description: 'limit listing to a specific video'
2747 description: 'limit listing to a specific account'
2752 description: 'limit listing to a specific account'
2755 - name: videoChannelId
2757 description: 'limit listing to a specific video channel'
2760 - name: videoChannelName
2762 description: 'limit listing to a specific video channel'
2767 description: successful operation
2772 default: 'max-age=900' # 15 min cache
2776 $ref: '#/components/schemas/VideoCommentsForXML'
2777 application/rss+xml:
2779 $ref: '#/components/schemas/VideoCommentsForXML'
2782 $ref: '#/components/schemas/VideoCommentsForXML'
2783 application/atom+xml:
2785 $ref: '#/components/schemas/VideoCommentsForXML'
2790 x-summary: field inconsistencies
2793 - videoId filter is mixed with a channel filter
2795 description: video, video channel or account not found
2797 description: accept header unsupported
2798 '/feeds/videos.{format}':
2802 summary: List videos
2804 - url: 'https://peertube2.cpy.re'
2805 description: Live Test Server (live data - latest nightly version)
2806 - url: 'https://peertube3.cpy.re'
2807 description: Live Test Server (live data - latest RC version)
2808 - url: 'https://peertube.cpy.re'
2809 description: Live Test Server (live data - stable version)
2814 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2827 description: 'limit listing to a specific account'
2832 description: 'limit listing to a specific account'
2835 - name: videoChannelId
2837 description: 'limit listing to a specific video channel'
2840 - name: videoChannelName
2842 description: 'limit listing to a specific video channel'
2845 - $ref: '#/components/parameters/sort'
2846 - $ref: '#/components/parameters/nsfw'
2847 - $ref: '#/components/parameters/filter'
2850 description: successful operation
2855 default: 'max-age=900' # 15 min cache
2859 $ref: '#/components/schemas/VideosForXML'
2862 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
2863 application/rss+xml:
2865 $ref: '#/components/schemas/VideosForXML'
2868 $ref: '#/components/schemas/VideosForXML'
2869 application/atom+xml:
2871 $ref: '#/components/schemas/VideosForXML'
2876 description: video channel or account not found
2878 description: accept header unsupported
2883 summary: List plugins
2896 - $ref: '#/components/parameters/start'
2897 - $ref: '#/components/parameters/count'
2898 - $ref: '#/components/parameters/sort'
2901 description: successful operation
2905 $ref: '#/components/schemas/PluginResponse'
2910 summary: List available plugins
2923 - name: currentPeerTubeEngine
2927 - $ref: '#/components/parameters/start'
2928 - $ref: '#/components/parameters/count'
2929 - $ref: '#/components/parameters/sort'
2932 description: successful operation
2936 $ref: '#/components/schemas/PluginResponse'
2938 description: plugin index unavailable
2943 summary: Install a plugin
2956 example: peertube-plugin-auth-ldap
2959 additionalProperties: false
2966 additionalProperties: false
2969 description: successful operation
2971 description: should have either `npmName` or `path` set
2976 summary: Update a plugin
2989 example: peertube-plugin-auth-ldap
2992 additionalProperties: false
2999 additionalProperties: false
3002 description: successful operation
3004 description: should have either `npmName` or `path` set
3006 description: existing plugin not found
3011 summary: Uninstall a plugin
3023 description: name of the plugin/theme in its package.json
3024 example: peertube-plugin-auth-ldap
3029 description: successful operation
3031 description: existing plugin not found
3036 summary: Get a plugin
3041 - $ref: '#/components/parameters/npmName'
3044 description: successful operation
3048 $ref: '#/components/schemas/Plugin'
3050 description: plugin not found
3051 /plugins/{npmName}/settings:
3055 summary: Set a plugin's settings
3060 - $ref: '#/components/parameters/npmName'
3069 additionalProperties: true
3072 description: successful operation
3074 description: plugin not found
3075 /plugins/{npmName}/public-settings:
3079 summary: Get a plugin's public settings
3081 - $ref: '#/components/parameters/npmName'
3084 description: successful operation
3089 additionalProperties: true
3091 description: plugin not found
3092 /plugins/{npmName}/registered-settings:
3096 summary: Get a plugin's registered settings
3101 - $ref: '#/components/parameters/npmName'
3104 description: successful operation
3109 additionalProperties: true
3111 description: plugin not found
3113 - url: 'https://peertube2.cpy.re/api/v1'
3114 description: Live Test Server (live data - latest nightly version)
3115 - url: 'https://peertube3.cpy.re/api/v1'
3116 description: Live Test Server (live data - latest RC version)
3117 - url: 'https://peertube.cpy.re/api/v1'
3118 description: Live Test Server (live data - stable version)
3125 description: Offset used to paginate results
3133 description: "Number of items to return"
3143 description: Sort column
3152 If the administrator enabled search index support, you can override the default search target.
3155 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3156 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3157 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3158 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3159 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3160 * 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
3161 the data from the origin instance API
3171 description: Sort videos by criteria
3186 description: Sort videos by criteria
3201 description: Sort comments by criteria
3211 description: Sort blacklists by criteria
3227 description: Sort users by criteria
3238 description: Sort abuses by criteria
3245 videoRedundanciesSort:
3249 description: Sort abuses by criteria
3258 description: The name of the account
3261 example: chocobozzz | chocobozzz@example.org
3266 description: The user id
3275 description: The object id or uuid
3283 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3285 name: playlistElementId
3288 description: Playlist element id
3295 description: Video abuse id
3299 name: captionLanguage
3302 description: The caption language
3309 description: The video channel handle
3312 example: my_username | my_username@example.com
3314 name: subscriptionHandle
3317 description: The subscription handle
3320 example: my_username | my_username@example.com
3325 description: The thread id (root comment id)
3332 description: The comment id
3339 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3352 description: tag(s) of the video
3365 description: tag(s) of the video, where all should be present in the video
3378 description: language id of the video (see [/videos/languages](#tag/Video/paths/~1videos~1languages/get)). Use `_unknown` to filter on videos that don't have a video language
3391 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3404 description: if you don't need the `total` in the response
3415 description: whether to include nsfw videos, if any
3426 Special filters (local for instance) which might require special rights:
3427 * `local` - only videos local to the instance
3428 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3438 description: list of uris to check if each is part of the user subscriptions
3448 description: name of the plugin/theme on npmjs.com or in its package.json
3451 example: peertube-plugin-auth-ldap
3455 In the header: *Authorization: Bearer <token\>*
3458 Authenticating via OAuth requires the following steps:
3461 - Have an account with sufficient authorization levels
3463 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3466 - Make Authenticated Requests
3470 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3473 moderator: Moderator scope
3476 VideoConstantNumber:
3482 VideoConstantString:
3489 VideoPlaylistPrivacySet:
3495 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3496 VideoPlaylistPrivacyConstant:
3499 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3503 VideoPlaylistTypeSet:
3508 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3509 VideoPlaylistTypeConstant:
3512 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3523 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3524 VideoPrivacyConstant:
3527 $ref: '#/components/schemas/VideoPrivacySet'
3544 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3555 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3565 description: 'The video playlist privacy (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3566 VideoAbuseStateConstant:
3569 $ref: '#/components/schemas/VideoAbuseStateSet'
3572 VideoAbusePredefinedReasons:
3585 example: [spamOrMisleading]
3587 VideoResolutionConstant:
3591 description: 'Video resolution (240, 360, 720 ...)'
3596 VideoScheduledUpdate:
3599 $ref: '#/components/schemas/VideoPrivacySet'
3603 description: When to update the video
3623 - $ref: '#/components/schemas/Avatar'
3624 VideoChannelSummary:
3641 - $ref: '#/components/schemas/Avatar'
3653 - $ref: '#/components/schemas/Video'
3659 $ref: '#/components/schemas/VideoResolutionConstant'
3662 description: 'Video file size in bytes'
3680 VideoStreamingPlaylists:
3688 description: 'Playlist type (HLS = `1`)'
3698 $ref: '#/components/schemas/VideoFile'
3714 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3725 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3735 originallyPublishedAt:
3739 $ref: '#/components/schemas/VideoConstantNumber'
3741 $ref: '#/components/schemas/VideoConstantNumber'
3743 $ref: '#/components/schemas/VideoConstantString'
3745 $ref: '#/components/schemas/VideoPrivacyConstant'
3755 example: What is PeerTube?
3758 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3761 example: /static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3764 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
3780 $ref: '#/components/schemas/VideoStateConstant'
3784 - $ref: '#/components/schemas/VideoScheduledUpdate'
3792 $ref: '#/components/schemas/AccountSummary'
3794 $ref: '#/components/schemas/VideoChannelSummary'
3803 - $ref: '#/components/schemas/Video'
3810 description: A text tell the audience how to support the video creator
3811 example: Please support my work on <insert crowdfunding plateform>! <3
3813 $ref: '#/components/schemas/VideoChannel'
3815 $ref: '#/components/schemas/Account'
3820 example: [flowers, gardening]
3824 $ref: '#/components/schemas/VideoFile'
3837 $ref: '#/components/schemas/VideoStreamingPlaylists'
3838 FileRedundancyInformation:
3875 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3882 $ref: '#/components/schemas/FileRedundancyInformation'
3886 $ref: '#/components/schemas/FileRedundancyInformation'
3887 VideoImportStateConstant:
3895 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
3907 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
3911 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
3915 $ref: '#/components/schemas/VideoImportStateConstant'
3925 $ref: '#/components/schemas/Video'
3933 example: The video is a spam
3935 $ref: '#/components/schemas/VideoAbusePredefinedReasons'
3937 $ref: '#/components/schemas/Account'
3939 $ref: '#/components/schemas/VideoAbuseStateConstant'
3942 example: Decided to ban the server since it spams us regularly
3953 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3974 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4003 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4019 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4029 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4031 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4033 $ref: '#/components/schemas/AccountSummary'
4035 $ref: '#/components/schemas/VideoChannelSummary'
4057 totalRepliesFromVideoAuthor:
4062 $ref: '#/components/schemas/Account'
4063 VideoCommentThreadTree:
4066 $ref: '#/components/schemas/VideoComment'
4070 $ref: '#/components/schemas/VideoCommentThreadTree'
4074 $ref: '#/components/schemas/VideoConstantString'
4129 $ref: '#/components/schemas/Avatar'
4132 - $ref: '#/components/schemas/Actor'
4145 description: timestamp within the video, in seconds
4212 allowedForCurrentIP:
4214 requiresEmailVerification:
4418 requiresEmailVerification:
4443 allowAdditionalExtensions:
4511 $ref: '#/components/schemas/Actor'
4513 $ref: '#/components/schemas/Actor'
4516 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4545 - activitypub-http-unicast
4546 - activitypub-http-broadcast
4547 - activitypub-http-fetcher
4548 - activitypub-follow
4554 - activitypub-refresher
4558 additionalProperties: true
4561 additionalProperties: true
4585 VideoUploadResponse:
4596 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4597 CommentThreadResponse:
4606 $ref: '#/components/schemas/VideoComment'
4607 CommentThreadPostResponse:
4610 $ref: '#/components/schemas/VideoComment'
4620 $ref: '#/components/schemas/Video'
4628 description: The user username
4634 description: The user email
4637 description: Theme enabled by this user
4640 description: Has the user confirmed their email address?
4642 $ref: '#/components/schemas/NSFWPolicy'
4645 description: Enable P2P in the player
4648 description: Automatically start playing the video on the watch page
4650 $ref: '#/components/schemas/UserRole'
4659 description: The user video quota
4662 description: The user daily video quota
4667 videoAbusesAcceptedCount:
4669 videoAbusesCreatedCount:
4673 noInstanceConfigWarningModal:
4684 $ref: '#/components/schemas/Account'
4688 $ref: '#/components/schemas/VideoChannel'
4693 description: The user username
4699 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
4705 description: The user email
4708 description: The user video quota
4711 description: The user daily video quota
4713 $ref: '#/components/schemas/UserRole'
4725 description: The user id
4729 description: The updated email of the user
4732 description: The updated video quota of the user
4735 description: The updated daily video quota of the user
4737 $ref: '#/components/schemas/UserRole'
4749 description: Your new password
4755 description: Your new email
4758 description: Your new displayNSFW
4765 description: Your new autoPlayVideo
4775 description: Id of the video
4778 description: Rating of the video
4785 $ref: '#/components/schemas/Video'
4788 description: 'Rating of the video'
4796 description: The username of the user
4799 pattern: '/^[a-z0-9._]{1,50}$/'
4803 description: The password of the user
4809 description: The email of the user
4812 description: The user display name
4820 description: The name for the default channel
4821 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4824 description: The display name for the default channel
4841 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
4842 example: Please support my work on <insert crowdfunding plateform>! <3
4854 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
4855 example: Please support my work on <insert crowdfunding plateform>! <3
4856 bulkVideosSupportUpdate:
4858 description: 'Update the support field for all videos of this channel'
4863 name: 'media:peerLink'
4872 - application/x-bittorrent
4878 name: 'media:content'
4909 VideoCommentsForXML:
4944 description: video watch page URL
4947 description: video canonical URL
4951 description: video publication date
4954 description: video description
4957 description: video description
4960 description: publisher user name
4963 description: video category (MRSS)
4966 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
4981 description: video embed path, relative to the canonical URL domain (MRSS)
4990 description: video watch path, relative to the canonical URL domain (MRSS)
5011 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5012 'media:description':
5019 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5022 description: main streamable file for the video
5032 - application/x-bittorrent
5041 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)
5044 - $ref: '#/components/schemas/MRSSPeerLink'
5045 - $ref: '#/components/schemas/MRSSGroupContent'
5046 NotificationSettingValue:
5067 Notification type, following the `UserNotificationType` enum:
5069 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5071 - `2` NEW_COMMENT_ON_MY_VIDEO
5073 - `3` NEW_VIDEO_ABUSE_FOR_MODERATORS
5075 - `4` BLACKLIST_ON_MY_VIDEO
5077 - `5` UNBLACKLIST_ON_MY_VIDEO
5079 - `6` MY_VIDEO_PUBLISHED
5081 - `7` MY_VIDEO_IMPORT_SUCCESS
5083 - `8` MY_VIDEO_IMPORT_ERROR
5085 - `9` NEW_USER_REGISTRATION
5089 - `11` COMMENT_MENTION
5091 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5093 - `13` NEW_INSTANCE_FOLLOWER
5095 - `14` AUTO_INSTANCE_FOLLOWING
5101 - $ref: '#/components/schemas/VideoInfo'
5105 $ref: '#/components/schemas/ActorInfo'
5114 $ref: '#/components/schemas/VideoInfo'
5135 $ref: '#/components/schemas/VideoInfo'
5137 $ref: '#/components/schemas/ActorInfo'
5146 - $ref: '#/components/schemas/VideoInfo'
5155 - $ref: '#/components/schemas/VideoInfo'
5159 - $ref: '#/components/schemas/ActorInfo'
5167 $ref: '#/components/schemas/ActorInfo'
5195 NotificationListResponse:
5204 $ref: '#/components/schemas/Notification'
5209 example: peertube-plugin-auth-ldap
5237 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5240 additionalProperties: true
5256 $ref: '#/components/schemas/Plugin'
5259 '{%CONFIG.SEARCH.SEARCH_INDEX.URL%}/api/v1/search/videos/':
5261 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5264 description: successful operation
5268 $ref: '#/components/schemas/VideoListResponse'