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
174 - name: Instance Configuration
178 - Instance Redundancy
188 summary: Get an account
190 - $ref: '#/components/parameters/name'
193 description: successful operation
197 $ref: '#/components/schemas/Account'
199 description: account not found
200 '/accounts/{name}/videos':
205 summary: 'List videos of an account'
207 - $ref: '#/components/parameters/name'
208 - $ref: '#/components/parameters/categoryOneOf'
209 - $ref: '#/components/parameters/tagsOneOf'
210 - $ref: '#/components/parameters/tagsAllOf'
211 - $ref: '#/components/parameters/licenceOneOf'
212 - $ref: '#/components/parameters/languageOneOf'
213 - $ref: '#/components/parameters/nsfw'
214 - $ref: '#/components/parameters/filter'
215 - $ref: '#/components/parameters/skipCount'
216 - $ref: '#/components/parameters/start'
217 - $ref: '#/components/parameters/count'
218 - $ref: '#/components/parameters/videosSort'
221 description: successful operation
225 $ref: '#/components/schemas/VideoListResponse'
229 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
230 .then(function(response) {
231 return response.json()
232 }).then(function(data) {
238 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
244 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
246 http = Net::HTTP.new(uri.host, uri.port)
249 response = http.get(uri.request_uri)
251 puts JSON.parse(response.read_body)
256 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
264 summary: List accounts
266 - $ref: '#/components/parameters/start'
267 - $ref: '#/components/parameters/count'
268 - $ref: '#/components/parameters/sort'
271 description: successful operation
277 $ref: '#/components/schemas/Account'
282 summary: Get instance public configuration
285 description: successful operation
289 $ref: '#/components/schemas/ServerConfig'
292 summary: Get instance "About" information
297 description: successful operation
301 $ref: '#/components/schemas/ServerConfigAbout'
304 summary: Get instance runtime configuration
312 description: successful operation
316 $ref: '#/components/schemas/ServerConfigCustom'
318 summary: Set instance runtime configuration
326 description: successful operation
328 x-summary: field inconsistencies
331 - the emailer is disabled and the instance is open to registrations
332 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
334 summary: Delete instance runtime configuration
342 description: successful operation
345 summary: List instance jobs
355 description: The state of the job
364 - $ref: '#/components/parameters/start'
365 - $ref: '#/components/parameters/count'
366 - $ref: '#/components/parameters/sort'
369 description: successful operation
382 $ref: '#/components/schemas/Job'
383 '/server/following/{host}':
390 summary: Unfollow a server
395 description: 'The host to unfollow '
401 description: successful operation
406 summary: List instance followers
408 - $ref: '#/components/parameters/start'
409 - $ref: '#/components/parameters/count'
410 - $ref: '#/components/parameters/sort'
413 description: successful operation
419 $ref: '#/components/schemas/Follow'
424 summary: List instances followed by the server
443 - $ref: '#/components/parameters/start'
444 - $ref: '#/components/parameters/count'
445 - $ref: '#/components/parameters/sort'
448 description: successful operation
454 $ref: '#/components/schemas/Follow'
461 summary: Follow a server
464 description: successful operation
466 description: cannot follow a non-HTTPS server
481 summary: Create a user
489 description: user created
493 $ref: '#/components/schemas/AddUserResponse'
497 operationId: getUserId
499 id: '$response.body#/user/id'
502 operationId: putUserId
504 id: '$response.body#/user/id'
507 operationId: delUserId
509 id: '$response.body#/user/id'
511 description: insufficient authority to create an admin or moderator
516 $ref: '#/components/schemas/AddUser'
517 description: User to create
527 - $ref: '#/components/parameters/usersSearch'
528 - $ref: '#/components/parameters/usersBlocked'
529 - $ref: '#/components/parameters/start'
530 - $ref: '#/components/parameters/count'
531 - $ref: '#/components/parameters/usersSort'
534 description: successful operation
540 $ref: '#/components/schemas/User'
543 - $ref: '#/components/parameters/id'
545 summary: Delete a user
551 operationId: delUserId
554 description: successful operation
561 operationId: getUserId
564 description: successful operation
568 $ref: '#/components/schemas/User'
570 summary: Update a user
575 operationId: putUserId
578 description: successful operation
583 $ref: '#/components/schemas/UpdateUser'
587 summary: Register a user
592 description: successful operation
597 $ref: '#/components/schemas/RegisterUser'
601 summary: Get my user information
609 description: successful operation
615 $ref: '#/components/schemas/User'
617 summary: Update my user information
625 description: successful operation
630 $ref: '#/components/schemas/UpdateMe'
632 /users/me/videos/imports:
634 summary: Get video imports of my user
642 - $ref: '#/components/parameters/start'
643 - $ref: '#/components/parameters/count'
644 - $ref: '#/components/parameters/sort'
647 description: successful operation
651 $ref: '#/components/schemas/VideoImport'
652 /users/me/video-quota-used:
654 summary: Get my user used quota
662 description: successful operation
667 '/users/me/videos/{videoId}/rating':
669 summary: Get rate of my user for a video
679 description: 'The video id '
684 description: successful operation
688 $ref: '#/components/schemas/GetMeVideoRating'
691 summary: Get videos of my user
699 - $ref: '#/components/parameters/start'
700 - $ref: '#/components/parameters/count'
701 - $ref: '#/components/parameters/sort'
704 description: successful operation
708 $ref: '#/components/schemas/VideoListResponse'
709 /users/me/subscriptions:
711 summary: Get my user subscriptions
718 - $ref: '#/components/parameters/start'
719 - $ref: '#/components/parameters/count'
720 - $ref: '#/components/parameters/sort'
723 description: successful operation
727 summary: Add subscription to my user
740 description: uri of the video channels to subscribe to
746 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
749 description: successful operation
750 /users/me/subscriptions/exist:
752 summary: Get if subscriptions exist for my user
759 - $ref: '#/components/parameters/subscriptionsUris'
762 description: successful operation
767 /users/me/subscriptions/videos:
769 summary: List videos of subscriptions of my user
777 - $ref: '#/components/parameters/categoryOneOf'
778 - $ref: '#/components/parameters/tagsOneOf'
779 - $ref: '#/components/parameters/tagsAllOf'
780 - $ref: '#/components/parameters/licenceOneOf'
781 - $ref: '#/components/parameters/languageOneOf'
782 - $ref: '#/components/parameters/nsfw'
783 - $ref: '#/components/parameters/filter'
784 - $ref: '#/components/parameters/skipCount'
785 - $ref: '#/components/parameters/start'
786 - $ref: '#/components/parameters/count'
787 - $ref: '#/components/parameters/videosSort'
790 description: successful operation
794 $ref: '#/components/schemas/VideoListResponse'
795 '/users/me/subscriptions/{subscriptionHandle}':
797 summary: Get subscription of my user
804 - $ref: '#/components/parameters/subscriptionHandle'
807 description: successful operation
811 $ref: '#/components/schemas/VideoChannel'
813 summary: Delete subscription of my user
820 - $ref: '#/components/parameters/subscriptionHandle'
823 description: successful operation
824 /users/me/notifications:
826 summary: List my notifications
834 description: only list unread notifications
837 - $ref: '#/components/parameters/start'
838 - $ref: '#/components/parameters/count'
839 - $ref: '#/components/parameters/sort'
842 description: successful operation
846 $ref: '#/components/schemas/NotificationListResponse'
847 /users/me/notifications/read:
849 summary: Mark notifications as read by their id
862 description: ids of the notifications to mark as read
869 description: successful operation
870 /users/me/notifications/read-all:
872 summary: Mark all my notification as read
879 description: successful operation
880 /users/me/notification-settings:
882 summary: Update my notification settings
893 newVideoFromSubscription:
894 $ref: '#/components/schemas/NotificationSettingValue'
896 $ref: '#/components/schemas/NotificationSettingValue'
898 $ref: '#/components/schemas/NotificationSettingValue'
899 videoAutoBlacklistAsModerator:
900 $ref: '#/components/schemas/NotificationSettingValue'
902 $ref: '#/components/schemas/NotificationSettingValue'
904 $ref: '#/components/schemas/NotificationSettingValue'
905 myVideoImportFinished:
906 $ref: '#/components/schemas/NotificationSettingValue'
908 $ref: '#/components/schemas/NotificationSettingValue'
910 $ref: '#/components/schemas/NotificationSettingValue'
912 $ref: '#/components/schemas/NotificationSettingValue'
914 $ref: '#/components/schemas/NotificationSettingValue'
915 autoInstanceFollowing:
916 $ref: '#/components/schemas/NotificationSettingValue'
919 description: successful operation
920 /users/me/avatar/pick:
922 summary: Update my user avatar
929 description: successful operation
933 $ref: '#/components/schemas/Avatar'
941 description: The file to upload.
946 contentType: image/png, image/jpeg
949 summary: List video ownership changes
951 - Video Ownership Change
956 description: successful operation
957 '/videos/ownership/{id}/accept':
959 summary: Accept ownership change request
961 - Video Ownership Change
965 - $ref: '#/components/parameters/idOrUUID'
968 description: successful operation
970 description: cannot terminate an ownership change of another user
972 description: video owneship change not found
973 '/videos/ownership/{id}/refuse':
975 summary: Refuse ownership change request
977 - Video Ownership Change
981 - $ref: '#/components/parameters/idOrUUID'
984 description: successful operation
986 description: cannot terminate an ownership change of another user
988 description: video owneship change not found
989 '/videos/{id}/give-ownership':
991 summary: Request ownership change
993 - Video Ownership Change
997 - $ref: '#/components/parameters/idOrUUID'
1001 application/x-www-form-urlencoded:
1011 description: successful operation
1013 description: changing video ownership to a remote account is not supported yet
1015 description: video not found
1018 summary: List videos
1022 - $ref: '#/components/parameters/categoryOneOf'
1023 - $ref: '#/components/parameters/tagsOneOf'
1024 - $ref: '#/components/parameters/tagsAllOf'
1025 - $ref: '#/components/parameters/licenceOneOf'
1026 - $ref: '#/components/parameters/languageOneOf'
1027 - $ref: '#/components/parameters/nsfw'
1028 - $ref: '#/components/parameters/filter'
1029 - $ref: '#/components/parameters/skipCount'
1030 - $ref: '#/components/parameters/start'
1031 - $ref: '#/components/parameters/count'
1032 - $ref: '#/components/parameters/videosSort'
1035 description: successful operation
1039 $ref: '#/components/schemas/VideoListResponse'
1042 summary: List available video categories
1047 description: successful operation
1056 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1059 summary: List available video licences
1064 description: successful operation
1073 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1076 summary: List available video languages
1081 description: successful operation
1090 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1093 summary: List available video privacies
1098 description: successful operation
1107 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1110 summary: Update a video
1116 - $ref: '#/components/parameters/idOrUUID'
1119 description: successful operation
1122 multipart/form-data:
1127 description: Video thumbnail file
1131 description: Video preview file
1135 description: Video category
1139 description: Video licence
1143 description: Video language
1146 $ref: '#/components/schemas/VideoPrivacySet'
1148 description: Video description
1151 description: Whether or not we wait transcoding before publish the video
1154 description: A text tell the audience how to support the video creator
1155 example: Please support my work on <insert crowdfunding plateform>! <3
1158 description: Whether or not this video contains sensitive content
1161 description: Video name
1164 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1173 description: Enable or disable comments for this video
1175 originallyPublishedAt:
1176 description: Date when the content was originally published
1180 $ref: '#/components/schemas/VideoScheduledUpdate'
1183 contentType: image/jpeg
1185 contentType: image/jpeg
1187 summary: Get a video
1191 - $ref: '#/components/parameters/idOrUUID'
1194 description: successful operation
1198 $ref: '#/components/schemas/VideoDetails'
1200 summary: Delete a video
1206 - $ref: '#/components/parameters/idOrUUID'
1209 description: successful operation
1210 '/videos/{id}/description':
1212 summary: Get complete video description
1216 - $ref: '#/components/parameters/idOrUUID'
1219 description: successful operation
1224 '/videos/{id}/views':
1226 summary: Add a view to a video
1230 - $ref: '#/components/parameters/idOrUUID'
1233 description: successful operation
1234 '/videos/{id}/watching':
1236 summary: Set watching progress of a video
1242 - $ref: '#/components/parameters/idOrUUID'
1247 $ref: '#/components/schemas/UserWatchingVideo'
1251 description: successful operation
1254 summary: Upload a video
1261 description: successful operation
1265 $ref: '#/components/schemas/VideoUploadResponse'
1267 description: user video quota is exceeded with this video
1269 description: upload has timed out
1271 description: invalid input file
1274 multipart/form-data:
1279 description: Video file
1283 description: Channel id that will contain this video
1286 description: Video thumbnail file
1290 description: Video preview file
1294 $ref: '#/components/schemas/VideoPrivacySet'
1296 description: Video category
1300 description: Video licence
1303 description: Video language
1307 description: Video description
1310 description: Whether or not we wait transcoding before publish the video
1313 description: A text tell the audience how to support the video creator
1314 example: Please support my work on <insert crowdfunding plateform>! <3
1317 description: Whether or not this video contains sensitive content
1320 description: Video name
1323 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1333 description: Enable or disable comments for this video
1336 description: Enable or disable downloading for this video
1338 originallyPublishedAt:
1339 description: Date when the content was originally published
1343 $ref: '#/components/schemas/VideoScheduledUpdate'
1350 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1352 contentType: image/jpeg
1354 contentType: image/jpeg
1359 USERNAME="<your_username>"
1360 PASSWORD="<your_password>"
1361 FILE_PATH="<your_file_path>"
1362 CHANNEL_ID="<your_channel_id>"
1365 API_PATH="https://peertube2.cpy.re/api/v1"
1367 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1368 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1369 token=$(curl -s "$API_PATH/users/token" \
1370 --data client_id="$client_id" \
1371 --data client_secret="$client_secret" \
1372 --data grant_type=password \
1373 --data response_type=code \
1374 --data username="$USERNAME" \
1375 --data password="$PASSWORD" \
1376 | jq -r ".access_token")
1378 curl -s "$API_PATH/videos/upload" \
1379 -H "Authorization: Bearer $token" \
1381 --form videofile=@"$FILE_PATH" \
1382 --form channelId=$CHANNEL_ID \
1386 summary: Import a video
1387 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1394 multipart/form-data:
1399 description: Torrent File
1403 description: HTTP target URL
1406 description: Magnet URI
1409 description: Channel id that will contain this video
1412 description: Video thumbnail file
1416 description: Video preview file
1420 $ref: '#/components/schemas/VideoPrivacySet'
1422 description: Video category
1425 description: Video licence
1428 description: Video language
1431 description: Video description
1434 description: Whether or not we wait transcoding before publish the video
1437 description: A text tell the audience how to support the video creator
1438 example: Please support my work on <insert crowdfunding plateform>! <3
1441 description: Whether or not this video contains sensitive content
1444 description: Video name
1447 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1456 description: Enable or disable comments for this video
1459 description: Enable or disable downloading for this video
1462 $ref: '#/components/schemas/VideoScheduledUpdate'
1468 contentType: application/x-bittorrent
1470 contentType: image/jpeg
1472 contentType: image/jpeg
1475 description: successful operation
1479 $ref: '#/components/schemas/VideoUploadResponse'
1481 description: HTTP or Torrent/magnetURI import not enabled
1483 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1487 summary: Create a live
1495 description: successful operation
1499 $ref: '#/components/schemas/VideoUploadResponse'
1501 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1504 multipart/form-data:
1509 description: Channel id that will contain this live video
1514 description: Live video/replay thumbnail file
1518 description: Live video/replay preview file
1522 $ref: '#/components/schemas/VideoPrivacySet'
1524 description: Live video/replay category
1527 description: Live video/replay licence
1530 description: Live video/replay language
1533 description: Live video/replay description
1536 description: A text tell the audience how to support the creator
1537 example: Please support my work on <insert crowdfunding plateform>! <3
1540 description: Whether or not this live video/replay contains sensitive content
1543 description: Live video/replay name
1546 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1555 description: Enable or disable comments for this live video/replay
1558 description: Enable or disable downloading for the replay of this live
1565 contentType: image/jpeg
1567 contentType: image/jpeg
1571 summary: Get a live information
1578 - $ref: '#/components/parameters/idOrUUID'
1581 description: successful operation
1585 $ref: '#/components/schemas/LiveVideoResponse'
1587 summary: Update a live information
1594 - $ref: '#/components/parameters/idOrUUID'
1599 $ref: '#/components/schemas/LiveVideoUpdate'
1602 description: Successful operation
1604 description: Bad parameters or trying to update a live that has already started
1606 description: Trying to save replay of the live but saving replay is not enabled on the instance
1610 summary: List my abuses
1619 description: only list the report with this id
1625 $ref: '#/components/schemas/AbuseStateSet'
1626 - $ref: '#/components/parameters/start'
1627 - $ref: '#/components/parameters/count'
1628 - $ref: '#/components/parameters/abusesSort'
1631 description: successful operation
1637 $ref: '#/components/schemas/Abuse'
1641 summary: List abuses
1651 description: only list the report with this id
1654 - name: predefinedReason
1656 description: predefined reason the listed reports should contain
1658 $ref: '#/components/schemas/PredefinedAbuseReasons'
1661 description: plain search that will match with video titles, reporter names and more
1667 $ref: '#/components/schemas/AbuseStateSet'
1668 - name: searchReporter
1670 description: only list reports of a specific reporter
1673 - name: searchReportee
1674 description: only list reports of a specific reportee
1680 description: only list reports of a specific video
1683 - name: searchVideoChannel
1685 description: only list reports of a specific video channel
1690 description: only list blacklisted or deleted videos
1698 description: only list account, comment or video reports
1705 - $ref: '#/components/parameters/start'
1706 - $ref: '#/components/parameters/count'
1707 - $ref: '#/components/parameters/abusesSort'
1710 description: successful operation
1716 $ref: '#/components/schemas/Abuse'
1719 summary: Report an abuse
1732 description: Reason why the user reports this video
1736 $ref: '#/components/schemas/PredefinedAbuseReasons'
1742 description: Video id to report
1746 description: Timestamp in the video that marks the beginning of the report
1750 description: Timestamp in the video that marks the ending of the report
1756 description: Comment id to report
1762 description: Account id to report
1768 description: successful operation
1770 description: incorrect request parameters
1771 '/abuses/{abuseId}':
1773 summary: Update an abuse
1781 - $ref: '#/components/parameters/abuseId'
1789 $ref: '#/components/schemas/AbuseStateSet'
1792 description: Update the report comment visible only to the moderation team
1795 description: successful operation
1797 description: abuse not found
1801 summary: Delete an abuse
1807 - $ref: '#/components/parameters/abuseId'
1810 description: successful operation
1812 description: block not found
1813 '/abuses/{abuseId}/messages':
1815 summary: List messages of an abuse
1821 - $ref: '#/components/parameters/abuseId'
1824 description: successful operation
1830 $ref: '#/components/schemas/AbuseMessage'
1833 summary: Add message to an abuse
1839 - $ref: '#/components/parameters/abuseId'
1848 description: Message to send
1854 description: successful operation
1856 description: incorrect request parameters
1857 '/abuses/{abuseId}/messages/{abuseMessageId}':
1859 summary: Delete an abuse message
1865 - $ref: '#/components/parameters/abuseId'
1866 - $ref: '#/components/parameters/abuseMessageId'
1869 description: successful operation
1871 '/videos/{id}/blacklist':
1873 summary: Block a video
1881 - $ref: '#/components/parameters/idOrUUID'
1884 description: successful operation
1886 summary: Unblock a video by its id
1894 - $ref: '#/components/parameters/idOrUUID'
1897 description: successful operation
1899 description: block not found
1904 summary: List video blocks
1913 list only blocks that match this type:
1917 - `2`: automatic block that needs review
1925 description: plain search that will match with video titles, and more
1928 - $ref: '#/components/parameters/start'
1929 - $ref: '#/components/parameters/count'
1930 - $ref: '#/components/parameters/blacklistsSort'
1933 description: successful operation
1945 $ref: '#/components/schemas/VideoBlacklist'
1946 /videos/{id}/captions:
1948 summary: List captions of a video
1952 - $ref: '#/components/parameters/idOrUUID'
1955 description: successful operation
1967 $ref: '#/components/schemas/VideoCaption'
1968 /videos/{id}/captions/{captionLanguage}:
1970 summary: Add or replace a video caption
1977 - $ref: '#/components/parameters/idOrUUID'
1978 - $ref: '#/components/parameters/captionLanguage'
1981 multipart/form-data:
1986 description: The file to upload.
1991 contentType: text/vtt, application/x-subrip, text/plain
1994 description: successful operation
1996 description: video or language not found
1998 summary: Delete a video caption
2005 - $ref: '#/components/parameters/idOrUUID'
2006 - $ref: '#/components/parameters/captionLanguage'
2009 description: successful operation
2011 description: video or language or caption for that language not found
2014 summary: List video channels
2018 - $ref: '#/components/parameters/start'
2019 - $ref: '#/components/parameters/count'
2020 - $ref: '#/components/parameters/sort'
2023 description: successful operation
2035 $ref: '#/components/schemas/VideoChannel'
2037 summary: Create a video channel
2044 description: successful operation
2049 $ref: '#/components/schemas/VideoChannelCreate'
2050 '/video-channels/{channelHandle}':
2052 summary: Get a video channel
2056 - $ref: '#/components/parameters/channelHandle'
2059 description: successful operation
2063 $ref: '#/components/schemas/VideoChannel'
2065 summary: Update a video channel
2071 - $ref: '#/components/parameters/channelHandle'
2074 description: successful operation
2079 $ref: '#/components/schemas/VideoChannelUpdate'
2081 summary: Delete a video channel
2087 - $ref: '#/components/parameters/channelHandle'
2090 description: successful operation
2091 '/video-channels/{channelHandle}/videos':
2093 summary: List videos of a video channel
2098 - $ref: '#/components/parameters/channelHandle'
2099 - $ref: '#/components/parameters/categoryOneOf'
2100 - $ref: '#/components/parameters/tagsOneOf'
2101 - $ref: '#/components/parameters/tagsAllOf'
2102 - $ref: '#/components/parameters/licenceOneOf'
2103 - $ref: '#/components/parameters/languageOneOf'
2104 - $ref: '#/components/parameters/nsfw'
2105 - $ref: '#/components/parameters/filter'
2106 - $ref: '#/components/parameters/skipCount'
2107 - $ref: '#/components/parameters/start'
2108 - $ref: '#/components/parameters/count'
2109 - $ref: '#/components/parameters/videosSort'
2112 description: successful operation
2116 $ref: '#/components/schemas/VideoListResponse'
2118 /video-playlists/privacies:
2120 summary: List available playlist privacies
2125 description: successful operation
2134 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2138 summary: List video playlists
2142 - $ref: '#/components/parameters/start'
2143 - $ref: '#/components/parameters/count'
2144 - $ref: '#/components/parameters/sort'
2147 description: successful operation
2159 $ref: '#/components/schemas/VideoPlaylist'
2161 summary: Create a video playlist
2162 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2169 description: successful operation
2184 multipart/form-data:
2189 description: Video playlist display name
2192 description: Video playlist thumbnail file
2196 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2198 description: Video playlist description
2201 description: Video channel in which the playlist will be published
2207 contentType: image/jpeg
2209 /video-playlists/{id}:
2211 summary: Get a video playlist
2215 - $ref: '#/components/parameters/idOrUUID'
2218 description: successful operation
2222 $ref: '#/components/schemas/VideoPlaylist'
2224 summary: Update a video playlist
2225 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2232 description: successful operation
2234 - $ref: '#/components/parameters/idOrUUID'
2237 multipart/form-data:
2242 description: Video playlist display name
2245 description: Video playlist thumbnail file
2249 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2251 description: Video playlist description
2254 description: Video channel in which the playlist will be published
2258 contentType: image/jpeg
2260 summary: Delete a video playlist
2266 - $ref: '#/components/parameters/idOrUUID'
2269 description: successful operation
2271 /video-playlists/{id}/videos:
2273 summary: 'List videos of a playlist'
2278 - $ref: '#/components/parameters/idOrUUID'
2281 description: successful operation
2285 $ref: '#/components/schemas/VideoListResponse'
2287 summary: 'Add a video in a playlist'
2294 - $ref: '#/components/parameters/idOrUUID'
2297 description: successful operation
2303 videoPlaylistElement:
2316 description: 'Video to add in the playlist'
2319 description: 'Start the video at this specific timestamp (in seconds)'
2322 description: 'Stop the video at this specific timestamp (in seconds)'
2326 /video-playlists/{id}/videos/reorder:
2328 summary: 'Reorder a playlist'
2334 - $ref: '#/components/parameters/idOrUUID'
2337 description: successful operation
2346 description: 'Start position of the element to reorder'
2348 insertAfterPosition:
2350 description: 'New position for the block to reorder, to add the block before the first element'
2354 description: 'How many element from `startPosition` to reorder'
2358 - insertAfterPosition
2360 /video-playlists/{id}/videos/{playlistElementId}:
2362 summary: 'Update a playlist element'
2368 - $ref: '#/components/parameters/idOrUUID'
2369 - $ref: '#/components/parameters/playlistElementId'
2372 description: successful operation
2381 description: 'Start the video at this specific timestamp (in seconds)'
2384 description: 'Stop the video at this specific timestamp (in seconds)'
2386 summary: 'Delete an element from a playlist'
2392 - $ref: '#/components/parameters/idOrUUID'
2393 - $ref: '#/components/parameters/playlistElementId'
2396 description: successful operation
2398 '/users/me/video-playlists/videos-exist':
2400 summary: 'Check video exists in my playlists'
2409 description: The video ids to check
2416 description: successful operation
2436 '/accounts/{name}/video-channels':
2438 summary: List video channels of an account
2443 - $ref: '#/components/parameters/name'
2446 description: include view statistics for the last 30 days (only if authentified as the account user)
2449 - $ref: '#/components/parameters/start'
2450 - $ref: '#/components/parameters/count'
2451 - $ref: '#/components/parameters/sort'
2454 description: successful operation
2460 $ref: '#/components/schemas/VideoChannel'
2461 '/accounts/{name}/ratings':
2463 summary: List ratings of an account
2469 - $ref: '#/components/parameters/name'
2470 - $ref: '#/components/parameters/start'
2471 - $ref: '#/components/parameters/count'
2472 - $ref: '#/components/parameters/sort'
2476 description: Optionally filter which ratings to retrieve
2484 description: successful operation
2490 $ref: '#/components/schemas/VideoRating'
2491 '/videos/{id}/comment-threads':
2493 summary: List threads of a video
2497 - $ref: '#/components/parameters/idOrUUID'
2498 - $ref: '#/components/parameters/start'
2499 - $ref: '#/components/parameters/count'
2500 - $ref: '#/components/parameters/commentsSort'
2503 description: successful operation
2507 $ref: '#/components/schemas/CommentThreadResponse'
2509 summary: Create a thread
2515 - $ref: '#/components/parameters/idOrUUID'
2518 description: successful operation
2522 $ref: '#/components/schemas/CommentThreadPostResponse'
2524 description: video does not exist
2533 description: 'Text comment'
2537 '/videos/{id}/comment-threads/{threadId}':
2539 summary: Get a thread
2543 - $ref: '#/components/parameters/idOrUUID'
2544 - $ref: '#/components/parameters/threadId'
2547 description: successful operation
2551 $ref: '#/components/schemas/VideoCommentThreadTree'
2552 '/videos/{id}/comments/{commentId}':
2554 summary: Reply to a thread of a video
2560 - $ref: '#/components/parameters/idOrUUID'
2561 - $ref: '#/components/parameters/commentId'
2564 description: successful operation
2568 $ref: '#/components/schemas/CommentThreadPostResponse'
2570 description: thread or video does not exist
2579 description: 'Text comment'
2584 summary: Delete a comment or a reply
2590 - $ref: '#/components/parameters/idOrUUID'
2591 - $ref: '#/components/parameters/commentId'
2594 description: successful operation
2596 description: cannot remove comment of another user
2598 description: comment or video does not exist
2600 description: comment is already deleted
2601 '/videos/{id}/rate':
2603 summary: Like/dislike a video
2609 - $ref: '#/components/parameters/idOrUUID'
2612 description: successful operation
2614 description: video does not exist
2619 summary: Search videos
2624 allowEmptyValue: false
2626 String to search. If the user can make a remote URI search, and the string is an URI then the
2627 PeerTube instance will fetch the remote object and add it to its database. Then,
2628 you can use the REST API to fetch the complete video information and interact with it.
2631 - $ref: '#/components/parameters/categoryOneOf'
2632 - $ref: '#/components/parameters/tagsOneOf'
2633 - $ref: '#/components/parameters/tagsAllOf'
2634 - $ref: '#/components/parameters/licenceOneOf'
2635 - $ref: '#/components/parameters/languageOneOf'
2636 - $ref: '#/components/parameters/nsfw'
2637 - $ref: '#/components/parameters/filter'
2638 - $ref: '#/components/parameters/skipCount'
2639 - $ref: '#/components/parameters/start'
2640 - $ref: '#/components/parameters/count'
2641 - $ref: '#/components/parameters/searchTarget'
2642 - $ref: '#/components/parameters/videosSearchSort'
2645 description: Get videos that are published after this date
2651 description: Get videos that are published before this date
2655 - name: originallyPublishedStartDate
2657 description: Get videos that are originally published after this date
2661 - name: originallyPublishedEndDate
2663 description: Get videos that are originally published before this date
2669 description: Get videos that have this minimum duration
2674 description: Get videos that have this maximum duration
2678 'searchTarget === search-index':
2679 $ref: '#/components/callbacks/searchIndex'
2682 description: successful operation
2686 $ref: '#/components/schemas/VideoListResponse'
2688 description: search index unavailable
2689 /search/video-channels:
2693 summary: Search channels
2699 String to search. If the user can make a remote URI search, and the string is an URI then the
2700 PeerTube instance will fetch the remote object and add it to its database. Then,
2701 you can use the REST API to fetch the complete channel information and interact with it.
2704 - $ref: '#/components/parameters/start'
2705 - $ref: '#/components/parameters/count'
2706 - $ref: '#/components/parameters/searchTarget'
2707 - $ref: '#/components/parameters/sort'
2709 'searchTarget === search-index':
2710 $ref: '#/components/callbacks/searchIndex'
2713 description: successful operation
2719 $ref: '#/components/schemas/VideoChannel'
2721 description: search index unavailable
2722 /blocklist/accounts:
2726 summary: List account blocks
2731 - $ref: '#/components/parameters/start'
2732 - $ref: '#/components/parameters/count'
2733 - $ref: '#/components/parameters/sort'
2736 description: successful operation
2740 summary: Block an account
2752 example: chocobozzz@example.org
2753 description: account to block, in the form `username@domain`
2758 description: successful operation
2760 description: self-blocking forbidden
2761 '/blocklist/accounts/{accountName}':
2765 summary: Unblock an account by its handle
2773 description: account to unblock, in the form `username@domain`
2778 description: successful operation
2780 description: account or account block does not exist
2785 summary: List server blocks
2790 - $ref: '#/components/parameters/start'
2791 - $ref: '#/components/parameters/count'
2792 - $ref: '#/components/parameters/sort'
2795 description: successful operation
2799 summary: Block a server
2812 description: server domain to block
2817 description: successful operation
2819 description: self-blocking forbidden
2820 '/blocklist/servers/{host}':
2824 summary: Unblock a server by its domain
2832 description: server domain to unblock
2838 description: successful operation
2840 description: account block does not exist
2844 - Instance Redundancy
2845 summary: Update a server redundancy policy
2853 description: server domain to mirror
2865 description: allow mirroring of the host's local videos
2870 description: successful operation
2872 description: server is not already known
2877 summary: List videos being mirrored
2885 description: direction of the mirror
2891 - $ref: '#/components/parameters/start'
2892 - $ref: '#/components/parameters/count'
2893 - $ref: '#/components/parameters/videoRedundanciesSort'
2896 description: successful operation
2902 $ref: '#/components/schemas/VideoRedundancy'
2906 summary: Mirror a video
2922 description: successful operation
2924 description: cannot mirror a local video
2926 description: video does not exist
2928 description: video is already mirrored
2929 /redundancy/videos/{redundancyId}:
2933 summary: Delete a mirror done on a video
2938 - name: redundancyId
2941 description: id of an existing redundancy on a video
2946 description: successful operation
2948 description: video redundancy not found
2949 '/feeds/video-comments.{format}':
2953 summary: List comments on videos
2955 - url: 'https://peertube2.cpy.re'
2956 description: Live Test Server (live data - latest nightly version)
2957 - url: 'https://peertube3.cpy.re'
2958 description: Live Test Server (live data - latest RC version)
2959 - url: 'https://peertube.cpy.re'
2960 description: Live Test Server (live data - stable version)
2965 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2978 description: 'limit listing to a specific video'
2983 description: 'limit listing to a specific account'
2988 description: 'limit listing to a specific account'
2991 - name: videoChannelId
2993 description: 'limit listing to a specific video channel'
2996 - name: videoChannelName
2998 description: 'limit listing to a specific video channel'
3003 description: successful operation
3008 default: 'max-age=900' # 15 min cache
3012 $ref: '#/components/schemas/VideoCommentsForXML'
3013 application/rss+xml:
3015 $ref: '#/components/schemas/VideoCommentsForXML'
3018 $ref: '#/components/schemas/VideoCommentsForXML'
3019 application/atom+xml:
3021 $ref: '#/components/schemas/VideoCommentsForXML'
3026 x-summary: field inconsistencies
3029 - videoId filter is mixed with a channel filter
3031 description: video, video channel or account not found
3033 description: accept header unsupported
3034 '/feeds/videos.{format}':
3038 summary: List videos
3040 - url: 'https://peertube2.cpy.re'
3041 description: Live Test Server (live data - latest nightly version)
3042 - url: 'https://peertube3.cpy.re'
3043 description: Live Test Server (live data - latest RC version)
3044 - url: 'https://peertube.cpy.re'
3045 description: Live Test Server (live data - stable version)
3050 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3063 description: 'limit listing to a specific account'
3068 description: 'limit listing to a specific account'
3071 - name: videoChannelId
3073 description: 'limit listing to a specific video channel'
3076 - name: videoChannelName
3078 description: 'limit listing to a specific video channel'
3081 - $ref: '#/components/parameters/sort'
3082 - $ref: '#/components/parameters/nsfw'
3083 - $ref: '#/components/parameters/filter'
3086 description: successful operation
3091 default: 'max-age=900' # 15 min cache
3095 $ref: '#/components/schemas/VideosForXML'
3098 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3099 application/rss+xml:
3101 $ref: '#/components/schemas/VideosForXML'
3104 $ref: '#/components/schemas/VideosForXML'
3105 application/atom+xml:
3107 $ref: '#/components/schemas/VideosForXML'
3112 description: video channel or account not found
3114 description: accept header unsupported
3119 summary: List plugins
3132 - $ref: '#/components/parameters/start'
3133 - $ref: '#/components/parameters/count'
3134 - $ref: '#/components/parameters/sort'
3137 description: successful operation
3141 $ref: '#/components/schemas/PluginResponse'
3146 summary: List available plugins
3159 - name: currentPeerTubeEngine
3163 - $ref: '#/components/parameters/start'
3164 - $ref: '#/components/parameters/count'
3165 - $ref: '#/components/parameters/sort'
3168 description: successful operation
3172 $ref: '#/components/schemas/PluginResponse'
3174 description: plugin index unavailable
3179 summary: Install a plugin
3192 example: peertube-plugin-auth-ldap
3195 additionalProperties: false
3202 additionalProperties: false
3205 description: successful operation
3207 description: should have either `npmName` or `path` set
3212 summary: Update a plugin
3225 example: peertube-plugin-auth-ldap
3228 additionalProperties: false
3235 additionalProperties: false
3238 description: successful operation
3240 description: should have either `npmName` or `path` set
3242 description: existing plugin not found
3247 summary: Uninstall a plugin
3259 description: name of the plugin/theme in its package.json
3260 example: peertube-plugin-auth-ldap
3265 description: successful operation
3267 description: existing plugin not found
3272 summary: Get a plugin
3277 - $ref: '#/components/parameters/npmName'
3280 description: successful operation
3284 $ref: '#/components/schemas/Plugin'
3286 description: plugin not found
3287 /plugins/{npmName}/settings:
3291 summary: Set a plugin's settings
3296 - $ref: '#/components/parameters/npmName'
3305 additionalProperties: true
3308 description: successful operation
3310 description: plugin not found
3311 /plugins/{npmName}/public-settings:
3315 summary: Get a plugin's public settings
3317 - $ref: '#/components/parameters/npmName'
3320 description: successful operation
3325 additionalProperties: true
3327 description: plugin not found
3328 /plugins/{npmName}/registered-settings:
3332 summary: Get a plugin's registered settings
3337 - $ref: '#/components/parameters/npmName'
3340 description: successful operation
3345 additionalProperties: true
3347 description: plugin not found
3349 - url: 'https://peertube2.cpy.re/api/v1'
3350 description: Live Test Server (live data - latest nightly version)
3351 - url: 'https://peertube3.cpy.re/api/v1'
3352 description: Live Test Server (live data - latest RC version)
3353 - url: 'https://peertube.cpy.re/api/v1'
3354 description: Live Test Server (live data - stable version)
3361 description: Offset used to paginate results
3369 description: "Number of items to return"
3379 description: Sort column
3387 description: Plain text search, applied to various parts of the model depending on endpoint
3395 If the administrator enabled search index support, you can override the default search target.
3398 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3399 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3400 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3401 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3402 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3403 * 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
3404 the data from the origin instance API
3414 description: Sort videos by criteria
3429 description: Sort videos by criteria
3444 description: Sort comments by criteria
3454 description: Sort blacklists by criteria
3470 description: Plain text search that will match with user usernames or emails
3477 description: Filter results down to (un)banned users
3484 description: Sort users by criteria
3495 description: Sort abuses by criteria
3502 videoRedundanciesSort:
3506 description: Sort abuses by criteria
3515 description: The name of the account
3518 example: chocobozzz | chocobozzz@example.org
3523 description: The user id
3532 description: The object id or uuid
3540 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3542 name: playlistElementId
3545 description: Playlist element id
3552 description: Abuse id
3556 name: abuseMessageId
3559 description: Abuse message id
3563 name: captionLanguage
3566 description: The caption language
3573 description: The video channel handle
3576 example: my_username | my_username@example.com
3578 name: subscriptionHandle
3581 description: The subscription handle
3584 example: my_username | my_username@example.com
3589 description: The thread id (root comment id)
3596 description: The comment id
3603 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3616 description: tag(s) of the video
3629 description: tag(s) of the video, where all should be present in the video
3642 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
3655 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3668 description: if you don't need the `total` in the response
3679 description: whether to include nsfw videos, if any
3690 Special filters which might require special rights:
3691 * `local` - only videos local to the instance
3692 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3693 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
3703 description: list of uris to check if each is part of the user subscriptions
3713 description: name of the plugin/theme on npmjs.com or in its package.json
3716 example: peertube-plugin-auth-ldap
3720 In the header: *Authorization: Bearer <token\>*
3723 Authenticating via OAuth requires the following steps:
3726 - Have an account with sufficient authorization levels
3728 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3731 - Make Authenticated Requests
3735 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3738 moderator: Moderator scope
3741 VideoConstantNumber:
3747 VideoConstantString:
3754 VideoPlaylistPrivacySet:
3760 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3761 VideoPlaylistPrivacyConstant:
3764 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3768 VideoPlaylistTypeSet:
3773 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3774 VideoPlaylistTypeConstant:
3777 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3788 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3789 VideoPrivacyConstant:
3792 $ref: '#/components/schemas/VideoPrivacySet'
3809 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3820 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3830 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3834 $ref: '#/components/schemas/AbuseStateSet'
3837 AbusePredefinedReasons:
3850 example: [spamOrMisleading]
3852 VideoResolutionConstant:
3856 description: 'Video resolution (240, 360, 720 ...)'
3861 VideoScheduledUpdate:
3864 $ref: '#/components/schemas/VideoPrivacySet'
3868 description: When to update the video
3888 - $ref: '#/components/schemas/Avatar'
3889 VideoChannelSummary:
3906 - $ref: '#/components/schemas/Avatar'
3918 - $ref: '#/components/schemas/Video'
3924 $ref: '#/components/schemas/VideoResolutionConstant'
3927 description: 'Video file size in bytes'
3945 VideoStreamingPlaylists:
3953 description: 'Playlist type (HLS = `1`)'
3962 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)'
3964 $ref: '#/components/schemas/VideoFile'
3980 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3991 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4003 originallyPublishedAt:
4007 $ref: '#/components/schemas/VideoConstantNumber'
4009 $ref: '#/components/schemas/VideoConstantNumber'
4011 $ref: '#/components/schemas/VideoConstantString'
4013 $ref: '#/components/schemas/VideoPrivacyConstant'
4023 example: What is PeerTube?
4026 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4029 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4032 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4048 $ref: '#/components/schemas/VideoStateConstant'
4052 - $ref: '#/components/schemas/VideoScheduledUpdate'
4060 $ref: '#/components/schemas/AccountSummary'
4062 $ref: '#/components/schemas/VideoChannelSummary'
4071 - $ref: '#/components/schemas/Video'
4078 description: A text tell the audience how to support the video creator
4079 example: Please support my work on <insert crowdfunding plateform>! <3
4081 $ref: '#/components/schemas/VideoChannel'
4083 $ref: '#/components/schemas/Account'
4088 example: [flowers, gardening]
4091 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'
4093 $ref: '#/components/schemas/VideoFile'
4106 $ref: '#/components/schemas/VideoStreamingPlaylists'
4107 FileRedundancyInformation:
4144 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4151 $ref: '#/components/schemas/FileRedundancyInformation'
4155 $ref: '#/components/schemas/FileRedundancyInformation'
4156 VideoImportStateConstant:
4164 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4176 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4180 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
4184 $ref: '#/components/schemas/VideoImportStateConstant'
4194 $ref: '#/components/schemas/Video'
4202 example: The video is a spam
4204 $ref: '#/components/schemas/AbusePredefinedReasons'
4206 $ref: '#/components/schemas/Account'
4208 $ref: '#/components/schemas/AbuseStateConstant'
4211 example: Decided to ban the server since it spams us regularly
4222 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4238 $ref: '#/components/schemas/AccountSummary'
4256 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4285 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4301 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4311 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4313 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4315 $ref: '#/components/schemas/AccountSummary'
4317 $ref: '#/components/schemas/VideoChannelSummary'
4339 totalRepliesFromVideoAuthor:
4344 $ref: '#/components/schemas/Account'
4345 VideoCommentThreadTree:
4348 $ref: '#/components/schemas/VideoComment'
4352 $ref: '#/components/schemas/VideoCommentThreadTree'
4356 $ref: '#/components/schemas/VideoConstantString'
4411 $ref: '#/components/schemas/Avatar'
4414 - $ref: '#/components/schemas/Actor'
4427 description: timestamp within the video, in seconds
4494 allowedForCurrentIP:
4496 requiresEmailVerification:
4700 requiresEmailVerification:
4725 allowAdditionalExtensions:
4793 $ref: '#/components/schemas/Actor'
4795 $ref: '#/components/schemas/Actor'
4798 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4811 PredefinedAbuseReasons:
4812 description: Reason categories that help triage reports
4843 - activitypub-http-unicast
4844 - activitypub-http-broadcast
4845 - activitypub-http-fetcher
4846 - activitypub-follow
4852 - activitypub-refresher
4856 additionalProperties: true
4859 additionalProperties: true
4883 VideoUploadResponse:
4894 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4895 CommentThreadResponse:
4904 $ref: '#/components/schemas/VideoComment'
4905 CommentThreadPostResponse:
4908 $ref: '#/components/schemas/VideoComment'
4918 $ref: '#/components/schemas/Video'
4926 description: The user username
4932 description: The user email
4935 description: Theme enabled by this user
4938 description: Has the user confirmed their email address?
4940 $ref: '#/components/schemas/NSFWPolicy'
4943 description: Enable P2P in the player
4946 description: Automatically start playing the video on the watch page
4948 $ref: '#/components/schemas/UserRole'
4957 description: The user video quota
4960 description: The user daily video quota
4965 abusesAcceptedCount:
4971 noInstanceConfigWarningModal:
4982 $ref: '#/components/schemas/Account'
4986 $ref: '#/components/schemas/VideoChannel'
4991 description: The user username
4997 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5003 description: The user email
5006 description: The user video quota
5009 description: The user daily video quota
5011 $ref: '#/components/schemas/UserRole'
5023 description: The user id
5027 description: The updated email of the user
5030 description: The updated video quota of the user
5033 description: The updated daily video quota of the user
5035 $ref: '#/components/schemas/UserRole'
5047 description: Your new password
5053 description: Your new email
5056 description: Your new displayNSFW
5063 description: Your new autoPlayVideo
5073 description: Id of the video
5076 description: Rating of the video
5083 $ref: '#/components/schemas/Video'
5086 description: 'Rating of the video'
5094 description: The username of the user
5097 pattern: '/^[a-z0-9._]{1,50}$/'
5101 description: The password of the user
5107 description: The email of the user
5110 description: The user display name
5118 description: The name for the default channel
5119 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5122 description: The display name for the default channel
5139 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5140 example: Please support my work on <insert crowdfunding plateform>! <3
5152 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5153 example: Please support my work on <insert crowdfunding plateform>! <3
5154 bulkVideosSupportUpdate:
5156 description: 'Update the support field for all videos of this channel'
5161 name: 'media:peerLink'
5170 - application/x-bittorrent
5176 name: 'media:content'
5207 VideoCommentsForXML:
5242 description: video watch page URL
5245 description: video canonical URL
5249 description: video publication date
5252 description: video description
5255 description: video description
5258 description: publisher user name
5261 description: video category (MRSS)
5264 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5279 description: video embed path, relative to the canonical URL domain (MRSS)
5288 description: video watch path, relative to the canonical URL domain (MRSS)
5309 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5310 'media:description':
5317 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5320 description: main streamable file for the video
5330 - application/x-bittorrent
5339 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)
5342 - $ref: '#/components/schemas/MRSSPeerLink'
5343 - $ref: '#/components/schemas/MRSSGroupContent'
5344 NotificationSettingValue:
5365 Notification type, following the `UserNotificationType` enum:
5367 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5369 - `2` NEW_COMMENT_ON_MY_VIDEO
5371 - `3` NEW_ABUSE_FOR_MODERATORS
5373 - `4` BLACKLIST_ON_MY_VIDEO
5375 - `5` UNBLACKLIST_ON_MY_VIDEO
5377 - `6` MY_VIDEO_PUBLISHED
5379 - `7` MY_VIDEO_IMPORT_SUCCESS
5381 - `8` MY_VIDEO_IMPORT_ERROR
5383 - `9` NEW_USER_REGISTRATION
5387 - `11` COMMENT_MENTION
5389 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5391 - `13` NEW_INSTANCE_FOLLOWER
5393 - `14` AUTO_INSTANCE_FOLLOWING
5399 - $ref: '#/components/schemas/VideoInfo'
5403 $ref: '#/components/schemas/ActorInfo'
5412 $ref: '#/components/schemas/VideoInfo'
5433 $ref: '#/components/schemas/VideoInfo'
5435 $ref: '#/components/schemas/ActorInfo'
5444 - $ref: '#/components/schemas/VideoInfo'
5453 - $ref: '#/components/schemas/VideoInfo'
5457 - $ref: '#/components/schemas/ActorInfo'
5465 $ref: '#/components/schemas/ActorInfo'
5493 NotificationListResponse:
5502 $ref: '#/components/schemas/Notification'
5507 example: peertube-plugin-auth-ldap
5535 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5538 additionalProperties: true
5554 $ref: '#/components/schemas/Plugin'
5567 description: RTMP stream key to use to stream into this live video
5573 'https://search.example.org/api/v1/search/videos':
5575 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5578 description: successful operation
5582 $ref: '#/components/schemas/VideoListResponse'