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
1230 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1239 description: Enable or disable comments for this video
1241 originallyPublishedAt:
1242 description: Date when the content was originally published
1246 $ref: '#/components/schemas/VideoScheduledUpdate'
1249 contentType: image/jpeg
1251 contentType: image/jpeg
1253 summary: Get a video
1257 - $ref: '#/components/parameters/idOrUUID'
1260 description: successful operation
1264 $ref: '#/components/schemas/VideoDetails'
1266 summary: Delete a video
1272 - $ref: '#/components/parameters/idOrUUID'
1275 description: successful operation
1276 '/videos/{id}/description':
1278 summary: Get complete video description
1282 - $ref: '#/components/parameters/idOrUUID'
1285 description: successful operation
1290 '/videos/{id}/views':
1292 summary: Add a view to a video
1296 - $ref: '#/components/parameters/idOrUUID'
1299 description: successful operation
1300 '/videos/{id}/watching':
1302 summary: Set watching progress of a video
1308 - $ref: '#/components/parameters/idOrUUID'
1313 $ref: '#/components/schemas/UserWatchingVideo'
1317 description: successful operation
1320 summary: Upload a video
1327 description: successful operation
1331 $ref: '#/components/schemas/VideoUploadResponse'
1333 description: invalid file field, schedule date or parameter
1335 description: video didn't pass upload filter
1337 description: upload has timed out
1339 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1341 X-File-Maximum-Size:
1345 description: Maximum file size for the video
1347 description: video type unsupported
1349 description: video unreadable
1352 multipart/form-data:
1357 description: Video file
1361 description: Channel id that will contain this video
1364 description: Video thumbnail file
1368 description: Video preview file
1372 $ref: '#/components/schemas/VideoPrivacySet'
1374 description: Video category
1378 description: Video licence
1382 description: Video language
1385 description: Video description
1388 description: Whether or not we wait transcoding before publish the video
1391 description: A text tell the audience how to support the video creator
1392 example: Please support my work on <insert crowdfunding plateform>! <3
1395 description: Whether or not this video contains sensitive content
1398 description: Video name
1401 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1411 description: Enable or disable comments for this video
1414 description: Enable or disable downloading for this video
1416 originallyPublishedAt:
1417 description: Date when the content was originally published
1421 $ref: '#/components/schemas/VideoScheduledUpdate'
1428 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1430 contentType: image/jpeg
1432 contentType: image/jpeg
1437 USERNAME="<your_username>"
1438 PASSWORD="<your_password>"
1439 FILE_PATH="<your_file_path>"
1440 CHANNEL_ID="<your_channel_id>"
1443 API_PATH="https://peertube2.cpy.re/api/v1"
1445 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1446 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1447 token=$(curl -s "$API_PATH/users/token" \
1448 --data client_id="$client_id" \
1449 --data client_secret="$client_secret" \
1450 --data grant_type=password \
1451 --data response_type=code \
1452 --data username="$USERNAME" \
1453 --data password="$PASSWORD" \
1454 | jq -r ".access_token")
1456 curl -s "$API_PATH/videos/upload" \
1457 -H "Authorization: Bearer $token" \
1459 --form videofile=@"$FILE_PATH" \
1460 --form channelId=$CHANNEL_ID \
1464 summary: Import a video
1465 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1472 multipart/form-data:
1477 description: Torrent File
1481 description: HTTP target URL
1484 description: Magnet URI
1487 description: Channel id that will contain this video
1490 description: Video thumbnail file
1494 description: Video preview file
1498 $ref: '#/components/schemas/VideoPrivacySet'
1500 description: Video category
1504 description: Video licence
1508 description: Video language
1511 description: Video description
1514 description: Whether or not we wait transcoding before publish the video
1517 description: A text tell the audience how to support the video creator
1518 example: Please support my work on <insert crowdfunding plateform>! <3
1521 description: Whether or not this video contains sensitive content
1524 description: Video name
1527 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1536 description: Enable or disable comments for this video
1539 description: Enable or disable downloading for this video
1542 $ref: '#/components/schemas/VideoScheduledUpdate'
1548 contentType: application/x-bittorrent
1550 contentType: image/jpeg
1552 contentType: image/jpeg
1555 description: successful operation
1559 $ref: '#/components/schemas/VideoUploadResponse'
1561 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1563 description: video didn't pass pre-import filter
1565 description: HTTP or Torrent/magnetURI import not enabled
1569 summary: Create a live
1577 description: successful operation
1581 $ref: '#/components/schemas/VideoUploadResponse'
1583 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1586 multipart/form-data:
1591 description: Channel id that will contain this live video
1596 description: User can stream multiple times in a permanent live
1599 description: Live video/replay thumbnail file
1603 description: Live video/replay preview file
1607 $ref: '#/components/schemas/VideoPrivacySet'
1609 description: Live video/replay category
1612 description: Live video/replay licence
1615 description: Live video/replay language
1618 description: Live video/replay description
1621 description: A text tell the audience how to support the creator
1622 example: Please support my work on <insert crowdfunding plateform>! <3
1625 description: Whether or not this live video/replay contains sensitive content
1628 description: Live video/replay name
1631 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1640 description: Enable or disable comments for this live video/replay
1643 description: Enable or disable downloading for the replay of this live
1650 contentType: image/jpeg
1652 contentType: image/jpeg
1656 summary: Get a live information
1663 - $ref: '#/components/parameters/idOrUUID'
1666 description: successful operation
1670 $ref: '#/components/schemas/LiveVideoResponse'
1672 summary: Update a live information
1679 - $ref: '#/components/parameters/idOrUUID'
1684 $ref: '#/components/schemas/LiveVideoUpdate'
1687 description: Successful operation
1689 description: Bad parameters or trying to update a live that has already started
1691 description: Trying to save replay of the live but saving replay is not enabled on the instance
1695 summary: List my abuses
1704 description: only list the report with this id
1710 $ref: '#/components/schemas/AbuseStateSet'
1711 - $ref: '#/components/parameters/start'
1712 - $ref: '#/components/parameters/count'
1713 - $ref: '#/components/parameters/abusesSort'
1716 description: successful operation
1722 $ref: '#/components/schemas/Abuse'
1726 summary: List abuses
1736 description: only list the report with this id
1739 - name: predefinedReason
1741 description: predefined reason the listed reports should contain
1743 $ref: '#/components/schemas/PredefinedAbuseReasons'
1746 description: plain search that will match with video titles, reporter names and more
1752 $ref: '#/components/schemas/AbuseStateSet'
1753 - name: searchReporter
1755 description: only list reports of a specific reporter
1758 - name: searchReportee
1759 description: only list reports of a specific reportee
1765 description: only list reports of a specific video
1768 - name: searchVideoChannel
1770 description: only list reports of a specific video channel
1775 description: only list blacklisted or deleted videos
1783 description: only list account, comment or video reports
1790 - $ref: '#/components/parameters/start'
1791 - $ref: '#/components/parameters/count'
1792 - $ref: '#/components/parameters/abusesSort'
1795 description: successful operation
1801 $ref: '#/components/schemas/Abuse'
1804 summary: Report an abuse
1817 description: Reason why the user reports this video
1821 $ref: '#/components/schemas/PredefinedAbuseReasons'
1827 description: Video id to report
1831 description: Timestamp in the video that marks the beginning of the report
1835 description: Timestamp in the video that marks the ending of the report
1841 description: Comment id to report
1847 description: Account id to report
1853 description: successful operation
1855 description: incorrect request parameters
1856 '/abuses/{abuseId}':
1858 summary: Update an abuse
1866 - $ref: '#/components/parameters/abuseId'
1874 $ref: '#/components/schemas/AbuseStateSet'
1877 description: Update the report comment visible only to the moderation team
1880 description: successful operation
1882 description: abuse not found
1886 summary: Delete an abuse
1892 - $ref: '#/components/parameters/abuseId'
1895 description: successful operation
1897 description: block not found
1898 '/abuses/{abuseId}/messages':
1900 summary: List messages of an abuse
1906 - $ref: '#/components/parameters/abuseId'
1909 description: successful operation
1915 $ref: '#/components/schemas/AbuseMessage'
1918 summary: Add message to an abuse
1924 - $ref: '#/components/parameters/abuseId'
1933 description: Message to send
1939 description: successful operation
1941 description: incorrect request parameters
1942 '/abuses/{abuseId}/messages/{abuseMessageId}':
1944 summary: Delete an abuse message
1950 - $ref: '#/components/parameters/abuseId'
1951 - $ref: '#/components/parameters/abuseMessageId'
1954 description: successful operation
1956 '/videos/{id}/blacklist':
1958 summary: Block a video
1966 - $ref: '#/components/parameters/idOrUUID'
1969 description: successful operation
1971 summary: Unblock a video by its id
1979 - $ref: '#/components/parameters/idOrUUID'
1982 description: successful operation
1984 description: block not found
1989 summary: List video blocks
1998 list only blocks that match this type:
2002 - `2`: automatic block that needs review
2010 description: plain search that will match with video titles, and more
2013 - $ref: '#/components/parameters/start'
2014 - $ref: '#/components/parameters/count'
2015 - $ref: '#/components/parameters/blacklistsSort'
2018 description: successful operation
2030 $ref: '#/components/schemas/VideoBlacklist'
2031 /videos/{id}/captions:
2033 summary: List captions of a video
2037 - $ref: '#/components/parameters/idOrUUID'
2040 description: successful operation
2052 $ref: '#/components/schemas/VideoCaption'
2053 /videos/{id}/captions/{captionLanguage}:
2055 summary: Add or replace a video caption
2062 - $ref: '#/components/parameters/idOrUUID'
2063 - $ref: '#/components/parameters/captionLanguage'
2066 multipart/form-data:
2071 description: The file to upload.
2076 contentType: text/vtt, application/x-subrip, text/plain
2079 description: successful operation
2081 description: video or language not found
2083 summary: Delete a video caption
2090 - $ref: '#/components/parameters/idOrUUID'
2091 - $ref: '#/components/parameters/captionLanguage'
2094 description: successful operation
2096 description: video or language or caption for that language not found
2099 summary: List video channels
2103 - $ref: '#/components/parameters/start'
2104 - $ref: '#/components/parameters/count'
2105 - $ref: '#/components/parameters/sort'
2108 description: successful operation
2120 $ref: '#/components/schemas/VideoChannel'
2122 summary: Create a video channel
2129 description: successful operation
2134 $ref: '#/components/schemas/VideoChannelCreate'
2135 '/video-channels/{channelHandle}':
2137 summary: Get a video channel
2141 - $ref: '#/components/parameters/channelHandle'
2144 description: successful operation
2148 $ref: '#/components/schemas/VideoChannel'
2150 summary: Update a video channel
2156 - $ref: '#/components/parameters/channelHandle'
2159 description: successful operation
2164 $ref: '#/components/schemas/VideoChannelUpdate'
2166 summary: Delete a video channel
2172 - $ref: '#/components/parameters/channelHandle'
2175 description: successful operation
2176 '/video-channels/{channelHandle}/videos':
2178 summary: List videos of a video channel
2183 - $ref: '#/components/parameters/channelHandle'
2184 - $ref: '#/components/parameters/categoryOneOf'
2185 - $ref: '#/components/parameters/tagsOneOf'
2186 - $ref: '#/components/parameters/tagsAllOf'
2187 - $ref: '#/components/parameters/licenceOneOf'
2188 - $ref: '#/components/parameters/languageOneOf'
2189 - $ref: '#/components/parameters/nsfw'
2190 - $ref: '#/components/parameters/filter'
2191 - $ref: '#/components/parameters/skipCount'
2192 - $ref: '#/components/parameters/start'
2193 - $ref: '#/components/parameters/count'
2194 - $ref: '#/components/parameters/videosSort'
2197 description: successful operation
2201 $ref: '#/components/schemas/VideoListResponse'
2202 '/video-channels/{channelHandle}/avatar/pick':
2204 summary: Update channel avatar
2210 - $ref: '#/components/parameters/channelHandle'
2213 description: successful operation
2220 $ref: '#/components/schemas/ActorImage'
2222 description: image file too large
2224 X-File-Maximum-Size:
2228 description: Maximum file size for the avatar
2231 multipart/form-data:
2236 description: The file to upload.
2241 contentType: image/png, image/jpeg
2242 '/video-channels/{channelHandle}/avatar':
2244 summary: Delete channel avatar
2250 - $ref: '#/components/parameters/channelHandle'
2253 description: successful operation
2256 '/video-channels/{channelHandle}/banner/pick':
2258 summary: Update channel banner
2264 - $ref: '#/components/parameters/channelHandle'
2267 description: successful operation
2274 $ref: '#/components/schemas/ActorImage'
2276 description: image file too large
2278 X-File-Maximum-Size:
2282 description: Maximum file size for the banner
2285 multipart/form-data:
2290 description: The file to upload.
2295 contentType: image/png, image/jpeg
2296 '/video-channels/{channelHandle}/banner':
2298 summary: Delete channel banner
2304 - $ref: '#/components/parameters/channelHandle'
2307 description: successful operation
2309 /video-playlists/privacies:
2311 summary: List available playlist privacies
2316 description: successful operation
2325 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2329 summary: List video playlists
2333 - $ref: '#/components/parameters/start'
2334 - $ref: '#/components/parameters/count'
2335 - $ref: '#/components/parameters/sort'
2338 description: successful operation
2350 $ref: '#/components/schemas/VideoPlaylist'
2352 summary: Create a video playlist
2353 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2360 description: successful operation
2375 multipart/form-data:
2380 description: Video playlist display name
2383 description: Video playlist thumbnail file
2387 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2389 description: Video playlist description
2392 description: Video channel in which the playlist will be published
2398 contentType: image/jpeg
2400 /video-playlists/{id}:
2402 summary: Get a video playlist
2406 - $ref: '#/components/parameters/idOrUUID'
2409 description: successful operation
2413 $ref: '#/components/schemas/VideoPlaylist'
2415 summary: Update a video playlist
2416 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2423 description: successful operation
2425 - $ref: '#/components/parameters/idOrUUID'
2428 multipart/form-data:
2433 description: Video playlist display name
2436 description: Video playlist thumbnail file
2440 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2442 description: Video playlist description
2445 description: Video channel in which the playlist will be published
2449 contentType: image/jpeg
2451 summary: Delete a video playlist
2457 - $ref: '#/components/parameters/idOrUUID'
2460 description: successful operation
2462 /video-playlists/{id}/videos:
2464 summary: 'List videos of a playlist'
2469 - $ref: '#/components/parameters/idOrUUID'
2472 description: successful operation
2476 $ref: '#/components/schemas/VideoListResponse'
2478 summary: 'Add a video in a playlist'
2485 - $ref: '#/components/parameters/idOrUUID'
2488 description: successful operation
2494 videoPlaylistElement:
2507 description: 'Video to add in the playlist'
2510 description: 'Start the video at this specific timestamp (in seconds)'
2513 description: 'Stop the video at this specific timestamp (in seconds)'
2517 /video-playlists/{id}/videos/reorder:
2519 summary: 'Reorder a playlist'
2525 - $ref: '#/components/parameters/idOrUUID'
2528 description: successful operation
2537 description: 'Start position of the element to reorder'
2539 insertAfterPosition:
2541 description: 'New position for the block to reorder, to add the block before the first element'
2545 description: 'How many element from `startPosition` to reorder'
2549 - insertAfterPosition
2551 /video-playlists/{id}/videos/{playlistElementId}:
2553 summary: 'Update a playlist element'
2559 - $ref: '#/components/parameters/idOrUUID'
2560 - $ref: '#/components/parameters/playlistElementId'
2563 description: successful operation
2572 description: 'Start the video at this specific timestamp (in seconds)'
2575 description: 'Stop the video at this specific timestamp (in seconds)'
2577 summary: 'Delete an element from a playlist'
2583 - $ref: '#/components/parameters/idOrUUID'
2584 - $ref: '#/components/parameters/playlistElementId'
2587 description: successful operation
2589 '/users/me/video-playlists/videos-exist':
2591 summary: 'Check video exists in my playlists'
2600 description: The video ids to check
2607 description: successful operation
2627 '/accounts/{name}/video-channels':
2629 summary: List video channels of an account
2634 - $ref: '#/components/parameters/name'
2637 description: include view statistics for the last 30 days (only if authentified as the account user)
2640 - $ref: '#/components/parameters/start'
2641 - $ref: '#/components/parameters/count'
2642 - $ref: '#/components/parameters/sort'
2645 description: successful operation
2656 $ref: '#/components/schemas/VideoChannel'
2657 '/accounts/{name}/ratings':
2659 summary: List ratings of an account
2665 - $ref: '#/components/parameters/name'
2666 - $ref: '#/components/parameters/start'
2667 - $ref: '#/components/parameters/count'
2668 - $ref: '#/components/parameters/sort'
2672 description: Optionally filter which ratings to retrieve
2680 description: successful operation
2686 $ref: '#/components/schemas/VideoRating'
2687 '/videos/{id}/comment-threads':
2689 summary: List threads of a video
2693 - $ref: '#/components/parameters/idOrUUID'
2694 - $ref: '#/components/parameters/start'
2695 - $ref: '#/components/parameters/count'
2696 - $ref: '#/components/parameters/commentsSort'
2699 description: successful operation
2703 $ref: '#/components/schemas/CommentThreadResponse'
2705 summary: Create a thread
2711 - $ref: '#/components/parameters/idOrUUID'
2714 description: successful operation
2718 $ref: '#/components/schemas/CommentThreadPostResponse'
2720 description: video does not exist
2729 description: 'Text comment'
2733 '/videos/{id}/comment-threads/{threadId}':
2735 summary: Get a thread
2739 - $ref: '#/components/parameters/idOrUUID'
2740 - $ref: '#/components/parameters/threadId'
2743 description: successful operation
2747 $ref: '#/components/schemas/VideoCommentThreadTree'
2748 '/videos/{id}/comments/{commentId}':
2750 summary: Reply to a thread of a video
2756 - $ref: '#/components/parameters/idOrUUID'
2757 - $ref: '#/components/parameters/commentId'
2760 description: successful operation
2764 $ref: '#/components/schemas/CommentThreadPostResponse'
2766 description: thread or video does not exist
2775 description: 'Text comment'
2780 summary: Delete a comment or a reply
2786 - $ref: '#/components/parameters/idOrUUID'
2787 - $ref: '#/components/parameters/commentId'
2790 description: successful operation
2792 description: cannot remove comment of another user
2794 description: comment or video does not exist
2796 description: comment is already deleted
2797 '/videos/{id}/rate':
2799 summary: Like/dislike a video
2805 - $ref: '#/components/parameters/idOrUUID'
2808 description: successful operation
2810 description: video does not exist
2815 summary: Search videos
2820 allowEmptyValue: false
2822 String to search. If the user can make a remote URI search, and the string is an URI then the
2823 PeerTube instance will fetch the remote object and add it to its database. Then,
2824 you can use the REST API to fetch the complete video information and interact with it.
2827 - $ref: '#/components/parameters/categoryOneOf'
2828 - $ref: '#/components/parameters/tagsOneOf'
2829 - $ref: '#/components/parameters/tagsAllOf'
2830 - $ref: '#/components/parameters/licenceOneOf'
2831 - $ref: '#/components/parameters/languageOneOf'
2832 - $ref: '#/components/parameters/nsfw'
2833 - $ref: '#/components/parameters/filter'
2834 - $ref: '#/components/parameters/skipCount'
2835 - $ref: '#/components/parameters/start'
2836 - $ref: '#/components/parameters/count'
2837 - $ref: '#/components/parameters/searchTarget'
2838 - $ref: '#/components/parameters/videosSearchSort'
2841 description: Get videos that are published after this date
2847 description: Get videos that are published before this date
2851 - name: originallyPublishedStartDate
2853 description: Get videos that are originally published after this date
2857 - name: originallyPublishedEndDate
2859 description: Get videos that are originally published before this date
2865 description: Get videos that have this minimum duration
2870 description: Get videos that have this maximum duration
2874 'searchTarget === search-index':
2875 $ref: '#/components/callbacks/searchIndex'
2878 description: successful operation
2882 $ref: '#/components/schemas/VideoListResponse'
2884 description: search index unavailable
2885 /search/video-channels:
2889 summary: Search channels
2895 String to search. If the user can make a remote URI search, and the string is an URI then the
2896 PeerTube instance will fetch the remote object and add it to its database. Then,
2897 you can use the REST API to fetch the complete channel information and interact with it.
2900 - $ref: '#/components/parameters/start'
2901 - $ref: '#/components/parameters/count'
2902 - $ref: '#/components/parameters/searchTarget'
2903 - $ref: '#/components/parameters/sort'
2905 'searchTarget === search-index':
2906 $ref: '#/components/callbacks/searchIndex'
2909 description: successful operation
2915 $ref: '#/components/schemas/VideoChannel'
2917 description: search index unavailable
2918 /blocklist/accounts:
2922 summary: List account blocks
2927 - $ref: '#/components/parameters/start'
2928 - $ref: '#/components/parameters/count'
2929 - $ref: '#/components/parameters/sort'
2932 description: successful operation
2936 summary: Block an account
2948 example: chocobozzz@example.org
2949 description: account to block, in the form `username@domain`
2954 description: successful operation
2956 description: self-blocking forbidden
2957 '/blocklist/accounts/{accountName}':
2961 summary: Unblock an account by its handle
2969 description: account to unblock, in the form `username@domain`
2974 description: successful operation
2976 description: account or account block does not exist
2981 summary: List server blocks
2986 - $ref: '#/components/parameters/start'
2987 - $ref: '#/components/parameters/count'
2988 - $ref: '#/components/parameters/sort'
2991 description: successful operation
2995 summary: Block a server
3008 description: server domain to block
3013 description: successful operation
3015 description: self-blocking forbidden
3016 '/blocklist/servers/{host}':
3020 summary: Unblock a server by its domain
3028 description: server domain to unblock
3034 description: successful operation
3036 description: account block does not exist
3040 - Instance Redundancy
3041 summary: Update a server redundancy policy
3049 description: server domain to mirror
3061 description: allow mirroring of the host's local videos
3066 description: successful operation
3068 description: server is not already known
3073 summary: List videos being mirrored
3081 description: direction of the mirror
3087 - $ref: '#/components/parameters/start'
3088 - $ref: '#/components/parameters/count'
3089 - $ref: '#/components/parameters/videoRedundanciesSort'
3092 description: successful operation
3098 $ref: '#/components/schemas/VideoRedundancy'
3102 summary: Mirror a video
3118 description: successful operation
3120 description: cannot mirror a local video
3122 description: video does not exist
3124 description: video is already mirrored
3125 /redundancy/videos/{redundancyId}:
3129 summary: Delete a mirror done on a video
3134 - name: redundancyId
3137 description: id of an existing redundancy on a video
3142 description: successful operation
3144 description: video redundancy not found
3145 '/feeds/video-comments.{format}':
3149 summary: List comments on videos
3151 - url: 'https://peertube2.cpy.re'
3152 description: Live Test Server (live data - latest nightly version)
3153 - url: 'https://peertube3.cpy.re'
3154 description: Live Test Server (live data - latest RC version)
3155 - url: 'https://peertube.cpy.re'
3156 description: Live Test Server (live data - stable version)
3161 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3174 description: 'limit listing to a specific video'
3179 description: 'limit listing to a specific account'
3184 description: 'limit listing to a specific account'
3187 - name: videoChannelId
3189 description: 'limit listing to a specific video channel'
3192 - name: videoChannelName
3194 description: 'limit listing to a specific video channel'
3199 description: successful operation
3204 default: 'max-age=900' # 15 min cache
3208 $ref: '#/components/schemas/VideoCommentsForXML'
3209 application/rss+xml:
3211 $ref: '#/components/schemas/VideoCommentsForXML'
3214 $ref: '#/components/schemas/VideoCommentsForXML'
3215 application/atom+xml:
3217 $ref: '#/components/schemas/VideoCommentsForXML'
3222 x-summary: field inconsistencies
3225 - videoId filter is mixed with a channel filter
3227 description: video, video channel or account not found
3229 description: accept header unsupported
3230 '/feeds/videos.{format}':
3234 summary: List videos
3236 - url: 'https://peertube2.cpy.re'
3237 description: Live Test Server (live data - latest nightly version)
3238 - url: 'https://peertube3.cpy.re'
3239 description: Live Test Server (live data - latest RC version)
3240 - url: 'https://peertube.cpy.re'
3241 description: Live Test Server (live data - stable version)
3246 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3259 description: 'limit listing to a specific account'
3264 description: 'limit listing to a specific account'
3267 - name: videoChannelId
3269 description: 'limit listing to a specific video channel'
3272 - name: videoChannelName
3274 description: 'limit listing to a specific video channel'
3277 - $ref: '#/components/parameters/sort'
3278 - $ref: '#/components/parameters/nsfw'
3279 - $ref: '#/components/parameters/filter'
3282 description: successful operation
3287 default: 'max-age=900' # 15 min cache
3291 $ref: '#/components/schemas/VideosForXML'
3294 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3295 application/rss+xml:
3297 $ref: '#/components/schemas/VideosForXML'
3300 $ref: '#/components/schemas/VideosForXML'
3301 application/atom+xml:
3303 $ref: '#/components/schemas/VideosForXML'
3308 description: video channel or account not found
3310 description: accept header unsupported
3315 summary: List plugins
3328 - $ref: '#/components/parameters/start'
3329 - $ref: '#/components/parameters/count'
3330 - $ref: '#/components/parameters/sort'
3333 description: successful operation
3337 $ref: '#/components/schemas/PluginResponse'
3342 summary: List available plugins
3355 - name: currentPeerTubeEngine
3359 - $ref: '#/components/parameters/start'
3360 - $ref: '#/components/parameters/count'
3361 - $ref: '#/components/parameters/sort'
3364 description: successful operation
3368 $ref: '#/components/schemas/PluginResponse'
3370 description: plugin index unavailable
3375 summary: Install a plugin
3388 example: peertube-plugin-auth-ldap
3391 additionalProperties: false
3398 additionalProperties: false
3401 description: successful operation
3403 description: should have either `npmName` or `path` set
3408 summary: Update a plugin
3421 example: peertube-plugin-auth-ldap
3424 additionalProperties: false
3431 additionalProperties: false
3434 description: successful operation
3436 description: should have either `npmName` or `path` set
3438 description: existing plugin not found
3443 summary: Uninstall a plugin
3455 description: name of the plugin/theme in its package.json
3456 example: peertube-plugin-auth-ldap
3461 description: successful operation
3463 description: existing plugin not found
3468 summary: Get a plugin
3473 - $ref: '#/components/parameters/npmName'
3476 description: successful operation
3480 $ref: '#/components/schemas/Plugin'
3482 description: plugin not found
3483 /plugins/{npmName}/settings:
3487 summary: Set a plugin's settings
3492 - $ref: '#/components/parameters/npmName'
3501 additionalProperties: true
3504 description: successful operation
3506 description: plugin not found
3507 /plugins/{npmName}/public-settings:
3511 summary: Get a plugin's public settings
3513 - $ref: '#/components/parameters/npmName'
3516 description: successful operation
3521 additionalProperties: true
3523 description: plugin not found
3524 /plugins/{npmName}/registered-settings:
3528 summary: Get a plugin's registered settings
3533 - $ref: '#/components/parameters/npmName'
3536 description: successful operation
3541 additionalProperties: true
3543 description: plugin not found
3545 - url: 'https://peertube2.cpy.re/api/v1'
3546 description: Live Test Server (live data - latest nightly version)
3547 - url: 'https://peertube3.cpy.re/api/v1'
3548 description: Live Test Server (live data - latest RC version)
3549 - url: 'https://peertube.cpy.re/api/v1'
3550 description: Live Test Server (live data - stable version)
3557 description: Offset used to paginate results
3565 description: "Number of items to return"
3575 description: Sort column
3583 description: Plain text search, applied to various parts of the model depending on endpoint
3591 If the administrator enabled search index support, you can override the default search target.
3594 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3595 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3596 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3597 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3598 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3599 * 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
3600 the data from the origin instance API
3610 description: Sort videos by criteria
3626 description: Sort videos by criteria
3641 description: Sort comments by criteria
3651 description: Sort blacklists by criteria
3667 description: Plain text search that will match with user usernames or emails
3674 description: Filter results down to (un)banned users
3681 description: Sort users by criteria
3692 description: Sort abuses by criteria
3699 videoRedundanciesSort:
3703 description: Sort abuses by criteria
3712 description: The username or handle of the account
3715 example: chocobozzz | chocobozzz@example.org
3720 description: The user id
3729 description: The object id or uuid
3737 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3739 name: playlistElementId
3742 description: Playlist element id
3749 description: Abuse id
3753 name: abuseMessageId
3756 description: Abuse message id
3760 name: captionLanguage
3763 description: The caption language
3770 description: The video channel handle
3773 example: my_username | my_username@example.com
3775 name: subscriptionHandle
3778 description: The subscription handle
3781 example: my_username | my_username@example.com
3786 description: The thread id (root comment id)
3793 description: The comment id
3800 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3813 description: tag(s) of the video
3826 description: tag(s) of the video, where all should be present in the video
3839 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
3852 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3865 description: if you don't need the `total` in the response
3876 description: whether to include nsfw videos, if any
3887 Special filters which might require special rights:
3888 * `local` - only videos local to the instance
3889 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3890 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
3900 description: list of uris to check if each is part of the user subscriptions
3910 description: name of the plugin/theme on npmjs.com or in its package.json
3913 example: peertube-plugin-auth-ldap
3918 description: job type
3922 - activitypub-follow
3923 - activitypub-http-broadcast
3924 - activitypub-http-fetcher
3925 - activitypub-http-unicast
3931 - activitypub-refresher
3937 In the header: *Authorization: Bearer <token\>*
3940 Authenticating via OAuth requires the following steps:
3943 - Have an account with sufficient authorization levels
3945 - [Generate](https://docs.joinpeertube.org/api-rest-getting-started) a
3948 - Make Authenticated Requests
3952 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3955 moderator: Moderator scope
3958 VideoConstantNumber:
3964 VideoConstantString:
3971 VideoPlaylistPrivacySet:
3977 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3978 VideoPlaylistPrivacyConstant:
3981 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3985 VideoPlaylistTypeSet:
3990 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3991 VideoPlaylistTypeConstant:
3994 $ref: '#/components/schemas/VideoPlaylistTypeSet'
4005 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
4006 VideoPrivacyConstant:
4009 $ref: '#/components/schemas/VideoPrivacySet'
4026 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
4033 description: 'Admin flags for the user (None = `0`, Bypass video blacklist = `1`)'
4044 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
4054 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
4058 $ref: '#/components/schemas/AbuseStateSet'
4061 AbusePredefinedReasons:
4074 example: [spamOrMisleading]
4076 VideoResolutionConstant:
4080 description: 'Video resolution (240, 360, 720, 1080, 1440 or 2160)'
4085 VideoScheduledUpdate:
4088 $ref: '#/components/schemas/VideoPrivacySet'
4092 description: When to update the video
4112 - $ref: '#/components/schemas/ActorImage'
4113 VideoChannelSummary:
4130 - $ref: '#/components/schemas/ActorImage'
4142 - $ref: '#/components/schemas/Video'
4148 $ref: '#/components/schemas/VideoResolutionConstant'
4151 description: 'Video file size in bytes'
4154 description: Direct URL of the torrent file
4158 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
4162 description: Direct URL of the video
4166 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
4173 VideoStreamingPlaylists:
4181 description: 'Playlist type (HLS = `1`)'
4190 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)'
4192 $ref: '#/components/schemas/VideoFile'
4208 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4219 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4231 originallyPublishedAt:
4235 $ref: '#/components/schemas/VideoConstantNumber'
4237 $ref: '#/components/schemas/VideoConstantNumber'
4239 $ref: '#/components/schemas/VideoConstantString'
4241 $ref: '#/components/schemas/VideoPrivacyConstant'
4251 example: What is PeerTube?
4254 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4257 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4260 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4276 $ref: '#/components/schemas/VideoStateConstant'
4280 - $ref: '#/components/schemas/VideoScheduledUpdate'
4288 $ref: '#/components/schemas/AccountSummary'
4290 $ref: '#/components/schemas/VideoChannelSummary'
4299 - $ref: '#/components/schemas/Video'
4306 description: A text tell the audience how to support the video creator
4307 example: Please support my work on <insert crowdfunding plateform>! <3
4309 $ref: '#/components/schemas/VideoChannel'
4311 $ref: '#/components/schemas/Account'
4316 example: [flowers, gardening]
4319 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'
4321 $ref: '#/components/schemas/VideoFile'
4334 $ref: '#/components/schemas/VideoStreamingPlaylists'
4335 FileRedundancyInformation:
4372 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4379 $ref: '#/components/schemas/FileRedundancyInformation'
4383 $ref: '#/components/schemas/FileRedundancyInformation'
4384 VideoImportStateConstant:
4392 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4404 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4408 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
4412 $ref: '#/components/schemas/VideoImportStateConstant'
4422 $ref: '#/components/schemas/Video'
4430 example: The video is a spam
4432 $ref: '#/components/schemas/AbusePredefinedReasons'
4434 $ref: '#/components/schemas/Account'
4436 $ref: '#/components/schemas/AbuseStateConstant'
4439 example: Decided to ban the server since it spams us regularly
4450 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4466 $ref: '#/components/schemas/AccountSummary'
4484 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4513 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4529 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4539 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4541 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4543 $ref: '#/components/schemas/AccountSummary'
4545 $ref: '#/components/schemas/VideoChannelSummary'
4567 totalRepliesFromVideoAuthor:
4572 $ref: '#/components/schemas/Account'
4573 VideoCommentThreadTree:
4576 $ref: '#/components/schemas/VideoComment'
4580 $ref: '#/components/schemas/VideoCommentThreadTree'
4584 $ref: '#/components/schemas/VideoConstantString'
4639 $ref: '#/components/schemas/ActorImage'
4642 - $ref: '#/components/schemas/Actor'
4655 description: timestamp within the video, in seconds
4722 allowedForCurrentIP:
4724 requiresEmailVerification:
4928 requiresEmailVerification:
4953 allowAdditionalExtensions:
5023 $ref: '#/components/schemas/Actor'
5025 $ref: '#/components/schemas/Actor'
5028 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
5041 PredefinedAbuseReasons:
5042 description: Reason categories that help triage reports
5073 - activitypub-http-unicast
5074 - activitypub-http-broadcast
5075 - activitypub-http-fetcher
5076 - activitypub-follow
5082 - activitypub-refresher
5086 additionalProperties: true
5089 additionalProperties: true
5113 VideoUploadResponse:
5124 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
5125 CommentThreadResponse:
5134 $ref: '#/components/schemas/VideoComment'
5135 CommentThreadPostResponse:
5138 $ref: '#/components/schemas/VideoComment'
5148 $ref: '#/components/schemas/Video'
5156 description: The user username
5162 description: The user email
5165 description: Auth plugin to use to authenticate the user
5168 description: Theme enabled by this user
5171 description: Has the user confirmed their email address?
5173 $ref: '#/components/schemas/NSFWPolicy'
5176 description: Enable P2P in the player
5179 description: Automatically start playing the video on the watch page
5181 $ref: '#/components/schemas/UserRole'
5190 description: The user video quota
5193 description: The user daily video quota
5198 abusesAcceptedCount:
5204 noInstanceConfigWarningModal:
5215 $ref: '#/components/schemas/Account'
5219 $ref: '#/components/schemas/VideoChannel'
5224 description: The user username
5230 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5236 description: The user email
5239 description: The user video quota
5242 description: The user daily video quota
5245 description: The user default channel username
5247 $ref: '#/components/schemas/UserRole'
5249 $ref: '#/components/schemas/UserAdminFlags'
5261 description: The user id
5265 description: The updated email of the user
5268 description: Set the email as verified
5271 description: The updated video quota of the user
5274 description: The updated daily video quota of the user
5278 description: The auth plugin to use to authenticate the user
5279 example: 'peertube-plugin-auth-saml2'
5281 $ref: '#/components/schemas/UserRole'
5283 $ref: '#/components/schemas/UserAdminFlags'
5291 description: Your new password
5297 description: Your new email
5300 description: Your new displayNSFW
5307 description: Your new autoPlayVideo
5317 description: Id of the video
5320 description: Rating of the video
5327 $ref: '#/components/schemas/Video'
5330 description: 'Rating of the video'
5338 description: The username of the user
5341 pattern: '/^[a-z0-9._]{1,50}$/'
5345 description: The password of the user
5351 description: The email of the user
5354 description: The user display name
5362 description: The username for the default channel
5363 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5366 description: The display name for the default channel
5383 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5384 example: Please support my work on <insert crowdfunding plateform>! <3
5396 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5397 example: Please support my work on <insert crowdfunding plateform>! <3
5398 bulkVideosSupportUpdate:
5400 description: 'Update the support field for all videos of this channel'
5405 name: 'media:peerLink'
5414 - application/x-bittorrent
5420 name: 'media:content'
5451 VideoCommentsForXML:
5486 description: video watch page URL
5489 description: video canonical URL
5493 description: video publication date
5496 description: video description
5499 description: video description
5502 description: publisher user name
5505 description: video category (MRSS)
5508 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5523 description: video embed path, relative to the canonical URL domain (MRSS)
5532 description: video watch path, relative to the canonical URL domain (MRSS)
5553 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5554 'media:description':
5561 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5564 description: main streamable file for the video
5574 - application/x-bittorrent
5583 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)
5586 - $ref: '#/components/schemas/MRSSPeerLink'
5587 - $ref: '#/components/schemas/MRSSGroupContent'
5588 NotificationSettingValue:
5609 Notification type, following the `UserNotificationType` enum:
5611 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5613 - `2` NEW_COMMENT_ON_MY_VIDEO
5615 - `3` NEW_ABUSE_FOR_MODERATORS
5617 - `4` BLACKLIST_ON_MY_VIDEO
5619 - `5` UNBLACKLIST_ON_MY_VIDEO
5621 - `6` MY_VIDEO_PUBLISHED
5623 - `7` MY_VIDEO_IMPORT_SUCCESS
5625 - `8` MY_VIDEO_IMPORT_ERROR
5627 - `9` NEW_USER_REGISTRATION
5631 - `11` COMMENT_MENTION
5633 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5635 - `13` NEW_INSTANCE_FOLLOWER
5637 - `14` AUTO_INSTANCE_FOLLOWING
5643 - $ref: '#/components/schemas/VideoInfo'
5647 $ref: '#/components/schemas/ActorInfo'
5656 $ref: '#/components/schemas/VideoInfo'
5677 $ref: '#/components/schemas/VideoInfo'
5679 $ref: '#/components/schemas/ActorInfo'
5688 - $ref: '#/components/schemas/VideoInfo'
5697 - $ref: '#/components/schemas/VideoInfo'
5701 - $ref: '#/components/schemas/ActorInfo'
5709 $ref: '#/components/schemas/ActorInfo'
5737 NotificationListResponse:
5746 $ref: '#/components/schemas/Notification'
5751 example: peertube-plugin-auth-ldap
5779 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5782 additionalProperties: true
5798 $ref: '#/components/schemas/Plugin'
5805 description: User can stream multiple times in a permanent live
5814 description: RTMP stream key to use to stream into this live video
5818 description: User can stream multiple times in a permanent live
5825 'https://search.example.org/api/v1/search/videos':
5827 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5830 description: successful operation
5834 $ref: '#/components/schemas/VideoListResponse'