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 Abuses deal with reports of local or remote videos/comments/accounts 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
526 - $ref: '#/components/parameters/usersSearch'
527 - $ref: '#/components/parameters/usersBlocked'
528 - $ref: '#/components/parameters/start'
529 - $ref: '#/components/parameters/count'
530 - $ref: '#/components/parameters/usersSort'
533 description: successful operation
539 $ref: '#/components/schemas/User'
542 - $ref: '#/components/parameters/id'
544 summary: Delete a user
550 operationId: delUserId
553 description: successful operation
560 operationId: getUserId
563 description: successful operation
567 $ref: '#/components/schemas/User'
569 summary: Update a user
574 operationId: putUserId
577 description: successful operation
582 $ref: '#/components/schemas/UpdateUser'
586 summary: Register a user
591 description: successful operation
596 $ref: '#/components/schemas/RegisterUser'
600 summary: Get my user information
608 description: successful operation
614 $ref: '#/components/schemas/User'
616 summary: Update my user information
624 description: successful operation
629 $ref: '#/components/schemas/UpdateMe'
631 /users/me/videos/imports:
633 summary: Get video imports of my user
641 - $ref: '#/components/parameters/start'
642 - $ref: '#/components/parameters/count'
643 - $ref: '#/components/parameters/sort'
646 description: successful operation
650 $ref: '#/components/schemas/VideoImport'
651 /users/me/video-quota-used:
653 summary: Get my user used quota
661 description: successful operation
666 '/users/me/videos/{videoId}/rating':
668 summary: Get rate of my user for a video
678 description: 'The video id '
683 description: successful operation
687 $ref: '#/components/schemas/GetMeVideoRating'
690 summary: Get videos of my user
698 - $ref: '#/components/parameters/start'
699 - $ref: '#/components/parameters/count'
700 - $ref: '#/components/parameters/sort'
703 description: successful operation
707 $ref: '#/components/schemas/VideoListResponse'
708 /users/me/subscriptions:
710 summary: Get my user subscriptions
717 - $ref: '#/components/parameters/start'
718 - $ref: '#/components/parameters/count'
719 - $ref: '#/components/parameters/sort'
722 description: successful operation
726 summary: Add subscription to my user
739 description: uri of the video channels to subscribe to
745 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
748 description: successful operation
749 /users/me/subscriptions/exist:
751 summary: Get if subscriptions exist for my user
758 - $ref: '#/components/parameters/subscriptionsUris'
761 description: successful operation
766 /users/me/subscriptions/videos:
768 summary: List videos of subscriptions of my user
776 - $ref: '#/components/parameters/categoryOneOf'
777 - $ref: '#/components/parameters/tagsOneOf'
778 - $ref: '#/components/parameters/tagsAllOf'
779 - $ref: '#/components/parameters/licenceOneOf'
780 - $ref: '#/components/parameters/languageOneOf'
781 - $ref: '#/components/parameters/nsfw'
782 - $ref: '#/components/parameters/filter'
783 - $ref: '#/components/parameters/skipCount'
784 - $ref: '#/components/parameters/start'
785 - $ref: '#/components/parameters/count'
786 - $ref: '#/components/parameters/videosSort'
789 description: successful operation
793 $ref: '#/components/schemas/VideoListResponse'
794 '/users/me/subscriptions/{subscriptionHandle}':
796 summary: Get subscription of my user
803 - $ref: '#/components/parameters/subscriptionHandle'
806 description: successful operation
810 $ref: '#/components/schemas/VideoChannel'
812 summary: Delete subscription of my user
819 - $ref: '#/components/parameters/subscriptionHandle'
822 description: successful operation
823 /users/me/notifications:
825 summary: List my notifications
833 description: only list unread notifications
836 - $ref: '#/components/parameters/start'
837 - $ref: '#/components/parameters/count'
838 - $ref: '#/components/parameters/sort'
841 description: successful operation
845 $ref: '#/components/schemas/NotificationListResponse'
846 /users/me/notifications/read:
848 summary: Mark notifications as read by their id
861 description: ids of the notifications to mark as read
868 description: successful operation
869 /users/me/notifications/read-all:
871 summary: Mark all my notification as read
878 description: successful operation
879 /users/me/notification-settings:
881 summary: Update my notification settings
892 newVideoFromSubscription:
893 $ref: '#/components/schemas/NotificationSettingValue'
895 $ref: '#/components/schemas/NotificationSettingValue'
897 $ref: '#/components/schemas/NotificationSettingValue'
898 videoAutoBlacklistAsModerator:
899 $ref: '#/components/schemas/NotificationSettingValue'
901 $ref: '#/components/schemas/NotificationSettingValue'
903 $ref: '#/components/schemas/NotificationSettingValue'
904 myVideoImportFinished:
905 $ref: '#/components/schemas/NotificationSettingValue'
907 $ref: '#/components/schemas/NotificationSettingValue'
909 $ref: '#/components/schemas/NotificationSettingValue'
911 $ref: '#/components/schemas/NotificationSettingValue'
913 $ref: '#/components/schemas/NotificationSettingValue'
914 autoInstanceFollowing:
915 $ref: '#/components/schemas/NotificationSettingValue'
918 description: successful operation
919 /users/me/avatar/pick:
921 summary: Update my user avatar
928 description: successful operation
932 $ref: '#/components/schemas/Avatar'
940 description: The file to upload.
945 contentType: image/png, image/jpeg
948 summary: List video ownership changes
950 - Video Ownership Change
955 description: successful operation
956 '/videos/ownership/{id}/accept':
958 summary: Accept ownership change request
960 - Video Ownership Change
964 - $ref: '#/components/parameters/idOrUUID'
967 description: successful operation
969 description: cannot terminate an ownership change of another user
971 description: video owneship change not found
972 '/videos/ownership/{id}/refuse':
974 summary: Refuse ownership change request
976 - Video Ownership Change
980 - $ref: '#/components/parameters/idOrUUID'
983 description: successful operation
985 description: cannot terminate an ownership change of another user
987 description: video owneship change not found
988 '/videos/{id}/give-ownership':
990 summary: Request ownership change
992 - Video Ownership Change
996 - $ref: '#/components/parameters/idOrUUID'
1000 application/x-www-form-urlencoded:
1010 description: successful operation
1012 description: changing video ownership to a remote account is not supported yet
1014 description: video not found
1017 summary: List videos
1021 - $ref: '#/components/parameters/categoryOneOf'
1022 - $ref: '#/components/parameters/tagsOneOf'
1023 - $ref: '#/components/parameters/tagsAllOf'
1024 - $ref: '#/components/parameters/licenceOneOf'
1025 - $ref: '#/components/parameters/languageOneOf'
1026 - $ref: '#/components/parameters/nsfw'
1027 - $ref: '#/components/parameters/filter'
1028 - $ref: '#/components/parameters/skipCount'
1029 - $ref: '#/components/parameters/start'
1030 - $ref: '#/components/parameters/count'
1031 - $ref: '#/components/parameters/videosSort'
1034 description: successful operation
1038 $ref: '#/components/schemas/VideoListResponse'
1041 summary: List available video categories
1046 description: successful operation
1055 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1058 summary: List available video licences
1063 description: successful operation
1072 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1075 summary: List available video languages
1080 description: successful operation
1089 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1092 summary: List available video privacies
1097 description: successful operation
1106 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1109 summary: Update a video
1115 - $ref: '#/components/parameters/idOrUUID'
1118 description: successful operation
1121 multipart/form-data:
1126 description: Video thumbnail file
1130 description: Video preview file
1134 description: Video category
1138 description: Video licence
1142 description: Video language
1145 $ref: '#/components/schemas/VideoPrivacySet'
1147 description: Video description
1150 description: Whether or not we wait transcoding before publish the video
1153 description: A text tell the audience how to support the video creator
1154 example: Please support my work on <insert crowdfunding plateform>! <3
1157 description: Whether or not this video contains sensitive content
1160 description: Video name
1163 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1172 description: Enable or disable comments for this video
1174 originallyPublishedAt:
1175 description: Date when the content was originally published
1179 $ref: '#/components/schemas/VideoScheduledUpdate'
1182 contentType: image/jpeg
1184 contentType: image/jpeg
1186 summary: Get a video
1190 - $ref: '#/components/parameters/idOrUUID'
1193 description: successful operation
1197 $ref: '#/components/schemas/VideoDetails'
1199 summary: Delete a video
1205 - $ref: '#/components/parameters/idOrUUID'
1208 description: successful operation
1209 '/videos/{id}/description':
1211 summary: Get complete video description
1215 - $ref: '#/components/parameters/idOrUUID'
1218 description: successful operation
1223 '/videos/{id}/views':
1225 summary: Add a view to a video
1229 - $ref: '#/components/parameters/idOrUUID'
1232 description: successful operation
1233 '/videos/{id}/watching':
1235 summary: Set watching progress of a video
1241 - $ref: '#/components/parameters/idOrUUID'
1246 $ref: '#/components/schemas/UserWatchingVideo'
1250 description: successful operation
1253 summary: Upload a video
1260 description: successful operation
1264 $ref: '#/components/schemas/VideoUploadResponse'
1266 description: user video quota is exceeded with this video
1268 description: upload has timed out
1270 description: invalid input file
1273 multipart/form-data:
1278 description: Video file
1282 description: Channel id that will contain this video
1285 description: Video thumbnail file
1289 description: Video preview file
1293 $ref: '#/components/schemas/VideoPrivacySet'
1295 description: Video category
1299 description: Video licence
1302 description: Video language
1306 description: Video description
1309 description: Whether or not we wait transcoding before publish the video
1312 description: A text tell the audience how to support the video creator
1313 example: Please support my work on <insert crowdfunding plateform>! <3
1316 description: Whether or not this video contains sensitive content
1319 description: Video name
1322 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1332 description: Enable or disable comments for this video
1334 originallyPublishedAt:
1335 description: Date when the content was originally published
1339 $ref: '#/components/schemas/VideoScheduledUpdate'
1346 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1348 contentType: image/jpeg
1350 contentType: image/jpeg
1354 ## DEPENDENCIES: httpie, jq
1355 # pip install httpie
1356 USERNAME="<your_username>"
1357 PASSWORD="<your_password>"
1358 FILE_PATH="<your_file_path>"
1359 CHANNEL_ID="<your_channel_id>"
1362 API_PATH="https://peertube2.cpy.re/api/v1"
1364 client_id=$(http -b GET "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1365 client_secret=$(http -b GET "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1366 token=$(http -b --form POST "$API_PATH/users/token" \
1367 client_id="$client_id" client_secret="$client_secret" grant_type=password response_type=code \
1368 username=$USERNAME \
1369 password=$PASSWORD \
1370 | jq -r ".access_token")
1372 http -b --form POST "$API_PATH/videos/upload" \
1373 videofile@$FILE_PATH \
1374 channelId=$CHANNEL_ID \
1376 "Authorization:Bearer $token"
1379 summary: Import a video
1380 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1387 multipart/form-data:
1392 description: Torrent File
1396 description: HTTP target URL
1399 description: Magnet URI
1402 description: Channel id that will contain this video
1405 description: Video thumbnail file
1409 description: Video preview file
1413 $ref: '#/components/schemas/VideoPrivacySet'
1415 description: Video category
1418 description: Video licence
1421 description: Video language
1424 description: Video description
1427 description: Whether or not we wait transcoding before publish the video
1430 description: A text tell the audience how to support the video creator
1431 example: Please support my work on <insert crowdfunding plateform>! <3
1434 description: Whether or not this video contains sensitive content
1437 description: Video name
1440 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1449 description: Enable or disable comments for this video
1452 $ref: '#/components/schemas/VideoScheduledUpdate'
1458 contentType: application/x-bittorrent
1460 contentType: image/jpeg
1462 contentType: image/jpeg
1465 description: successful operation
1469 $ref: '#/components/schemas/VideoUploadResponse'
1471 description: HTTP or Torrent/magnetURI import not enabled
1473 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1476 summary: List abuses
1486 description: only list the report with this id
1489 - name: predefinedReason
1491 description: predefined reason the listed reports should contain
1493 $ref: '#/components/schemas/PredefinedAbuseReasons'
1496 description: plain search that will match with video titles, reporter names and more
1501 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
1508 - name: searchReporter
1510 description: only list reports of a specific reporter
1513 - name: searchReportee
1514 description: only list reports of a specific reportee
1520 description: only list reports of a specific video
1523 - name: searchVideoChannel
1525 description: only list reports of a specific video channel
1530 description: only list blacklisted or deleted videos
1538 description: only list account, comment or video reports
1545 - $ref: '#/components/parameters/start'
1546 - $ref: '#/components/parameters/count'
1547 - $ref: '#/components/parameters/abusesSort'
1550 description: successful operation
1556 $ref: '#/components/schemas/VideoAbuse'
1559 summary: Report an abuse
1572 description: Reason why the user reports this video
1576 $ref: '#/components/schemas/PredefinedAbuseReasons'
1582 description: Video id to report
1586 description: Timestamp in the video that marks the beginning of the report
1590 description: Timestamp in the video that marks the ending of the report
1596 description: Comment id to report
1602 description: Account id to report
1608 description: successful operation
1610 description: incorrect request parameters
1611 '/abuses/{abuseId}':
1613 summary: Update an abuse
1621 - $ref: '#/components/parameters/abuseId'
1629 $ref: '#/components/schemas/AbuseStateSet'
1632 description: Update the report comment visible only to the moderation team
1635 description: successful operation
1637 description: abuse not found
1641 summary: Delete an abuse
1647 - $ref: '#/components/parameters/abuseId'
1650 description: successful operation
1652 description: block not found
1654 '/videos/{id}/blacklist':
1656 summary: Block a video
1664 - $ref: '#/components/parameters/idOrUUID'
1667 description: successful operation
1669 summary: Unblock a video by its id
1677 - $ref: '#/components/parameters/idOrUUID'
1680 description: successful operation
1682 description: block not found
1687 summary: List video blocks
1696 list only blocks that match this type:
1700 - `2`: automatic block that needs review
1708 description: plain search that will match with video titles, and more
1711 - $ref: '#/components/parameters/start'
1712 - $ref: '#/components/parameters/count'
1713 - $ref: '#/components/parameters/blacklistsSort'
1716 description: successful operation
1728 $ref: '#/components/schemas/VideoBlacklist'
1729 /videos/{id}/captions:
1731 summary: List captions of a video
1735 - $ref: '#/components/parameters/idOrUUID'
1738 description: successful operation
1750 $ref: '#/components/schemas/VideoCaption'
1751 /videos/{id}/captions/{captionLanguage}:
1753 summary: Add or replace a video caption
1757 - $ref: '#/components/parameters/idOrUUID'
1758 - $ref: '#/components/parameters/captionLanguage'
1761 multipart/form-data:
1766 description: The file to upload.
1771 contentType: text/vtt, application/x-subrip, text/plain
1774 description: successful operation
1776 description: video or language not found
1778 summary: Delete a video caption
1782 - $ref: '#/components/parameters/idOrUUID'
1783 - $ref: '#/components/parameters/captionLanguage'
1786 description: successful operation
1788 description: video or language or caption for that language not found
1791 summary: List video channels
1795 - $ref: '#/components/parameters/start'
1796 - $ref: '#/components/parameters/count'
1797 - $ref: '#/components/parameters/sort'
1800 description: successful operation
1812 $ref: '#/components/schemas/VideoChannel'
1814 summary: Create a video channel
1821 description: successful operation
1826 $ref: '#/components/schemas/VideoChannelCreate'
1827 '/video-channels/{channelHandle}':
1829 summary: Get a video channel
1833 - $ref: '#/components/parameters/channelHandle'
1836 description: successful operation
1840 $ref: '#/components/schemas/VideoChannel'
1842 summary: Update a video channel
1848 - $ref: '#/components/parameters/channelHandle'
1851 description: successful operation
1856 $ref: '#/components/schemas/VideoChannelUpdate'
1858 summary: Delete a video channel
1864 - $ref: '#/components/parameters/channelHandle'
1867 description: successful operation
1868 '/video-channels/{channelHandle}/videos':
1870 summary: List videos of a video channel
1875 - $ref: '#/components/parameters/channelHandle'
1876 - $ref: '#/components/parameters/categoryOneOf'
1877 - $ref: '#/components/parameters/tagsOneOf'
1878 - $ref: '#/components/parameters/tagsAllOf'
1879 - $ref: '#/components/parameters/licenceOneOf'
1880 - $ref: '#/components/parameters/languageOneOf'
1881 - $ref: '#/components/parameters/nsfw'
1882 - $ref: '#/components/parameters/filter'
1883 - $ref: '#/components/parameters/skipCount'
1884 - $ref: '#/components/parameters/start'
1885 - $ref: '#/components/parameters/count'
1886 - $ref: '#/components/parameters/videosSort'
1889 description: successful operation
1893 $ref: '#/components/schemas/VideoListResponse'
1895 /video-playlists/privacies:
1897 summary: List available playlist privacies
1902 description: successful operation
1911 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
1915 summary: List video playlists
1919 - $ref: '#/components/parameters/start'
1920 - $ref: '#/components/parameters/count'
1921 - $ref: '#/components/parameters/sort'
1924 description: successful operation
1936 $ref: '#/components/schemas/VideoPlaylist'
1938 summary: Create a video playlist
1939 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
1946 description: successful operation
1961 multipart/form-data:
1966 description: Video playlist display name
1969 description: Video playlist thumbnail file
1973 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
1975 description: Video playlist description
1978 description: Video channel in which the playlist will be published
1984 contentType: image/jpeg
1986 /video-playlists/{id}:
1988 summary: Get a video playlist
1992 - $ref: '#/components/parameters/idOrUUID'
1995 description: successful operation
1999 $ref: '#/components/schemas/VideoPlaylist'
2001 summary: Update a video playlist
2002 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2009 description: successful operation
2011 - $ref: '#/components/parameters/idOrUUID'
2014 multipart/form-data:
2019 description: Video playlist display name
2022 description: Video playlist thumbnail file
2026 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2028 description: Video playlist description
2031 description: Video channel in which the playlist will be published
2035 contentType: image/jpeg
2037 summary: Delete a video playlist
2043 - $ref: '#/components/parameters/idOrUUID'
2046 description: successful operation
2048 /video-playlists/{id}/videos:
2050 summary: 'List videos of a playlist'
2055 - $ref: '#/components/parameters/idOrUUID'
2058 description: successful operation
2062 $ref: '#/components/schemas/VideoListResponse'
2064 summary: 'Add a video in a playlist'
2071 - $ref: '#/components/parameters/idOrUUID'
2074 description: successful operation
2080 videoPlaylistElement:
2093 description: 'Video to add in the playlist'
2096 description: 'Start the video at this specific timestamp (in seconds)'
2099 description: 'Stop the video at this specific timestamp (in seconds)'
2103 /video-playlists/{id}/videos/reorder:
2105 summary: 'Reorder a playlist'
2111 - $ref: '#/components/parameters/idOrUUID'
2114 description: successful operation
2123 description: 'Start position of the element to reorder'
2125 insertAfterPosition:
2127 description: 'New position for the block to reorder, to add the block before the first element'
2131 description: 'How many element from `startPosition` to reorder'
2135 - insertAfterPosition
2137 /video-playlists/{id}/videos/{playlistElementId}:
2139 summary: 'Update a playlist element'
2145 - $ref: '#/components/parameters/idOrUUID'
2146 - $ref: '#/components/parameters/playlistElementId'
2149 description: successful operation
2158 description: 'Start the video at this specific timestamp (in seconds)'
2161 description: 'Stop the video at this specific timestamp (in seconds)'
2163 summary: 'Delete an element from a playlist'
2169 - $ref: '#/components/parameters/idOrUUID'
2170 - $ref: '#/components/parameters/playlistElementId'
2173 description: successful operation
2175 '/users/me/video-playlists/videos-exist':
2177 summary: 'Check video exists in my playlists'
2186 description: The video ids to check
2193 description: successful operation
2213 '/accounts/{name}/video-channels':
2215 summary: List video channels of an account
2220 - $ref: '#/components/parameters/name'
2223 description: include view statistics for the last 30 days (only if authentified as the account user)
2226 - $ref: '#/components/parameters/start'
2227 - $ref: '#/components/parameters/count'
2228 - $ref: '#/components/parameters/sort'
2231 description: successful operation
2237 $ref: '#/components/schemas/VideoChannel'
2238 '/accounts/{name}/ratings':
2240 summary: List ratings of an account
2246 - $ref: '#/components/parameters/name'
2247 - $ref: '#/components/parameters/start'
2248 - $ref: '#/components/parameters/count'
2249 - $ref: '#/components/parameters/sort'
2253 description: Optionally filter which ratings to retrieve
2261 description: successful operation
2267 $ref: '#/components/schemas/VideoRating'
2268 '/videos/{id}/comment-threads':
2270 summary: List threads of a video
2274 - $ref: '#/components/parameters/idOrUUID'
2275 - $ref: '#/components/parameters/start'
2276 - $ref: '#/components/parameters/count'
2277 - $ref: '#/components/parameters/commentsSort'
2280 description: successful operation
2284 $ref: '#/components/schemas/CommentThreadResponse'
2286 summary: Create a thread
2292 - $ref: '#/components/parameters/idOrUUID'
2295 description: successful operation
2299 $ref: '#/components/schemas/CommentThreadPostResponse'
2301 description: video does not exist
2310 description: 'Text comment'
2314 '/videos/{id}/comment-threads/{threadId}':
2316 summary: Get a thread
2320 - $ref: '#/components/parameters/idOrUUID'
2321 - $ref: '#/components/parameters/threadId'
2324 description: successful operation
2328 $ref: '#/components/schemas/VideoCommentThreadTree'
2329 '/videos/{id}/comments/{commentId}':
2331 summary: Reply to a thread of a video
2337 - $ref: '#/components/parameters/idOrUUID'
2338 - $ref: '#/components/parameters/commentId'
2341 description: successful operation
2345 $ref: '#/components/schemas/CommentThreadPostResponse'
2347 description: thread or video does not exist
2356 description: 'Text comment'
2361 summary: Delete a comment or a reply
2367 - $ref: '#/components/parameters/idOrUUID'
2368 - $ref: '#/components/parameters/commentId'
2371 description: successful operation
2373 description: cannot remove comment of another user
2375 description: comment or video does not exist
2377 description: comment is already deleted
2378 '/videos/{id}/rate':
2380 summary: Like/dislike a video
2386 - $ref: '#/components/parameters/idOrUUID'
2389 description: successful operation
2391 description: video does not exist
2396 summary: Search videos
2401 allowEmptyValue: false
2403 String to search. If the user can make a remote URI search, and the string is an URI then the
2404 PeerTube instance will fetch the remote object and add it to its database. Then,
2405 you can use the REST API to fetch the complete video information and interact with it.
2408 - $ref: '#/components/parameters/categoryOneOf'
2409 - $ref: '#/components/parameters/tagsOneOf'
2410 - $ref: '#/components/parameters/tagsAllOf'
2411 - $ref: '#/components/parameters/licenceOneOf'
2412 - $ref: '#/components/parameters/languageOneOf'
2413 - $ref: '#/components/parameters/nsfw'
2414 - $ref: '#/components/parameters/filter'
2415 - $ref: '#/components/parameters/skipCount'
2416 - $ref: '#/components/parameters/start'
2417 - $ref: '#/components/parameters/count'
2418 - $ref: '#/components/parameters/searchTarget'
2419 - $ref: '#/components/parameters/videosSearchSort'
2422 description: Get videos that are published after this date
2428 description: Get videos that are published before this date
2432 - name: originallyPublishedStartDate
2434 description: Get videos that are originally published after this date
2438 - name: originallyPublishedEndDate
2440 description: Get videos that are originally published before this date
2446 description: Get videos that have this minimum duration
2451 description: Get videos that have this maximum duration
2455 'searchTarget === search-index':
2456 $ref: '#/components/callbacks/searchIndex'
2459 description: successful operation
2463 $ref: '#/components/schemas/VideoListResponse'
2465 description: search index unavailable
2466 /search/video-channels:
2470 summary: Search channels
2476 String to search. If the user can make a remote URI search, and the string is an URI then the
2477 PeerTube instance will fetch the remote object and add it to its database. Then,
2478 you can use the REST API to fetch the complete channel information and interact with it.
2481 - $ref: '#/components/parameters/start'
2482 - $ref: '#/components/parameters/count'
2483 - $ref: '#/components/parameters/searchTarget'
2484 - $ref: '#/components/parameters/sort'
2486 'searchTarget === search-index':
2487 $ref: '#/components/callbacks/searchIndex'
2490 description: successful operation
2496 $ref: '#/components/schemas/VideoChannel'
2498 description: search index unavailable
2499 /blocklist/accounts:
2503 summary: List account blocks
2508 - $ref: '#/components/parameters/start'
2509 - $ref: '#/components/parameters/count'
2510 - $ref: '#/components/parameters/sort'
2513 description: successful operation
2517 summary: Block an account
2529 example: chocobozzz@example.org
2530 description: account to block, in the form `username@domain`
2535 description: successful operation
2537 description: self-blocking forbidden
2538 '/blocklist/accounts/{accountName}':
2542 summary: Unblock an account by its handle
2550 description: account to unblock, in the form `username@domain`
2555 description: successful operation
2557 description: account or account block does not exist
2562 summary: List server blocks
2567 - $ref: '#/components/parameters/start'
2568 - $ref: '#/components/parameters/count'
2569 - $ref: '#/components/parameters/sort'
2572 description: successful operation
2576 summary: Block a server
2589 description: server domain to block
2594 description: successful operation
2596 description: self-blocking forbidden
2597 '/blocklist/servers/{host}':
2601 summary: Unblock a server by its domain
2609 description: server domain to unblock
2615 description: successful operation
2617 description: account block does not exist
2621 - Instance Redundancy
2622 summary: Update a server redundancy policy
2630 description: server domain to mirror
2642 description: allow mirroring of the host's local videos
2647 description: successful operation
2649 description: server is not already known
2654 summary: List videos being mirrored
2662 description: direction of the mirror
2668 - $ref: '#/components/parameters/start'
2669 - $ref: '#/components/parameters/count'
2670 - $ref: '#/components/parameters/videoRedundanciesSort'
2673 description: successful operation
2679 $ref: '#/components/schemas/VideoRedundancy'
2683 summary: Mirror a video
2699 description: successful operation
2701 description: cannot mirror a local video
2703 description: video does not exist
2705 description: video is already mirrored
2706 /redundancy/videos/{redundancyId}:
2710 summary: Delete a mirror done on a video
2715 - name: redundancyId
2718 description: id of an existing redundancy on a video
2723 description: successful operation
2725 description: video redundancy not found
2726 '/feeds/video-comments.{format}':
2730 summary: List comments on videos
2732 - url: 'https://peertube2.cpy.re'
2733 description: Live Test Server (live data - latest nightly version)
2734 - url: 'https://peertube3.cpy.re'
2735 description: Live Test Server (live data - latest RC version)
2736 - url: 'https://peertube.cpy.re'
2737 description: Live Test Server (live data - stable version)
2742 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2755 description: 'limit listing to a specific video'
2760 description: 'limit listing to a specific account'
2765 description: 'limit listing to a specific account'
2768 - name: videoChannelId
2770 description: 'limit listing to a specific video channel'
2773 - name: videoChannelName
2775 description: 'limit listing to a specific video channel'
2780 description: successful operation
2785 default: 'max-age=900' # 15 min cache
2789 $ref: '#/components/schemas/VideoCommentsForXML'
2790 application/rss+xml:
2792 $ref: '#/components/schemas/VideoCommentsForXML'
2795 $ref: '#/components/schemas/VideoCommentsForXML'
2796 application/atom+xml:
2798 $ref: '#/components/schemas/VideoCommentsForXML'
2803 x-summary: field inconsistencies
2806 - videoId filter is mixed with a channel filter
2808 description: video, video channel or account not found
2810 description: accept header unsupported
2811 '/feeds/videos.{format}':
2815 summary: List videos
2817 - url: 'https://peertube2.cpy.re'
2818 description: Live Test Server (live data - latest nightly version)
2819 - url: 'https://peertube3.cpy.re'
2820 description: Live Test Server (live data - latest RC version)
2821 - url: 'https://peertube.cpy.re'
2822 description: Live Test Server (live data - stable version)
2827 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2840 description: 'limit listing to a specific account'
2845 description: 'limit listing to a specific account'
2848 - name: videoChannelId
2850 description: 'limit listing to a specific video channel'
2853 - name: videoChannelName
2855 description: 'limit listing to a specific video channel'
2858 - $ref: '#/components/parameters/sort'
2859 - $ref: '#/components/parameters/nsfw'
2860 - $ref: '#/components/parameters/filter'
2863 description: successful operation
2868 default: 'max-age=900' # 15 min cache
2872 $ref: '#/components/schemas/VideosForXML'
2875 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
2876 application/rss+xml:
2878 $ref: '#/components/schemas/VideosForXML'
2881 $ref: '#/components/schemas/VideosForXML'
2882 application/atom+xml:
2884 $ref: '#/components/schemas/VideosForXML'
2889 description: video channel or account not found
2891 description: accept header unsupported
2896 summary: List plugins
2909 - $ref: '#/components/parameters/start'
2910 - $ref: '#/components/parameters/count'
2911 - $ref: '#/components/parameters/sort'
2914 description: successful operation
2918 $ref: '#/components/schemas/PluginResponse'
2923 summary: List available plugins
2936 - name: currentPeerTubeEngine
2940 - $ref: '#/components/parameters/start'
2941 - $ref: '#/components/parameters/count'
2942 - $ref: '#/components/parameters/sort'
2945 description: successful operation
2949 $ref: '#/components/schemas/PluginResponse'
2951 description: plugin index unavailable
2956 summary: Install a plugin
2969 example: peertube-plugin-auth-ldap
2972 additionalProperties: false
2979 additionalProperties: false
2982 description: successful operation
2984 description: should have either `npmName` or `path` set
2989 summary: Update a plugin
3002 example: peertube-plugin-auth-ldap
3005 additionalProperties: false
3012 additionalProperties: false
3015 description: successful operation
3017 description: should have either `npmName` or `path` set
3019 description: existing plugin not found
3024 summary: Uninstall a plugin
3036 description: name of the plugin/theme in its package.json
3037 example: peertube-plugin-auth-ldap
3042 description: successful operation
3044 description: existing plugin not found
3049 summary: Get a plugin
3054 - $ref: '#/components/parameters/npmName'
3057 description: successful operation
3061 $ref: '#/components/schemas/Plugin'
3063 description: plugin not found
3064 /plugins/{npmName}/settings:
3068 summary: Set a plugin's settings
3073 - $ref: '#/components/parameters/npmName'
3082 additionalProperties: true
3085 description: successful operation
3087 description: plugin not found
3088 /plugins/{npmName}/public-settings:
3092 summary: Get a plugin's public settings
3094 - $ref: '#/components/parameters/npmName'
3097 description: successful operation
3102 additionalProperties: true
3104 description: plugin not found
3105 /plugins/{npmName}/registered-settings:
3109 summary: Get a plugin's registered settings
3114 - $ref: '#/components/parameters/npmName'
3117 description: successful operation
3122 additionalProperties: true
3124 description: plugin not found
3126 - url: 'https://peertube2.cpy.re/api/v1'
3127 description: Live Test Server (live data - latest nightly version)
3128 - url: 'https://peertube3.cpy.re/api/v1'
3129 description: Live Test Server (live data - latest RC version)
3130 - url: 'https://peertube.cpy.re/api/v1'
3131 description: Live Test Server (live data - stable version)
3138 description: Offset used to paginate results
3146 description: "Number of items to return"
3156 description: Sort column
3164 description: Plain text search, applied to various parts of the model depending on endpoint
3172 If the administrator enabled search index support, you can override the default search target.
3175 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3176 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3177 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3178 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3179 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3180 * 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
3181 the data from the origin instance API
3191 description: Sort videos by criteria
3206 description: Sort videos by criteria
3221 description: Sort comments by criteria
3231 description: Sort blacklists by criteria
3247 description: Plain text search that will match with user usernames or emails
3254 description: Filter results down to (un)banned users
3261 description: Sort users by criteria
3272 description: Sort abuses by criteria
3279 videoRedundanciesSort:
3283 description: Sort abuses by criteria
3292 description: The name of the account
3295 example: chocobozzz | chocobozzz@example.org
3300 description: The user id
3309 description: The object id or uuid
3317 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3319 name: playlistElementId
3322 description: Playlist element id
3329 description: Abuse id
3333 name: captionLanguage
3336 description: The caption language
3343 description: The video channel handle
3346 example: my_username | my_username@example.com
3348 name: subscriptionHandle
3351 description: The subscription handle
3354 example: my_username | my_username@example.com
3359 description: The thread id (root comment id)
3366 description: The comment id
3373 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3386 description: tag(s) of the video
3399 description: tag(s) of the video, where all should be present in the video
3412 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
3425 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3438 description: if you don't need the `total` in the response
3449 description: whether to include nsfw videos, if any
3460 Special filters (local for instance) which might require special rights:
3461 * `local` - only videos local to the instance
3462 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3472 description: list of uris to check if each is part of the user subscriptions
3482 description: name of the plugin/theme on npmjs.com or in its package.json
3485 example: peertube-plugin-auth-ldap
3489 In the header: *Authorization: Bearer <token\>*
3492 Authenticating via OAuth requires the following steps:
3495 - Have an account with sufficient authorization levels
3497 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3500 - Make Authenticated Requests
3504 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3507 moderator: Moderator scope
3510 VideoConstantNumber:
3516 VideoConstantString:
3523 VideoPlaylistPrivacySet:
3529 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3530 VideoPlaylistPrivacyConstant:
3533 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3537 VideoPlaylistTypeSet:
3542 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3543 VideoPlaylistTypeConstant:
3546 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3557 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3558 VideoPrivacyConstant:
3561 $ref: '#/components/schemas/VideoPrivacySet'
3578 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3589 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3599 description: 'The video playlist privacy (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3603 $ref: '#/components/schemas/AbuseStateSet'
3606 AbusePredefinedReasons:
3619 example: [spamOrMisleading]
3621 VideoResolutionConstant:
3625 description: 'Video resolution (240, 360, 720 ...)'
3630 VideoScheduledUpdate:
3633 $ref: '#/components/schemas/VideoPrivacySet'
3637 description: When to update the video
3657 - $ref: '#/components/schemas/Avatar'
3658 VideoChannelSummary:
3675 - $ref: '#/components/schemas/Avatar'
3687 - $ref: '#/components/schemas/Video'
3693 $ref: '#/components/schemas/VideoResolutionConstant'
3696 description: 'Video file size in bytes'
3714 VideoStreamingPlaylists:
3722 description: 'Playlist type (HLS = `1`)'
3732 $ref: '#/components/schemas/VideoFile'
3748 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3759 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3769 originallyPublishedAt:
3773 $ref: '#/components/schemas/VideoConstantNumber'
3775 $ref: '#/components/schemas/VideoConstantNumber'
3777 $ref: '#/components/schemas/VideoConstantString'
3779 $ref: '#/components/schemas/VideoPrivacyConstant'
3789 example: What is PeerTube?
3792 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3795 example: /static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3798 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
3814 $ref: '#/components/schemas/VideoStateConstant'
3818 - $ref: '#/components/schemas/VideoScheduledUpdate'
3826 $ref: '#/components/schemas/AccountSummary'
3828 $ref: '#/components/schemas/VideoChannelSummary'
3837 - $ref: '#/components/schemas/Video'
3844 description: A text tell the audience how to support the video creator
3845 example: Please support my work on <insert crowdfunding plateform>! <3
3847 $ref: '#/components/schemas/VideoChannel'
3849 $ref: '#/components/schemas/Account'
3854 example: [flowers, gardening]
3858 $ref: '#/components/schemas/VideoFile'
3871 $ref: '#/components/schemas/VideoStreamingPlaylists'
3872 FileRedundancyInformation:
3909 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3916 $ref: '#/components/schemas/FileRedundancyInformation'
3920 $ref: '#/components/schemas/FileRedundancyInformation'
3921 VideoImportStateConstant:
3929 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
3941 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
3945 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
3949 $ref: '#/components/schemas/VideoImportStateConstant'
3959 $ref: '#/components/schemas/Video'
3967 example: The video is a spam
3969 $ref: '#/components/schemas/AbusePredefinedReasons'
3971 $ref: '#/components/schemas/Account'
3973 $ref: '#/components/schemas/AbuseStateConstant'
3976 example: Decided to ban the server since it spams us regularly
3987 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4008 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4037 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4053 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4063 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4065 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4067 $ref: '#/components/schemas/AccountSummary'
4069 $ref: '#/components/schemas/VideoChannelSummary'
4091 totalRepliesFromVideoAuthor:
4096 $ref: '#/components/schemas/Account'
4097 VideoCommentThreadTree:
4100 $ref: '#/components/schemas/VideoComment'
4104 $ref: '#/components/schemas/VideoCommentThreadTree'
4108 $ref: '#/components/schemas/VideoConstantString'
4163 $ref: '#/components/schemas/Avatar'
4166 - $ref: '#/components/schemas/Actor'
4179 description: timestamp within the video, in seconds
4246 allowedForCurrentIP:
4248 requiresEmailVerification:
4452 requiresEmailVerification:
4477 allowAdditionalExtensions:
4545 $ref: '#/components/schemas/Actor'
4547 $ref: '#/components/schemas/Actor'
4550 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4563 PredefinedAbuseReasons:
4564 description: Reason categories that help triage reports
4595 - activitypub-http-unicast
4596 - activitypub-http-broadcast
4597 - activitypub-http-fetcher
4598 - activitypub-follow
4604 - activitypub-refresher
4608 additionalProperties: true
4611 additionalProperties: true
4635 VideoUploadResponse:
4646 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4647 CommentThreadResponse:
4656 $ref: '#/components/schemas/VideoComment'
4657 CommentThreadPostResponse:
4660 $ref: '#/components/schemas/VideoComment'
4670 $ref: '#/components/schemas/Video'
4678 description: The user username
4684 description: The user email
4687 description: Theme enabled by this user
4690 description: Has the user confirmed their email address?
4692 $ref: '#/components/schemas/NSFWPolicy'
4695 description: Enable P2P in the player
4698 description: Automatically start playing the video on the watch page
4700 $ref: '#/components/schemas/UserRole'
4709 description: The user video quota
4712 description: The user daily video quota
4717 abusesAcceptedCount:
4723 noInstanceConfigWarningModal:
4734 $ref: '#/components/schemas/Account'
4738 $ref: '#/components/schemas/VideoChannel'
4743 description: The user username
4749 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
4755 description: The user email
4758 description: The user video quota
4761 description: The user daily video quota
4763 $ref: '#/components/schemas/UserRole'
4775 description: The user id
4779 description: The updated email of the user
4782 description: The updated video quota of the user
4785 description: The updated daily video quota of the user
4787 $ref: '#/components/schemas/UserRole'
4799 description: Your new password
4805 description: Your new email
4808 description: Your new displayNSFW
4815 description: Your new autoPlayVideo
4825 description: Id of the video
4828 description: Rating of the video
4835 $ref: '#/components/schemas/Video'
4838 description: 'Rating of the video'
4846 description: The username of the user
4849 pattern: '/^[a-z0-9._]{1,50}$/'
4853 description: The password of the user
4859 description: The email of the user
4862 description: The user display name
4870 description: The name for the default channel
4871 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4874 description: The display name for the default channel
4891 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
4892 example: Please support my work on <insert crowdfunding plateform>! <3
4904 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
4905 example: Please support my work on <insert crowdfunding plateform>! <3
4906 bulkVideosSupportUpdate:
4908 description: 'Update the support field for all videos of this channel'
4913 name: 'media:peerLink'
4922 - application/x-bittorrent
4928 name: 'media:content'
4959 VideoCommentsForXML:
4994 description: video watch page URL
4997 description: video canonical URL
5001 description: video publication date
5004 description: video description
5007 description: video description
5010 description: publisher user name
5013 description: video category (MRSS)
5016 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5031 description: video embed path, relative to the canonical URL domain (MRSS)
5040 description: video watch path, relative to the canonical URL domain (MRSS)
5061 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5062 'media:description':
5069 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5072 description: main streamable file for the video
5082 - application/x-bittorrent
5091 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)
5094 - $ref: '#/components/schemas/MRSSPeerLink'
5095 - $ref: '#/components/schemas/MRSSGroupContent'
5096 NotificationSettingValue:
5117 Notification type, following the `UserNotificationType` enum:
5119 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5121 - `2` NEW_COMMENT_ON_MY_VIDEO
5123 - `3` NEW_ABUSE_FOR_MODERATORS
5125 - `4` BLACKLIST_ON_MY_VIDEO
5127 - `5` UNBLACKLIST_ON_MY_VIDEO
5129 - `6` MY_VIDEO_PUBLISHED
5131 - `7` MY_VIDEO_IMPORT_SUCCESS
5133 - `8` MY_VIDEO_IMPORT_ERROR
5135 - `9` NEW_USER_REGISTRATION
5139 - `11` COMMENT_MENTION
5141 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5143 - `13` NEW_INSTANCE_FOLLOWER
5145 - `14` AUTO_INSTANCE_FOLLOWING
5151 - $ref: '#/components/schemas/VideoInfo'
5155 $ref: '#/components/schemas/ActorInfo'
5164 $ref: '#/components/schemas/VideoInfo'
5185 $ref: '#/components/schemas/VideoInfo'
5187 $ref: '#/components/schemas/ActorInfo'
5196 - $ref: '#/components/schemas/VideoInfo'
5205 - $ref: '#/components/schemas/VideoInfo'
5209 - $ref: '#/components/schemas/ActorInfo'
5217 $ref: '#/components/schemas/ActorInfo'
5245 NotificationListResponse:
5254 $ref: '#/components/schemas/Notification'
5259 example: peertube-plugin-auth-ldap
5287 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5290 additionalProperties: true
5306 $ref: '#/components/schemas/Plugin'
5309 '{%CONFIG.SEARCH.SEARCH_INDEX.URL%}/api/v1/search/videos/':
5311 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5314 description: successful operation
5318 $ref: '#/components/schemas/VideoListResponse'