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 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
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
1355 USERNAME="<your_username>"
1356 PASSWORD="<your_password>"
1357 FILE_PATH="<your_file_path>"
1358 CHANNEL_ID="<your_channel_id>"
1361 API_PATH="https://peertube2.cpy.re/api/v1"
1363 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1364 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1365 token=$(curl -s "$API_PATH/users/token" \
1366 --data client_id="$client_id" \
1367 --data client_secret="$client_secret" \
1368 --data grant_type=password \
1369 --data response_type=code \
1370 --data username="$USERNAME" \
1371 --data password="$PASSWORD" \
1372 | jq -r ".access_token")
1374 curl -s "$API_PATH/videos/upload" \
1375 -H "Authorization: Bearer $token" \
1377 --form videofile=@"$FILE_PATH" \
1378 --form channelId=$CHANNEL_ID \
1382 summary: Import a video
1383 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1390 multipart/form-data:
1395 description: Torrent File
1399 description: HTTP target URL
1402 description: Magnet URI
1405 description: Channel id that will contain this video
1408 description: Video thumbnail file
1412 description: Video preview file
1416 $ref: '#/components/schemas/VideoPrivacySet'
1418 description: Video category
1421 description: Video licence
1424 description: Video language
1427 description: Video description
1430 description: Whether or not we wait transcoding before publish the video
1433 description: A text tell the audience how to support the video creator
1434 example: Please support my work on <insert crowdfunding plateform>! <3
1437 description: Whether or not this video contains sensitive content
1440 description: Video name
1443 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1452 description: Enable or disable comments for this video
1455 $ref: '#/components/schemas/VideoScheduledUpdate'
1461 contentType: application/x-bittorrent
1463 contentType: image/jpeg
1465 contentType: image/jpeg
1468 description: successful operation
1472 $ref: '#/components/schemas/VideoUploadResponse'
1474 description: HTTP or Torrent/magnetURI import not enabled
1476 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1480 summary: List my abuses
1489 description: only list the report with this id
1495 $ref: '#/components/schemas/AbuseStateSet'
1496 - $ref: '#/components/parameters/start'
1497 - $ref: '#/components/parameters/count'
1498 - $ref: '#/components/parameters/abusesSort'
1501 description: successful operation
1507 $ref: '#/components/schemas/Abuse'
1511 summary: List abuses
1521 description: only list the report with this id
1524 - name: predefinedReason
1526 description: predefined reason the listed reports should contain
1528 $ref: '#/components/schemas/PredefinedAbuseReasons'
1531 description: plain search that will match with video titles, reporter names and more
1537 $ref: '#/components/schemas/AbuseStateSet'
1538 - name: searchReporter
1540 description: only list reports of a specific reporter
1543 - name: searchReportee
1544 description: only list reports of a specific reportee
1550 description: only list reports of a specific video
1553 - name: searchVideoChannel
1555 description: only list reports of a specific video channel
1560 description: only list blacklisted or deleted videos
1568 description: only list account, comment or video reports
1575 - $ref: '#/components/parameters/start'
1576 - $ref: '#/components/parameters/count'
1577 - $ref: '#/components/parameters/abusesSort'
1580 description: successful operation
1586 $ref: '#/components/schemas/Abuse'
1589 summary: Report an abuse
1602 description: Reason why the user reports this video
1606 $ref: '#/components/schemas/PredefinedAbuseReasons'
1612 description: Video id to report
1616 description: Timestamp in the video that marks the beginning of the report
1620 description: Timestamp in the video that marks the ending of the report
1626 description: Comment id to report
1632 description: Account id to report
1638 description: successful operation
1640 description: incorrect request parameters
1641 '/abuses/{abuseId}':
1643 summary: Update an abuse
1651 - $ref: '#/components/parameters/abuseId'
1659 $ref: '#/components/schemas/AbuseStateSet'
1662 description: Update the report comment visible only to the moderation team
1665 description: successful operation
1667 description: abuse not found
1671 summary: Delete an abuse
1677 - $ref: '#/components/parameters/abuseId'
1680 description: successful operation
1682 description: block not found
1683 '/abuses/{abuseId}/messages':
1685 summary: List messages of an abuse
1691 - $ref: '#/components/parameters/abuseId'
1694 description: successful operation
1700 $ref: '#/components/schemas/AbuseMessage'
1703 summary: Add message to an abuse
1709 - $ref: '#/components/parameters/abuseId'
1718 description: Message to send
1724 description: successful operation
1726 description: incorrect request parameters
1727 '/abuses/{abuseId}/messages/{abuseMessageId}':
1729 summary: Delete an abuse message
1735 - $ref: '#/components/parameters/abuseId'
1736 - $ref: '#/components/parameters/abuseMessageId'
1739 description: successful operation
1741 '/videos/{id}/blacklist':
1743 summary: Block a video
1751 - $ref: '#/components/parameters/idOrUUID'
1754 description: successful operation
1756 summary: Unblock a video by its id
1764 - $ref: '#/components/parameters/idOrUUID'
1767 description: successful operation
1769 description: block not found
1774 summary: List video blocks
1783 list only blocks that match this type:
1787 - `2`: automatic block that needs review
1795 description: plain search that will match with video titles, and more
1798 - $ref: '#/components/parameters/start'
1799 - $ref: '#/components/parameters/count'
1800 - $ref: '#/components/parameters/blacklistsSort'
1803 description: successful operation
1815 $ref: '#/components/schemas/VideoBlacklist'
1816 /videos/{id}/captions:
1818 summary: List captions of a video
1822 - $ref: '#/components/parameters/idOrUUID'
1825 description: successful operation
1837 $ref: '#/components/schemas/VideoCaption'
1838 /videos/{id}/captions/{captionLanguage}:
1840 summary: Add or replace a video caption
1844 - $ref: '#/components/parameters/idOrUUID'
1845 - $ref: '#/components/parameters/captionLanguage'
1848 multipart/form-data:
1853 description: The file to upload.
1858 contentType: text/vtt, application/x-subrip, text/plain
1861 description: successful operation
1863 description: video or language not found
1865 summary: Delete a video caption
1869 - $ref: '#/components/parameters/idOrUUID'
1870 - $ref: '#/components/parameters/captionLanguage'
1873 description: successful operation
1875 description: video or language or caption for that language not found
1878 summary: List video channels
1882 - $ref: '#/components/parameters/start'
1883 - $ref: '#/components/parameters/count'
1884 - $ref: '#/components/parameters/sort'
1887 description: successful operation
1899 $ref: '#/components/schemas/VideoChannel'
1901 summary: Create a video channel
1908 description: successful operation
1913 $ref: '#/components/schemas/VideoChannelCreate'
1914 '/video-channels/{channelHandle}':
1916 summary: Get a video channel
1920 - $ref: '#/components/parameters/channelHandle'
1923 description: successful operation
1927 $ref: '#/components/schemas/VideoChannel'
1929 summary: Update a video channel
1935 - $ref: '#/components/parameters/channelHandle'
1938 description: successful operation
1943 $ref: '#/components/schemas/VideoChannelUpdate'
1945 summary: Delete a video channel
1951 - $ref: '#/components/parameters/channelHandle'
1954 description: successful operation
1955 '/video-channels/{channelHandle}/videos':
1957 summary: List videos of a video channel
1962 - $ref: '#/components/parameters/channelHandle'
1963 - $ref: '#/components/parameters/categoryOneOf'
1964 - $ref: '#/components/parameters/tagsOneOf'
1965 - $ref: '#/components/parameters/tagsAllOf'
1966 - $ref: '#/components/parameters/licenceOneOf'
1967 - $ref: '#/components/parameters/languageOneOf'
1968 - $ref: '#/components/parameters/nsfw'
1969 - $ref: '#/components/parameters/filter'
1970 - $ref: '#/components/parameters/skipCount'
1971 - $ref: '#/components/parameters/start'
1972 - $ref: '#/components/parameters/count'
1973 - $ref: '#/components/parameters/videosSort'
1976 description: successful operation
1980 $ref: '#/components/schemas/VideoListResponse'
1982 /video-playlists/privacies:
1984 summary: List available playlist privacies
1989 description: successful operation
1998 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2002 summary: List video playlists
2006 - $ref: '#/components/parameters/start'
2007 - $ref: '#/components/parameters/count'
2008 - $ref: '#/components/parameters/sort'
2011 description: successful operation
2023 $ref: '#/components/schemas/VideoPlaylist'
2025 summary: Create a video playlist
2026 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2033 description: successful operation
2048 multipart/form-data:
2053 description: Video playlist display name
2056 description: Video playlist thumbnail file
2060 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2062 description: Video playlist description
2065 description: Video channel in which the playlist will be published
2071 contentType: image/jpeg
2073 /video-playlists/{id}:
2075 summary: Get a video playlist
2079 - $ref: '#/components/parameters/idOrUUID'
2082 description: successful operation
2086 $ref: '#/components/schemas/VideoPlaylist'
2088 summary: Update a video playlist
2089 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2096 description: successful operation
2098 - $ref: '#/components/parameters/idOrUUID'
2101 multipart/form-data:
2106 description: Video playlist display name
2109 description: Video playlist thumbnail file
2113 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2115 description: Video playlist description
2118 description: Video channel in which the playlist will be published
2122 contentType: image/jpeg
2124 summary: Delete a video playlist
2130 - $ref: '#/components/parameters/idOrUUID'
2133 description: successful operation
2135 /video-playlists/{id}/videos:
2137 summary: 'List videos of a playlist'
2142 - $ref: '#/components/parameters/idOrUUID'
2145 description: successful operation
2149 $ref: '#/components/schemas/VideoListResponse'
2151 summary: 'Add a video in a playlist'
2158 - $ref: '#/components/parameters/idOrUUID'
2161 description: successful operation
2167 videoPlaylistElement:
2180 description: 'Video to add in the playlist'
2183 description: 'Start the video at this specific timestamp (in seconds)'
2186 description: 'Stop the video at this specific timestamp (in seconds)'
2190 /video-playlists/{id}/videos/reorder:
2192 summary: 'Reorder a playlist'
2198 - $ref: '#/components/parameters/idOrUUID'
2201 description: successful operation
2210 description: 'Start position of the element to reorder'
2212 insertAfterPosition:
2214 description: 'New position for the block to reorder, to add the block before the first element'
2218 description: 'How many element from `startPosition` to reorder'
2222 - insertAfterPosition
2224 /video-playlists/{id}/videos/{playlistElementId}:
2226 summary: 'Update a playlist element'
2232 - $ref: '#/components/parameters/idOrUUID'
2233 - $ref: '#/components/parameters/playlistElementId'
2236 description: successful operation
2245 description: 'Start the video at this specific timestamp (in seconds)'
2248 description: 'Stop the video at this specific timestamp (in seconds)'
2250 summary: 'Delete an element from a playlist'
2256 - $ref: '#/components/parameters/idOrUUID'
2257 - $ref: '#/components/parameters/playlistElementId'
2260 description: successful operation
2262 '/users/me/video-playlists/videos-exist':
2264 summary: 'Check video exists in my playlists'
2273 description: The video ids to check
2280 description: successful operation
2300 '/accounts/{name}/video-channels':
2302 summary: List video channels of an account
2307 - $ref: '#/components/parameters/name'
2310 description: include view statistics for the last 30 days (only if authentified as the account user)
2313 - $ref: '#/components/parameters/start'
2314 - $ref: '#/components/parameters/count'
2315 - $ref: '#/components/parameters/sort'
2318 description: successful operation
2324 $ref: '#/components/schemas/VideoChannel'
2325 '/accounts/{name}/ratings':
2327 summary: List ratings of an account
2333 - $ref: '#/components/parameters/name'
2334 - $ref: '#/components/parameters/start'
2335 - $ref: '#/components/parameters/count'
2336 - $ref: '#/components/parameters/sort'
2340 description: Optionally filter which ratings to retrieve
2348 description: successful operation
2354 $ref: '#/components/schemas/VideoRating'
2355 '/videos/{id}/comment-threads':
2357 summary: List threads of a video
2361 - $ref: '#/components/parameters/idOrUUID'
2362 - $ref: '#/components/parameters/start'
2363 - $ref: '#/components/parameters/count'
2364 - $ref: '#/components/parameters/commentsSort'
2367 description: successful operation
2371 $ref: '#/components/schemas/CommentThreadResponse'
2373 summary: Create a thread
2379 - $ref: '#/components/parameters/idOrUUID'
2382 description: successful operation
2386 $ref: '#/components/schemas/CommentThreadPostResponse'
2388 description: video does not exist
2397 description: 'Text comment'
2401 '/videos/{id}/comment-threads/{threadId}':
2403 summary: Get a thread
2407 - $ref: '#/components/parameters/idOrUUID'
2408 - $ref: '#/components/parameters/threadId'
2411 description: successful operation
2415 $ref: '#/components/schemas/VideoCommentThreadTree'
2416 '/videos/{id}/comments/{commentId}':
2418 summary: Reply to a thread of a video
2424 - $ref: '#/components/parameters/idOrUUID'
2425 - $ref: '#/components/parameters/commentId'
2428 description: successful operation
2432 $ref: '#/components/schemas/CommentThreadPostResponse'
2434 description: thread or video does not exist
2443 description: 'Text comment'
2448 summary: Delete a comment or a reply
2454 - $ref: '#/components/parameters/idOrUUID'
2455 - $ref: '#/components/parameters/commentId'
2458 description: successful operation
2460 description: cannot remove comment of another user
2462 description: comment or video does not exist
2464 description: comment is already deleted
2465 '/videos/{id}/rate':
2467 summary: Like/dislike a video
2473 - $ref: '#/components/parameters/idOrUUID'
2476 description: successful operation
2478 description: video does not exist
2483 summary: Search videos
2488 allowEmptyValue: false
2490 String to search. If the user can make a remote URI search, and the string is an URI then the
2491 PeerTube instance will fetch the remote object and add it to its database. Then,
2492 you can use the REST API to fetch the complete video information and interact with it.
2495 - $ref: '#/components/parameters/categoryOneOf'
2496 - $ref: '#/components/parameters/tagsOneOf'
2497 - $ref: '#/components/parameters/tagsAllOf'
2498 - $ref: '#/components/parameters/licenceOneOf'
2499 - $ref: '#/components/parameters/languageOneOf'
2500 - $ref: '#/components/parameters/nsfw'
2501 - $ref: '#/components/parameters/filter'
2502 - $ref: '#/components/parameters/skipCount'
2503 - $ref: '#/components/parameters/start'
2504 - $ref: '#/components/parameters/count'
2505 - $ref: '#/components/parameters/searchTarget'
2506 - $ref: '#/components/parameters/videosSearchSort'
2509 description: Get videos that are published after this date
2515 description: Get videos that are published before this date
2519 - name: originallyPublishedStartDate
2521 description: Get videos that are originally published after this date
2525 - name: originallyPublishedEndDate
2527 description: Get videos that are originally published before this date
2533 description: Get videos that have this minimum duration
2538 description: Get videos that have this maximum duration
2542 'searchTarget === search-index':
2543 $ref: '#/components/callbacks/searchIndex'
2546 description: successful operation
2550 $ref: '#/components/schemas/VideoListResponse'
2552 description: search index unavailable
2553 /search/video-channels:
2557 summary: Search channels
2563 String to search. If the user can make a remote URI search, and the string is an URI then the
2564 PeerTube instance will fetch the remote object and add it to its database. Then,
2565 you can use the REST API to fetch the complete channel information and interact with it.
2568 - $ref: '#/components/parameters/start'
2569 - $ref: '#/components/parameters/count'
2570 - $ref: '#/components/parameters/searchTarget'
2571 - $ref: '#/components/parameters/sort'
2573 'searchTarget === search-index':
2574 $ref: '#/components/callbacks/searchIndex'
2577 description: successful operation
2583 $ref: '#/components/schemas/VideoChannel'
2585 description: search index unavailable
2586 /blocklist/accounts:
2590 summary: List account blocks
2595 - $ref: '#/components/parameters/start'
2596 - $ref: '#/components/parameters/count'
2597 - $ref: '#/components/parameters/sort'
2600 description: successful operation
2604 summary: Block an account
2616 example: chocobozzz@example.org
2617 description: account to block, in the form `username@domain`
2622 description: successful operation
2624 description: self-blocking forbidden
2625 '/blocklist/accounts/{accountName}':
2629 summary: Unblock an account by its handle
2637 description: account to unblock, in the form `username@domain`
2642 description: successful operation
2644 description: account or account block does not exist
2649 summary: List server blocks
2654 - $ref: '#/components/parameters/start'
2655 - $ref: '#/components/parameters/count'
2656 - $ref: '#/components/parameters/sort'
2659 description: successful operation
2663 summary: Block a server
2676 description: server domain to block
2681 description: successful operation
2683 description: self-blocking forbidden
2684 '/blocklist/servers/{host}':
2688 summary: Unblock a server by its domain
2696 description: server domain to unblock
2702 description: successful operation
2704 description: account block does not exist
2708 - Instance Redundancy
2709 summary: Update a server redundancy policy
2717 description: server domain to mirror
2729 description: allow mirroring of the host's local videos
2734 description: successful operation
2736 description: server is not already known
2741 summary: List videos being mirrored
2749 description: direction of the mirror
2755 - $ref: '#/components/parameters/start'
2756 - $ref: '#/components/parameters/count'
2757 - $ref: '#/components/parameters/videoRedundanciesSort'
2760 description: successful operation
2766 $ref: '#/components/schemas/VideoRedundancy'
2770 summary: Mirror a video
2786 description: successful operation
2788 description: cannot mirror a local video
2790 description: video does not exist
2792 description: video is already mirrored
2793 /redundancy/videos/{redundancyId}:
2797 summary: Delete a mirror done on a video
2802 - name: redundancyId
2805 description: id of an existing redundancy on a video
2810 description: successful operation
2812 description: video redundancy not found
2813 '/feeds/video-comments.{format}':
2817 summary: List comments on videos
2819 - url: 'https://peertube2.cpy.re'
2820 description: Live Test Server (live data - latest nightly version)
2821 - url: 'https://peertube3.cpy.re'
2822 description: Live Test Server (live data - latest RC version)
2823 - url: 'https://peertube.cpy.re'
2824 description: Live Test Server (live data - stable version)
2829 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2842 description: 'limit listing to a specific video'
2847 description: 'limit listing to a specific account'
2852 description: 'limit listing to a specific account'
2855 - name: videoChannelId
2857 description: 'limit listing to a specific video channel'
2860 - name: videoChannelName
2862 description: 'limit listing to a specific video channel'
2867 description: successful operation
2872 default: 'max-age=900' # 15 min cache
2876 $ref: '#/components/schemas/VideoCommentsForXML'
2877 application/rss+xml:
2879 $ref: '#/components/schemas/VideoCommentsForXML'
2882 $ref: '#/components/schemas/VideoCommentsForXML'
2883 application/atom+xml:
2885 $ref: '#/components/schemas/VideoCommentsForXML'
2890 x-summary: field inconsistencies
2893 - videoId filter is mixed with a channel filter
2895 description: video, video channel or account not found
2897 description: accept header unsupported
2898 '/feeds/videos.{format}':
2902 summary: List videos
2904 - url: 'https://peertube2.cpy.re'
2905 description: Live Test Server (live data - latest nightly version)
2906 - url: 'https://peertube3.cpy.re'
2907 description: Live Test Server (live data - latest RC version)
2908 - url: 'https://peertube.cpy.re'
2909 description: Live Test Server (live data - stable version)
2914 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2927 description: 'limit listing to a specific account'
2932 description: 'limit listing to a specific account'
2935 - name: videoChannelId
2937 description: 'limit listing to a specific video channel'
2940 - name: videoChannelName
2942 description: 'limit listing to a specific video channel'
2945 - $ref: '#/components/parameters/sort'
2946 - $ref: '#/components/parameters/nsfw'
2947 - $ref: '#/components/parameters/filter'
2950 description: successful operation
2955 default: 'max-age=900' # 15 min cache
2959 $ref: '#/components/schemas/VideosForXML'
2962 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
2963 application/rss+xml:
2965 $ref: '#/components/schemas/VideosForXML'
2968 $ref: '#/components/schemas/VideosForXML'
2969 application/atom+xml:
2971 $ref: '#/components/schemas/VideosForXML'
2976 description: video channel or account not found
2978 description: accept header unsupported
2983 summary: List plugins
2996 - $ref: '#/components/parameters/start'
2997 - $ref: '#/components/parameters/count'
2998 - $ref: '#/components/parameters/sort'
3001 description: successful operation
3005 $ref: '#/components/schemas/PluginResponse'
3010 summary: List available plugins
3023 - name: currentPeerTubeEngine
3027 - $ref: '#/components/parameters/start'
3028 - $ref: '#/components/parameters/count'
3029 - $ref: '#/components/parameters/sort'
3032 description: successful operation
3036 $ref: '#/components/schemas/PluginResponse'
3038 description: plugin index unavailable
3043 summary: Install a plugin
3056 example: peertube-plugin-auth-ldap
3059 additionalProperties: false
3066 additionalProperties: false
3069 description: successful operation
3071 description: should have either `npmName` or `path` set
3076 summary: Update a plugin
3089 example: peertube-plugin-auth-ldap
3092 additionalProperties: false
3099 additionalProperties: false
3102 description: successful operation
3104 description: should have either `npmName` or `path` set
3106 description: existing plugin not found
3111 summary: Uninstall a plugin
3123 description: name of the plugin/theme in its package.json
3124 example: peertube-plugin-auth-ldap
3129 description: successful operation
3131 description: existing plugin not found
3136 summary: Get a plugin
3141 - $ref: '#/components/parameters/npmName'
3144 description: successful operation
3148 $ref: '#/components/schemas/Plugin'
3150 description: plugin not found
3151 /plugins/{npmName}/settings:
3155 summary: Set a plugin's settings
3160 - $ref: '#/components/parameters/npmName'
3169 additionalProperties: true
3172 description: successful operation
3174 description: plugin not found
3175 /plugins/{npmName}/public-settings:
3179 summary: Get a plugin's public settings
3181 - $ref: '#/components/parameters/npmName'
3184 description: successful operation
3189 additionalProperties: true
3191 description: plugin not found
3192 /plugins/{npmName}/registered-settings:
3196 summary: Get a plugin's registered settings
3201 - $ref: '#/components/parameters/npmName'
3204 description: successful operation
3209 additionalProperties: true
3211 description: plugin not found
3213 - url: 'https://peertube2.cpy.re/api/v1'
3214 description: Live Test Server (live data - latest nightly version)
3215 - url: 'https://peertube3.cpy.re/api/v1'
3216 description: Live Test Server (live data - latest RC version)
3217 - url: 'https://peertube.cpy.re/api/v1'
3218 description: Live Test Server (live data - stable version)
3225 description: Offset used to paginate results
3233 description: "Number of items to return"
3243 description: Sort column
3251 description: Plain text search, applied to various parts of the model depending on endpoint
3259 If the administrator enabled search index support, you can override the default search target.
3262 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3263 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3264 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3265 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3266 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3267 * 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
3268 the data from the origin instance API
3278 description: Sort videos by criteria
3293 description: Sort videos by criteria
3308 description: Sort comments by criteria
3318 description: Sort blacklists by criteria
3334 description: Plain text search that will match with user usernames or emails
3341 description: Filter results down to (un)banned users
3348 description: Sort users by criteria
3359 description: Sort abuses by criteria
3366 videoRedundanciesSort:
3370 description: Sort abuses by criteria
3379 description: The name of the account
3382 example: chocobozzz | chocobozzz@example.org
3387 description: The user id
3396 description: The object id or uuid
3404 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3406 name: playlistElementId
3409 description: Playlist element id
3416 description: Abuse id
3420 name: abuseMessageId
3423 description: Abuse message id
3427 name: captionLanguage
3430 description: The caption language
3437 description: The video channel handle
3440 example: my_username | my_username@example.com
3442 name: subscriptionHandle
3445 description: The subscription handle
3448 example: my_username | my_username@example.com
3453 description: The thread id (root comment id)
3460 description: The comment id
3467 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3480 description: tag(s) of the video
3493 description: tag(s) of the video, where all should be present in the video
3506 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
3519 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3532 description: if you don't need the `total` in the response
3543 description: whether to include nsfw videos, if any
3554 Special filters (local for instance) which might require special rights:
3555 * `local` - only videos local to the instance
3556 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3566 description: list of uris to check if each is part of the user subscriptions
3576 description: name of the plugin/theme on npmjs.com or in its package.json
3579 example: peertube-plugin-auth-ldap
3583 In the header: *Authorization: Bearer <token\>*
3586 Authenticating via OAuth requires the following steps:
3589 - Have an account with sufficient authorization levels
3591 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3594 - Make Authenticated Requests
3598 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3601 moderator: Moderator scope
3604 VideoConstantNumber:
3610 VideoConstantString:
3617 VideoPlaylistPrivacySet:
3623 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3624 VideoPlaylistPrivacyConstant:
3627 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3631 VideoPlaylistTypeSet:
3636 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3637 VideoPlaylistTypeConstant:
3640 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3651 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3652 VideoPrivacyConstant:
3655 $ref: '#/components/schemas/VideoPrivacySet'
3672 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3683 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3693 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3697 $ref: '#/components/schemas/AbuseStateSet'
3700 AbusePredefinedReasons:
3713 example: [spamOrMisleading]
3715 VideoResolutionConstant:
3719 description: 'Video resolution (240, 360, 720 ...)'
3724 VideoScheduledUpdate:
3727 $ref: '#/components/schemas/VideoPrivacySet'
3731 description: When to update the video
3751 - $ref: '#/components/schemas/Avatar'
3752 VideoChannelSummary:
3769 - $ref: '#/components/schemas/Avatar'
3781 - $ref: '#/components/schemas/Video'
3787 $ref: '#/components/schemas/VideoResolutionConstant'
3790 description: 'Video file size in bytes'
3808 VideoStreamingPlaylists:
3816 description: 'Playlist type (HLS = `1`)'
3825 description: 'Video files associated to this playlist. The difference with the root "files" property is that these files are fragmented, so they can be used in this streaming playlist (HLS etc)'
3827 $ref: '#/components/schemas/VideoFile'
3843 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3854 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3864 originallyPublishedAt:
3868 $ref: '#/components/schemas/VideoConstantNumber'
3870 $ref: '#/components/schemas/VideoConstantNumber'
3872 $ref: '#/components/schemas/VideoConstantString'
3874 $ref: '#/components/schemas/VideoPrivacyConstant'
3884 example: What is PeerTube?
3887 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3890 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3893 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
3909 $ref: '#/components/schemas/VideoStateConstant'
3913 - $ref: '#/components/schemas/VideoScheduledUpdate'
3921 $ref: '#/components/schemas/AccountSummary'
3923 $ref: '#/components/schemas/VideoChannelSummary'
3932 - $ref: '#/components/schemas/Video'
3939 description: A text tell the audience how to support the video creator
3940 example: Please support my work on <insert crowdfunding plateform>! <3
3942 $ref: '#/components/schemas/VideoChannel'
3944 $ref: '#/components/schemas/Account'
3949 example: [flowers, gardening]
3952 description: 'WebTorrent/raw video files. Can be empty if WebTorrent is disabled on the server. In this case, video files will be in the "streamingPlaylists[].files" property'
3954 $ref: '#/components/schemas/VideoFile'
3967 $ref: '#/components/schemas/VideoStreamingPlaylists'
3968 FileRedundancyInformation:
4005 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4012 $ref: '#/components/schemas/FileRedundancyInformation'
4016 $ref: '#/components/schemas/FileRedundancyInformation'
4017 VideoImportStateConstant:
4025 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4037 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4041 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
4045 $ref: '#/components/schemas/VideoImportStateConstant'
4055 $ref: '#/components/schemas/Video'
4063 example: The video is a spam
4065 $ref: '#/components/schemas/AbusePredefinedReasons'
4067 $ref: '#/components/schemas/Account'
4069 $ref: '#/components/schemas/AbuseStateConstant'
4072 example: Decided to ban the server since it spams us regularly
4083 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4099 $ref: '#/components/schemas/AccountSummary'
4117 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4146 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4162 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4172 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4174 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4176 $ref: '#/components/schemas/AccountSummary'
4178 $ref: '#/components/schemas/VideoChannelSummary'
4200 totalRepliesFromVideoAuthor:
4205 $ref: '#/components/schemas/Account'
4206 VideoCommentThreadTree:
4209 $ref: '#/components/schemas/VideoComment'
4213 $ref: '#/components/schemas/VideoCommentThreadTree'
4217 $ref: '#/components/schemas/VideoConstantString'
4272 $ref: '#/components/schemas/Avatar'
4275 - $ref: '#/components/schemas/Actor'
4288 description: timestamp within the video, in seconds
4355 allowedForCurrentIP:
4357 requiresEmailVerification:
4561 requiresEmailVerification:
4586 allowAdditionalExtensions:
4654 $ref: '#/components/schemas/Actor'
4656 $ref: '#/components/schemas/Actor'
4659 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4672 PredefinedAbuseReasons:
4673 description: Reason categories that help triage reports
4704 - activitypub-http-unicast
4705 - activitypub-http-broadcast
4706 - activitypub-http-fetcher
4707 - activitypub-follow
4713 - activitypub-refresher
4717 additionalProperties: true
4720 additionalProperties: true
4744 VideoUploadResponse:
4755 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4756 CommentThreadResponse:
4765 $ref: '#/components/schemas/VideoComment'
4766 CommentThreadPostResponse:
4769 $ref: '#/components/schemas/VideoComment'
4779 $ref: '#/components/schemas/Video'
4787 description: The user username
4793 description: The user email
4796 description: Theme enabled by this user
4799 description: Has the user confirmed their email address?
4801 $ref: '#/components/schemas/NSFWPolicy'
4804 description: Enable P2P in the player
4807 description: Automatically start playing the video on the watch page
4809 $ref: '#/components/schemas/UserRole'
4818 description: The user video quota
4821 description: The user daily video quota
4826 abusesAcceptedCount:
4832 noInstanceConfigWarningModal:
4843 $ref: '#/components/schemas/Account'
4847 $ref: '#/components/schemas/VideoChannel'
4852 description: The user username
4858 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
4864 description: The user email
4867 description: The user video quota
4870 description: The user daily video quota
4872 $ref: '#/components/schemas/UserRole'
4884 description: The user id
4888 description: The updated email of the user
4891 description: The updated video quota of the user
4894 description: The updated daily video quota of the user
4896 $ref: '#/components/schemas/UserRole'
4908 description: Your new password
4914 description: Your new email
4917 description: Your new displayNSFW
4924 description: Your new autoPlayVideo
4934 description: Id of the video
4937 description: Rating of the video
4944 $ref: '#/components/schemas/Video'
4947 description: 'Rating of the video'
4955 description: The username of the user
4958 pattern: '/^[a-z0-9._]{1,50}$/'
4962 description: The password of the user
4968 description: The email of the user
4971 description: The user display name
4979 description: The name for the default channel
4980 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4983 description: The display name for the default channel
5000 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5001 example: Please support my work on <insert crowdfunding plateform>! <3
5013 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5014 example: Please support my work on <insert crowdfunding plateform>! <3
5015 bulkVideosSupportUpdate:
5017 description: 'Update the support field for all videos of this channel'
5022 name: 'media:peerLink'
5031 - application/x-bittorrent
5037 name: 'media:content'
5068 VideoCommentsForXML:
5103 description: video watch page URL
5106 description: video canonical URL
5110 description: video publication date
5113 description: video description
5116 description: video description
5119 description: publisher user name
5122 description: video category (MRSS)
5125 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5140 description: video embed path, relative to the canonical URL domain (MRSS)
5149 description: video watch path, relative to the canonical URL domain (MRSS)
5170 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5171 'media:description':
5178 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5181 description: main streamable file for the video
5191 - application/x-bittorrent
5200 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)
5203 - $ref: '#/components/schemas/MRSSPeerLink'
5204 - $ref: '#/components/schemas/MRSSGroupContent'
5205 NotificationSettingValue:
5226 Notification type, following the `UserNotificationType` enum:
5228 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5230 - `2` NEW_COMMENT_ON_MY_VIDEO
5232 - `3` NEW_ABUSE_FOR_MODERATORS
5234 - `4` BLACKLIST_ON_MY_VIDEO
5236 - `5` UNBLACKLIST_ON_MY_VIDEO
5238 - `6` MY_VIDEO_PUBLISHED
5240 - `7` MY_VIDEO_IMPORT_SUCCESS
5242 - `8` MY_VIDEO_IMPORT_ERROR
5244 - `9` NEW_USER_REGISTRATION
5248 - `11` COMMENT_MENTION
5250 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5252 - `13` NEW_INSTANCE_FOLLOWER
5254 - `14` AUTO_INSTANCE_FOLLOWING
5260 - $ref: '#/components/schemas/VideoInfo'
5264 $ref: '#/components/schemas/ActorInfo'
5273 $ref: '#/components/schemas/VideoInfo'
5294 $ref: '#/components/schemas/VideoInfo'
5296 $ref: '#/components/schemas/ActorInfo'
5305 - $ref: '#/components/schemas/VideoInfo'
5314 - $ref: '#/components/schemas/VideoInfo'
5318 - $ref: '#/components/schemas/ActorInfo'
5326 $ref: '#/components/schemas/ActorInfo'
5354 NotificationListResponse:
5363 $ref: '#/components/schemas/Notification'
5368 example: peertube-plugin-auth-ldap
5396 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5399 additionalProperties: true
5415 $ref: '#/components/schemas/Plugin'
5418 'https://search.example.org/api/v1/search/videos':
5420 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5423 description: successful operation
5427 $ref: '#/components/schemas/VideoListResponse'