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
1335 description: Enable or disable downloading for this video
1337 originallyPublishedAt:
1338 description: Date when the content was originally published
1342 $ref: '#/components/schemas/VideoScheduledUpdate'
1349 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1351 contentType: image/jpeg
1353 contentType: image/jpeg
1358 USERNAME="<your_username>"
1359 PASSWORD="<your_password>"
1360 FILE_PATH="<your_file_path>"
1361 CHANNEL_ID="<your_channel_id>"
1364 API_PATH="https://peertube2.cpy.re/api/v1"
1366 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1367 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1368 token=$(curl -s "$API_PATH/users/token" \
1369 --data client_id="$client_id" \
1370 --data client_secret="$client_secret" \
1371 --data grant_type=password \
1372 --data response_type=code \
1373 --data username="$USERNAME" \
1374 --data password="$PASSWORD" \
1375 | jq -r ".access_token")
1377 curl -s "$API_PATH/videos/upload" \
1378 -H "Authorization: Bearer $token" \
1380 --form videofile=@"$FILE_PATH" \
1381 --form channelId=$CHANNEL_ID \
1385 summary: Import a video
1386 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1393 multipart/form-data:
1398 description: Torrent File
1402 description: HTTP target URL
1405 description: Magnet URI
1408 description: Channel id that will contain this video
1411 description: Video thumbnail file
1415 description: Video preview file
1419 $ref: '#/components/schemas/VideoPrivacySet'
1421 description: Video category
1424 description: Video licence
1427 description: Video language
1430 description: Video description
1433 description: Whether or not we wait transcoding before publish the video
1436 description: A text tell the audience how to support the video creator
1437 example: Please support my work on <insert crowdfunding plateform>! <3
1440 description: Whether or not this video contains sensitive content
1443 description: Video name
1446 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1455 description: Enable or disable comments for this video
1458 description: Enable or disable downloading for this video
1461 $ref: '#/components/schemas/VideoScheduledUpdate'
1467 contentType: application/x-bittorrent
1469 contentType: image/jpeg
1471 contentType: image/jpeg
1474 description: successful operation
1478 $ref: '#/components/schemas/VideoUploadResponse'
1480 description: HTTP or Torrent/magnetURI import not enabled
1482 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1486 summary: List my abuses
1495 description: only list the report with this id
1501 $ref: '#/components/schemas/AbuseStateSet'
1502 - $ref: '#/components/parameters/start'
1503 - $ref: '#/components/parameters/count'
1504 - $ref: '#/components/parameters/abusesSort'
1507 description: successful operation
1513 $ref: '#/components/schemas/Abuse'
1517 summary: List abuses
1527 description: only list the report with this id
1530 - name: predefinedReason
1532 description: predefined reason the listed reports should contain
1534 $ref: '#/components/schemas/PredefinedAbuseReasons'
1537 description: plain search that will match with video titles, reporter names and more
1543 $ref: '#/components/schemas/AbuseStateSet'
1544 - name: searchReporter
1546 description: only list reports of a specific reporter
1549 - name: searchReportee
1550 description: only list reports of a specific reportee
1556 description: only list reports of a specific video
1559 - name: searchVideoChannel
1561 description: only list reports of a specific video channel
1566 description: only list blacklisted or deleted videos
1574 description: only list account, comment or video reports
1581 - $ref: '#/components/parameters/start'
1582 - $ref: '#/components/parameters/count'
1583 - $ref: '#/components/parameters/abusesSort'
1586 description: successful operation
1592 $ref: '#/components/schemas/Abuse'
1595 summary: Report an abuse
1608 description: Reason why the user reports this video
1612 $ref: '#/components/schemas/PredefinedAbuseReasons'
1618 description: Video id to report
1622 description: Timestamp in the video that marks the beginning of the report
1626 description: Timestamp in the video that marks the ending of the report
1632 description: Comment id to report
1638 description: Account id to report
1644 description: successful operation
1646 description: incorrect request parameters
1647 '/abuses/{abuseId}':
1649 summary: Update an abuse
1657 - $ref: '#/components/parameters/abuseId'
1665 $ref: '#/components/schemas/AbuseStateSet'
1668 description: Update the report comment visible only to the moderation team
1671 description: successful operation
1673 description: abuse not found
1677 summary: Delete an abuse
1683 - $ref: '#/components/parameters/abuseId'
1686 description: successful operation
1688 description: block not found
1689 '/abuses/{abuseId}/messages':
1691 summary: List messages of an abuse
1697 - $ref: '#/components/parameters/abuseId'
1700 description: successful operation
1706 $ref: '#/components/schemas/AbuseMessage'
1709 summary: Add message to an abuse
1715 - $ref: '#/components/parameters/abuseId'
1724 description: Message to send
1730 description: successful operation
1732 description: incorrect request parameters
1733 '/abuses/{abuseId}/messages/{abuseMessageId}':
1735 summary: Delete an abuse message
1741 - $ref: '#/components/parameters/abuseId'
1742 - $ref: '#/components/parameters/abuseMessageId'
1745 description: successful operation
1747 '/videos/{id}/blacklist':
1749 summary: Block a video
1757 - $ref: '#/components/parameters/idOrUUID'
1760 description: successful operation
1762 summary: Unblock a video by its id
1770 - $ref: '#/components/parameters/idOrUUID'
1773 description: successful operation
1775 description: block not found
1780 summary: List video blocks
1789 list only blocks that match this type:
1793 - `2`: automatic block that needs review
1801 description: plain search that will match with video titles, and more
1804 - $ref: '#/components/parameters/start'
1805 - $ref: '#/components/parameters/count'
1806 - $ref: '#/components/parameters/blacklistsSort'
1809 description: successful operation
1821 $ref: '#/components/schemas/VideoBlacklist'
1822 /videos/{id}/captions:
1824 summary: List captions of a video
1828 - $ref: '#/components/parameters/idOrUUID'
1831 description: successful operation
1843 $ref: '#/components/schemas/VideoCaption'
1844 /videos/{id}/captions/{captionLanguage}:
1846 summary: Add or replace a video caption
1850 - $ref: '#/components/parameters/idOrUUID'
1851 - $ref: '#/components/parameters/captionLanguage'
1854 multipart/form-data:
1859 description: The file to upload.
1864 contentType: text/vtt, application/x-subrip, text/plain
1867 description: successful operation
1869 description: video or language not found
1871 summary: Delete a video caption
1875 - $ref: '#/components/parameters/idOrUUID'
1876 - $ref: '#/components/parameters/captionLanguage'
1879 description: successful operation
1881 description: video or language or caption for that language not found
1884 summary: List video channels
1888 - $ref: '#/components/parameters/start'
1889 - $ref: '#/components/parameters/count'
1890 - $ref: '#/components/parameters/sort'
1893 description: successful operation
1905 $ref: '#/components/schemas/VideoChannel'
1907 summary: Create a video channel
1914 description: successful operation
1919 $ref: '#/components/schemas/VideoChannelCreate'
1920 '/video-channels/{channelHandle}':
1922 summary: Get a video channel
1926 - $ref: '#/components/parameters/channelHandle'
1929 description: successful operation
1933 $ref: '#/components/schemas/VideoChannel'
1935 summary: Update a video channel
1941 - $ref: '#/components/parameters/channelHandle'
1944 description: successful operation
1949 $ref: '#/components/schemas/VideoChannelUpdate'
1951 summary: Delete a video channel
1957 - $ref: '#/components/parameters/channelHandle'
1960 description: successful operation
1961 '/video-channels/{channelHandle}/videos':
1963 summary: List videos of a video channel
1968 - $ref: '#/components/parameters/channelHandle'
1969 - $ref: '#/components/parameters/categoryOneOf'
1970 - $ref: '#/components/parameters/tagsOneOf'
1971 - $ref: '#/components/parameters/tagsAllOf'
1972 - $ref: '#/components/parameters/licenceOneOf'
1973 - $ref: '#/components/parameters/languageOneOf'
1974 - $ref: '#/components/parameters/nsfw'
1975 - $ref: '#/components/parameters/filter'
1976 - $ref: '#/components/parameters/skipCount'
1977 - $ref: '#/components/parameters/start'
1978 - $ref: '#/components/parameters/count'
1979 - $ref: '#/components/parameters/videosSort'
1982 description: successful operation
1986 $ref: '#/components/schemas/VideoListResponse'
1988 /video-playlists/privacies:
1990 summary: List available playlist privacies
1995 description: successful operation
2004 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2008 summary: List video playlists
2012 - $ref: '#/components/parameters/start'
2013 - $ref: '#/components/parameters/count'
2014 - $ref: '#/components/parameters/sort'
2017 description: successful operation
2029 $ref: '#/components/schemas/VideoPlaylist'
2031 summary: Create a video playlist
2032 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2039 description: successful operation
2054 multipart/form-data:
2059 description: Video playlist display name
2062 description: Video playlist thumbnail file
2066 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2068 description: Video playlist description
2071 description: Video channel in which the playlist will be published
2077 contentType: image/jpeg
2079 /video-playlists/{id}:
2081 summary: Get a video playlist
2085 - $ref: '#/components/parameters/idOrUUID'
2088 description: successful operation
2092 $ref: '#/components/schemas/VideoPlaylist'
2094 summary: Update a video playlist
2095 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2102 description: successful operation
2104 - $ref: '#/components/parameters/idOrUUID'
2107 multipart/form-data:
2112 description: Video playlist display name
2115 description: Video playlist thumbnail file
2119 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2121 description: Video playlist description
2124 description: Video channel in which the playlist will be published
2128 contentType: image/jpeg
2130 summary: Delete a video playlist
2136 - $ref: '#/components/parameters/idOrUUID'
2139 description: successful operation
2141 /video-playlists/{id}/videos:
2143 summary: 'List videos of a playlist'
2148 - $ref: '#/components/parameters/idOrUUID'
2151 description: successful operation
2155 $ref: '#/components/schemas/VideoListResponse'
2157 summary: 'Add a video in a playlist'
2164 - $ref: '#/components/parameters/idOrUUID'
2167 description: successful operation
2173 videoPlaylistElement:
2186 description: 'Video to add in the playlist'
2189 description: 'Start the video at this specific timestamp (in seconds)'
2192 description: 'Stop the video at this specific timestamp (in seconds)'
2196 /video-playlists/{id}/videos/reorder:
2198 summary: 'Reorder a playlist'
2204 - $ref: '#/components/parameters/idOrUUID'
2207 description: successful operation
2216 description: 'Start position of the element to reorder'
2218 insertAfterPosition:
2220 description: 'New position for the block to reorder, to add the block before the first element'
2224 description: 'How many element from `startPosition` to reorder'
2228 - insertAfterPosition
2230 /video-playlists/{id}/videos/{playlistElementId}:
2232 summary: 'Update a playlist element'
2238 - $ref: '#/components/parameters/idOrUUID'
2239 - $ref: '#/components/parameters/playlistElementId'
2242 description: successful operation
2251 description: 'Start the video at this specific timestamp (in seconds)'
2254 description: 'Stop the video at this specific timestamp (in seconds)'
2256 summary: 'Delete an element from a playlist'
2262 - $ref: '#/components/parameters/idOrUUID'
2263 - $ref: '#/components/parameters/playlistElementId'
2266 description: successful operation
2268 '/users/me/video-playlists/videos-exist':
2270 summary: 'Check video exists in my playlists'
2279 description: The video ids to check
2286 description: successful operation
2306 '/accounts/{name}/video-channels':
2308 summary: List video channels of an account
2313 - $ref: '#/components/parameters/name'
2316 description: include view statistics for the last 30 days (only if authentified as the account user)
2319 - $ref: '#/components/parameters/start'
2320 - $ref: '#/components/parameters/count'
2321 - $ref: '#/components/parameters/sort'
2324 description: successful operation
2330 $ref: '#/components/schemas/VideoChannel'
2331 '/accounts/{name}/ratings':
2333 summary: List ratings of an account
2339 - $ref: '#/components/parameters/name'
2340 - $ref: '#/components/parameters/start'
2341 - $ref: '#/components/parameters/count'
2342 - $ref: '#/components/parameters/sort'
2346 description: Optionally filter which ratings to retrieve
2354 description: successful operation
2360 $ref: '#/components/schemas/VideoRating'
2361 '/videos/{id}/comment-threads':
2363 summary: List threads of a video
2367 - $ref: '#/components/parameters/idOrUUID'
2368 - $ref: '#/components/parameters/start'
2369 - $ref: '#/components/parameters/count'
2370 - $ref: '#/components/parameters/commentsSort'
2373 description: successful operation
2377 $ref: '#/components/schemas/CommentThreadResponse'
2379 summary: Create a thread
2385 - $ref: '#/components/parameters/idOrUUID'
2388 description: successful operation
2392 $ref: '#/components/schemas/CommentThreadPostResponse'
2394 description: video does not exist
2403 description: 'Text comment'
2407 '/videos/{id}/comment-threads/{threadId}':
2409 summary: Get a thread
2413 - $ref: '#/components/parameters/idOrUUID'
2414 - $ref: '#/components/parameters/threadId'
2417 description: successful operation
2421 $ref: '#/components/schemas/VideoCommentThreadTree'
2422 '/videos/{id}/comments/{commentId}':
2424 summary: Reply to a thread of a video
2430 - $ref: '#/components/parameters/idOrUUID'
2431 - $ref: '#/components/parameters/commentId'
2434 description: successful operation
2438 $ref: '#/components/schemas/CommentThreadPostResponse'
2440 description: thread or video does not exist
2449 description: 'Text comment'
2454 summary: Delete a comment or a reply
2460 - $ref: '#/components/parameters/idOrUUID'
2461 - $ref: '#/components/parameters/commentId'
2464 description: successful operation
2466 description: cannot remove comment of another user
2468 description: comment or video does not exist
2470 description: comment is already deleted
2471 '/videos/{id}/rate':
2473 summary: Like/dislike a video
2479 - $ref: '#/components/parameters/idOrUUID'
2482 description: successful operation
2484 description: video does not exist
2489 summary: Search videos
2494 allowEmptyValue: false
2496 String to search. If the user can make a remote URI search, and the string is an URI then the
2497 PeerTube instance will fetch the remote object and add it to its database. Then,
2498 you can use the REST API to fetch the complete video information and interact with it.
2501 - $ref: '#/components/parameters/categoryOneOf'
2502 - $ref: '#/components/parameters/tagsOneOf'
2503 - $ref: '#/components/parameters/tagsAllOf'
2504 - $ref: '#/components/parameters/licenceOneOf'
2505 - $ref: '#/components/parameters/languageOneOf'
2506 - $ref: '#/components/parameters/nsfw'
2507 - $ref: '#/components/parameters/filter'
2508 - $ref: '#/components/parameters/skipCount'
2509 - $ref: '#/components/parameters/start'
2510 - $ref: '#/components/parameters/count'
2511 - $ref: '#/components/parameters/searchTarget'
2512 - $ref: '#/components/parameters/videosSearchSort'
2515 description: Get videos that are published after this date
2521 description: Get videos that are published before this date
2525 - name: originallyPublishedStartDate
2527 description: Get videos that are originally published after this date
2531 - name: originallyPublishedEndDate
2533 description: Get videos that are originally published before this date
2539 description: Get videos that have this minimum duration
2544 description: Get videos that have this maximum duration
2548 'searchTarget === search-index':
2549 $ref: '#/components/callbacks/searchIndex'
2552 description: successful operation
2556 $ref: '#/components/schemas/VideoListResponse'
2558 description: search index unavailable
2559 /search/video-channels:
2563 summary: Search channels
2569 String to search. If the user can make a remote URI search, and the string is an URI then the
2570 PeerTube instance will fetch the remote object and add it to its database. Then,
2571 you can use the REST API to fetch the complete channel information and interact with it.
2574 - $ref: '#/components/parameters/start'
2575 - $ref: '#/components/parameters/count'
2576 - $ref: '#/components/parameters/searchTarget'
2577 - $ref: '#/components/parameters/sort'
2579 'searchTarget === search-index':
2580 $ref: '#/components/callbacks/searchIndex'
2583 description: successful operation
2589 $ref: '#/components/schemas/VideoChannel'
2591 description: search index unavailable
2592 /blocklist/accounts:
2596 summary: List account blocks
2601 - $ref: '#/components/parameters/start'
2602 - $ref: '#/components/parameters/count'
2603 - $ref: '#/components/parameters/sort'
2606 description: successful operation
2610 summary: Block an account
2622 example: chocobozzz@example.org
2623 description: account to block, in the form `username@domain`
2628 description: successful operation
2630 description: self-blocking forbidden
2631 '/blocklist/accounts/{accountName}':
2635 summary: Unblock an account by its handle
2643 description: account to unblock, in the form `username@domain`
2648 description: successful operation
2650 description: account or account block does not exist
2655 summary: List server blocks
2660 - $ref: '#/components/parameters/start'
2661 - $ref: '#/components/parameters/count'
2662 - $ref: '#/components/parameters/sort'
2665 description: successful operation
2669 summary: Block a server
2682 description: server domain to block
2687 description: successful operation
2689 description: self-blocking forbidden
2690 '/blocklist/servers/{host}':
2694 summary: Unblock a server by its domain
2702 description: server domain to unblock
2708 description: successful operation
2710 description: account block does not exist
2714 - Instance Redundancy
2715 summary: Update a server redundancy policy
2723 description: server domain to mirror
2735 description: allow mirroring of the host's local videos
2740 description: successful operation
2742 description: server is not already known
2747 summary: List videos being mirrored
2755 description: direction of the mirror
2761 - $ref: '#/components/parameters/start'
2762 - $ref: '#/components/parameters/count'
2763 - $ref: '#/components/parameters/videoRedundanciesSort'
2766 description: successful operation
2772 $ref: '#/components/schemas/VideoRedundancy'
2776 summary: Mirror a video
2792 description: successful operation
2794 description: cannot mirror a local video
2796 description: video does not exist
2798 description: video is already mirrored
2799 /redundancy/videos/{redundancyId}:
2803 summary: Delete a mirror done on a video
2808 - name: redundancyId
2811 description: id of an existing redundancy on a video
2816 description: successful operation
2818 description: video redundancy not found
2819 '/feeds/video-comments.{format}':
2823 summary: List comments on videos
2825 - url: 'https://peertube2.cpy.re'
2826 description: Live Test Server (live data - latest nightly version)
2827 - url: 'https://peertube3.cpy.re'
2828 description: Live Test Server (live data - latest RC version)
2829 - url: 'https://peertube.cpy.re'
2830 description: Live Test Server (live data - stable version)
2835 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2848 description: 'limit listing to a specific video'
2853 description: 'limit listing to a specific account'
2858 description: 'limit listing to a specific account'
2861 - name: videoChannelId
2863 description: 'limit listing to a specific video channel'
2866 - name: videoChannelName
2868 description: 'limit listing to a specific video channel'
2873 description: successful operation
2878 default: 'max-age=900' # 15 min cache
2882 $ref: '#/components/schemas/VideoCommentsForXML'
2883 application/rss+xml:
2885 $ref: '#/components/schemas/VideoCommentsForXML'
2888 $ref: '#/components/schemas/VideoCommentsForXML'
2889 application/atom+xml:
2891 $ref: '#/components/schemas/VideoCommentsForXML'
2896 x-summary: field inconsistencies
2899 - videoId filter is mixed with a channel filter
2901 description: video, video channel or account not found
2903 description: accept header unsupported
2904 '/feeds/videos.{format}':
2908 summary: List videos
2910 - url: 'https://peertube2.cpy.re'
2911 description: Live Test Server (live data - latest nightly version)
2912 - url: 'https://peertube3.cpy.re'
2913 description: Live Test Server (live data - latest RC version)
2914 - url: 'https://peertube.cpy.re'
2915 description: Live Test Server (live data - stable version)
2920 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2933 description: 'limit listing to a specific account'
2938 description: 'limit listing to a specific account'
2941 - name: videoChannelId
2943 description: 'limit listing to a specific video channel'
2946 - name: videoChannelName
2948 description: 'limit listing to a specific video channel'
2951 - $ref: '#/components/parameters/sort'
2952 - $ref: '#/components/parameters/nsfw'
2953 - $ref: '#/components/parameters/filter'
2956 description: successful operation
2961 default: 'max-age=900' # 15 min cache
2965 $ref: '#/components/schemas/VideosForXML'
2968 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
2969 application/rss+xml:
2971 $ref: '#/components/schemas/VideosForXML'
2974 $ref: '#/components/schemas/VideosForXML'
2975 application/atom+xml:
2977 $ref: '#/components/schemas/VideosForXML'
2982 description: video channel or account not found
2984 description: accept header unsupported
2989 summary: List plugins
3002 - $ref: '#/components/parameters/start'
3003 - $ref: '#/components/parameters/count'
3004 - $ref: '#/components/parameters/sort'
3007 description: successful operation
3011 $ref: '#/components/schemas/PluginResponse'
3016 summary: List available plugins
3029 - name: currentPeerTubeEngine
3033 - $ref: '#/components/parameters/start'
3034 - $ref: '#/components/parameters/count'
3035 - $ref: '#/components/parameters/sort'
3038 description: successful operation
3042 $ref: '#/components/schemas/PluginResponse'
3044 description: plugin index unavailable
3049 summary: Install a plugin
3062 example: peertube-plugin-auth-ldap
3065 additionalProperties: false
3072 additionalProperties: false
3075 description: successful operation
3077 description: should have either `npmName` or `path` set
3082 summary: Update a plugin
3095 example: peertube-plugin-auth-ldap
3098 additionalProperties: false
3105 additionalProperties: false
3108 description: successful operation
3110 description: should have either `npmName` or `path` set
3112 description: existing plugin not found
3117 summary: Uninstall a plugin
3129 description: name of the plugin/theme in its package.json
3130 example: peertube-plugin-auth-ldap
3135 description: successful operation
3137 description: existing plugin not found
3142 summary: Get a plugin
3147 - $ref: '#/components/parameters/npmName'
3150 description: successful operation
3154 $ref: '#/components/schemas/Plugin'
3156 description: plugin not found
3157 /plugins/{npmName}/settings:
3161 summary: Set a plugin's settings
3166 - $ref: '#/components/parameters/npmName'
3175 additionalProperties: true
3178 description: successful operation
3180 description: plugin not found
3181 /plugins/{npmName}/public-settings:
3185 summary: Get a plugin's public settings
3187 - $ref: '#/components/parameters/npmName'
3190 description: successful operation
3195 additionalProperties: true
3197 description: plugin not found
3198 /plugins/{npmName}/registered-settings:
3202 summary: Get a plugin's registered settings
3207 - $ref: '#/components/parameters/npmName'
3210 description: successful operation
3215 additionalProperties: true
3217 description: plugin not found
3219 - url: 'https://peertube2.cpy.re/api/v1'
3220 description: Live Test Server (live data - latest nightly version)
3221 - url: 'https://peertube3.cpy.re/api/v1'
3222 description: Live Test Server (live data - latest RC version)
3223 - url: 'https://peertube.cpy.re/api/v1'
3224 description: Live Test Server (live data - stable version)
3231 description: Offset used to paginate results
3239 description: "Number of items to return"
3249 description: Sort column
3257 description: Plain text search, applied to various parts of the model depending on endpoint
3265 If the administrator enabled search index support, you can override the default search target.
3268 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3269 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3270 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3271 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3272 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3273 * 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
3274 the data from the origin instance API
3284 description: Sort videos by criteria
3299 description: Sort videos by criteria
3314 description: Sort comments by criteria
3324 description: Sort blacklists by criteria
3340 description: Plain text search that will match with user usernames or emails
3347 description: Filter results down to (un)banned users
3354 description: Sort users by criteria
3365 description: Sort abuses by criteria
3372 videoRedundanciesSort:
3376 description: Sort abuses by criteria
3385 description: The name of the account
3388 example: chocobozzz | chocobozzz@example.org
3393 description: The user id
3402 description: The object id or uuid
3410 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3412 name: playlistElementId
3415 description: Playlist element id
3422 description: Abuse id
3426 name: abuseMessageId
3429 description: Abuse message id
3433 name: captionLanguage
3436 description: The caption language
3443 description: The video channel handle
3446 example: my_username | my_username@example.com
3448 name: subscriptionHandle
3451 description: The subscription handle
3454 example: my_username | my_username@example.com
3459 description: The thread id (root comment id)
3466 description: The comment id
3473 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3486 description: tag(s) of the video
3499 description: tag(s) of the video, where all should be present in the video
3512 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
3525 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3538 description: if you don't need the `total` in the response
3549 description: whether to include nsfw videos, if any
3560 Special filters (local for instance) which might require special rights:
3561 * `local` - only videos local to the instance
3562 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3572 description: list of uris to check if each is part of the user subscriptions
3582 description: name of the plugin/theme on npmjs.com or in its package.json
3585 example: peertube-plugin-auth-ldap
3589 In the header: *Authorization: Bearer <token\>*
3592 Authenticating via OAuth requires the following steps:
3595 - Have an account with sufficient authorization levels
3597 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3600 - Make Authenticated Requests
3604 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3607 moderator: Moderator scope
3610 VideoConstantNumber:
3616 VideoConstantString:
3623 VideoPlaylistPrivacySet:
3629 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3630 VideoPlaylistPrivacyConstant:
3633 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3637 VideoPlaylistTypeSet:
3642 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3643 VideoPlaylistTypeConstant:
3646 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3657 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3658 VideoPrivacyConstant:
3661 $ref: '#/components/schemas/VideoPrivacySet'
3678 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3689 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3699 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3703 $ref: '#/components/schemas/AbuseStateSet'
3706 AbusePredefinedReasons:
3719 example: [spamOrMisleading]
3721 VideoResolutionConstant:
3725 description: 'Video resolution (240, 360, 720 ...)'
3730 VideoScheduledUpdate:
3733 $ref: '#/components/schemas/VideoPrivacySet'
3737 description: When to update the video
3757 - $ref: '#/components/schemas/Avatar'
3758 VideoChannelSummary:
3775 - $ref: '#/components/schemas/Avatar'
3787 - $ref: '#/components/schemas/Video'
3793 $ref: '#/components/schemas/VideoResolutionConstant'
3796 description: 'Video file size in bytes'
3814 VideoStreamingPlaylists:
3822 description: 'Playlist type (HLS = `1`)'
3831 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)'
3833 $ref: '#/components/schemas/VideoFile'
3849 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3860 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3870 originallyPublishedAt:
3874 $ref: '#/components/schemas/VideoConstantNumber'
3876 $ref: '#/components/schemas/VideoConstantNumber'
3878 $ref: '#/components/schemas/VideoConstantString'
3880 $ref: '#/components/schemas/VideoPrivacyConstant'
3890 example: What is PeerTube?
3893 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3896 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3899 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
3915 $ref: '#/components/schemas/VideoStateConstant'
3919 - $ref: '#/components/schemas/VideoScheduledUpdate'
3927 $ref: '#/components/schemas/AccountSummary'
3929 $ref: '#/components/schemas/VideoChannelSummary'
3938 - $ref: '#/components/schemas/Video'
3945 description: A text tell the audience how to support the video creator
3946 example: Please support my work on <insert crowdfunding plateform>! <3
3948 $ref: '#/components/schemas/VideoChannel'
3950 $ref: '#/components/schemas/Account'
3955 example: [flowers, gardening]
3958 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'
3960 $ref: '#/components/schemas/VideoFile'
3973 $ref: '#/components/schemas/VideoStreamingPlaylists'
3974 FileRedundancyInformation:
4011 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4018 $ref: '#/components/schemas/FileRedundancyInformation'
4022 $ref: '#/components/schemas/FileRedundancyInformation'
4023 VideoImportStateConstant:
4031 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4043 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4047 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
4051 $ref: '#/components/schemas/VideoImportStateConstant'
4061 $ref: '#/components/schemas/Video'
4069 example: The video is a spam
4071 $ref: '#/components/schemas/AbusePredefinedReasons'
4073 $ref: '#/components/schemas/Account'
4075 $ref: '#/components/schemas/AbuseStateConstant'
4078 example: Decided to ban the server since it spams us regularly
4089 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4105 $ref: '#/components/schemas/AccountSummary'
4123 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4152 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4168 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4178 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4180 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4182 $ref: '#/components/schemas/AccountSummary'
4184 $ref: '#/components/schemas/VideoChannelSummary'
4206 totalRepliesFromVideoAuthor:
4211 $ref: '#/components/schemas/Account'
4212 VideoCommentThreadTree:
4215 $ref: '#/components/schemas/VideoComment'
4219 $ref: '#/components/schemas/VideoCommentThreadTree'
4223 $ref: '#/components/schemas/VideoConstantString'
4278 $ref: '#/components/schemas/Avatar'
4281 - $ref: '#/components/schemas/Actor'
4294 description: timestamp within the video, in seconds
4361 allowedForCurrentIP:
4363 requiresEmailVerification:
4567 requiresEmailVerification:
4592 allowAdditionalExtensions:
4660 $ref: '#/components/schemas/Actor'
4662 $ref: '#/components/schemas/Actor'
4665 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4678 PredefinedAbuseReasons:
4679 description: Reason categories that help triage reports
4710 - activitypub-http-unicast
4711 - activitypub-http-broadcast
4712 - activitypub-http-fetcher
4713 - activitypub-follow
4719 - activitypub-refresher
4723 additionalProperties: true
4726 additionalProperties: true
4750 VideoUploadResponse:
4761 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4762 CommentThreadResponse:
4771 $ref: '#/components/schemas/VideoComment'
4772 CommentThreadPostResponse:
4775 $ref: '#/components/schemas/VideoComment'
4785 $ref: '#/components/schemas/Video'
4793 description: The user username
4799 description: The user email
4802 description: Theme enabled by this user
4805 description: Has the user confirmed their email address?
4807 $ref: '#/components/schemas/NSFWPolicy'
4810 description: Enable P2P in the player
4813 description: Automatically start playing the video on the watch page
4815 $ref: '#/components/schemas/UserRole'
4824 description: The user video quota
4827 description: The user daily video quota
4832 abusesAcceptedCount:
4838 noInstanceConfigWarningModal:
4849 $ref: '#/components/schemas/Account'
4853 $ref: '#/components/schemas/VideoChannel'
4858 description: The user username
4864 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
4870 description: The user email
4873 description: The user video quota
4876 description: The user daily video quota
4878 $ref: '#/components/schemas/UserRole'
4890 description: The user id
4894 description: The updated email of the user
4897 description: The updated video quota of the user
4900 description: The updated daily video quota of the user
4902 $ref: '#/components/schemas/UserRole'
4914 description: Your new password
4920 description: Your new email
4923 description: Your new displayNSFW
4930 description: Your new autoPlayVideo
4940 description: Id of the video
4943 description: Rating of the video
4950 $ref: '#/components/schemas/Video'
4953 description: 'Rating of the video'
4961 description: The username of the user
4964 pattern: '/^[a-z0-9._]{1,50}$/'
4968 description: The password of the user
4974 description: The email of the user
4977 description: The user display name
4985 description: The name for the default channel
4986 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4989 description: The display name for the default channel
5006 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5007 example: Please support my work on <insert crowdfunding plateform>! <3
5019 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5020 example: Please support my work on <insert crowdfunding plateform>! <3
5021 bulkVideosSupportUpdate:
5023 description: 'Update the support field for all videos of this channel'
5028 name: 'media:peerLink'
5037 - application/x-bittorrent
5043 name: 'media:content'
5074 VideoCommentsForXML:
5109 description: video watch page URL
5112 description: video canonical URL
5116 description: video publication date
5119 description: video description
5122 description: video description
5125 description: publisher user name
5128 description: video category (MRSS)
5131 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5146 description: video embed path, relative to the canonical URL domain (MRSS)
5155 description: video watch path, relative to the canonical URL domain (MRSS)
5176 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5177 'media:description':
5184 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5187 description: main streamable file for the video
5197 - application/x-bittorrent
5206 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)
5209 - $ref: '#/components/schemas/MRSSPeerLink'
5210 - $ref: '#/components/schemas/MRSSGroupContent'
5211 NotificationSettingValue:
5232 Notification type, following the `UserNotificationType` enum:
5234 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5236 - `2` NEW_COMMENT_ON_MY_VIDEO
5238 - `3` NEW_ABUSE_FOR_MODERATORS
5240 - `4` BLACKLIST_ON_MY_VIDEO
5242 - `5` UNBLACKLIST_ON_MY_VIDEO
5244 - `6` MY_VIDEO_PUBLISHED
5246 - `7` MY_VIDEO_IMPORT_SUCCESS
5248 - `8` MY_VIDEO_IMPORT_ERROR
5250 - `9` NEW_USER_REGISTRATION
5254 - `11` COMMENT_MENTION
5256 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5258 - `13` NEW_INSTANCE_FOLLOWER
5260 - `14` AUTO_INSTANCE_FOLLOWING
5266 - $ref: '#/components/schemas/VideoInfo'
5270 $ref: '#/components/schemas/ActorInfo'
5279 $ref: '#/components/schemas/VideoInfo'
5300 $ref: '#/components/schemas/VideoInfo'
5302 $ref: '#/components/schemas/ActorInfo'
5311 - $ref: '#/components/schemas/VideoInfo'
5320 - $ref: '#/components/schemas/VideoInfo'
5324 - $ref: '#/components/schemas/ActorInfo'
5332 $ref: '#/components/schemas/ActorInfo'
5360 NotificationListResponse:
5369 $ref: '#/components/schemas/Notification'
5374 example: peertube-plugin-auth-ldap
5402 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5405 additionalProperties: true
5421 $ref: '#/components/schemas/Plugin'
5424 'https://search.example.org/api/v1/search/videos':
5426 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5429 description: successful operation
5433 $ref: '#/components/schemas/VideoListResponse'