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
2651 $ref: '#/components/schemas/VideoChannel'
2652 '/accounts/{name}/ratings':
2654 summary: List ratings of an account
2660 - $ref: '#/components/parameters/name'
2661 - $ref: '#/components/parameters/start'
2662 - $ref: '#/components/parameters/count'
2663 - $ref: '#/components/parameters/sort'
2667 description: Optionally filter which ratings to retrieve
2675 description: successful operation
2681 $ref: '#/components/schemas/VideoRating'
2682 '/videos/{id}/comment-threads':
2684 summary: List threads of a video
2688 - $ref: '#/components/parameters/idOrUUID'
2689 - $ref: '#/components/parameters/start'
2690 - $ref: '#/components/parameters/count'
2691 - $ref: '#/components/parameters/commentsSort'
2694 description: successful operation
2698 $ref: '#/components/schemas/CommentThreadResponse'
2700 summary: Create a thread
2706 - $ref: '#/components/parameters/idOrUUID'
2709 description: successful operation
2713 $ref: '#/components/schemas/CommentThreadPostResponse'
2715 description: video does not exist
2724 description: 'Text comment'
2728 '/videos/{id}/comment-threads/{threadId}':
2730 summary: Get a thread
2734 - $ref: '#/components/parameters/idOrUUID'
2735 - $ref: '#/components/parameters/threadId'
2738 description: successful operation
2742 $ref: '#/components/schemas/VideoCommentThreadTree'
2743 '/videos/{id}/comments/{commentId}':
2745 summary: Reply to a thread of a video
2751 - $ref: '#/components/parameters/idOrUUID'
2752 - $ref: '#/components/parameters/commentId'
2755 description: successful operation
2759 $ref: '#/components/schemas/CommentThreadPostResponse'
2761 description: thread or video does not exist
2770 description: 'Text comment'
2775 summary: Delete a comment or a reply
2781 - $ref: '#/components/parameters/idOrUUID'
2782 - $ref: '#/components/parameters/commentId'
2785 description: successful operation
2787 description: cannot remove comment of another user
2789 description: comment or video does not exist
2791 description: comment is already deleted
2792 '/videos/{id}/rate':
2794 summary: Like/dislike a video
2800 - $ref: '#/components/parameters/idOrUUID'
2803 description: successful operation
2805 description: video does not exist
2810 summary: Search videos
2815 allowEmptyValue: false
2817 String to search. If the user can make a remote URI search, and the string is an URI then the
2818 PeerTube instance will fetch the remote object and add it to its database. Then,
2819 you can use the REST API to fetch the complete video information and interact with it.
2822 - $ref: '#/components/parameters/categoryOneOf'
2823 - $ref: '#/components/parameters/tagsOneOf'
2824 - $ref: '#/components/parameters/tagsAllOf'
2825 - $ref: '#/components/parameters/licenceOneOf'
2826 - $ref: '#/components/parameters/languageOneOf'
2827 - $ref: '#/components/parameters/nsfw'
2828 - $ref: '#/components/parameters/filter'
2829 - $ref: '#/components/parameters/skipCount'
2830 - $ref: '#/components/parameters/start'
2831 - $ref: '#/components/parameters/count'
2832 - $ref: '#/components/parameters/searchTarget'
2833 - $ref: '#/components/parameters/videosSearchSort'
2836 description: Get videos that are published after this date
2842 description: Get videos that are published before this date
2846 - name: originallyPublishedStartDate
2848 description: Get videos that are originally published after this date
2852 - name: originallyPublishedEndDate
2854 description: Get videos that are originally published before this date
2860 description: Get videos that have this minimum duration
2865 description: Get videos that have this maximum duration
2869 'searchTarget === search-index':
2870 $ref: '#/components/callbacks/searchIndex'
2873 description: successful operation
2877 $ref: '#/components/schemas/VideoListResponse'
2879 description: search index unavailable
2880 /search/video-channels:
2884 summary: Search channels
2890 String to search. If the user can make a remote URI search, and the string is an URI then the
2891 PeerTube instance will fetch the remote object and add it to its database. Then,
2892 you can use the REST API to fetch the complete channel information and interact with it.
2895 - $ref: '#/components/parameters/start'
2896 - $ref: '#/components/parameters/count'
2897 - $ref: '#/components/parameters/searchTarget'
2898 - $ref: '#/components/parameters/sort'
2900 'searchTarget === search-index':
2901 $ref: '#/components/callbacks/searchIndex'
2904 description: successful operation
2910 $ref: '#/components/schemas/VideoChannel'
2912 description: search index unavailable
2913 /blocklist/accounts:
2917 summary: List account blocks
2922 - $ref: '#/components/parameters/start'
2923 - $ref: '#/components/parameters/count'
2924 - $ref: '#/components/parameters/sort'
2927 description: successful operation
2931 summary: Block an account
2943 example: chocobozzz@example.org
2944 description: account to block, in the form `username@domain`
2949 description: successful operation
2951 description: self-blocking forbidden
2952 '/blocklist/accounts/{accountName}':
2956 summary: Unblock an account by its handle
2964 description: account to unblock, in the form `username@domain`
2969 description: successful operation
2971 description: account or account block does not exist
2976 summary: List server blocks
2981 - $ref: '#/components/parameters/start'
2982 - $ref: '#/components/parameters/count'
2983 - $ref: '#/components/parameters/sort'
2986 description: successful operation
2990 summary: Block a server
3003 description: server domain to block
3008 description: successful operation
3010 description: self-blocking forbidden
3011 '/blocklist/servers/{host}':
3015 summary: Unblock a server by its domain
3023 description: server domain to unblock
3029 description: successful operation
3031 description: account block does not exist
3035 - Instance Redundancy
3036 summary: Update a server redundancy policy
3044 description: server domain to mirror
3056 description: allow mirroring of the host's local videos
3061 description: successful operation
3063 description: server is not already known
3068 summary: List videos being mirrored
3076 description: direction of the mirror
3082 - $ref: '#/components/parameters/start'
3083 - $ref: '#/components/parameters/count'
3084 - $ref: '#/components/parameters/videoRedundanciesSort'
3087 description: successful operation
3093 $ref: '#/components/schemas/VideoRedundancy'
3097 summary: Mirror a video
3113 description: successful operation
3115 description: cannot mirror a local video
3117 description: video does not exist
3119 description: video is already mirrored
3120 /redundancy/videos/{redundancyId}:
3124 summary: Delete a mirror done on a video
3129 - name: redundancyId
3132 description: id of an existing redundancy on a video
3137 description: successful operation
3139 description: video redundancy not found
3140 '/feeds/video-comments.{format}':
3144 summary: List comments on videos
3146 - url: 'https://peertube2.cpy.re'
3147 description: Live Test Server (live data - latest nightly version)
3148 - url: 'https://peertube3.cpy.re'
3149 description: Live Test Server (live data - latest RC version)
3150 - url: 'https://peertube.cpy.re'
3151 description: Live Test Server (live data - stable version)
3156 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3169 description: 'limit listing to a specific video'
3174 description: 'limit listing to a specific account'
3179 description: 'limit listing to a specific account'
3182 - name: videoChannelId
3184 description: 'limit listing to a specific video channel'
3187 - name: videoChannelName
3189 description: 'limit listing to a specific video channel'
3194 description: successful operation
3199 default: 'max-age=900' # 15 min cache
3203 $ref: '#/components/schemas/VideoCommentsForXML'
3204 application/rss+xml:
3206 $ref: '#/components/schemas/VideoCommentsForXML'
3209 $ref: '#/components/schemas/VideoCommentsForXML'
3210 application/atom+xml:
3212 $ref: '#/components/schemas/VideoCommentsForXML'
3217 x-summary: field inconsistencies
3220 - videoId filter is mixed with a channel filter
3222 description: video, video channel or account not found
3224 description: accept header unsupported
3225 '/feeds/videos.{format}':
3229 summary: List videos
3231 - url: 'https://peertube2.cpy.re'
3232 description: Live Test Server (live data - latest nightly version)
3233 - url: 'https://peertube3.cpy.re'
3234 description: Live Test Server (live data - latest RC version)
3235 - url: 'https://peertube.cpy.re'
3236 description: Live Test Server (live data - stable version)
3241 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3254 description: 'limit listing to a specific account'
3259 description: 'limit listing to a specific account'
3262 - name: videoChannelId
3264 description: 'limit listing to a specific video channel'
3267 - name: videoChannelName
3269 description: 'limit listing to a specific video channel'
3272 - $ref: '#/components/parameters/sort'
3273 - $ref: '#/components/parameters/nsfw'
3274 - $ref: '#/components/parameters/filter'
3277 description: successful operation
3282 default: 'max-age=900' # 15 min cache
3286 $ref: '#/components/schemas/VideosForXML'
3289 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3290 application/rss+xml:
3292 $ref: '#/components/schemas/VideosForXML'
3295 $ref: '#/components/schemas/VideosForXML'
3296 application/atom+xml:
3298 $ref: '#/components/schemas/VideosForXML'
3303 description: video channel or account not found
3305 description: accept header unsupported
3310 summary: List plugins
3323 - $ref: '#/components/parameters/start'
3324 - $ref: '#/components/parameters/count'
3325 - $ref: '#/components/parameters/sort'
3328 description: successful operation
3332 $ref: '#/components/schemas/PluginResponse'
3337 summary: List available plugins
3350 - name: currentPeerTubeEngine
3354 - $ref: '#/components/parameters/start'
3355 - $ref: '#/components/parameters/count'
3356 - $ref: '#/components/parameters/sort'
3359 description: successful operation
3363 $ref: '#/components/schemas/PluginResponse'
3365 description: plugin index unavailable
3370 summary: Install a plugin
3383 example: peertube-plugin-auth-ldap
3386 additionalProperties: false
3393 additionalProperties: false
3396 description: successful operation
3398 description: should have either `npmName` or `path` set
3403 summary: Update a plugin
3416 example: peertube-plugin-auth-ldap
3419 additionalProperties: false
3426 additionalProperties: false
3429 description: successful operation
3431 description: should have either `npmName` or `path` set
3433 description: existing plugin not found
3438 summary: Uninstall a plugin
3450 description: name of the plugin/theme in its package.json
3451 example: peertube-plugin-auth-ldap
3456 description: successful operation
3458 description: existing plugin not found
3463 summary: Get a plugin
3468 - $ref: '#/components/parameters/npmName'
3471 description: successful operation
3475 $ref: '#/components/schemas/Plugin'
3477 description: plugin not found
3478 /plugins/{npmName}/settings:
3482 summary: Set a plugin's settings
3487 - $ref: '#/components/parameters/npmName'
3496 additionalProperties: true
3499 description: successful operation
3501 description: plugin not found
3502 /plugins/{npmName}/public-settings:
3506 summary: Get a plugin's public settings
3508 - $ref: '#/components/parameters/npmName'
3511 description: successful operation
3516 additionalProperties: true
3518 description: plugin not found
3519 /plugins/{npmName}/registered-settings:
3523 summary: Get a plugin's registered settings
3528 - $ref: '#/components/parameters/npmName'
3531 description: successful operation
3536 additionalProperties: true
3538 description: plugin not found
3540 - url: 'https://peertube2.cpy.re/api/v1'
3541 description: Live Test Server (live data - latest nightly version)
3542 - url: 'https://peertube3.cpy.re/api/v1'
3543 description: Live Test Server (live data - latest RC version)
3544 - url: 'https://peertube.cpy.re/api/v1'
3545 description: Live Test Server (live data - stable version)
3552 description: Offset used to paginate results
3560 description: "Number of items to return"
3570 description: Sort column
3578 description: Plain text search, applied to various parts of the model depending on endpoint
3586 If the administrator enabled search index support, you can override the default search target.
3589 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3590 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3591 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3592 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3593 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3594 * 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
3595 the data from the origin instance API
3605 description: Sort videos by criteria
3621 description: Sort videos by criteria
3636 description: Sort comments by criteria
3646 description: Sort blacklists by criteria
3662 description: Plain text search that will match with user usernames or emails
3669 description: Filter results down to (un)banned users
3676 description: Sort users by criteria
3687 description: Sort abuses by criteria
3694 videoRedundanciesSort:
3698 description: Sort abuses by criteria
3707 description: The username or handle of the account
3710 example: chocobozzz | chocobozzz@example.org
3715 description: The user id
3724 description: The object id or uuid
3732 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3734 name: playlistElementId
3737 description: Playlist element id
3744 description: Abuse id
3748 name: abuseMessageId
3751 description: Abuse message id
3755 name: captionLanguage
3758 description: The caption language
3765 description: The video channel handle
3768 example: my_username | my_username@example.com
3770 name: subscriptionHandle
3773 description: The subscription handle
3776 example: my_username | my_username@example.com
3781 description: The thread id (root comment id)
3788 description: The comment id
3795 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3808 description: tag(s) of the video
3821 description: tag(s) of the video, where all should be present in the video
3834 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
3847 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3860 description: if you don't need the `total` in the response
3871 description: whether to include nsfw videos, if any
3882 Special filters which might require special rights:
3883 * `local` - only videos local to the instance
3884 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3885 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
3895 description: list of uris to check if each is part of the user subscriptions
3905 description: name of the plugin/theme on npmjs.com or in its package.json
3908 example: peertube-plugin-auth-ldap
3913 description: job type
3917 - activitypub-follow
3918 - activitypub-http-broadcast
3919 - activitypub-http-fetcher
3920 - activitypub-http-unicast
3926 - activitypub-refresher
3932 In the header: *Authorization: Bearer <token\>*
3935 Authenticating via OAuth requires the following steps:
3938 - Have an account with sufficient authorization levels
3940 - [Generate](https://docs.joinpeertube.org/api-rest-getting-started) a
3943 - Make Authenticated Requests
3947 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3950 moderator: Moderator scope
3953 VideoConstantNumber:
3959 VideoConstantString:
3966 VideoPlaylistPrivacySet:
3972 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3973 VideoPlaylistPrivacyConstant:
3976 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3980 VideoPlaylistTypeSet:
3985 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3986 VideoPlaylistTypeConstant:
3989 $ref: '#/components/schemas/VideoPlaylistTypeSet'
4000 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
4001 VideoPrivacyConstant:
4004 $ref: '#/components/schemas/VideoPrivacySet'
4021 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
4028 description: 'Admin flags for the user (None = `0`, Bypass video blacklist = `1`)'
4039 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
4049 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
4053 $ref: '#/components/schemas/AbuseStateSet'
4056 AbusePredefinedReasons:
4069 example: [spamOrMisleading]
4071 VideoResolutionConstant:
4075 description: 'Video resolution (240, 360, 720, 1080, 1440 or 2160)'
4080 VideoScheduledUpdate:
4083 $ref: '#/components/schemas/VideoPrivacySet'
4087 description: When to update the video
4107 - $ref: '#/components/schemas/ActorImage'
4108 VideoChannelSummary:
4125 - $ref: '#/components/schemas/ActorImage'
4137 - $ref: '#/components/schemas/Video'
4143 $ref: '#/components/schemas/VideoResolutionConstant'
4146 description: 'Video file size in bytes'
4164 VideoStreamingPlaylists:
4172 description: 'Playlist type (HLS = `1`)'
4181 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)'
4183 $ref: '#/components/schemas/VideoFile'
4199 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4210 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4222 originallyPublishedAt:
4226 $ref: '#/components/schemas/VideoConstantNumber'
4228 $ref: '#/components/schemas/VideoConstantNumber'
4230 $ref: '#/components/schemas/VideoConstantString'
4232 $ref: '#/components/schemas/VideoPrivacyConstant'
4242 example: What is PeerTube?
4245 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4248 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4251 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4267 $ref: '#/components/schemas/VideoStateConstant'
4271 - $ref: '#/components/schemas/VideoScheduledUpdate'
4279 $ref: '#/components/schemas/AccountSummary'
4281 $ref: '#/components/schemas/VideoChannelSummary'
4290 - $ref: '#/components/schemas/Video'
4297 description: A text tell the audience how to support the video creator
4298 example: Please support my work on <insert crowdfunding plateform>! <3
4300 $ref: '#/components/schemas/VideoChannel'
4302 $ref: '#/components/schemas/Account'
4307 example: [flowers, gardening]
4310 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'
4312 $ref: '#/components/schemas/VideoFile'
4325 $ref: '#/components/schemas/VideoStreamingPlaylists'
4326 FileRedundancyInformation:
4363 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4370 $ref: '#/components/schemas/FileRedundancyInformation'
4374 $ref: '#/components/schemas/FileRedundancyInformation'
4375 VideoImportStateConstant:
4383 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4395 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4399 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
4403 $ref: '#/components/schemas/VideoImportStateConstant'
4413 $ref: '#/components/schemas/Video'
4421 example: The video is a spam
4423 $ref: '#/components/schemas/AbusePredefinedReasons'
4425 $ref: '#/components/schemas/Account'
4427 $ref: '#/components/schemas/AbuseStateConstant'
4430 example: Decided to ban the server since it spams us regularly
4441 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4457 $ref: '#/components/schemas/AccountSummary'
4475 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4504 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4520 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4530 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4532 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4534 $ref: '#/components/schemas/AccountSummary'
4536 $ref: '#/components/schemas/VideoChannelSummary'
4558 totalRepliesFromVideoAuthor:
4563 $ref: '#/components/schemas/Account'
4564 VideoCommentThreadTree:
4567 $ref: '#/components/schemas/VideoComment'
4571 $ref: '#/components/schemas/VideoCommentThreadTree'
4575 $ref: '#/components/schemas/VideoConstantString'
4630 $ref: '#/components/schemas/ActorImage'
4633 - $ref: '#/components/schemas/Actor'
4646 description: timestamp within the video, in seconds
4713 allowedForCurrentIP:
4715 requiresEmailVerification:
4919 requiresEmailVerification:
4944 allowAdditionalExtensions:
5014 $ref: '#/components/schemas/Actor'
5016 $ref: '#/components/schemas/Actor'
5019 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
5032 PredefinedAbuseReasons:
5033 description: Reason categories that help triage reports
5064 - activitypub-http-unicast
5065 - activitypub-http-broadcast
5066 - activitypub-http-fetcher
5067 - activitypub-follow
5073 - activitypub-refresher
5077 additionalProperties: true
5080 additionalProperties: true
5104 VideoUploadResponse:
5115 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
5116 CommentThreadResponse:
5125 $ref: '#/components/schemas/VideoComment'
5126 CommentThreadPostResponse:
5129 $ref: '#/components/schemas/VideoComment'
5139 $ref: '#/components/schemas/Video'
5147 description: The user username
5153 description: The user email
5156 description: Auth plugin to use to authenticate the user
5159 description: Theme enabled by this user
5162 description: Has the user confirmed their email address?
5164 $ref: '#/components/schemas/NSFWPolicy'
5167 description: Enable P2P in the player
5170 description: Automatically start playing the video on the watch page
5172 $ref: '#/components/schemas/UserRole'
5181 description: The user video quota
5184 description: The user daily video quota
5189 abusesAcceptedCount:
5195 noInstanceConfigWarningModal:
5206 $ref: '#/components/schemas/Account'
5210 $ref: '#/components/schemas/VideoChannel'
5215 description: The user username
5221 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5227 description: The user email
5230 description: The user video quota
5233 description: The user daily video quota
5236 description: The user default channel username
5238 $ref: '#/components/schemas/UserRole'
5240 $ref: '#/components/schemas/UserAdminFlags'
5252 description: The user id
5256 description: The updated email of the user
5259 description: Set the email as verified
5262 description: The updated video quota of the user
5265 description: The updated daily video quota of the user
5269 description: The auth plugin to use to authenticate the user
5270 example: 'peertube-plugin-auth-saml2'
5272 $ref: '#/components/schemas/UserRole'
5274 $ref: '#/components/schemas/UserAdminFlags'
5282 description: Your new password
5288 description: Your new email
5291 description: Your new displayNSFW
5298 description: Your new autoPlayVideo
5308 description: Id of the video
5311 description: Rating of the video
5318 $ref: '#/components/schemas/Video'
5321 description: 'Rating of the video'
5329 description: The username of the user
5332 pattern: '/^[a-z0-9._]{1,50}$/'
5336 description: The password of the user
5342 description: The email of the user
5345 description: The user display name
5353 description: The username for the default channel
5354 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5357 description: The display name for the default channel
5374 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5375 example: Please support my work on <insert crowdfunding plateform>! <3
5387 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5388 example: Please support my work on <insert crowdfunding plateform>! <3
5389 bulkVideosSupportUpdate:
5391 description: 'Update the support field for all videos of this channel'
5396 name: 'media:peerLink'
5405 - application/x-bittorrent
5411 name: 'media:content'
5442 VideoCommentsForXML:
5477 description: video watch page URL
5480 description: video canonical URL
5484 description: video publication date
5487 description: video description
5490 description: video description
5493 description: publisher user name
5496 description: video category (MRSS)
5499 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5514 description: video embed path, relative to the canonical URL domain (MRSS)
5523 description: video watch path, relative to the canonical URL domain (MRSS)
5544 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5545 'media:description':
5552 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5555 description: main streamable file for the video
5565 - application/x-bittorrent
5574 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)
5577 - $ref: '#/components/schemas/MRSSPeerLink'
5578 - $ref: '#/components/schemas/MRSSGroupContent'
5579 NotificationSettingValue:
5600 Notification type, following the `UserNotificationType` enum:
5602 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5604 - `2` NEW_COMMENT_ON_MY_VIDEO
5606 - `3` NEW_ABUSE_FOR_MODERATORS
5608 - `4` BLACKLIST_ON_MY_VIDEO
5610 - `5` UNBLACKLIST_ON_MY_VIDEO
5612 - `6` MY_VIDEO_PUBLISHED
5614 - `7` MY_VIDEO_IMPORT_SUCCESS
5616 - `8` MY_VIDEO_IMPORT_ERROR
5618 - `9` NEW_USER_REGISTRATION
5622 - `11` COMMENT_MENTION
5624 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5626 - `13` NEW_INSTANCE_FOLLOWER
5628 - `14` AUTO_INSTANCE_FOLLOWING
5634 - $ref: '#/components/schemas/VideoInfo'
5638 $ref: '#/components/schemas/ActorInfo'
5647 $ref: '#/components/schemas/VideoInfo'
5668 $ref: '#/components/schemas/VideoInfo'
5670 $ref: '#/components/schemas/ActorInfo'
5679 - $ref: '#/components/schemas/VideoInfo'
5688 - $ref: '#/components/schemas/VideoInfo'
5692 - $ref: '#/components/schemas/ActorInfo'
5700 $ref: '#/components/schemas/ActorInfo'
5728 NotificationListResponse:
5737 $ref: '#/components/schemas/Notification'
5742 example: peertube-plugin-auth-ldap
5770 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5773 additionalProperties: true
5789 $ref: '#/components/schemas/Plugin'
5796 description: User can stream multiple times in a permanent live
5805 description: RTMP stream key to use to stream into this live video
5809 description: User can stream multiple times in a permanent live
5816 'https://search.example.org/api/v1/search/videos':
5818 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5821 description: successful operation
5825 $ref: '#/components/schemas/VideoListResponse'