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!
75 Operations related to your watch history.
76 - name: My Notifications
78 Notifications following new videos, follows or reports. They allow you
79 to keep track of the interactions and overall important information that
80 concerns you. You MAY set per-notification type delivery preference, to
81 receive the info either by mail, by in-browser notification or both.
84 Each server exposes public information regarding supported videos and
88 Jobs are long-running tasks enqueued and processed by the instance
89 itself. No additional worker registration is currently available.
90 - name: Instance Follows
92 Managing servers which the instance interacts with is crucial to the
93 concept of federation in PeerTube and external video indexation. The PeerTube
94 server then deals with inter-server ActivityPub operations and propagates
95 information across its social graph by posting activities to actors' inbox
98 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-follows
99 - name: Instance Redundancy
101 Redundancy is part of the inter-server solidarity that PeerTube fosters.
102 Manage the list of instances you wish to help by seeding their videos according
103 to the policy of video selection of your choice. Note that you have a similar functionality
104 to mirror individual videos, see `Video Mirroring`.
106 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-redundancy
109 Managing plugins installed from a local path or from NPM, or search for new ones.
111 url: https://docs.joinpeertube.org/api-plugins
114 Abuses deal with reports of local or remote videos/comments/accounts alike.
117 Operations dealing with listing, uploading, fetching or modifying videos.
120 The search helps to find _videos_ or _channels_ from within the instance and beyond.
121 Videos from other instances federated by the instance (that is, instances
122 followed by the instance) can be found via keywords and other criteria of
125 Administrators can also enable the use of a remote search system, indexing
126 videos and channels not could be not federated by the instance.
127 - name: Video Comments
129 Operations dealing with comments to a video. Comments are organized in
131 - name: Video Playlists
133 Operations dealing with playlists of videos. Playlists are bound to users
135 - name: Video Channels
137 Operations dealing with the creation, modification and listing of videos within a channel.
140 Operations dealing with blocking videos (removing them from view and
141 preventing interactions).
144 Like/dislike a video.
147 Server syndication feeds
165 - Video Ownership Change
178 - name: Instance Configuration
182 - Instance Redundancy
192 summary: Get an account
194 - $ref: '#/components/parameters/name'
197 description: successful operation
201 $ref: '#/components/schemas/Account'
203 description: account not found
204 '/accounts/{name}/videos':
209 summary: 'List videos of an account'
211 - $ref: '#/components/parameters/name'
212 - $ref: '#/components/parameters/categoryOneOf'
213 - $ref: '#/components/parameters/tagsOneOf'
214 - $ref: '#/components/parameters/tagsAllOf'
215 - $ref: '#/components/parameters/licenceOneOf'
216 - $ref: '#/components/parameters/languageOneOf'
217 - $ref: '#/components/parameters/nsfw'
218 - $ref: '#/components/parameters/filter'
219 - $ref: '#/components/parameters/skipCount'
220 - $ref: '#/components/parameters/start'
221 - $ref: '#/components/parameters/count'
222 - $ref: '#/components/parameters/videosSort'
225 description: successful operation
229 $ref: '#/components/schemas/VideoListResponse'
233 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
234 .then(function(response) {
235 return response.json()
236 }).then(function(data) {
242 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
248 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
250 http = Net::HTTP.new(uri.host, uri.port)
253 response = http.get(uri.request_uri)
255 puts JSON.parse(response.read_body)
260 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
268 summary: List accounts
270 - $ref: '#/components/parameters/start'
271 - $ref: '#/components/parameters/count'
272 - $ref: '#/components/parameters/sort'
275 description: successful operation
281 $ref: '#/components/schemas/Account'
286 summary: Get instance public configuration
289 description: successful operation
293 $ref: '#/components/schemas/ServerConfig'
296 summary: Get instance "About" information
301 description: successful operation
305 $ref: '#/components/schemas/ServerConfigAbout'
308 summary: Get instance runtime configuration
316 description: successful operation
320 $ref: '#/components/schemas/ServerConfigCustom'
322 summary: Set instance runtime configuration
330 description: successful operation
332 x-summary: field inconsistencies
335 - the emailer is disabled and the instance is open to registrations
336 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
338 summary: Delete instance runtime configuration
346 description: successful operation
349 summary: List instance jobs
359 description: The state of the job ('' for for no filter)
369 - $ref: '#/components/parameters/jobType'
370 - $ref: '#/components/parameters/start'
371 - $ref: '#/components/parameters/count'
372 - $ref: '#/components/parameters/sort'
375 description: successful operation
388 $ref: '#/components/schemas/Job'
389 '/server/following/{host}':
396 summary: Unfollow a server
401 description: 'The host to unfollow '
407 description: successful operation
412 summary: List instance followers
414 - $ref: '#/components/parameters/start'
415 - $ref: '#/components/parameters/count'
416 - $ref: '#/components/parameters/sort'
419 description: successful operation
425 $ref: '#/components/schemas/Follow'
430 summary: List instances followed by the server
449 - $ref: '#/components/parameters/start'
450 - $ref: '#/components/parameters/count'
451 - $ref: '#/components/parameters/sort'
454 description: successful operation
460 $ref: '#/components/schemas/Follow'
467 summary: Follow a server
470 description: successful operation
472 description: cannot follow a non-HTTPS server
487 summary: Create a user
495 description: user created
499 $ref: '#/components/schemas/AddUserResponse'
503 operationId: getUserId
505 id: '$response.body#/user/id'
508 operationId: putUserId
510 id: '$response.body#/user/id'
513 operationId: delUserId
515 id: '$response.body#/user/id'
517 description: insufficient authority to create an admin or moderator
522 $ref: '#/components/schemas/AddUser'
523 description: User to create
533 - $ref: '#/components/parameters/usersSearch'
534 - $ref: '#/components/parameters/usersBlocked'
535 - $ref: '#/components/parameters/start'
536 - $ref: '#/components/parameters/count'
537 - $ref: '#/components/parameters/usersSort'
540 description: successful operation
546 $ref: '#/components/schemas/User'
549 - $ref: '#/components/parameters/id'
551 summary: Delete a user
557 operationId: delUserId
560 description: successful operation
567 operationId: getUserId
570 description: successful operation
574 $ref: '#/components/schemas/User'
576 summary: Update a user
581 operationId: putUserId
584 description: successful operation
589 $ref: '#/components/schemas/UpdateUser'
593 summary: Register a user
598 description: successful operation
603 $ref: '#/components/schemas/RegisterUser'
607 summary: Get my user information
615 description: successful operation
621 $ref: '#/components/schemas/User'
623 summary: Update my user information
631 description: successful operation
636 $ref: '#/components/schemas/UpdateMe'
638 /users/me/videos/imports:
640 summary: Get video imports of my user
648 - $ref: '#/components/parameters/start'
649 - $ref: '#/components/parameters/count'
650 - $ref: '#/components/parameters/sort'
653 description: successful operation
657 $ref: '#/components/schemas/VideoImport'
658 /users/me/video-quota-used:
660 summary: Get my user used quota
668 description: successful operation
673 '/users/me/videos/{videoId}/rating':
675 summary: Get rate of my user for a video
685 description: 'The video id '
690 description: successful operation
694 $ref: '#/components/schemas/GetMeVideoRating'
697 summary: Get videos of my user
705 - $ref: '#/components/parameters/start'
706 - $ref: '#/components/parameters/count'
707 - $ref: '#/components/parameters/sort'
710 description: successful operation
714 $ref: '#/components/schemas/VideoListResponse'
715 /users/me/subscriptions:
717 summary: Get my user subscriptions
724 - $ref: '#/components/parameters/start'
725 - $ref: '#/components/parameters/count'
726 - $ref: '#/components/parameters/sort'
729 description: successful operation
733 summary: Add subscription to my user
746 description: uri of the video channels to subscribe to
752 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
755 description: successful operation
756 /users/me/subscriptions/exist:
758 summary: Get if subscriptions exist for my user
765 - $ref: '#/components/parameters/subscriptionsUris'
768 description: successful operation
773 /users/me/subscriptions/videos:
775 summary: List videos of subscriptions of my user
783 - $ref: '#/components/parameters/categoryOneOf'
784 - $ref: '#/components/parameters/tagsOneOf'
785 - $ref: '#/components/parameters/tagsAllOf'
786 - $ref: '#/components/parameters/licenceOneOf'
787 - $ref: '#/components/parameters/languageOneOf'
788 - $ref: '#/components/parameters/nsfw'
789 - $ref: '#/components/parameters/filter'
790 - $ref: '#/components/parameters/skipCount'
791 - $ref: '#/components/parameters/start'
792 - $ref: '#/components/parameters/count'
793 - $ref: '#/components/parameters/videosSort'
796 description: successful operation
800 $ref: '#/components/schemas/VideoListResponse'
801 '/users/me/subscriptions/{subscriptionHandle}':
803 summary: Get subscription of my user
810 - $ref: '#/components/parameters/subscriptionHandle'
813 description: successful operation
817 $ref: '#/components/schemas/VideoChannel'
819 summary: Delete subscription of my user
826 - $ref: '#/components/parameters/subscriptionHandle'
829 description: successful operation
830 /users/me/notifications:
832 summary: List my notifications
840 description: only list unread notifications
843 - $ref: '#/components/parameters/start'
844 - $ref: '#/components/parameters/count'
845 - $ref: '#/components/parameters/sort'
848 description: successful operation
852 $ref: '#/components/schemas/NotificationListResponse'
853 /users/me/notifications/read:
855 summary: Mark notifications as read by their id
868 description: ids of the notifications to mark as read
875 description: successful operation
876 /users/me/notifications/read-all:
878 summary: Mark all my notification as read
885 description: successful operation
886 /users/me/notification-settings:
888 summary: Update my notification settings
899 newVideoFromSubscription:
900 $ref: '#/components/schemas/NotificationSettingValue'
902 $ref: '#/components/schemas/NotificationSettingValue'
904 $ref: '#/components/schemas/NotificationSettingValue'
905 videoAutoBlacklistAsModerator:
906 $ref: '#/components/schemas/NotificationSettingValue'
908 $ref: '#/components/schemas/NotificationSettingValue'
910 $ref: '#/components/schemas/NotificationSettingValue'
911 myVideoImportFinished:
912 $ref: '#/components/schemas/NotificationSettingValue'
914 $ref: '#/components/schemas/NotificationSettingValue'
916 $ref: '#/components/schemas/NotificationSettingValue'
918 $ref: '#/components/schemas/NotificationSettingValue'
920 $ref: '#/components/schemas/NotificationSettingValue'
921 autoInstanceFollowing:
922 $ref: '#/components/schemas/NotificationSettingValue'
925 description: successful operation
926 /users/me/history/videos:
928 summary: List watched videos history
934 - $ref: '#/components/parameters/start'
935 - $ref: '#/components/parameters/count'
936 - $ref: '#/components/parameters/search'
939 description: successful operation
943 $ref: '#/components/schemas/VideoListResponse'
944 /users/me/history/videos/remove:
946 summary: Clear video history
958 description: history before this date will be deleted
963 description: successful operation
964 /users/me/avatar/pick:
966 summary: Update my user avatar
973 description: successful operation
980 $ref: '#/components/schemas/ActorImage'
982 description: image file too large
988 description: Maximum file size for the avatar
996 description: The file to upload.
1001 contentType: image/png, image/jpeg
1004 summary: Delete my avatar
1011 description: successful operation
1015 summary: List video ownership changes
1017 - Video Ownership Change
1022 description: successful operation
1023 '/videos/ownership/{id}/accept':
1025 summary: Accept ownership change request
1027 - Video Ownership Change
1031 - $ref: '#/components/parameters/idOrUUID'
1034 description: successful operation
1036 description: cannot terminate an ownership change of another user
1038 description: video owneship change not found
1039 '/videos/ownership/{id}/refuse':
1041 summary: Refuse ownership change request
1043 - Video Ownership Change
1047 - $ref: '#/components/parameters/idOrUUID'
1050 description: successful operation
1052 description: cannot terminate an ownership change of another user
1054 description: video owneship change not found
1055 '/videos/{id}/give-ownership':
1057 summary: Request ownership change
1059 - Video Ownership Change
1063 - $ref: '#/components/parameters/idOrUUID'
1067 application/x-www-form-urlencoded:
1077 description: successful operation
1079 description: changing video ownership to a remote account is not supported yet
1081 description: video not found
1084 summary: List videos
1088 - $ref: '#/components/parameters/categoryOneOf'
1089 - $ref: '#/components/parameters/tagsOneOf'
1090 - $ref: '#/components/parameters/tagsAllOf'
1091 - $ref: '#/components/parameters/licenceOneOf'
1092 - $ref: '#/components/parameters/languageOneOf'
1093 - $ref: '#/components/parameters/nsfw'
1094 - $ref: '#/components/parameters/filter'
1095 - $ref: '#/components/parameters/skipCount'
1096 - $ref: '#/components/parameters/start'
1097 - $ref: '#/components/parameters/count'
1098 - $ref: '#/components/parameters/videosSort'
1101 description: successful operation
1105 $ref: '#/components/schemas/VideoListResponse'
1108 summary: List available video categories
1113 description: successful operation
1122 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1125 summary: List available video licences
1130 description: successful operation
1139 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1142 summary: List available video languages
1147 description: successful operation
1156 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1159 summary: List available video privacies
1164 description: successful operation
1173 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1176 summary: Update a video
1182 - $ref: '#/components/parameters/idOrUUID'
1185 description: successful operation
1188 multipart/form-data:
1193 description: Video thumbnail file
1197 description: Video preview file
1201 description: Video category
1205 description: Video licence
1209 description: Video language
1212 $ref: '#/components/schemas/VideoPrivacySet'
1214 description: Video description
1217 description: Whether or not we wait transcoding before publish the video
1220 description: A text tell the audience how to support the video creator
1221 example: Please support my work on <insert crowdfunding plateform>! <3
1224 description: Whether or not this video contains sensitive content
1227 description: Video name
1232 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1241 description: Enable or disable comments for this video
1243 originallyPublishedAt:
1244 description: Date when the content was originally published
1248 $ref: '#/components/schemas/VideoScheduledUpdate'
1251 contentType: image/jpeg
1253 contentType: image/jpeg
1255 summary: Get a video
1259 - $ref: '#/components/parameters/idOrUUID'
1262 description: successful operation
1266 $ref: '#/components/schemas/VideoDetails'
1268 summary: Delete a video
1274 - $ref: '#/components/parameters/idOrUUID'
1277 description: successful operation
1278 '/videos/{id}/description':
1280 summary: Get complete video description
1284 - $ref: '#/components/parameters/idOrUUID'
1287 description: successful operation
1292 '/videos/{id}/views':
1294 summary: Add a view to a video
1298 - $ref: '#/components/parameters/idOrUUID'
1301 description: successful operation
1302 '/videos/{id}/watching':
1304 summary: Set watching progress of a video
1310 - $ref: '#/components/parameters/idOrUUID'
1315 $ref: '#/components/schemas/UserWatchingVideo'
1319 description: successful operation
1322 summary: Upload a video
1329 description: successful operation
1333 $ref: '#/components/schemas/VideoUploadResponse'
1335 description: invalid file field, schedule date or parameter
1337 description: video didn't pass upload filter
1339 description: upload has timed out
1341 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1343 X-File-Maximum-Size:
1347 description: Maximum file size for the video
1349 description: video type unsupported
1351 description: video unreadable
1354 multipart/form-data:
1359 description: Video file
1363 description: Channel id that will contain this video
1366 description: Video thumbnail file
1370 description: Video preview file
1374 $ref: '#/components/schemas/VideoPrivacySet'
1376 description: Video category
1380 description: Video licence
1384 description: Video language
1387 description: Video description
1390 description: Whether or not we wait transcoding before publish the video
1393 description: A text tell the audience how to support the video creator
1394 example: Please support my work on <insert crowdfunding plateform>! <3
1397 description: Whether or not this video contains sensitive content
1400 description: Video name
1405 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1415 description: Enable or disable comments for this video
1418 description: Enable or disable downloading for this video
1420 originallyPublishedAt:
1421 description: Date when the content was originally published
1425 $ref: '#/components/schemas/VideoScheduledUpdate'
1432 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1434 contentType: image/jpeg
1436 contentType: image/jpeg
1441 USERNAME="<your_username>"
1442 PASSWORD="<your_password>"
1443 FILE_PATH="<your_file_path>"
1444 CHANNEL_ID="<your_channel_id>"
1447 API_PATH="https://peertube2.cpy.re/api/v1"
1449 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1450 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1451 token=$(curl -s "$API_PATH/users/token" \
1452 --data client_id="$client_id" \
1453 --data client_secret="$client_secret" \
1454 --data grant_type=password \
1455 --data response_type=code \
1456 --data username="$USERNAME" \
1457 --data password="$PASSWORD" \
1458 | jq -r ".access_token")
1460 curl -s "$API_PATH/videos/upload" \
1461 -H "Authorization: Bearer $token" \
1463 --form videofile=@"$FILE_PATH" \
1464 --form channelId=$CHANNEL_ID \
1468 summary: Import a video
1469 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1476 multipart/form-data:
1481 description: Torrent File
1485 description: HTTP target URL
1488 description: Magnet URI
1491 description: Channel id that will contain this video
1494 description: Video thumbnail file
1498 description: Video preview file
1502 $ref: '#/components/schemas/VideoPrivacySet'
1504 description: Video category
1508 description: Video licence
1512 description: Video language
1515 description: Video description
1518 description: Whether or not we wait transcoding before publish the video
1521 description: A text tell the audience how to support the video creator
1522 example: Please support my work on <insert crowdfunding plateform>! <3
1525 description: Whether or not this video contains sensitive content
1528 description: Video name
1533 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1542 description: Enable or disable comments for this video
1545 description: Enable or disable downloading for this video
1548 $ref: '#/components/schemas/VideoScheduledUpdate'
1554 contentType: application/x-bittorrent
1556 contentType: image/jpeg
1558 contentType: image/jpeg
1561 description: successful operation
1565 $ref: '#/components/schemas/VideoUploadResponse'
1567 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1569 description: video didn't pass pre-import filter
1571 description: HTTP or Torrent/magnetURI import not enabled
1575 summary: Create a live
1583 description: successful operation
1587 $ref: '#/components/schemas/VideoUploadResponse'
1589 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1592 multipart/form-data:
1597 description: Channel id that will contain this live video
1602 description: User can stream multiple times in a permanent live
1605 description: Live video/replay thumbnail file
1609 description: Live video/replay preview file
1613 $ref: '#/components/schemas/VideoPrivacySet'
1615 description: Live video/replay category
1618 description: Live video/replay licence
1621 description: Live video/replay language
1624 description: Live video/replay description
1627 description: A text tell the audience how to support the creator
1628 example: Please support my work on <insert crowdfunding plateform>! <3
1631 description: Whether or not this live video/replay contains sensitive content
1634 description: Live video/replay name
1639 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1648 description: Enable or disable comments for this live video/replay
1651 description: Enable or disable downloading for the replay of this live
1658 contentType: image/jpeg
1660 contentType: image/jpeg
1664 summary: Get a live information
1671 - $ref: '#/components/parameters/idOrUUID'
1674 description: successful operation
1678 $ref: '#/components/schemas/LiveVideoResponse'
1680 summary: Update a live information
1687 - $ref: '#/components/parameters/idOrUUID'
1692 $ref: '#/components/schemas/LiveVideoUpdate'
1695 description: Successful operation
1697 description: Bad parameters or trying to update a live that has already started
1699 description: Trying to save replay of the live but saving replay is not enabled on the instance
1703 summary: List my abuses
1712 description: only list the report with this id
1718 $ref: '#/components/schemas/AbuseStateSet'
1719 - $ref: '#/components/parameters/start'
1720 - $ref: '#/components/parameters/count'
1721 - $ref: '#/components/parameters/abusesSort'
1724 description: successful operation
1730 $ref: '#/components/schemas/Abuse'
1734 summary: List abuses
1744 description: only list the report with this id
1747 - name: predefinedReason
1749 description: predefined reason the listed reports should contain
1751 $ref: '#/components/schemas/PredefinedAbuseReasons'
1754 description: plain search that will match with video titles, reporter names and more
1760 $ref: '#/components/schemas/AbuseStateSet'
1761 - name: searchReporter
1763 description: only list reports of a specific reporter
1766 - name: searchReportee
1767 description: only list reports of a specific reportee
1773 description: only list reports of a specific video
1776 - name: searchVideoChannel
1778 description: only list reports of a specific video channel
1783 description: only list blacklisted or deleted videos
1791 description: only list account, comment or video reports
1798 - $ref: '#/components/parameters/start'
1799 - $ref: '#/components/parameters/count'
1800 - $ref: '#/components/parameters/abusesSort'
1803 description: successful operation
1809 $ref: '#/components/schemas/Abuse'
1812 summary: Report an abuse
1825 description: Reason why the user reports this video
1830 $ref: '#/components/schemas/PredefinedAbuseReasons'
1835 description: Video id to report
1839 description: Timestamp in the video that marks the beginning of the report
1843 description: Timestamp in the video that marks the ending of the report
1849 description: Comment id to report
1855 description: Account id to report
1861 description: successful operation
1863 description: incorrect request parameters
1864 '/abuses/{abuseId}':
1866 summary: Update an abuse
1874 - $ref: '#/components/parameters/abuseId'
1882 $ref: '#/components/schemas/AbuseStateSet'
1885 description: Update the report comment visible only to the moderation team
1890 description: successful operation
1892 description: abuse not found
1896 summary: Delete an abuse
1902 - $ref: '#/components/parameters/abuseId'
1905 description: successful operation
1907 description: block not found
1908 '/abuses/{abuseId}/messages':
1910 summary: List messages of an abuse
1916 - $ref: '#/components/parameters/abuseId'
1919 description: successful operation
1925 $ref: '#/components/schemas/AbuseMessage'
1928 summary: Add message to an abuse
1934 - $ref: '#/components/parameters/abuseId'
1943 description: Message to send
1951 description: successful operation
1953 description: incorrect request parameters
1954 '/abuses/{abuseId}/messages/{abuseMessageId}':
1956 summary: Delete an abuse message
1962 - $ref: '#/components/parameters/abuseId'
1963 - $ref: '#/components/parameters/abuseMessageId'
1966 description: successful operation
1968 '/videos/{id}/blacklist':
1970 summary: Block a video
1978 - $ref: '#/components/parameters/idOrUUID'
1981 description: successful operation
1983 summary: Unblock a video by its id
1991 - $ref: '#/components/parameters/idOrUUID'
1994 description: successful operation
1996 description: block not found
2001 summary: List video blocks
2010 list only blocks that match this type:
2014 - `2`: automatic block that needs review
2022 description: plain search that will match with video titles, and more
2025 - $ref: '#/components/parameters/start'
2026 - $ref: '#/components/parameters/count'
2027 - $ref: '#/components/parameters/blacklistsSort'
2030 description: successful operation
2042 $ref: '#/components/schemas/VideoBlacklist'
2043 /videos/{id}/captions:
2045 summary: List captions of a video
2049 - $ref: '#/components/parameters/idOrUUID'
2052 description: successful operation
2064 $ref: '#/components/schemas/VideoCaption'
2065 /videos/{id}/captions/{captionLanguage}:
2067 summary: Add or replace a video caption
2074 - $ref: '#/components/parameters/idOrUUID'
2075 - $ref: '#/components/parameters/captionLanguage'
2078 multipart/form-data:
2083 description: The file to upload.
2088 contentType: text/vtt, application/x-subrip, text/plain
2091 description: successful operation
2093 description: video or language not found
2095 summary: Delete a video caption
2102 - $ref: '#/components/parameters/idOrUUID'
2103 - $ref: '#/components/parameters/captionLanguage'
2106 description: successful operation
2108 description: video or language or caption for that language not found
2111 summary: List video channels
2115 - $ref: '#/components/parameters/start'
2116 - $ref: '#/components/parameters/count'
2117 - $ref: '#/components/parameters/sort'
2120 description: successful operation
2132 $ref: '#/components/schemas/VideoChannel'
2134 summary: Create a video channel
2141 description: successful operation
2146 $ref: '#/components/schemas/VideoChannelCreate'
2147 '/video-channels/{channelHandle}':
2149 summary: Get a video channel
2153 - $ref: '#/components/parameters/channelHandle'
2156 description: successful operation
2160 $ref: '#/components/schemas/VideoChannel'
2162 summary: Update a video channel
2168 - $ref: '#/components/parameters/channelHandle'
2171 description: successful operation
2176 $ref: '#/components/schemas/VideoChannelUpdate'
2178 summary: Delete a video channel
2184 - $ref: '#/components/parameters/channelHandle'
2187 description: successful operation
2188 '/video-channels/{channelHandle}/videos':
2190 summary: List videos of a video channel
2195 - $ref: '#/components/parameters/channelHandle'
2196 - $ref: '#/components/parameters/categoryOneOf'
2197 - $ref: '#/components/parameters/tagsOneOf'
2198 - $ref: '#/components/parameters/tagsAllOf'
2199 - $ref: '#/components/parameters/licenceOneOf'
2200 - $ref: '#/components/parameters/languageOneOf'
2201 - $ref: '#/components/parameters/nsfw'
2202 - $ref: '#/components/parameters/filter'
2203 - $ref: '#/components/parameters/skipCount'
2204 - $ref: '#/components/parameters/start'
2205 - $ref: '#/components/parameters/count'
2206 - $ref: '#/components/parameters/videosSort'
2209 description: successful operation
2213 $ref: '#/components/schemas/VideoListResponse'
2214 '/video-channels/{channelHandle}/avatar/pick':
2216 summary: Update channel avatar
2222 - $ref: '#/components/parameters/channelHandle'
2225 description: successful operation
2232 $ref: '#/components/schemas/ActorImage'
2234 description: image file too large
2236 X-File-Maximum-Size:
2240 description: Maximum file size for the avatar
2243 multipart/form-data:
2248 description: The file to upload.
2253 contentType: image/png, image/jpeg
2254 '/video-channels/{channelHandle}/avatar':
2256 summary: Delete channel avatar
2262 - $ref: '#/components/parameters/channelHandle'
2265 description: successful operation
2268 '/video-channels/{channelHandle}/banner/pick':
2270 summary: Update channel banner
2276 - $ref: '#/components/parameters/channelHandle'
2279 description: successful operation
2286 $ref: '#/components/schemas/ActorImage'
2288 description: image file too large
2290 X-File-Maximum-Size:
2294 description: Maximum file size for the banner
2297 multipart/form-data:
2302 description: The file to upload.
2307 contentType: image/png, image/jpeg
2308 '/video-channels/{channelHandle}/banner':
2310 summary: Delete channel banner
2316 - $ref: '#/components/parameters/channelHandle'
2319 description: successful operation
2321 /video-playlists/privacies:
2323 summary: List available playlist privacies
2328 description: successful operation
2337 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2341 summary: List video playlists
2345 - $ref: '#/components/parameters/start'
2346 - $ref: '#/components/parameters/count'
2347 - $ref: '#/components/parameters/sort'
2350 description: successful operation
2362 $ref: '#/components/schemas/VideoPlaylist'
2364 summary: Create a video playlist
2365 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2372 description: successful operation
2387 multipart/form-data:
2392 description: Video playlist display name
2397 description: Video playlist thumbnail file
2401 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2403 description: Video playlist description
2406 description: Video channel in which the playlist will be published
2412 contentType: image/jpeg
2414 /video-playlists/{id}:
2416 summary: Get a video playlist
2420 - $ref: '#/components/parameters/idOrUUID'
2423 description: successful operation
2427 $ref: '#/components/schemas/VideoPlaylist'
2429 summary: Update a video playlist
2430 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2437 description: successful operation
2439 - $ref: '#/components/parameters/idOrUUID'
2442 multipart/form-data:
2447 description: Video playlist display name
2452 description: Video playlist thumbnail file
2456 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2458 description: Video playlist description
2461 description: Video channel in which the playlist will be published
2465 contentType: image/jpeg
2467 summary: Delete a video playlist
2473 - $ref: '#/components/parameters/idOrUUID'
2476 description: successful operation
2478 /video-playlists/{id}/videos:
2480 summary: 'List videos of a playlist'
2485 - $ref: '#/components/parameters/idOrUUID'
2488 description: successful operation
2492 $ref: '#/components/schemas/VideoListResponse'
2494 summary: 'Add a video in a playlist'
2501 - $ref: '#/components/parameters/idOrUUID'
2504 description: successful operation
2510 videoPlaylistElement:
2523 description: 'Video to add in the playlist'
2526 description: 'Start the video at this specific timestamp (in seconds)'
2529 description: 'Stop the video at this specific timestamp (in seconds)'
2533 /video-playlists/{id}/videos/reorder:
2535 summary: 'Reorder a playlist'
2541 - $ref: '#/components/parameters/idOrUUID'
2544 description: successful operation
2553 description: 'Start position of the element to reorder'
2555 insertAfterPosition:
2557 description: 'New position for the block to reorder, to add the block before the first element'
2561 description: 'How many element from `startPosition` to reorder'
2565 - insertAfterPosition
2567 /video-playlists/{id}/videos/{playlistElementId}:
2569 summary: 'Update a playlist element'
2575 - $ref: '#/components/parameters/idOrUUID'
2576 - $ref: '#/components/parameters/playlistElementId'
2579 description: successful operation
2588 description: 'Start the video at this specific timestamp (in seconds)'
2591 description: 'Stop the video at this specific timestamp (in seconds)'
2593 summary: 'Delete an element from a playlist'
2599 - $ref: '#/components/parameters/idOrUUID'
2600 - $ref: '#/components/parameters/playlistElementId'
2603 description: successful operation
2605 '/users/me/video-playlists/videos-exist':
2607 summary: 'Check video exists in my playlists'
2616 description: The video ids to check
2623 description: successful operation
2643 '/accounts/{name}/video-channels':
2645 summary: List video channels of an account
2650 - $ref: '#/components/parameters/name'
2653 description: include view statistics for the last 30 days (only if authentified as the account user)
2656 - $ref: '#/components/parameters/start'
2657 - $ref: '#/components/parameters/count'
2658 - $ref: '#/components/parameters/sort'
2661 description: successful operation
2672 $ref: '#/components/schemas/VideoChannel'
2673 '/accounts/{name}/ratings':
2675 summary: List ratings of an account
2681 - $ref: '#/components/parameters/name'
2682 - $ref: '#/components/parameters/start'
2683 - $ref: '#/components/parameters/count'
2684 - $ref: '#/components/parameters/sort'
2688 description: Optionally filter which ratings to retrieve
2696 description: successful operation
2702 $ref: '#/components/schemas/VideoRating'
2703 '/videos/{id}/comment-threads':
2705 summary: List threads of a video
2709 - $ref: '#/components/parameters/idOrUUID'
2710 - $ref: '#/components/parameters/start'
2711 - $ref: '#/components/parameters/count'
2712 - $ref: '#/components/parameters/commentsSort'
2715 description: successful operation
2719 $ref: '#/components/schemas/CommentThreadResponse'
2721 summary: Create a thread
2727 - $ref: '#/components/parameters/idOrUUID'
2730 description: successful operation
2734 $ref: '#/components/schemas/CommentThreadPostResponse'
2736 description: video does not exist
2745 description: 'Text comment'
2749 '/videos/{id}/comment-threads/{threadId}':
2751 summary: Get a thread
2755 - $ref: '#/components/parameters/idOrUUID'
2756 - $ref: '#/components/parameters/threadId'
2759 description: successful operation
2763 $ref: '#/components/schemas/VideoCommentThreadTree'
2764 '/videos/{id}/comments/{commentId}':
2766 summary: Reply to a thread of a video
2772 - $ref: '#/components/parameters/idOrUUID'
2773 - $ref: '#/components/parameters/commentId'
2776 description: successful operation
2780 $ref: '#/components/schemas/CommentThreadPostResponse'
2782 description: thread or video does not exist
2791 description: 'Text comment'
2796 summary: Delete a comment or a reply
2802 - $ref: '#/components/parameters/idOrUUID'
2803 - $ref: '#/components/parameters/commentId'
2806 description: successful operation
2808 description: cannot remove comment of another user
2810 description: comment or video does not exist
2812 description: comment is already deleted
2813 '/videos/{id}/rate':
2815 summary: Like/dislike a video
2821 - $ref: '#/components/parameters/idOrUUID'
2824 description: successful operation
2826 description: video does not exist
2831 summary: Search videos
2836 allowEmptyValue: false
2838 String to search. If the user can make a remote URI search, and the string is an URI then the
2839 PeerTube instance will fetch the remote object and add it to its database. Then,
2840 you can use the REST API to fetch the complete video information and interact with it.
2843 - $ref: '#/components/parameters/categoryOneOf'
2844 - $ref: '#/components/parameters/tagsOneOf'
2845 - $ref: '#/components/parameters/tagsAllOf'
2846 - $ref: '#/components/parameters/licenceOneOf'
2847 - $ref: '#/components/parameters/languageOneOf'
2848 - $ref: '#/components/parameters/nsfw'
2849 - $ref: '#/components/parameters/filter'
2850 - $ref: '#/components/parameters/skipCount'
2851 - $ref: '#/components/parameters/start'
2852 - $ref: '#/components/parameters/count'
2853 - $ref: '#/components/parameters/searchTarget'
2854 - $ref: '#/components/parameters/videosSearchSort'
2857 description: Get videos that are published after this date
2863 description: Get videos that are published before this date
2867 - name: originallyPublishedStartDate
2869 description: Get videos that are originally published after this date
2873 - name: originallyPublishedEndDate
2875 description: Get videos that are originally published before this date
2881 description: Get videos that have this minimum duration
2886 description: Get videos that have this maximum duration
2890 'searchTarget === search-index':
2891 $ref: '#/components/callbacks/searchIndex'
2894 description: successful operation
2898 $ref: '#/components/schemas/VideoListResponse'
2900 description: search index unavailable
2901 /search/video-channels:
2905 summary: Search channels
2911 String to search. If the user can make a remote URI search, and the string is an URI then the
2912 PeerTube instance will fetch the remote object and add it to its database. Then,
2913 you can use the REST API to fetch the complete channel information and interact with it.
2916 - $ref: '#/components/parameters/start'
2917 - $ref: '#/components/parameters/count'
2918 - $ref: '#/components/parameters/searchTarget'
2919 - $ref: '#/components/parameters/sort'
2921 'searchTarget === search-index':
2922 $ref: '#/components/callbacks/searchIndex'
2925 description: successful operation
2931 $ref: '#/components/schemas/VideoChannel'
2933 description: search index unavailable
2934 /blocklist/accounts:
2938 summary: List account blocks
2943 - $ref: '#/components/parameters/start'
2944 - $ref: '#/components/parameters/count'
2945 - $ref: '#/components/parameters/sort'
2948 description: successful operation
2952 summary: Block an account
2964 example: chocobozzz@example.org
2965 description: account to block, in the form `username@domain`
2970 description: successful operation
2972 description: self-blocking forbidden
2973 '/blocklist/accounts/{accountName}':
2977 summary: Unblock an account by its handle
2985 description: account to unblock, in the form `username@domain`
2990 description: successful operation
2992 description: account or account block does not exist
2997 summary: List server blocks
3002 - $ref: '#/components/parameters/start'
3003 - $ref: '#/components/parameters/count'
3004 - $ref: '#/components/parameters/sort'
3007 description: successful operation
3011 summary: Block a server
3024 description: server domain to block
3029 description: successful operation
3031 description: self-blocking forbidden
3032 '/blocklist/servers/{host}':
3036 summary: Unblock a server by its domain
3044 description: server domain to unblock
3050 description: successful operation
3052 description: account block does not exist
3056 - Instance Redundancy
3057 summary: Update a server redundancy policy
3065 description: server domain to mirror
3077 description: allow mirroring of the host's local videos
3082 description: successful operation
3084 description: server is not already known
3089 summary: List videos being mirrored
3097 description: direction of the mirror
3103 - $ref: '#/components/parameters/start'
3104 - $ref: '#/components/parameters/count'
3105 - $ref: '#/components/parameters/videoRedundanciesSort'
3108 description: successful operation
3114 $ref: '#/components/schemas/VideoRedundancy'
3118 summary: Mirror a video
3134 description: successful operation
3136 description: cannot mirror a local video
3138 description: video does not exist
3140 description: video is already mirrored
3141 /redundancy/videos/{redundancyId}:
3145 summary: Delete a mirror done on a video
3150 - name: redundancyId
3153 description: id of an existing redundancy on a video
3158 description: successful operation
3160 description: video redundancy not found
3161 '/feeds/video-comments.{format}':
3165 summary: List comments on videos
3167 - url: 'https://peertube2.cpy.re'
3168 description: Live Test Server (live data - latest nightly version)
3169 - url: 'https://peertube3.cpy.re'
3170 description: Live Test Server (live data - latest RC version)
3171 - url: 'https://peertube.cpy.re'
3172 description: Live Test Server (live data - stable version)
3177 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3190 description: 'limit listing to a specific video'
3195 description: 'limit listing to a specific account'
3200 description: 'limit listing to a specific account'
3203 - name: videoChannelId
3205 description: 'limit listing to a specific video channel'
3208 - name: videoChannelName
3210 description: 'limit listing to a specific video channel'
3215 description: successful operation
3220 default: 'max-age=900' # 15 min cache
3224 $ref: '#/components/schemas/VideoCommentsForXML'
3225 application/rss+xml:
3227 $ref: '#/components/schemas/VideoCommentsForXML'
3230 $ref: '#/components/schemas/VideoCommentsForXML'
3231 application/atom+xml:
3233 $ref: '#/components/schemas/VideoCommentsForXML'
3238 x-summary: field inconsistencies
3241 - videoId filter is mixed with a channel filter
3243 description: video, video channel or account not found
3245 description: accept header unsupported
3246 '/feeds/videos.{format}':
3250 summary: List videos
3252 - url: 'https://peertube2.cpy.re'
3253 description: Live Test Server (live data - latest nightly version)
3254 - url: 'https://peertube3.cpy.re'
3255 description: Live Test Server (live data - latest RC version)
3256 - url: 'https://peertube.cpy.re'
3257 description: Live Test Server (live data - stable version)
3262 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3275 description: 'limit listing to a specific account'
3280 description: 'limit listing to a specific account'
3283 - name: videoChannelId
3285 description: 'limit listing to a specific video channel'
3288 - name: videoChannelName
3290 description: 'limit listing to a specific video channel'
3293 - $ref: '#/components/parameters/sort'
3294 - $ref: '#/components/parameters/nsfw'
3295 - $ref: '#/components/parameters/filter'
3298 description: successful operation
3303 default: 'max-age=900' # 15 min cache
3307 $ref: '#/components/schemas/VideosForXML'
3310 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3311 application/rss+xml:
3313 $ref: '#/components/schemas/VideosForXML'
3316 $ref: '#/components/schemas/VideosForXML'
3317 application/atom+xml:
3319 $ref: '#/components/schemas/VideosForXML'
3324 description: video channel or account not found
3326 description: accept header unsupported
3331 summary: List plugins
3344 - $ref: '#/components/parameters/start'
3345 - $ref: '#/components/parameters/count'
3346 - $ref: '#/components/parameters/sort'
3349 description: successful operation
3353 $ref: '#/components/schemas/PluginResponse'
3358 summary: List available plugins
3371 - name: currentPeerTubeEngine
3375 - $ref: '#/components/parameters/start'
3376 - $ref: '#/components/parameters/count'
3377 - $ref: '#/components/parameters/sort'
3380 description: successful operation
3384 $ref: '#/components/schemas/PluginResponse'
3386 description: plugin index unavailable
3391 summary: Install a plugin
3404 example: peertube-plugin-auth-ldap
3407 additionalProperties: false
3414 additionalProperties: false
3417 description: successful operation
3419 description: should have either `npmName` or `path` set
3424 summary: Update a plugin
3437 example: peertube-plugin-auth-ldap
3440 additionalProperties: false
3447 additionalProperties: false
3450 description: successful operation
3452 description: should have either `npmName` or `path` set
3454 description: existing plugin not found
3459 summary: Uninstall a plugin
3471 description: name of the plugin/theme in its package.json
3472 example: peertube-plugin-auth-ldap
3477 description: successful operation
3479 description: existing plugin not found
3484 summary: Get a plugin
3489 - $ref: '#/components/parameters/npmName'
3492 description: successful operation
3496 $ref: '#/components/schemas/Plugin'
3498 description: plugin not found
3499 /plugins/{npmName}/settings:
3503 summary: Set a plugin's settings
3508 - $ref: '#/components/parameters/npmName'
3517 additionalProperties: true
3520 description: successful operation
3522 description: plugin not found
3523 /plugins/{npmName}/public-settings:
3527 summary: Get a plugin's public settings
3529 - $ref: '#/components/parameters/npmName'
3532 description: successful operation
3537 additionalProperties: true
3539 description: plugin not found
3540 /plugins/{npmName}/registered-settings:
3544 summary: Get a plugin's registered settings
3549 - $ref: '#/components/parameters/npmName'
3552 description: successful operation
3557 additionalProperties: true
3559 description: plugin not found
3561 - url: 'https://peertube2.cpy.re/api/v1'
3562 description: Live Test Server (live data - latest nightly version)
3563 - url: 'https://peertube3.cpy.re/api/v1'
3564 description: Live Test Server (live data - latest RC version)
3565 - url: 'https://peertube.cpy.re/api/v1'
3566 description: Live Test Server (live data - stable version)
3573 description: Offset used to paginate results
3581 description: "Number of items to return"
3591 description: Sort column
3599 description: Plain text search, applied to various parts of the model depending on endpoint
3607 If the administrator enabled search index support, you can override the default search target.
3610 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3611 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3612 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3613 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3614 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3615 * 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
3616 the data from the origin instance API
3626 description: Sort videos by criteria
3642 description: Sort videos by criteria
3657 description: Sort comments by criteria
3667 description: Sort blacklists by criteria
3683 description: Plain text search that will match with user usernames or emails
3690 description: Filter results down to (un)banned users
3697 description: Sort users by criteria
3708 description: Sort abuses by criteria
3715 videoRedundanciesSort:
3719 description: Sort abuses by criteria
3728 description: The username or handle of the account
3731 example: chocobozzz | chocobozzz@example.org
3736 description: The user id
3745 description: The object id or uuid
3753 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3755 name: playlistElementId
3758 description: Playlist element id
3765 description: Abuse id
3769 name: abuseMessageId
3772 description: Abuse message id
3776 name: captionLanguage
3779 description: The caption language
3786 description: The video channel handle
3789 example: my_username | my_username@example.com
3791 name: subscriptionHandle
3794 description: The subscription handle
3797 example: my_username | my_username@example.com
3802 description: The thread id (root comment id)
3809 description: The comment id
3816 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3829 description: tag(s) of the video
3842 description: tag(s) of the video, where all should be present in the video
3855 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
3868 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3881 description: if you don't need the `total` in the response
3892 description: whether to include nsfw videos, if any
3903 Special filters which might require special rights:
3904 * `local` - only videos local to the instance
3905 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3906 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
3916 description: list of uris to check if each is part of the user subscriptions
3926 description: name of the plugin/theme on npmjs.com or in its package.json
3929 example: peertube-plugin-auth-ldap
3934 description: job type
3938 - activitypub-follow
3939 - activitypub-http-broadcast
3940 - activitypub-http-fetcher
3941 - activitypub-http-unicast
3947 - activitypub-refresher
3953 In the header: *Authorization: Bearer <token\>*
3956 Authenticating via OAuth requires the following steps:
3959 - Have an account with sufficient authorization levels
3961 - [Generate](https://docs.joinpeertube.org/api-rest-getting-started) a
3964 - Make Authenticated Requests
3968 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3971 moderator: Moderator scope
3974 VideoConstantNumber:
3980 VideoConstantString:
3987 VideoPlaylistPrivacySet:
3993 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3994 VideoPlaylistPrivacyConstant:
3997 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
4001 VideoPlaylistTypeSet:
4006 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
4007 VideoPlaylistTypeConstant:
4010 $ref: '#/components/schemas/VideoPlaylistTypeSet'
4021 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
4022 VideoPrivacyConstant:
4025 $ref: '#/components/schemas/VideoPrivacySet'
4042 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
4049 description: 'Admin flags for the user (None = `0`, Bypass video blacklist = `1`)'
4060 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
4070 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
4074 $ref: '#/components/schemas/AbuseStateSet'
4077 AbusePredefinedReasons:
4090 example: [spamOrMisleading]
4092 VideoResolutionConstant:
4096 description: 'Video resolution (240, 360, 720, 1080, 1440 or 2160)'
4101 VideoScheduledUpdate:
4104 $ref: '#/components/schemas/VideoPrivacySet'
4108 description: When to update the video
4128 - $ref: '#/components/schemas/ActorImage'
4129 VideoChannelSummary:
4146 - $ref: '#/components/schemas/ActorImage'
4158 - $ref: '#/components/schemas/Video'
4164 $ref: '#/components/schemas/VideoResolutionConstant'
4167 description: 'Video file size in bytes'
4170 description: Direct URL of the torrent file
4174 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
4178 description: Direct URL of the video
4182 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
4189 VideoStreamingPlaylists:
4197 description: 'Playlist type (HLS = `1`)'
4206 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)'
4208 $ref: '#/components/schemas/VideoFile'
4224 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4237 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4249 originallyPublishedAt:
4253 $ref: '#/components/schemas/VideoConstantNumber'
4255 $ref: '#/components/schemas/VideoConstantNumber'
4257 $ref: '#/components/schemas/VideoConstantString'
4259 $ref: '#/components/schemas/VideoPrivacyConstant'
4269 example: What is PeerTube?
4274 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4277 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4280 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4296 $ref: '#/components/schemas/VideoStateConstant'
4300 - $ref: '#/components/schemas/VideoScheduledUpdate'
4308 $ref: '#/components/schemas/AccountSummary'
4310 $ref: '#/components/schemas/VideoChannelSummary'
4319 - $ref: '#/components/schemas/Video'
4326 description: A text tell the audience how to support the video creator
4327 example: Please support my work on <insert crowdfunding plateform>! <3
4329 $ref: '#/components/schemas/VideoChannel'
4331 $ref: '#/components/schemas/Account'
4333 example: [flowers, gardening]
4343 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'
4345 $ref: '#/components/schemas/VideoFile'
4358 $ref: '#/components/schemas/VideoStreamingPlaylists'
4359 FileRedundancyInformation:
4396 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4403 $ref: '#/components/schemas/FileRedundancyInformation'
4407 $ref: '#/components/schemas/FileRedundancyInformation'
4408 VideoImportStateConstant:
4416 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4428 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4432 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
4436 $ref: '#/components/schemas/VideoImportStateConstant'
4446 $ref: '#/components/schemas/Video'
4454 example: The video is a spam
4458 $ref: '#/components/schemas/AbusePredefinedReasons'
4460 $ref: '#/components/schemas/Account'
4462 $ref: '#/components/schemas/AbuseStateConstant'
4465 example: Decided to ban the server since it spams us regularly
4469 $ref: '#/components/schemas/VideoInfo'
4487 $ref: '#/components/schemas/AccountSummary'
4507 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4542 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4560 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4572 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4574 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4576 $ref: '#/components/schemas/AccountSummary'
4578 $ref: '#/components/schemas/VideoChannelSummary'
4602 totalRepliesFromVideoAuthor:
4607 $ref: '#/components/schemas/Account'
4608 VideoCommentThreadTree:
4611 $ref: '#/components/schemas/VideoComment'
4615 $ref: '#/components/schemas/VideoCommentThreadTree'
4619 $ref: '#/components/schemas/VideoConstantString'
4674 $ref: '#/components/schemas/ActorImage'
4677 - $ref: '#/components/schemas/Actor'
4690 description: timestamp within the video, in seconds
4757 allowedForCurrentIP:
4759 requiresEmailVerification:
4963 requiresEmailVerification:
4988 allowAdditionalExtensions:
5058 $ref: '#/components/schemas/Actor'
5060 $ref: '#/components/schemas/Actor'
5063 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
5076 PredefinedAbuseReasons:
5077 description: Reason categories that help triage reports
5108 - activitypub-http-unicast
5109 - activitypub-http-broadcast
5110 - activitypub-http-fetcher
5111 - activitypub-follow
5117 - activitypub-refresher
5121 additionalProperties: true
5124 additionalProperties: true
5148 VideoUploadResponse:
5159 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
5160 CommentThreadResponse:
5169 $ref: '#/components/schemas/VideoComment'
5170 CommentThreadPostResponse:
5173 $ref: '#/components/schemas/VideoComment'
5183 $ref: '#/components/schemas/Video'
5191 description: The user username
5197 description: The user email
5200 description: Auth plugin to use to authenticate the user
5203 description: Theme enabled by this user
5206 description: Has the user confirmed their email address?
5208 $ref: '#/components/schemas/NSFWPolicy'
5211 description: Enable P2P in the player
5214 description: Automatically start playing the video on the watch page
5216 $ref: '#/components/schemas/UserRole'
5225 description: The user video quota
5228 description: The user daily video quota
5233 abusesAcceptedCount:
5239 noInstanceConfigWarningModal:
5250 $ref: '#/components/schemas/Account'
5254 $ref: '#/components/schemas/VideoChannel'
5259 description: The user username
5265 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5271 description: The user email
5274 description: The user video quota
5277 description: The user daily video quota
5280 description: The user default channel username
5282 $ref: '#/components/schemas/UserRole'
5284 $ref: '#/components/schemas/UserAdminFlags'
5296 description: The user id
5300 description: The updated email of the user
5303 description: Set the email as verified
5306 description: The updated video quota of the user
5309 description: The updated daily video quota of the user
5313 description: The auth plugin to use to authenticate the user
5314 example: 'peertube-plugin-auth-saml2'
5316 $ref: '#/components/schemas/UserRole'
5318 $ref: '#/components/schemas/UserAdminFlags'
5326 description: Your new password
5332 description: Your new email
5335 description: Your new displayNSFW
5342 description: Your new autoPlayVideo
5352 description: Id of the video
5355 description: Rating of the video
5362 $ref: '#/components/schemas/Video'
5365 description: 'Rating of the video'
5373 description: The username of the user
5376 pattern: '/^[a-z0-9._]{1,50}$/'
5380 description: The password of the user
5386 description: The email of the user
5389 description: The user display name
5397 description: The username for the default channel
5398 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5401 description: The display name for the default channel
5421 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5422 example: Please support my work on <insert crowdfunding plateform>! <3
5427 - $ref: '#/components/schemas/VideoChannelCommon'
5438 - $ref: '#/components/schemas/VideoChannelCommon'
5440 bulkVideosSupportUpdate:
5442 description: 'Update the support field for all videos of this channel'
5447 name: 'media:peerLink'
5456 - application/x-bittorrent
5462 name: 'media:content'
5493 VideoCommentsForXML:
5528 description: video watch page URL
5531 description: video canonical URL
5535 description: video publication date
5538 description: video description
5541 description: video description
5544 description: publisher user name
5547 description: video category (MRSS)
5550 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5565 description: video embed path, relative to the canonical URL domain (MRSS)
5574 description: video watch path, relative to the canonical URL domain (MRSS)
5595 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5596 'media:description':
5603 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5606 description: main streamable file for the video
5616 - application/x-bittorrent
5625 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)
5628 - $ref: '#/components/schemas/MRSSPeerLink'
5629 - $ref: '#/components/schemas/MRSSGroupContent'
5630 NotificationSettingValue:
5651 Notification type, following the `UserNotificationType` enum:
5653 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5655 - `2` NEW_COMMENT_ON_MY_VIDEO
5657 - `3` NEW_ABUSE_FOR_MODERATORS
5659 - `4` BLACKLIST_ON_MY_VIDEO
5661 - `5` UNBLACKLIST_ON_MY_VIDEO
5663 - `6` MY_VIDEO_PUBLISHED
5665 - `7` MY_VIDEO_IMPORT_SUCCESS
5667 - `8` MY_VIDEO_IMPORT_ERROR
5669 - `9` NEW_USER_REGISTRATION
5673 - `11` COMMENT_MENTION
5675 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5677 - `13` NEW_INSTANCE_FOLLOWER
5679 - `14` AUTO_INSTANCE_FOLLOWING
5685 - $ref: '#/components/schemas/VideoInfo'
5689 $ref: '#/components/schemas/ActorInfo'
5698 $ref: '#/components/schemas/VideoInfo'
5719 $ref: '#/components/schemas/VideoInfo'
5721 $ref: '#/components/schemas/ActorInfo'
5730 - $ref: '#/components/schemas/VideoInfo'
5739 - $ref: '#/components/schemas/VideoInfo'
5743 - $ref: '#/components/schemas/ActorInfo'
5751 $ref: '#/components/schemas/ActorInfo'
5779 NotificationListResponse:
5788 $ref: '#/components/schemas/Notification'
5793 example: peertube-plugin-auth-ldap
5821 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5824 additionalProperties: true
5840 $ref: '#/components/schemas/Plugin'
5847 description: User can stream multiple times in a permanent live
5856 description: RTMP stream key to use to stream into this live video
5860 description: User can stream multiple times in a permanent live
5867 'https://search.example.org/api/v1/search/videos':
5869 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5872 description: successful operation
5876 $ref: '#/components/schemas/VideoListResponse'