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
977 $ref: '#/components/schemas/Avatar'
979 description: image file too large
985 description: Maximum file size for the avatar
993 description: The file to upload.
998 contentType: image/png, image/jpeg
1001 summary: List video ownership changes
1003 - Video Ownership Change
1008 description: successful operation
1009 '/videos/ownership/{id}/accept':
1011 summary: Accept ownership change request
1013 - Video Ownership Change
1017 - $ref: '#/components/parameters/idOrUUID'
1020 description: successful operation
1022 description: cannot terminate an ownership change of another user
1024 description: video owneship change not found
1025 '/videos/ownership/{id}/refuse':
1027 summary: Refuse ownership change request
1029 - Video Ownership Change
1033 - $ref: '#/components/parameters/idOrUUID'
1036 description: successful operation
1038 description: cannot terminate an ownership change of another user
1040 description: video owneship change not found
1041 '/videos/{id}/give-ownership':
1043 summary: Request ownership change
1045 - Video Ownership Change
1049 - $ref: '#/components/parameters/idOrUUID'
1053 application/x-www-form-urlencoded:
1063 description: successful operation
1065 description: changing video ownership to a remote account is not supported yet
1067 description: video not found
1070 summary: List videos
1074 - $ref: '#/components/parameters/categoryOneOf'
1075 - $ref: '#/components/parameters/tagsOneOf'
1076 - $ref: '#/components/parameters/tagsAllOf'
1077 - $ref: '#/components/parameters/licenceOneOf'
1078 - $ref: '#/components/parameters/languageOneOf'
1079 - $ref: '#/components/parameters/nsfw'
1080 - $ref: '#/components/parameters/filter'
1081 - $ref: '#/components/parameters/skipCount'
1082 - $ref: '#/components/parameters/start'
1083 - $ref: '#/components/parameters/count'
1084 - $ref: '#/components/parameters/videosSort'
1087 description: successful operation
1091 $ref: '#/components/schemas/VideoListResponse'
1094 summary: List available video categories
1099 description: successful operation
1108 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1111 summary: List available video licences
1116 description: successful operation
1125 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1128 summary: List available video languages
1133 description: successful operation
1142 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1145 summary: List available video privacies
1150 description: successful operation
1159 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1162 summary: Update a video
1168 - $ref: '#/components/parameters/idOrUUID'
1171 description: successful operation
1174 multipart/form-data:
1179 description: Video thumbnail file
1183 description: Video preview file
1187 description: Video category
1191 description: Video licence
1195 description: Video language
1198 $ref: '#/components/schemas/VideoPrivacySet'
1200 description: Video description
1203 description: Whether or not we wait transcoding before publish the video
1206 description: A text tell the audience how to support the video creator
1207 example: Please support my work on <insert crowdfunding plateform>! <3
1210 description: Whether or not this video contains sensitive content
1213 description: Video name
1216 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1225 description: Enable or disable comments for this video
1227 originallyPublishedAt:
1228 description: Date when the content was originally published
1232 $ref: '#/components/schemas/VideoScheduledUpdate'
1235 contentType: image/jpeg
1237 contentType: image/jpeg
1239 summary: Get a video
1243 - $ref: '#/components/parameters/idOrUUID'
1246 description: successful operation
1250 $ref: '#/components/schemas/VideoDetails'
1252 summary: Delete a video
1258 - $ref: '#/components/parameters/idOrUUID'
1261 description: successful operation
1262 '/videos/{id}/description':
1264 summary: Get complete video description
1268 - $ref: '#/components/parameters/idOrUUID'
1271 description: successful operation
1276 '/videos/{id}/views':
1278 summary: Add a view to a video
1282 - $ref: '#/components/parameters/idOrUUID'
1285 description: successful operation
1286 '/videos/{id}/watching':
1288 summary: Set watching progress of a video
1294 - $ref: '#/components/parameters/idOrUUID'
1299 $ref: '#/components/schemas/UserWatchingVideo'
1303 description: successful operation
1306 summary: Upload a video
1313 description: successful operation
1317 $ref: '#/components/schemas/VideoUploadResponse'
1319 description: invalid file field, schedule date or parameter
1321 description: video didn't pass upload filter
1323 description: upload has timed out
1325 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1327 X-File-Maximum-Size:
1331 description: Maximum file size for the video
1333 description: video type unsupported
1335 description: video unreadable
1338 multipart/form-data:
1343 description: Video file
1347 description: Channel id that will contain this video
1350 description: Video thumbnail file
1354 description: Video preview file
1358 $ref: '#/components/schemas/VideoPrivacySet'
1360 description: Video category
1364 description: Video licence
1367 description: Video language
1371 description: Video description
1374 description: Whether or not we wait transcoding before publish the video
1377 description: A text tell the audience how to support the video creator
1378 example: Please support my work on <insert crowdfunding plateform>! <3
1381 description: Whether or not this video contains sensitive content
1384 description: Video name
1387 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1397 description: Enable or disable comments for this video
1400 description: Enable or disable downloading for this video
1402 originallyPublishedAt:
1403 description: Date when the content was originally published
1407 $ref: '#/components/schemas/VideoScheduledUpdate'
1414 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1416 contentType: image/jpeg
1418 contentType: image/jpeg
1423 USERNAME="<your_username>"
1424 PASSWORD="<your_password>"
1425 FILE_PATH="<your_file_path>"
1426 CHANNEL_ID="<your_channel_id>"
1429 API_PATH="https://peertube2.cpy.re/api/v1"
1431 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1432 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1433 token=$(curl -s "$API_PATH/users/token" \
1434 --data client_id="$client_id" \
1435 --data client_secret="$client_secret" \
1436 --data grant_type=password \
1437 --data response_type=code \
1438 --data username="$USERNAME" \
1439 --data password="$PASSWORD" \
1440 | jq -r ".access_token")
1442 curl -s "$API_PATH/videos/upload" \
1443 -H "Authorization: Bearer $token" \
1445 --form videofile=@"$FILE_PATH" \
1446 --form channelId=$CHANNEL_ID \
1450 summary: Import a video
1451 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1458 multipart/form-data:
1463 description: Torrent File
1467 description: HTTP target URL
1470 description: Magnet URI
1473 description: Channel id that will contain this video
1476 description: Video thumbnail file
1480 description: Video preview file
1484 $ref: '#/components/schemas/VideoPrivacySet'
1486 description: Video category
1489 description: Video licence
1492 description: Video language
1495 description: Video description
1498 description: Whether or not we wait transcoding before publish the video
1501 description: A text tell the audience how to support the video creator
1502 example: Please support my work on <insert crowdfunding plateform>! <3
1505 description: Whether or not this video contains sensitive content
1508 description: Video name
1511 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1520 description: Enable or disable comments for this video
1523 description: Enable or disable downloading for this video
1526 $ref: '#/components/schemas/VideoScheduledUpdate'
1532 contentType: application/x-bittorrent
1534 contentType: image/jpeg
1536 contentType: image/jpeg
1539 description: successful operation
1543 $ref: '#/components/schemas/VideoUploadResponse'
1545 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1547 description: video didn't pass pre-import filter
1549 description: HTTP or Torrent/magnetURI import not enabled
1553 summary: Create a live
1561 description: successful operation
1565 $ref: '#/components/schemas/VideoUploadResponse'
1567 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1570 multipart/form-data:
1575 description: Channel id that will contain this live video
1580 description: User can stream multiple times in a permanent live
1583 description: Live video/replay thumbnail file
1587 description: Live video/replay preview file
1591 $ref: '#/components/schemas/VideoPrivacySet'
1593 description: Live video/replay category
1596 description: Live video/replay licence
1599 description: Live video/replay language
1602 description: Live video/replay description
1605 description: A text tell the audience how to support the creator
1606 example: Please support my work on <insert crowdfunding plateform>! <3
1609 description: Whether or not this live video/replay contains sensitive content
1612 description: Live video/replay name
1615 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1624 description: Enable or disable comments for this live video/replay
1627 description: Enable or disable downloading for the replay of this live
1634 contentType: image/jpeg
1636 contentType: image/jpeg
1640 summary: Get a live information
1647 - $ref: '#/components/parameters/idOrUUID'
1650 description: successful operation
1654 $ref: '#/components/schemas/LiveVideoResponse'
1656 summary: Update a live information
1663 - $ref: '#/components/parameters/idOrUUID'
1668 $ref: '#/components/schemas/LiveVideoUpdate'
1671 description: Successful operation
1673 description: Bad parameters or trying to update a live that has already started
1675 description: Trying to save replay of the live but saving replay is not enabled on the instance
1679 summary: List my abuses
1688 description: only list the report with this id
1694 $ref: '#/components/schemas/AbuseStateSet'
1695 - $ref: '#/components/parameters/start'
1696 - $ref: '#/components/parameters/count'
1697 - $ref: '#/components/parameters/abusesSort'
1700 description: successful operation
1706 $ref: '#/components/schemas/Abuse'
1710 summary: List abuses
1720 description: only list the report with this id
1723 - name: predefinedReason
1725 description: predefined reason the listed reports should contain
1727 $ref: '#/components/schemas/PredefinedAbuseReasons'
1730 description: plain search that will match with video titles, reporter names and more
1736 $ref: '#/components/schemas/AbuseStateSet'
1737 - name: searchReporter
1739 description: only list reports of a specific reporter
1742 - name: searchReportee
1743 description: only list reports of a specific reportee
1749 description: only list reports of a specific video
1752 - name: searchVideoChannel
1754 description: only list reports of a specific video channel
1759 description: only list blacklisted or deleted videos
1767 description: only list account, comment or video reports
1774 - $ref: '#/components/parameters/start'
1775 - $ref: '#/components/parameters/count'
1776 - $ref: '#/components/parameters/abusesSort'
1779 description: successful operation
1785 $ref: '#/components/schemas/Abuse'
1788 summary: Report an abuse
1801 description: Reason why the user reports this video
1805 $ref: '#/components/schemas/PredefinedAbuseReasons'
1811 description: Video id to report
1815 description: Timestamp in the video that marks the beginning of the report
1819 description: Timestamp in the video that marks the ending of the report
1825 description: Comment id to report
1831 description: Account id to report
1837 description: successful operation
1839 description: incorrect request parameters
1840 '/abuses/{abuseId}':
1842 summary: Update an abuse
1850 - $ref: '#/components/parameters/abuseId'
1858 $ref: '#/components/schemas/AbuseStateSet'
1861 description: Update the report comment visible only to the moderation team
1864 description: successful operation
1866 description: abuse not found
1870 summary: Delete an abuse
1876 - $ref: '#/components/parameters/abuseId'
1879 description: successful operation
1881 description: block not found
1882 '/abuses/{abuseId}/messages':
1884 summary: List messages of an abuse
1890 - $ref: '#/components/parameters/abuseId'
1893 description: successful operation
1899 $ref: '#/components/schemas/AbuseMessage'
1902 summary: Add message to an abuse
1908 - $ref: '#/components/parameters/abuseId'
1917 description: Message to send
1923 description: successful operation
1925 description: incorrect request parameters
1926 '/abuses/{abuseId}/messages/{abuseMessageId}':
1928 summary: Delete an abuse message
1934 - $ref: '#/components/parameters/abuseId'
1935 - $ref: '#/components/parameters/abuseMessageId'
1938 description: successful operation
1940 '/videos/{id}/blacklist':
1942 summary: Block a video
1950 - $ref: '#/components/parameters/idOrUUID'
1953 description: successful operation
1955 summary: Unblock a video by its id
1963 - $ref: '#/components/parameters/idOrUUID'
1966 description: successful operation
1968 description: block not found
1973 summary: List video blocks
1982 list only blocks that match this type:
1986 - `2`: automatic block that needs review
1994 description: plain search that will match with video titles, and more
1997 - $ref: '#/components/parameters/start'
1998 - $ref: '#/components/parameters/count'
1999 - $ref: '#/components/parameters/blacklistsSort'
2002 description: successful operation
2014 $ref: '#/components/schemas/VideoBlacklist'
2015 /videos/{id}/captions:
2017 summary: List captions of a video
2021 - $ref: '#/components/parameters/idOrUUID'
2024 description: successful operation
2036 $ref: '#/components/schemas/VideoCaption'
2037 /videos/{id}/captions/{captionLanguage}:
2039 summary: Add or replace a video caption
2046 - $ref: '#/components/parameters/idOrUUID'
2047 - $ref: '#/components/parameters/captionLanguage'
2050 multipart/form-data:
2055 description: The file to upload.
2060 contentType: text/vtt, application/x-subrip, text/plain
2063 description: successful operation
2065 description: video or language not found
2067 summary: Delete a video caption
2074 - $ref: '#/components/parameters/idOrUUID'
2075 - $ref: '#/components/parameters/captionLanguage'
2078 description: successful operation
2080 description: video or language or caption for that language not found
2083 summary: List video channels
2087 - $ref: '#/components/parameters/start'
2088 - $ref: '#/components/parameters/count'
2089 - $ref: '#/components/parameters/sort'
2092 description: successful operation
2104 $ref: '#/components/schemas/VideoChannel'
2106 summary: Create a video channel
2113 description: successful operation
2118 $ref: '#/components/schemas/VideoChannelCreate'
2119 '/video-channels/{channelHandle}':
2121 summary: Get a video channel
2125 - $ref: '#/components/parameters/channelHandle'
2128 description: successful operation
2132 $ref: '#/components/schemas/VideoChannel'
2134 summary: Update a video channel
2140 - $ref: '#/components/parameters/channelHandle'
2143 description: successful operation
2148 $ref: '#/components/schemas/VideoChannelUpdate'
2150 summary: Delete a video channel
2156 - $ref: '#/components/parameters/channelHandle'
2159 description: successful operation
2160 '/video-channels/{channelHandle}/videos':
2162 summary: List videos of a video channel
2167 - $ref: '#/components/parameters/channelHandle'
2168 - $ref: '#/components/parameters/categoryOneOf'
2169 - $ref: '#/components/parameters/tagsOneOf'
2170 - $ref: '#/components/parameters/tagsAllOf'
2171 - $ref: '#/components/parameters/licenceOneOf'
2172 - $ref: '#/components/parameters/languageOneOf'
2173 - $ref: '#/components/parameters/nsfw'
2174 - $ref: '#/components/parameters/filter'
2175 - $ref: '#/components/parameters/skipCount'
2176 - $ref: '#/components/parameters/start'
2177 - $ref: '#/components/parameters/count'
2178 - $ref: '#/components/parameters/videosSort'
2181 description: successful operation
2185 $ref: '#/components/schemas/VideoListResponse'
2187 /video-playlists/privacies:
2189 summary: List available playlist privacies
2194 description: successful operation
2203 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2207 summary: List video playlists
2211 - $ref: '#/components/parameters/start'
2212 - $ref: '#/components/parameters/count'
2213 - $ref: '#/components/parameters/sort'
2216 description: successful operation
2228 $ref: '#/components/schemas/VideoPlaylist'
2230 summary: Create a video playlist
2231 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2238 description: successful operation
2253 multipart/form-data:
2258 description: Video playlist display name
2261 description: Video playlist thumbnail file
2265 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2267 description: Video playlist description
2270 description: Video channel in which the playlist will be published
2276 contentType: image/jpeg
2278 /video-playlists/{id}:
2280 summary: Get a video playlist
2284 - $ref: '#/components/parameters/idOrUUID'
2287 description: successful operation
2291 $ref: '#/components/schemas/VideoPlaylist'
2293 summary: Update a video playlist
2294 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2301 description: successful operation
2303 - $ref: '#/components/parameters/idOrUUID'
2306 multipart/form-data:
2311 description: Video playlist display name
2314 description: Video playlist thumbnail file
2318 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2320 description: Video playlist description
2323 description: Video channel in which the playlist will be published
2327 contentType: image/jpeg
2329 summary: Delete a video playlist
2335 - $ref: '#/components/parameters/idOrUUID'
2338 description: successful operation
2340 /video-playlists/{id}/videos:
2342 summary: 'List videos of a playlist'
2347 - $ref: '#/components/parameters/idOrUUID'
2350 description: successful operation
2354 $ref: '#/components/schemas/VideoListResponse'
2356 summary: 'Add a video in a playlist'
2363 - $ref: '#/components/parameters/idOrUUID'
2366 description: successful operation
2372 videoPlaylistElement:
2385 description: 'Video to add in the playlist'
2388 description: 'Start the video at this specific timestamp (in seconds)'
2391 description: 'Stop the video at this specific timestamp (in seconds)'
2395 /video-playlists/{id}/videos/reorder:
2397 summary: 'Reorder a playlist'
2403 - $ref: '#/components/parameters/idOrUUID'
2406 description: successful operation
2415 description: 'Start position of the element to reorder'
2417 insertAfterPosition:
2419 description: 'New position for the block to reorder, to add the block before the first element'
2423 description: 'How many element from `startPosition` to reorder'
2427 - insertAfterPosition
2429 /video-playlists/{id}/videos/{playlistElementId}:
2431 summary: 'Update a playlist element'
2437 - $ref: '#/components/parameters/idOrUUID'
2438 - $ref: '#/components/parameters/playlistElementId'
2441 description: successful operation
2450 description: 'Start the video at this specific timestamp (in seconds)'
2453 description: 'Stop the video at this specific timestamp (in seconds)'
2455 summary: 'Delete an element from a playlist'
2461 - $ref: '#/components/parameters/idOrUUID'
2462 - $ref: '#/components/parameters/playlistElementId'
2465 description: successful operation
2467 '/users/me/video-playlists/videos-exist':
2469 summary: 'Check video exists in my playlists'
2478 description: The video ids to check
2485 description: successful operation
2505 '/accounts/{name}/video-channels':
2507 summary: List video channels of an account
2512 - $ref: '#/components/parameters/name'
2515 description: include view statistics for the last 30 days (only if authentified as the account user)
2518 - $ref: '#/components/parameters/start'
2519 - $ref: '#/components/parameters/count'
2520 - $ref: '#/components/parameters/sort'
2523 description: successful operation
2529 $ref: '#/components/schemas/VideoChannel'
2530 '/accounts/{name}/ratings':
2532 summary: List ratings of an account
2538 - $ref: '#/components/parameters/name'
2539 - $ref: '#/components/parameters/start'
2540 - $ref: '#/components/parameters/count'
2541 - $ref: '#/components/parameters/sort'
2545 description: Optionally filter which ratings to retrieve
2553 description: successful operation
2559 $ref: '#/components/schemas/VideoRating'
2560 '/videos/{id}/comment-threads':
2562 summary: List threads of a video
2566 - $ref: '#/components/parameters/idOrUUID'
2567 - $ref: '#/components/parameters/start'
2568 - $ref: '#/components/parameters/count'
2569 - $ref: '#/components/parameters/commentsSort'
2572 description: successful operation
2576 $ref: '#/components/schemas/CommentThreadResponse'
2578 summary: Create a thread
2584 - $ref: '#/components/parameters/idOrUUID'
2587 description: successful operation
2591 $ref: '#/components/schemas/CommentThreadPostResponse'
2593 description: video does not exist
2602 description: 'Text comment'
2606 '/videos/{id}/comment-threads/{threadId}':
2608 summary: Get a thread
2612 - $ref: '#/components/parameters/idOrUUID'
2613 - $ref: '#/components/parameters/threadId'
2616 description: successful operation
2620 $ref: '#/components/schemas/VideoCommentThreadTree'
2621 '/videos/{id}/comments/{commentId}':
2623 summary: Reply to a thread of a video
2629 - $ref: '#/components/parameters/idOrUUID'
2630 - $ref: '#/components/parameters/commentId'
2633 description: successful operation
2637 $ref: '#/components/schemas/CommentThreadPostResponse'
2639 description: thread or video does not exist
2648 description: 'Text comment'
2653 summary: Delete a comment or a reply
2659 - $ref: '#/components/parameters/idOrUUID'
2660 - $ref: '#/components/parameters/commentId'
2663 description: successful operation
2665 description: cannot remove comment of another user
2667 description: comment or video does not exist
2669 description: comment is already deleted
2670 '/videos/{id}/rate':
2672 summary: Like/dislike a video
2678 - $ref: '#/components/parameters/idOrUUID'
2681 description: successful operation
2683 description: video does not exist
2688 summary: Search videos
2693 allowEmptyValue: false
2695 String to search. If the user can make a remote URI search, and the string is an URI then the
2696 PeerTube instance will fetch the remote object and add it to its database. Then,
2697 you can use the REST API to fetch the complete video information and interact with it.
2700 - $ref: '#/components/parameters/categoryOneOf'
2701 - $ref: '#/components/parameters/tagsOneOf'
2702 - $ref: '#/components/parameters/tagsAllOf'
2703 - $ref: '#/components/parameters/licenceOneOf'
2704 - $ref: '#/components/parameters/languageOneOf'
2705 - $ref: '#/components/parameters/nsfw'
2706 - $ref: '#/components/parameters/filter'
2707 - $ref: '#/components/parameters/skipCount'
2708 - $ref: '#/components/parameters/start'
2709 - $ref: '#/components/parameters/count'
2710 - $ref: '#/components/parameters/searchTarget'
2711 - $ref: '#/components/parameters/videosSearchSort'
2714 description: Get videos that are published after this date
2720 description: Get videos that are published before this date
2724 - name: originallyPublishedStartDate
2726 description: Get videos that are originally published after this date
2730 - name: originallyPublishedEndDate
2732 description: Get videos that are originally published before this date
2738 description: Get videos that have this minimum duration
2743 description: Get videos that have this maximum duration
2747 'searchTarget === search-index':
2748 $ref: '#/components/callbacks/searchIndex'
2751 description: successful operation
2755 $ref: '#/components/schemas/VideoListResponse'
2757 description: search index unavailable
2758 /search/video-channels:
2762 summary: Search channels
2768 String to search. If the user can make a remote URI search, and the string is an URI then the
2769 PeerTube instance will fetch the remote object and add it to its database. Then,
2770 you can use the REST API to fetch the complete channel information and interact with it.
2773 - $ref: '#/components/parameters/start'
2774 - $ref: '#/components/parameters/count'
2775 - $ref: '#/components/parameters/searchTarget'
2776 - $ref: '#/components/parameters/sort'
2778 'searchTarget === search-index':
2779 $ref: '#/components/callbacks/searchIndex'
2782 description: successful operation
2788 $ref: '#/components/schemas/VideoChannel'
2790 description: search index unavailable
2791 /blocklist/accounts:
2795 summary: List account blocks
2800 - $ref: '#/components/parameters/start'
2801 - $ref: '#/components/parameters/count'
2802 - $ref: '#/components/parameters/sort'
2805 description: successful operation
2809 summary: Block an account
2821 example: chocobozzz@example.org
2822 description: account to block, in the form `username@domain`
2827 description: successful operation
2829 description: self-blocking forbidden
2830 '/blocklist/accounts/{accountName}':
2834 summary: Unblock an account by its handle
2842 description: account to unblock, in the form `username@domain`
2847 description: successful operation
2849 description: account or account block does not exist
2854 summary: List server blocks
2859 - $ref: '#/components/parameters/start'
2860 - $ref: '#/components/parameters/count'
2861 - $ref: '#/components/parameters/sort'
2864 description: successful operation
2868 summary: Block a server
2881 description: server domain to block
2886 description: successful operation
2888 description: self-blocking forbidden
2889 '/blocklist/servers/{host}':
2893 summary: Unblock a server by its domain
2901 description: server domain to unblock
2907 description: successful operation
2909 description: account block does not exist
2913 - Instance Redundancy
2914 summary: Update a server redundancy policy
2922 description: server domain to mirror
2934 description: allow mirroring of the host's local videos
2939 description: successful operation
2941 description: server is not already known
2946 summary: List videos being mirrored
2954 description: direction of the mirror
2960 - $ref: '#/components/parameters/start'
2961 - $ref: '#/components/parameters/count'
2962 - $ref: '#/components/parameters/videoRedundanciesSort'
2965 description: successful operation
2971 $ref: '#/components/schemas/VideoRedundancy'
2975 summary: Mirror a video
2991 description: successful operation
2993 description: cannot mirror a local video
2995 description: video does not exist
2997 description: video is already mirrored
2998 /redundancy/videos/{redundancyId}:
3002 summary: Delete a mirror done on a video
3007 - name: redundancyId
3010 description: id of an existing redundancy on a video
3015 description: successful operation
3017 description: video redundancy not found
3018 '/feeds/video-comments.{format}':
3022 summary: List comments on videos
3024 - url: 'https://peertube2.cpy.re'
3025 description: Live Test Server (live data - latest nightly version)
3026 - url: 'https://peertube3.cpy.re'
3027 description: Live Test Server (live data - latest RC version)
3028 - url: 'https://peertube.cpy.re'
3029 description: Live Test Server (live data - stable version)
3034 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3047 description: 'limit listing to a specific video'
3052 description: 'limit listing to a specific account'
3057 description: 'limit listing to a specific account'
3060 - name: videoChannelId
3062 description: 'limit listing to a specific video channel'
3065 - name: videoChannelName
3067 description: 'limit listing to a specific video channel'
3072 description: successful operation
3077 default: 'max-age=900' # 15 min cache
3081 $ref: '#/components/schemas/VideoCommentsForXML'
3082 application/rss+xml:
3084 $ref: '#/components/schemas/VideoCommentsForXML'
3087 $ref: '#/components/schemas/VideoCommentsForXML'
3088 application/atom+xml:
3090 $ref: '#/components/schemas/VideoCommentsForXML'
3095 x-summary: field inconsistencies
3098 - videoId filter is mixed with a channel filter
3100 description: video, video channel or account not found
3102 description: accept header unsupported
3103 '/feeds/videos.{format}':
3107 summary: List videos
3109 - url: 'https://peertube2.cpy.re'
3110 description: Live Test Server (live data - latest nightly version)
3111 - url: 'https://peertube3.cpy.re'
3112 description: Live Test Server (live data - latest RC version)
3113 - url: 'https://peertube.cpy.re'
3114 description: Live Test Server (live data - stable version)
3119 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3132 description: 'limit listing to a specific account'
3137 description: 'limit listing to a specific account'
3140 - name: videoChannelId
3142 description: 'limit listing to a specific video channel'
3145 - name: videoChannelName
3147 description: 'limit listing to a specific video channel'
3150 - $ref: '#/components/parameters/sort'
3151 - $ref: '#/components/parameters/nsfw'
3152 - $ref: '#/components/parameters/filter'
3155 description: successful operation
3160 default: 'max-age=900' # 15 min cache
3164 $ref: '#/components/schemas/VideosForXML'
3167 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3168 application/rss+xml:
3170 $ref: '#/components/schemas/VideosForXML'
3173 $ref: '#/components/schemas/VideosForXML'
3174 application/atom+xml:
3176 $ref: '#/components/schemas/VideosForXML'
3181 description: video channel or account not found
3183 description: accept header unsupported
3188 summary: List plugins
3201 - $ref: '#/components/parameters/start'
3202 - $ref: '#/components/parameters/count'
3203 - $ref: '#/components/parameters/sort'
3206 description: successful operation
3210 $ref: '#/components/schemas/PluginResponse'
3215 summary: List available plugins
3228 - name: currentPeerTubeEngine
3232 - $ref: '#/components/parameters/start'
3233 - $ref: '#/components/parameters/count'
3234 - $ref: '#/components/parameters/sort'
3237 description: successful operation
3241 $ref: '#/components/schemas/PluginResponse'
3243 description: plugin index unavailable
3248 summary: Install a plugin
3261 example: peertube-plugin-auth-ldap
3264 additionalProperties: false
3271 additionalProperties: false
3274 description: successful operation
3276 description: should have either `npmName` or `path` set
3281 summary: Update a plugin
3294 example: peertube-plugin-auth-ldap
3297 additionalProperties: false
3304 additionalProperties: false
3307 description: successful operation
3309 description: should have either `npmName` or `path` set
3311 description: existing plugin not found
3316 summary: Uninstall a plugin
3328 description: name of the plugin/theme in its package.json
3329 example: peertube-plugin-auth-ldap
3334 description: successful operation
3336 description: existing plugin not found
3341 summary: Get a plugin
3346 - $ref: '#/components/parameters/npmName'
3349 description: successful operation
3353 $ref: '#/components/schemas/Plugin'
3355 description: plugin not found
3356 /plugins/{npmName}/settings:
3360 summary: Set a plugin's settings
3365 - $ref: '#/components/parameters/npmName'
3374 additionalProperties: true
3377 description: successful operation
3379 description: plugin not found
3380 /plugins/{npmName}/public-settings:
3384 summary: Get a plugin's public settings
3386 - $ref: '#/components/parameters/npmName'
3389 description: successful operation
3394 additionalProperties: true
3396 description: plugin not found
3397 /plugins/{npmName}/registered-settings:
3401 summary: Get a plugin's registered settings
3406 - $ref: '#/components/parameters/npmName'
3409 description: successful operation
3414 additionalProperties: true
3416 description: plugin not found
3418 - url: 'https://peertube2.cpy.re/api/v1'
3419 description: Live Test Server (live data - latest nightly version)
3420 - url: 'https://peertube3.cpy.re/api/v1'
3421 description: Live Test Server (live data - latest RC version)
3422 - url: 'https://peertube.cpy.re/api/v1'
3423 description: Live Test Server (live data - stable version)
3430 description: Offset used to paginate results
3438 description: "Number of items to return"
3448 description: Sort column
3456 description: Plain text search, applied to various parts of the model depending on endpoint
3464 If the administrator enabled search index support, you can override the default search target.
3467 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3468 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3469 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3470 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3471 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3472 * 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
3473 the data from the origin instance API
3483 description: Sort videos by criteria
3499 description: Sort videos by criteria
3514 description: Sort comments by criteria
3524 description: Sort blacklists by criteria
3540 description: Plain text search that will match with user usernames or emails
3547 description: Filter results down to (un)banned users
3554 description: Sort users by criteria
3565 description: Sort abuses by criteria
3572 videoRedundanciesSort:
3576 description: Sort abuses by criteria
3585 description: The username or handle of the account
3588 example: chocobozzz | chocobozzz@example.org
3593 description: The user id
3602 description: The object id or uuid
3610 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3612 name: playlistElementId
3615 description: Playlist element id
3622 description: Abuse id
3626 name: abuseMessageId
3629 description: Abuse message id
3633 name: captionLanguage
3636 description: The caption language
3643 description: The video channel handle
3646 example: my_username | my_username@example.com
3648 name: subscriptionHandle
3651 description: The subscription handle
3654 example: my_username | my_username@example.com
3659 description: The thread id (root comment id)
3666 description: The comment id
3673 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3686 description: tag(s) of the video
3699 description: tag(s) of the video, where all should be present in the video
3712 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
3725 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3738 description: if you don't need the `total` in the response
3749 description: whether to include nsfw videos, if any
3760 Special filters which might require special rights:
3761 * `local` - only videos local to the instance
3762 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3763 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
3773 description: list of uris to check if each is part of the user subscriptions
3783 description: name of the plugin/theme on npmjs.com or in its package.json
3786 example: peertube-plugin-auth-ldap
3791 description: job type
3795 - activitypub-follow
3796 - activitypub-http-broadcast
3797 - activitypub-http-fetcher
3798 - activitypub-http-unicast
3804 - activitypub-refresher
3810 In the header: *Authorization: Bearer <token\>*
3813 Authenticating via OAuth requires the following steps:
3816 - Have an account with sufficient authorization levels
3818 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3821 - Make Authenticated Requests
3825 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3828 moderator: Moderator scope
3831 VideoConstantNumber:
3837 VideoConstantString:
3844 VideoPlaylistPrivacySet:
3850 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3851 VideoPlaylistPrivacyConstant:
3854 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3858 VideoPlaylistTypeSet:
3863 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3864 VideoPlaylistTypeConstant:
3867 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3878 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3879 VideoPrivacyConstant:
3882 $ref: '#/components/schemas/VideoPrivacySet'
3899 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3906 description: 'Admin flags for the user (None = `0`, Bypass video blacklist = `1`)'
3917 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3927 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3931 $ref: '#/components/schemas/AbuseStateSet'
3934 AbusePredefinedReasons:
3947 example: [spamOrMisleading]
3949 VideoResolutionConstant:
3953 description: 'Video resolution (240, 360, 720, 1080, 1440 or 2160)'
3958 VideoScheduledUpdate:
3961 $ref: '#/components/schemas/VideoPrivacySet'
3965 description: When to update the video
3985 - $ref: '#/components/schemas/Avatar'
3986 VideoChannelSummary:
4003 - $ref: '#/components/schemas/Avatar'
4015 - $ref: '#/components/schemas/Video'
4021 $ref: '#/components/schemas/VideoResolutionConstant'
4024 description: 'Video file size in bytes'
4042 VideoStreamingPlaylists:
4050 description: 'Playlist type (HLS = `1`)'
4059 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)'
4061 $ref: '#/components/schemas/VideoFile'
4077 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4088 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4100 originallyPublishedAt:
4104 $ref: '#/components/schemas/VideoConstantNumber'
4106 $ref: '#/components/schemas/VideoConstantNumber'
4108 $ref: '#/components/schemas/VideoConstantString'
4110 $ref: '#/components/schemas/VideoPrivacyConstant'
4120 example: What is PeerTube?
4123 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4126 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4129 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4145 $ref: '#/components/schemas/VideoStateConstant'
4149 - $ref: '#/components/schemas/VideoScheduledUpdate'
4157 $ref: '#/components/schemas/AccountSummary'
4159 $ref: '#/components/schemas/VideoChannelSummary'
4168 - $ref: '#/components/schemas/Video'
4175 description: A text tell the audience how to support the video creator
4176 example: Please support my work on <insert crowdfunding plateform>! <3
4178 $ref: '#/components/schemas/VideoChannel'
4180 $ref: '#/components/schemas/Account'
4185 example: [flowers, gardening]
4188 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'
4190 $ref: '#/components/schemas/VideoFile'
4203 $ref: '#/components/schemas/VideoStreamingPlaylists'
4204 FileRedundancyInformation:
4241 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4248 $ref: '#/components/schemas/FileRedundancyInformation'
4252 $ref: '#/components/schemas/FileRedundancyInformation'
4253 VideoImportStateConstant:
4261 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4273 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4277 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
4281 $ref: '#/components/schemas/VideoImportStateConstant'
4291 $ref: '#/components/schemas/Video'
4299 example: The video is a spam
4301 $ref: '#/components/schemas/AbusePredefinedReasons'
4303 $ref: '#/components/schemas/Account'
4305 $ref: '#/components/schemas/AbuseStateConstant'
4308 example: Decided to ban the server since it spams us regularly
4319 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4335 $ref: '#/components/schemas/AccountSummary'
4353 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4382 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4398 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4408 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4410 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4412 $ref: '#/components/schemas/AccountSummary'
4414 $ref: '#/components/schemas/VideoChannelSummary'
4436 totalRepliesFromVideoAuthor:
4441 $ref: '#/components/schemas/Account'
4442 VideoCommentThreadTree:
4445 $ref: '#/components/schemas/VideoComment'
4449 $ref: '#/components/schemas/VideoCommentThreadTree'
4453 $ref: '#/components/schemas/VideoConstantString'
4508 $ref: '#/components/schemas/Avatar'
4511 - $ref: '#/components/schemas/Actor'
4524 description: timestamp within the video, in seconds
4591 allowedForCurrentIP:
4593 requiresEmailVerification:
4797 requiresEmailVerification:
4822 allowAdditionalExtensions:
4892 $ref: '#/components/schemas/Actor'
4894 $ref: '#/components/schemas/Actor'
4897 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4910 PredefinedAbuseReasons:
4911 description: Reason categories that help triage reports
4942 - activitypub-http-unicast
4943 - activitypub-http-broadcast
4944 - activitypub-http-fetcher
4945 - activitypub-follow
4951 - activitypub-refresher
4955 additionalProperties: true
4958 additionalProperties: true
4982 VideoUploadResponse:
4993 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4994 CommentThreadResponse:
5003 $ref: '#/components/schemas/VideoComment'
5004 CommentThreadPostResponse:
5007 $ref: '#/components/schemas/VideoComment'
5017 $ref: '#/components/schemas/Video'
5025 description: The user username
5031 description: The user email
5034 description: Auth plugin to use to authenticate the user
5037 description: Theme enabled by this user
5040 description: Has the user confirmed their email address?
5042 $ref: '#/components/schemas/NSFWPolicy'
5045 description: Enable P2P in the player
5048 description: Automatically start playing the video on the watch page
5050 $ref: '#/components/schemas/UserRole'
5059 description: The user video quota
5062 description: The user daily video quota
5067 abusesAcceptedCount:
5073 noInstanceConfigWarningModal:
5084 $ref: '#/components/schemas/Account'
5088 $ref: '#/components/schemas/VideoChannel'
5093 description: The user username
5099 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5105 description: The user email
5108 description: The user video quota
5111 description: The user daily video quota
5114 description: The user default channel username
5116 $ref: '#/components/schemas/UserRole'
5118 $ref: '#/components/schemas/UserAdminFlags'
5130 description: The user id
5134 description: The updated email of the user
5137 description: Set the email as verified
5140 description: The updated video quota of the user
5143 description: The updated daily video quota of the user
5147 description: The auth plugin to use to authenticate the user
5148 example: 'peertube-plugin-auth-saml2'
5150 $ref: '#/components/schemas/UserRole'
5152 $ref: '#/components/schemas/UserAdminFlags'
5160 description: Your new password
5166 description: Your new email
5169 description: Your new displayNSFW
5176 description: Your new autoPlayVideo
5186 description: Id of the video
5189 description: Rating of the video
5196 $ref: '#/components/schemas/Video'
5199 description: 'Rating of the video'
5207 description: The username of the user
5210 pattern: '/^[a-z0-9._]{1,50}$/'
5214 description: The password of the user
5220 description: The email of the user
5223 description: The user display name
5231 description: The username for the default channel
5232 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5235 description: The display name for the default channel
5252 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5253 example: Please support my work on <insert crowdfunding plateform>! <3
5265 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5266 example: Please support my work on <insert crowdfunding plateform>! <3
5267 bulkVideosSupportUpdate:
5269 description: 'Update the support field for all videos of this channel'
5274 name: 'media:peerLink'
5283 - application/x-bittorrent
5289 name: 'media:content'
5320 VideoCommentsForXML:
5355 description: video watch page URL
5358 description: video canonical URL
5362 description: video publication date
5365 description: video description
5368 description: video description
5371 description: publisher user name
5374 description: video category (MRSS)
5377 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5392 description: video embed path, relative to the canonical URL domain (MRSS)
5401 description: video watch path, relative to the canonical URL domain (MRSS)
5422 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5423 'media:description':
5430 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5433 description: main streamable file for the video
5443 - application/x-bittorrent
5452 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)
5455 - $ref: '#/components/schemas/MRSSPeerLink'
5456 - $ref: '#/components/schemas/MRSSGroupContent'
5457 NotificationSettingValue:
5478 Notification type, following the `UserNotificationType` enum:
5480 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5482 - `2` NEW_COMMENT_ON_MY_VIDEO
5484 - `3` NEW_ABUSE_FOR_MODERATORS
5486 - `4` BLACKLIST_ON_MY_VIDEO
5488 - `5` UNBLACKLIST_ON_MY_VIDEO
5490 - `6` MY_VIDEO_PUBLISHED
5492 - `7` MY_VIDEO_IMPORT_SUCCESS
5494 - `8` MY_VIDEO_IMPORT_ERROR
5496 - `9` NEW_USER_REGISTRATION
5500 - `11` COMMENT_MENTION
5502 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5504 - `13` NEW_INSTANCE_FOLLOWER
5506 - `14` AUTO_INSTANCE_FOLLOWING
5512 - $ref: '#/components/schemas/VideoInfo'
5516 $ref: '#/components/schemas/ActorInfo'
5525 $ref: '#/components/schemas/VideoInfo'
5546 $ref: '#/components/schemas/VideoInfo'
5548 $ref: '#/components/schemas/ActorInfo'
5557 - $ref: '#/components/schemas/VideoInfo'
5566 - $ref: '#/components/schemas/VideoInfo'
5570 - $ref: '#/components/schemas/ActorInfo'
5578 $ref: '#/components/schemas/ActorInfo'
5606 NotificationListResponse:
5615 $ref: '#/components/schemas/Notification'
5620 example: peertube-plugin-auth-ldap
5648 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5651 additionalProperties: true
5667 $ref: '#/components/schemas/Plugin'
5674 description: User can stream multiple times in a permanent live
5683 description: RTMP stream key to use to stream into this live video
5687 description: User can stream multiple times in a permanent live
5692 'https://search.example.org/api/v1/search/videos':
5694 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5697 description: successful operation
5701 $ref: '#/components/schemas/VideoListResponse'