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'
1474 summary: List video abuses
1484 description: only list the report with this id
1487 - name: predefinedReason
1489 description: predefined reason the listed reports should contain
1503 description: plain search that will match with video titles, reporter names and more
1508 description: 'The video playlist privacy (Pending = `1`, Rejected = `2`, Accepted = `3`)'
1515 - name: searchReporter
1517 description: only list reports of a specific reporter
1520 - name: searchReportee
1521 description: only list reports of a specific reportee
1527 description: only list reports of a specific video
1530 - name: searchVideoChannel
1532 description: only list reports of a specific video channel
1535 - $ref: '#/components/parameters/start'
1536 - $ref: '#/components/parameters/count'
1537 - $ref: '#/components/parameters/abusesSort'
1540 description: successful operation
1546 $ref: '#/components/schemas/VideoAbuse'
1547 '/videos/{id}/abuse':
1550 summary: Report an abuse
1557 - $ref: '#/components/parameters/idOrUUID'
1566 description: Reason why the user reports this video
1570 description: Reason categories that help triage reports
1585 description: Timestamp in the video that marks the beginning of the report
1589 description: Timestamp in the video that marks the ending of the report
1595 description: successful operation
1597 description: incorrect request parameters
1598 '/videos/{id}/abuse/{abuseId}':
1601 summary: Update an abuse
1609 - $ref: '#/components/parameters/idOrUUID'
1610 - $ref: '#/components/parameters/abuseId'
1618 $ref: '#/components/schemas/VideoAbuseStateSet'
1621 description: Update the report comment visible only to the moderation team
1624 description: successful operation
1626 description: video abuse not found
1631 summary: Delete an abuse
1637 - $ref: '#/components/parameters/idOrUUID'
1638 - $ref: '#/components/parameters/abuseId'
1641 description: successful operation
1643 description: block not found
1645 '/videos/{id}/blacklist':
1647 summary: Block a video
1655 - $ref: '#/components/parameters/idOrUUID'
1658 description: successful operation
1660 summary: Unblock a video by its id
1668 - $ref: '#/components/parameters/idOrUUID'
1671 description: successful operation
1673 description: block not found
1678 summary: List video blocks
1687 list only blocks that match this type:
1691 - `2`: automatic block that needs review
1699 description: plain search that will match with video titles, and more
1702 - $ref: '#/components/parameters/start'
1703 - $ref: '#/components/parameters/count'
1704 - $ref: '#/components/parameters/blacklistsSort'
1707 description: successful operation
1719 $ref: '#/components/schemas/VideoBlacklist'
1720 /videos/{id}/captions:
1722 summary: List captions of a video
1726 - $ref: '#/components/parameters/idOrUUID'
1729 description: successful operation
1741 $ref: '#/components/schemas/VideoCaption'
1742 /videos/{id}/captions/{captionLanguage}:
1744 summary: Add or replace a video caption
1748 - $ref: '#/components/parameters/idOrUUID'
1749 - $ref: '#/components/parameters/captionLanguage'
1752 multipart/form-data:
1757 description: The file to upload.
1762 contentType: text/vtt, application/x-subrip, text/plain
1765 description: successful operation
1767 description: video or language not found
1769 summary: Delete a video caption
1773 - $ref: '#/components/parameters/idOrUUID'
1774 - $ref: '#/components/parameters/captionLanguage'
1777 description: successful operation
1779 description: video or language or caption for that language not found
1782 summary: List video channels
1786 - $ref: '#/components/parameters/start'
1787 - $ref: '#/components/parameters/count'
1788 - $ref: '#/components/parameters/sort'
1791 description: successful operation
1803 $ref: '#/components/schemas/VideoChannel'
1805 summary: Create a video channel
1812 description: successful operation
1817 $ref: '#/components/schemas/VideoChannelCreate'
1818 '/video-channels/{channelHandle}':
1820 summary: Get a video channel
1824 - $ref: '#/components/parameters/channelHandle'
1827 description: successful operation
1831 $ref: '#/components/schemas/VideoChannel'
1833 summary: Update a video channel
1839 - $ref: '#/components/parameters/channelHandle'
1842 description: successful operation
1847 $ref: '#/components/schemas/VideoChannelUpdate'
1849 summary: Delete a video channel
1855 - $ref: '#/components/parameters/channelHandle'
1858 description: successful operation
1859 '/video-channels/{channelHandle}/videos':
1861 summary: List videos of a video channel
1866 - $ref: '#/components/parameters/channelHandle'
1867 - $ref: '#/components/parameters/categoryOneOf'
1868 - $ref: '#/components/parameters/tagsOneOf'
1869 - $ref: '#/components/parameters/tagsAllOf'
1870 - $ref: '#/components/parameters/licenceOneOf'
1871 - $ref: '#/components/parameters/languageOneOf'
1872 - $ref: '#/components/parameters/nsfw'
1873 - $ref: '#/components/parameters/filter'
1874 - $ref: '#/components/parameters/skipCount'
1875 - $ref: '#/components/parameters/start'
1876 - $ref: '#/components/parameters/count'
1877 - $ref: '#/components/parameters/videosSort'
1880 description: successful operation
1884 $ref: '#/components/schemas/VideoListResponse'
1886 /video-playlists/privacies:
1888 summary: List available playlist privacies
1893 description: successful operation
1902 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
1906 summary: List video playlists
1910 - $ref: '#/components/parameters/start'
1911 - $ref: '#/components/parameters/count'
1912 - $ref: '#/components/parameters/sort'
1915 description: successful operation
1927 $ref: '#/components/schemas/VideoPlaylist'
1929 summary: Create a video playlist
1930 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
1937 description: successful operation
1952 multipart/form-data:
1957 description: Video playlist display name
1960 description: Video playlist thumbnail file
1964 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
1966 description: Video playlist description
1969 description: Video channel in which the playlist will be published
1975 contentType: image/jpeg
1977 /video-playlists/{id}:
1979 summary: Get a video playlist
1983 - $ref: '#/components/parameters/idOrUUID'
1986 description: successful operation
1990 $ref: '#/components/schemas/VideoPlaylist'
1992 summary: Update a video playlist
1993 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2000 description: successful operation
2002 - $ref: '#/components/parameters/idOrUUID'
2005 multipart/form-data:
2010 description: Video playlist display name
2013 description: Video playlist thumbnail file
2017 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2019 description: Video playlist description
2022 description: Video channel in which the playlist will be published
2026 contentType: image/jpeg
2028 summary: Delete a video playlist
2034 - $ref: '#/components/parameters/idOrUUID'
2037 description: successful operation
2039 /video-playlists/{id}/videos:
2041 summary: 'List videos of a playlist'
2046 - $ref: '#/components/parameters/idOrUUID'
2049 description: successful operation
2053 $ref: '#/components/schemas/VideoListResponse'
2055 summary: 'Add a video in a playlist'
2062 - $ref: '#/components/parameters/idOrUUID'
2065 description: successful operation
2071 videoPlaylistElement:
2084 description: 'Video to add in the playlist'
2087 description: 'Start the video at this specific timestamp (in seconds)'
2090 description: 'Stop the video at this specific timestamp (in seconds)'
2094 /video-playlists/{id}/videos/reorder:
2096 summary: 'Reorder a playlist'
2102 - $ref: '#/components/parameters/idOrUUID'
2105 description: successful operation
2114 description: 'Start position of the element to reorder'
2116 insertAfterPosition:
2118 description: 'New position for the block to reorder, to add the block before the first element'
2122 description: 'How many element from `startPosition` to reorder'
2126 - insertAfterPosition
2128 /video-playlists/{id}/videos/{playlistElementId}:
2130 summary: 'Update a playlist element'
2136 - $ref: '#/components/parameters/idOrUUID'
2137 - $ref: '#/components/parameters/playlistElementId'
2140 description: successful operation
2149 description: 'Start the video at this specific timestamp (in seconds)'
2152 description: 'Stop the video at this specific timestamp (in seconds)'
2154 summary: 'Delete an element from a playlist'
2160 - $ref: '#/components/parameters/idOrUUID'
2161 - $ref: '#/components/parameters/playlistElementId'
2164 description: successful operation
2166 '/users/me/video-playlists/videos-exist':
2168 summary: 'Check video exists in my playlists'
2177 description: The video ids to check
2184 description: successful operation
2204 '/accounts/{name}/video-channels':
2206 summary: List video channels of an account
2211 - $ref: '#/components/parameters/name'
2214 description: include view statistics for the last 30 days (only if authentified as the account user)
2217 - $ref: '#/components/parameters/start'
2218 - $ref: '#/components/parameters/count'
2219 - $ref: '#/components/parameters/sort'
2222 description: successful operation
2228 $ref: '#/components/schemas/VideoChannel'
2229 '/accounts/{name}/ratings':
2231 summary: List ratings of an account
2237 - $ref: '#/components/parameters/name'
2238 - $ref: '#/components/parameters/start'
2239 - $ref: '#/components/parameters/count'
2240 - $ref: '#/components/parameters/sort'
2244 description: Optionally filter which ratings to retrieve
2252 description: successful operation
2258 $ref: '#/components/schemas/VideoRating'
2259 '/videos/{id}/comment-threads':
2261 summary: List threads of a video
2265 - $ref: '#/components/parameters/idOrUUID'
2266 - $ref: '#/components/parameters/start'
2267 - $ref: '#/components/parameters/count'
2268 - $ref: '#/components/parameters/commentsSort'
2271 description: successful operation
2275 $ref: '#/components/schemas/CommentThreadResponse'
2277 summary: Create a thread
2283 - $ref: '#/components/parameters/idOrUUID'
2286 description: successful operation
2290 $ref: '#/components/schemas/CommentThreadPostResponse'
2292 description: video does not exist
2301 description: 'Text comment'
2305 '/videos/{id}/comment-threads/{threadId}':
2307 summary: Get a thread
2311 - $ref: '#/components/parameters/idOrUUID'
2312 - $ref: '#/components/parameters/threadId'
2315 description: successful operation
2319 $ref: '#/components/schemas/VideoCommentThreadTree'
2320 '/videos/{id}/comments/{commentId}':
2322 summary: Reply to a thread of a video
2328 - $ref: '#/components/parameters/idOrUUID'
2329 - $ref: '#/components/parameters/commentId'
2332 description: successful operation
2336 $ref: '#/components/schemas/CommentThreadPostResponse'
2338 description: thread or video does not exist
2347 description: 'Text comment'
2352 summary: Delete a comment or a reply
2358 - $ref: '#/components/parameters/idOrUUID'
2359 - $ref: '#/components/parameters/commentId'
2362 description: successful operation
2364 description: cannot remove comment of another user
2366 description: comment or video does not exist
2368 description: comment is already deleted
2369 '/videos/{id}/rate':
2371 summary: Like/dislike a video
2377 - $ref: '#/components/parameters/idOrUUID'
2380 description: successful operation
2382 description: video does not exist
2387 summary: Search videos
2392 allowEmptyValue: false
2394 String to search. If the user can make a remote URI search, and the string is an URI then the
2395 PeerTube instance will fetch the remote object and add it to its database. Then,
2396 you can use the REST API to fetch the complete video information and interact with it.
2399 - $ref: '#/components/parameters/categoryOneOf'
2400 - $ref: '#/components/parameters/tagsOneOf'
2401 - $ref: '#/components/parameters/tagsAllOf'
2402 - $ref: '#/components/parameters/licenceOneOf'
2403 - $ref: '#/components/parameters/languageOneOf'
2404 - $ref: '#/components/parameters/nsfw'
2405 - $ref: '#/components/parameters/filter'
2406 - $ref: '#/components/parameters/skipCount'
2407 - $ref: '#/components/parameters/start'
2408 - $ref: '#/components/parameters/count'
2409 - $ref: '#/components/parameters/searchTarget'
2410 - $ref: '#/components/parameters/videosSearchSort'
2413 description: Get videos that are published after this date
2419 description: Get videos that are published before this date
2423 - name: originallyPublishedStartDate
2425 description: Get videos that are originally published after this date
2429 - name: originallyPublishedEndDate
2431 description: Get videos that are originally published before this date
2437 description: Get videos that have this minimum duration
2442 description: Get videos that have this maximum duration
2446 'searchTarget === search-index':
2447 $ref: '#/components/callbacks/searchIndex'
2450 description: successful operation
2454 $ref: '#/components/schemas/VideoListResponse'
2456 description: search index unavailable
2457 /search/video-channels:
2461 summary: Search channels
2467 String to search. If the user can make a remote URI search, and the string is an URI then the
2468 PeerTube instance will fetch the remote object and add it to its database. Then,
2469 you can use the REST API to fetch the complete channel information and interact with it.
2472 - $ref: '#/components/parameters/start'
2473 - $ref: '#/components/parameters/count'
2474 - $ref: '#/components/parameters/searchTarget'
2475 - $ref: '#/components/parameters/sort'
2477 'searchTarget === search-index':
2478 $ref: '#/components/callbacks/searchIndex'
2481 description: successful operation
2487 $ref: '#/components/schemas/VideoChannel'
2489 description: search index unavailable
2490 /blocklist/accounts:
2494 summary: List account blocks
2499 - $ref: '#/components/parameters/start'
2500 - $ref: '#/components/parameters/count'
2501 - $ref: '#/components/parameters/sort'
2504 description: successful operation
2508 summary: Block an account
2520 example: chocobozzz@example.org
2521 description: account to block, in the form `username@domain`
2526 description: successful operation
2528 description: self-blocking forbidden
2529 '/blocklist/accounts/{accountName}':
2533 summary: Unblock an account by its handle
2541 description: account to unblock, in the form `username@domain`
2546 description: successful operation
2548 description: account or account block does not exist
2553 summary: List server blocks
2558 - $ref: '#/components/parameters/start'
2559 - $ref: '#/components/parameters/count'
2560 - $ref: '#/components/parameters/sort'
2563 description: successful operation
2567 summary: Block a server
2580 description: server domain to block
2585 description: successful operation
2587 description: self-blocking forbidden
2588 '/blocklist/servers/{host}':
2592 summary: Unblock a server by its domain
2600 description: server domain to unblock
2606 description: successful operation
2608 description: account block does not exist
2612 - Instance Redundancy
2613 summary: Update a server redundancy policy
2621 description: server domain to mirror
2633 description: allow mirroring of the host's local videos
2638 description: successful operation
2640 description: server is not already known
2645 summary: List videos being mirrored
2653 description: direction of the mirror
2659 - $ref: '#/components/parameters/start'
2660 - $ref: '#/components/parameters/count'
2661 - $ref: '#/components/parameters/videoRedundanciesSort'
2664 description: successful operation
2670 $ref: '#/components/schemas/VideoRedundancy'
2674 summary: Mirror a video
2690 description: successful operation
2692 description: cannot mirror a local video
2694 description: video does not exist
2696 description: video is already mirrored
2697 /redundancy/videos/{redundancyId}:
2701 summary: Delete a mirror done on a video
2706 - name: redundancyId
2709 description: id of an existing redundancy on a video
2714 description: successful operation
2716 description: video redundancy not found
2717 '/feeds/video-comments.{format}':
2721 summary: List comments on videos
2723 - url: 'https://peertube2.cpy.re'
2724 description: Live Test Server (live data - latest nightly version)
2725 - url: 'https://peertube3.cpy.re'
2726 description: Live Test Server (live data - latest RC version)
2727 - url: 'https://peertube.cpy.re'
2728 description: Live Test Server (live data - stable version)
2733 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2746 description: 'limit listing to a specific video'
2751 description: 'limit listing to a specific account'
2756 description: 'limit listing to a specific account'
2759 - name: videoChannelId
2761 description: 'limit listing to a specific video channel'
2764 - name: videoChannelName
2766 description: 'limit listing to a specific video channel'
2771 description: successful operation
2776 default: 'max-age=900' # 15 min cache
2780 $ref: '#/components/schemas/VideoCommentsForXML'
2781 application/rss+xml:
2783 $ref: '#/components/schemas/VideoCommentsForXML'
2786 $ref: '#/components/schemas/VideoCommentsForXML'
2787 application/atom+xml:
2789 $ref: '#/components/schemas/VideoCommentsForXML'
2794 x-summary: field inconsistencies
2797 - videoId filter is mixed with a channel filter
2799 description: video, video channel or account not found
2801 description: accept header unsupported
2802 '/feeds/videos.{format}':
2806 summary: List videos
2808 - url: 'https://peertube2.cpy.re'
2809 description: Live Test Server (live data - latest nightly version)
2810 - url: 'https://peertube3.cpy.re'
2811 description: Live Test Server (live data - latest RC version)
2812 - url: 'https://peertube.cpy.re'
2813 description: Live Test Server (live data - stable version)
2818 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2831 description: 'limit listing to a specific account'
2836 description: 'limit listing to a specific account'
2839 - name: videoChannelId
2841 description: 'limit listing to a specific video channel'
2844 - name: videoChannelName
2846 description: 'limit listing to a specific video channel'
2849 - $ref: '#/components/parameters/sort'
2850 - $ref: '#/components/parameters/nsfw'
2851 - $ref: '#/components/parameters/filter'
2854 description: successful operation
2859 default: 'max-age=900' # 15 min cache
2863 $ref: '#/components/schemas/VideosForXML'
2866 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
2867 application/rss+xml:
2869 $ref: '#/components/schemas/VideosForXML'
2872 $ref: '#/components/schemas/VideosForXML'
2873 application/atom+xml:
2875 $ref: '#/components/schemas/VideosForXML'
2880 description: video channel or account not found
2882 description: accept header unsupported
2887 summary: List plugins
2900 - $ref: '#/components/parameters/start'
2901 - $ref: '#/components/parameters/count'
2902 - $ref: '#/components/parameters/sort'
2905 description: successful operation
2909 $ref: '#/components/schemas/PluginResponse'
2914 summary: List available plugins
2927 - name: currentPeerTubeEngine
2931 - $ref: '#/components/parameters/start'
2932 - $ref: '#/components/parameters/count'
2933 - $ref: '#/components/parameters/sort'
2936 description: successful operation
2940 $ref: '#/components/schemas/PluginResponse'
2942 description: plugin index unavailable
2947 summary: Install a plugin
2960 example: peertube-plugin-auth-ldap
2963 additionalProperties: false
2970 additionalProperties: false
2973 description: successful operation
2975 description: should have either `npmName` or `path` set
2980 summary: Update a plugin
2993 example: peertube-plugin-auth-ldap
2996 additionalProperties: false
3003 additionalProperties: false
3006 description: successful operation
3008 description: should have either `npmName` or `path` set
3010 description: existing plugin not found
3015 summary: Uninstall a plugin
3027 description: name of the plugin/theme in its package.json
3028 example: peertube-plugin-auth-ldap
3033 description: successful operation
3035 description: existing plugin not found
3040 summary: Get a plugin
3045 - $ref: '#/components/parameters/npmName'
3048 description: successful operation
3052 $ref: '#/components/schemas/Plugin'
3054 description: plugin not found
3055 /plugins/{npmName}/settings:
3059 summary: Set a plugin's settings
3064 - $ref: '#/components/parameters/npmName'
3073 additionalProperties: true
3076 description: successful operation
3078 description: plugin not found
3079 /plugins/{npmName}/public-settings:
3083 summary: Get a plugin's public settings
3085 - $ref: '#/components/parameters/npmName'
3088 description: successful operation
3093 additionalProperties: true
3095 description: plugin not found
3096 /plugins/{npmName}/registered-settings:
3100 summary: Get a plugin's registered settings
3105 - $ref: '#/components/parameters/npmName'
3108 description: successful operation
3113 additionalProperties: true
3115 description: plugin not found
3117 - url: 'https://peertube2.cpy.re/api/v1'
3118 description: Live Test Server (live data - latest nightly version)
3119 - url: 'https://peertube3.cpy.re/api/v1'
3120 description: Live Test Server (live data - latest RC version)
3121 - url: 'https://peertube.cpy.re/api/v1'
3122 description: Live Test Server (live data - stable version)
3129 description: Offset used to paginate results
3137 description: "Number of items to return"
3147 description: Sort column
3156 If the administrator enabled search index support, you can override the default search target.
3159 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3160 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3161 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3162 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3163 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3164 * 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
3165 the data from the origin instance API
3175 description: Sort videos by criteria
3190 description: Sort videos by criteria
3205 description: Sort comments by criteria
3215 description: Sort blacklists by criteria
3231 description: Sort users by criteria
3242 description: Sort abuses by criteria
3249 videoRedundanciesSort:
3253 description: Sort abuses by criteria
3262 description: The name of the account
3265 example: chocobozzz | chocobozzz@example.org
3270 description: The user id
3279 description: The object id or uuid
3287 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3289 name: playlistElementId
3292 description: Playlist element id
3299 description: Video abuse id
3303 name: captionLanguage
3306 description: The caption language
3313 description: The video channel handle
3316 example: my_username | my_username@example.com
3318 name: subscriptionHandle
3321 description: The subscription handle
3324 example: my_username | my_username@example.com
3329 description: The thread id (root comment id)
3336 description: The comment id
3343 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3356 description: tag(s) of the video
3369 description: tag(s) of the video, where all should be present in the video
3382 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
3395 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3408 description: if you don't need the `total` in the response
3419 description: whether to include nsfw videos, if any
3430 Special filters (local for instance) which might require special rights:
3431 * `local` - only videos local to the instance
3432 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3442 description: list of uris to check if each is part of the user subscriptions
3452 description: name of the plugin/theme on npmjs.com or in its package.json
3455 example: peertube-plugin-auth-ldap
3459 In the header: *Authorization: Bearer <token\>*
3462 Authenticating via OAuth requires the following steps:
3465 - Have an account with sufficient authorization levels
3467 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3470 - Make Authenticated Requests
3474 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3477 moderator: Moderator scope
3480 VideoConstantNumber:
3486 VideoConstantString:
3493 VideoPlaylistPrivacySet:
3499 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3500 VideoPlaylistPrivacyConstant:
3503 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3507 VideoPlaylistTypeSet:
3512 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3513 VideoPlaylistTypeConstant:
3516 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3527 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3528 VideoPrivacyConstant:
3531 $ref: '#/components/schemas/VideoPrivacySet'
3548 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3559 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3569 description: 'The video playlist privacy (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3570 VideoAbuseStateConstant:
3573 $ref: '#/components/schemas/VideoAbuseStateSet'
3576 VideoAbusePredefinedReasons:
3589 example: [spamOrMisleading]
3591 VideoResolutionConstant:
3595 description: 'Video resolution (240, 360, 720 ...)'
3600 VideoScheduledUpdate:
3603 $ref: '#/components/schemas/VideoPrivacySet'
3607 description: When to update the video
3627 - $ref: '#/components/schemas/Avatar'
3628 VideoChannelSummary:
3645 - $ref: '#/components/schemas/Avatar'
3657 - $ref: '#/components/schemas/Video'
3663 $ref: '#/components/schemas/VideoResolutionConstant'
3666 description: 'Video file size in bytes'
3684 VideoStreamingPlaylists:
3692 description: 'Playlist type (HLS = `1`)'
3702 $ref: '#/components/schemas/VideoFile'
3718 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3729 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3739 originallyPublishedAt:
3743 $ref: '#/components/schemas/VideoConstantNumber'
3745 $ref: '#/components/schemas/VideoConstantNumber'
3747 $ref: '#/components/schemas/VideoConstantString'
3749 $ref: '#/components/schemas/VideoPrivacyConstant'
3759 example: What is PeerTube?
3762 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3765 example: /static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3768 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
3784 $ref: '#/components/schemas/VideoStateConstant'
3788 - $ref: '#/components/schemas/VideoScheduledUpdate'
3796 $ref: '#/components/schemas/AccountSummary'
3798 $ref: '#/components/schemas/VideoChannelSummary'
3807 - $ref: '#/components/schemas/Video'
3814 description: A text tell the audience how to support the video creator
3815 example: Please support my work on <insert crowdfunding plateform>! <3
3817 $ref: '#/components/schemas/VideoChannel'
3819 $ref: '#/components/schemas/Account'
3824 example: [flowers, gardening]
3828 $ref: '#/components/schemas/VideoFile'
3841 $ref: '#/components/schemas/VideoStreamingPlaylists'
3842 FileRedundancyInformation:
3879 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3886 $ref: '#/components/schemas/FileRedundancyInformation'
3890 $ref: '#/components/schemas/FileRedundancyInformation'
3891 VideoImportStateConstant:
3899 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
3911 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
3915 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
3919 $ref: '#/components/schemas/VideoImportStateConstant'
3929 $ref: '#/components/schemas/Video'
3937 example: The video is a spam
3939 $ref: '#/components/schemas/VideoAbusePredefinedReasons'
3941 $ref: '#/components/schemas/Account'
3943 $ref: '#/components/schemas/VideoAbuseStateConstant'
3946 example: Decided to ban the server since it spams us regularly
3957 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3978 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4007 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4023 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4033 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4035 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4037 $ref: '#/components/schemas/AccountSummary'
4039 $ref: '#/components/schemas/VideoChannelSummary'
4061 totalRepliesFromVideoAuthor:
4066 $ref: '#/components/schemas/Account'
4067 VideoCommentThreadTree:
4070 $ref: '#/components/schemas/VideoComment'
4074 $ref: '#/components/schemas/VideoCommentThreadTree'
4078 $ref: '#/components/schemas/VideoConstantString'
4133 $ref: '#/components/schemas/Avatar'
4136 - $ref: '#/components/schemas/Actor'
4149 description: timestamp within the video, in seconds
4216 allowedForCurrentIP:
4218 requiresEmailVerification:
4422 requiresEmailVerification:
4447 allowAdditionalExtensions:
4515 $ref: '#/components/schemas/Actor'
4517 $ref: '#/components/schemas/Actor'
4520 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4549 - activitypub-http-unicast
4550 - activitypub-http-broadcast
4551 - activitypub-http-fetcher
4552 - activitypub-follow
4558 - activitypub-refresher
4562 additionalProperties: true
4565 additionalProperties: true
4589 VideoUploadResponse:
4600 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4601 CommentThreadResponse:
4610 $ref: '#/components/schemas/VideoComment'
4611 CommentThreadPostResponse:
4614 $ref: '#/components/schemas/VideoComment'
4624 $ref: '#/components/schemas/Video'
4632 description: The user username
4638 description: The user email
4641 description: Theme enabled by this user
4644 description: Has the user confirmed their email address?
4646 $ref: '#/components/schemas/NSFWPolicy'
4649 description: Enable P2P in the player
4652 description: Automatically start playing the video on the watch page
4654 $ref: '#/components/schemas/UserRole'
4663 description: The user video quota
4666 description: The user daily video quota
4671 videoAbusesAcceptedCount:
4673 videoAbusesCreatedCount:
4677 noInstanceConfigWarningModal:
4688 $ref: '#/components/schemas/Account'
4692 $ref: '#/components/schemas/VideoChannel'
4697 description: The user username
4703 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
4709 description: The user email
4712 description: The user video quota
4715 description: The user daily video quota
4717 $ref: '#/components/schemas/UserRole'
4729 description: The user id
4733 description: The updated email of the user
4736 description: The updated video quota of the user
4739 description: The updated daily video quota of the user
4741 $ref: '#/components/schemas/UserRole'
4753 description: Your new password
4759 description: Your new email
4762 description: Your new displayNSFW
4769 description: Your new autoPlayVideo
4779 description: Id of the video
4782 description: Rating of the video
4789 $ref: '#/components/schemas/Video'
4792 description: 'Rating of the video'
4800 description: The username of the user
4803 pattern: '/^[a-z0-9._]{1,50}$/'
4807 description: The password of the user
4813 description: The email of the user
4816 description: The user display name
4824 description: The name for the default channel
4825 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4828 description: The display name for the default channel
4845 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
4846 example: Please support my work on <insert crowdfunding plateform>! <3
4858 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
4859 example: Please support my work on <insert crowdfunding plateform>! <3
4860 bulkVideosSupportUpdate:
4862 description: 'Update the support field for all videos of this channel'
4867 name: 'media:peerLink'
4876 - application/x-bittorrent
4882 name: 'media:content'
4913 VideoCommentsForXML:
4948 description: video watch page URL
4951 description: video canonical URL
4955 description: video publication date
4958 description: video description
4961 description: video description
4964 description: publisher user name
4967 description: video category (MRSS)
4970 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
4985 description: video embed path, relative to the canonical URL domain (MRSS)
4994 description: video watch path, relative to the canonical URL domain (MRSS)
5015 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5016 'media:description':
5023 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5026 description: main streamable file for the video
5036 - application/x-bittorrent
5045 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)
5048 - $ref: '#/components/schemas/MRSSPeerLink'
5049 - $ref: '#/components/schemas/MRSSGroupContent'
5050 NotificationSettingValue:
5071 Notification type, following the `UserNotificationType` enum:
5073 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5075 - `2` NEW_COMMENT_ON_MY_VIDEO
5077 - `3` NEW_VIDEO_ABUSE_FOR_MODERATORS
5079 - `4` BLACKLIST_ON_MY_VIDEO
5081 - `5` UNBLACKLIST_ON_MY_VIDEO
5083 - `6` MY_VIDEO_PUBLISHED
5085 - `7` MY_VIDEO_IMPORT_SUCCESS
5087 - `8` MY_VIDEO_IMPORT_ERROR
5089 - `9` NEW_USER_REGISTRATION
5093 - `11` COMMENT_MENTION
5095 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5097 - `13` NEW_INSTANCE_FOLLOWER
5099 - `14` AUTO_INSTANCE_FOLLOWING
5105 - $ref: '#/components/schemas/VideoInfo'
5109 $ref: '#/components/schemas/ActorInfo'
5118 $ref: '#/components/schemas/VideoInfo'
5139 $ref: '#/components/schemas/VideoInfo'
5141 $ref: '#/components/schemas/ActorInfo'
5150 - $ref: '#/components/schemas/VideoInfo'
5159 - $ref: '#/components/schemas/VideoInfo'
5163 - $ref: '#/components/schemas/ActorInfo'
5171 $ref: '#/components/schemas/ActorInfo'
5199 NotificationListResponse:
5208 $ref: '#/components/schemas/Notification'
5213 example: peertube-plugin-auth-ldap
5241 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5244 additionalProperties: true
5260 $ref: '#/components/schemas/Plugin'
5263 '{%CONFIG.SEARCH.SEARCH_INDEX.URL%}/api/v1/search/videos/':
5265 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5268 description: successful operation
5272 $ref: '#/components/schemas/VideoListResponse'