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
368 - $ref: '#/components/parameters/start'
369 - $ref: '#/components/parameters/count'
370 - $ref: '#/components/parameters/sort'
373 description: successful operation
386 $ref: '#/components/schemas/Job'
387 '/server/following/{host}':
394 summary: Unfollow a server
399 description: 'The host to unfollow '
405 description: successful operation
410 summary: List instance followers
412 - $ref: '#/components/parameters/start'
413 - $ref: '#/components/parameters/count'
414 - $ref: '#/components/parameters/sort'
417 description: successful operation
423 $ref: '#/components/schemas/Follow'
428 summary: List instances followed by the server
447 - $ref: '#/components/parameters/start'
448 - $ref: '#/components/parameters/count'
449 - $ref: '#/components/parameters/sort'
452 description: successful operation
458 $ref: '#/components/schemas/Follow'
465 summary: Follow a server
468 description: successful operation
470 description: cannot follow a non-HTTPS server
485 summary: Create a user
493 description: user created
497 $ref: '#/components/schemas/AddUserResponse'
501 operationId: getUserId
503 id: '$response.body#/user/id'
506 operationId: putUserId
508 id: '$response.body#/user/id'
511 operationId: delUserId
513 id: '$response.body#/user/id'
515 description: insufficient authority to create an admin or moderator
520 $ref: '#/components/schemas/AddUser'
521 description: User to create
531 - $ref: '#/components/parameters/usersSearch'
532 - $ref: '#/components/parameters/usersBlocked'
533 - $ref: '#/components/parameters/start'
534 - $ref: '#/components/parameters/count'
535 - $ref: '#/components/parameters/usersSort'
538 description: successful operation
544 $ref: '#/components/schemas/User'
547 - $ref: '#/components/parameters/id'
549 summary: Delete a user
555 operationId: delUserId
558 description: successful operation
565 operationId: getUserId
568 description: successful operation
572 $ref: '#/components/schemas/User'
574 summary: Update a user
579 operationId: putUserId
582 description: successful operation
587 $ref: '#/components/schemas/UpdateUser'
591 summary: Register a user
596 description: successful operation
601 $ref: '#/components/schemas/RegisterUser'
605 summary: Get my user information
613 description: successful operation
619 $ref: '#/components/schemas/User'
621 summary: Update my user information
629 description: successful operation
634 $ref: '#/components/schemas/UpdateMe'
636 /users/me/videos/imports:
638 summary: Get video imports of my user
646 - $ref: '#/components/parameters/start'
647 - $ref: '#/components/parameters/count'
648 - $ref: '#/components/parameters/sort'
651 description: successful operation
655 $ref: '#/components/schemas/VideoImport'
656 /users/me/video-quota-used:
658 summary: Get my user used quota
666 description: successful operation
671 '/users/me/videos/{videoId}/rating':
673 summary: Get rate of my user for a video
683 description: 'The video id '
688 description: successful operation
692 $ref: '#/components/schemas/GetMeVideoRating'
695 summary: Get videos of my user
703 - $ref: '#/components/parameters/start'
704 - $ref: '#/components/parameters/count'
705 - $ref: '#/components/parameters/sort'
708 description: successful operation
712 $ref: '#/components/schemas/VideoListResponse'
713 /users/me/subscriptions:
715 summary: Get my user subscriptions
722 - $ref: '#/components/parameters/start'
723 - $ref: '#/components/parameters/count'
724 - $ref: '#/components/parameters/sort'
727 description: successful operation
731 summary: Add subscription to my user
744 description: uri of the video channels to subscribe to
750 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
753 description: successful operation
754 /users/me/subscriptions/exist:
756 summary: Get if subscriptions exist for my user
763 - $ref: '#/components/parameters/subscriptionsUris'
766 description: successful operation
771 /users/me/subscriptions/videos:
773 summary: List videos of subscriptions of my user
781 - $ref: '#/components/parameters/categoryOneOf'
782 - $ref: '#/components/parameters/tagsOneOf'
783 - $ref: '#/components/parameters/tagsAllOf'
784 - $ref: '#/components/parameters/licenceOneOf'
785 - $ref: '#/components/parameters/languageOneOf'
786 - $ref: '#/components/parameters/nsfw'
787 - $ref: '#/components/parameters/filter'
788 - $ref: '#/components/parameters/skipCount'
789 - $ref: '#/components/parameters/start'
790 - $ref: '#/components/parameters/count'
791 - $ref: '#/components/parameters/videosSort'
794 description: successful operation
798 $ref: '#/components/schemas/VideoListResponse'
799 '/users/me/subscriptions/{subscriptionHandle}':
801 summary: Get subscription of my user
808 - $ref: '#/components/parameters/subscriptionHandle'
811 description: successful operation
815 $ref: '#/components/schemas/VideoChannel'
817 summary: Delete subscription of my user
824 - $ref: '#/components/parameters/subscriptionHandle'
827 description: successful operation
828 /users/me/notifications:
830 summary: List my notifications
838 description: only list unread notifications
841 - $ref: '#/components/parameters/start'
842 - $ref: '#/components/parameters/count'
843 - $ref: '#/components/parameters/sort'
846 description: successful operation
850 $ref: '#/components/schemas/NotificationListResponse'
851 /users/me/notifications/read:
853 summary: Mark notifications as read by their id
866 description: ids of the notifications to mark as read
873 description: successful operation
874 /users/me/notifications/read-all:
876 summary: Mark all my notification as read
883 description: successful operation
884 /users/me/notification-settings:
886 summary: Update my notification settings
897 newVideoFromSubscription:
898 $ref: '#/components/schemas/NotificationSettingValue'
900 $ref: '#/components/schemas/NotificationSettingValue'
902 $ref: '#/components/schemas/NotificationSettingValue'
903 videoAutoBlacklistAsModerator:
904 $ref: '#/components/schemas/NotificationSettingValue'
906 $ref: '#/components/schemas/NotificationSettingValue'
908 $ref: '#/components/schemas/NotificationSettingValue'
909 myVideoImportFinished:
910 $ref: '#/components/schemas/NotificationSettingValue'
912 $ref: '#/components/schemas/NotificationSettingValue'
914 $ref: '#/components/schemas/NotificationSettingValue'
916 $ref: '#/components/schemas/NotificationSettingValue'
918 $ref: '#/components/schemas/NotificationSettingValue'
919 autoInstanceFollowing:
920 $ref: '#/components/schemas/NotificationSettingValue'
923 description: successful operation
924 /users/me/history/videos:
926 summary: List watched videos history
932 - $ref: '#/components/parameters/start'
933 - $ref: '#/components/parameters/count'
936 description: successful operation
940 $ref: '#/components/schemas/VideoListResponse'
941 /users/me/history/videos/remove:
943 summary: Clear video history
955 description: history before this date will be deleted
960 description: successful operation
961 /users/me/avatar/pick:
963 summary: Update my user avatar
970 description: successful operation
974 $ref: '#/components/schemas/Avatar'
982 description: The file to upload.
987 contentType: image/png, image/jpeg
990 summary: List video ownership changes
992 - Video Ownership Change
997 description: successful operation
998 '/videos/ownership/{id}/accept':
1000 summary: Accept ownership change request
1002 - Video Ownership Change
1006 - $ref: '#/components/parameters/idOrUUID'
1009 description: successful operation
1011 description: cannot terminate an ownership change of another user
1013 description: video owneship change not found
1014 '/videos/ownership/{id}/refuse':
1016 summary: Refuse ownership change request
1018 - Video Ownership Change
1022 - $ref: '#/components/parameters/idOrUUID'
1025 description: successful operation
1027 description: cannot terminate an ownership change of another user
1029 description: video owneship change not found
1030 '/videos/{id}/give-ownership':
1032 summary: Request ownership change
1034 - Video Ownership Change
1038 - $ref: '#/components/parameters/idOrUUID'
1042 application/x-www-form-urlencoded:
1052 description: successful operation
1054 description: changing video ownership to a remote account is not supported yet
1056 description: video not found
1059 summary: List videos
1063 - $ref: '#/components/parameters/categoryOneOf'
1064 - $ref: '#/components/parameters/tagsOneOf'
1065 - $ref: '#/components/parameters/tagsAllOf'
1066 - $ref: '#/components/parameters/licenceOneOf'
1067 - $ref: '#/components/parameters/languageOneOf'
1068 - $ref: '#/components/parameters/nsfw'
1069 - $ref: '#/components/parameters/filter'
1070 - $ref: '#/components/parameters/skipCount'
1071 - $ref: '#/components/parameters/start'
1072 - $ref: '#/components/parameters/count'
1073 - $ref: '#/components/parameters/videosSort'
1076 description: successful operation
1080 $ref: '#/components/schemas/VideoListResponse'
1083 summary: List available video categories
1088 description: successful operation
1097 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1100 summary: List available video licences
1105 description: successful operation
1114 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1117 summary: List available video languages
1122 description: successful operation
1131 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1134 summary: List available video privacies
1139 description: successful operation
1148 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1151 summary: Update a video
1157 - $ref: '#/components/parameters/idOrUUID'
1160 description: successful operation
1163 multipart/form-data:
1168 description: Video thumbnail file
1172 description: Video preview file
1176 description: Video category
1180 description: Video licence
1184 description: Video language
1187 $ref: '#/components/schemas/VideoPrivacySet'
1189 description: Video description
1192 description: Whether or not we wait transcoding before publish the video
1195 description: A text tell the audience how to support the video creator
1196 example: Please support my work on <insert crowdfunding plateform>! <3
1199 description: Whether or not this video contains sensitive content
1202 description: Video name
1205 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1214 description: Enable or disable comments for this video
1216 originallyPublishedAt:
1217 description: Date when the content was originally published
1221 $ref: '#/components/schemas/VideoScheduledUpdate'
1224 contentType: image/jpeg
1226 contentType: image/jpeg
1228 summary: Get a video
1232 - $ref: '#/components/parameters/idOrUUID'
1235 description: successful operation
1239 $ref: '#/components/schemas/VideoDetails'
1241 summary: Delete a video
1247 - $ref: '#/components/parameters/idOrUUID'
1250 description: successful operation
1251 '/videos/{id}/description':
1253 summary: Get complete video description
1257 - $ref: '#/components/parameters/idOrUUID'
1260 description: successful operation
1265 '/videos/{id}/views':
1267 summary: Add a view to a video
1271 - $ref: '#/components/parameters/idOrUUID'
1274 description: successful operation
1275 '/videos/{id}/watching':
1277 summary: Set watching progress of a video
1283 - $ref: '#/components/parameters/idOrUUID'
1288 $ref: '#/components/schemas/UserWatchingVideo'
1292 description: successful operation
1295 summary: Upload a video
1302 description: successful operation
1306 $ref: '#/components/schemas/VideoUploadResponse'
1308 description: user video quota is exceeded with this video
1310 description: upload has timed out
1312 description: invalid input file
1315 multipart/form-data:
1320 description: Video file
1324 description: Channel id that will contain this video
1327 description: Video thumbnail file
1331 description: Video preview file
1335 $ref: '#/components/schemas/VideoPrivacySet'
1337 description: Video category
1341 description: Video licence
1344 description: Video language
1348 description: Video description
1351 description: Whether or not we wait transcoding before publish the video
1354 description: A text tell the audience how to support the video creator
1355 example: Please support my work on <insert crowdfunding plateform>! <3
1358 description: Whether or not this video contains sensitive content
1361 description: Video name
1364 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1374 description: Enable or disable comments for this video
1377 description: Enable or disable downloading for this video
1379 originallyPublishedAt:
1380 description: Date when the content was originally published
1384 $ref: '#/components/schemas/VideoScheduledUpdate'
1391 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1393 contentType: image/jpeg
1395 contentType: image/jpeg
1400 USERNAME="<your_username>"
1401 PASSWORD="<your_password>"
1402 FILE_PATH="<your_file_path>"
1403 CHANNEL_ID="<your_channel_id>"
1406 API_PATH="https://peertube2.cpy.re/api/v1"
1408 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1409 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1410 token=$(curl -s "$API_PATH/users/token" \
1411 --data client_id="$client_id" \
1412 --data client_secret="$client_secret" \
1413 --data grant_type=password \
1414 --data response_type=code \
1415 --data username="$USERNAME" \
1416 --data password="$PASSWORD" \
1417 | jq -r ".access_token")
1419 curl -s "$API_PATH/videos/upload" \
1420 -H "Authorization: Bearer $token" \
1422 --form videofile=@"$FILE_PATH" \
1423 --form channelId=$CHANNEL_ID \
1427 summary: Import a video
1428 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1435 multipart/form-data:
1440 description: Torrent File
1444 description: HTTP target URL
1447 description: Magnet URI
1450 description: Channel id that will contain this video
1453 description: Video thumbnail file
1457 description: Video preview file
1461 $ref: '#/components/schemas/VideoPrivacySet'
1463 description: Video category
1466 description: Video licence
1469 description: Video language
1472 description: Video description
1475 description: Whether or not we wait transcoding before publish the video
1478 description: A text tell the audience how to support the video creator
1479 example: Please support my work on <insert crowdfunding plateform>! <3
1482 description: Whether or not this video contains sensitive content
1485 description: Video name
1488 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1497 description: Enable or disable comments for this video
1500 description: Enable or disable downloading for this video
1503 $ref: '#/components/schemas/VideoScheduledUpdate'
1509 contentType: application/x-bittorrent
1511 contentType: image/jpeg
1513 contentType: image/jpeg
1516 description: successful operation
1520 $ref: '#/components/schemas/VideoUploadResponse'
1522 description: HTTP or Torrent/magnetURI import not enabled
1524 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1528 summary: Create a live
1536 description: successful operation
1540 $ref: '#/components/schemas/VideoUploadResponse'
1542 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1545 multipart/form-data:
1550 description: Channel id that will contain this live video
1555 description: Live video/replay thumbnail file
1559 description: Live video/replay preview file
1563 $ref: '#/components/schemas/VideoPrivacySet'
1565 description: Live video/replay category
1568 description: Live video/replay licence
1571 description: Live video/replay language
1574 description: Live video/replay description
1577 description: A text tell the audience how to support the creator
1578 example: Please support my work on <insert crowdfunding plateform>! <3
1581 description: Whether or not this live video/replay contains sensitive content
1584 description: Live video/replay name
1587 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1596 description: Enable or disable comments for this live video/replay
1599 description: Enable or disable downloading for the replay of this live
1606 contentType: image/jpeg
1608 contentType: image/jpeg
1612 summary: Get a live information
1619 - $ref: '#/components/parameters/idOrUUID'
1622 description: successful operation
1626 $ref: '#/components/schemas/LiveVideoResponse'
1628 summary: Update a live information
1635 - $ref: '#/components/parameters/idOrUUID'
1640 $ref: '#/components/schemas/LiveVideoUpdate'
1643 description: Successful operation
1645 description: Bad parameters or trying to update a live that has already started
1647 description: Trying to save replay of the live but saving replay is not enabled on the instance
1651 summary: List my abuses
1660 description: only list the report with this id
1666 $ref: '#/components/schemas/AbuseStateSet'
1667 - $ref: '#/components/parameters/start'
1668 - $ref: '#/components/parameters/count'
1669 - $ref: '#/components/parameters/abusesSort'
1672 description: successful operation
1678 $ref: '#/components/schemas/Abuse'
1682 summary: List abuses
1692 description: only list the report with this id
1695 - name: predefinedReason
1697 description: predefined reason the listed reports should contain
1699 $ref: '#/components/schemas/PredefinedAbuseReasons'
1702 description: plain search that will match with video titles, reporter names and more
1708 $ref: '#/components/schemas/AbuseStateSet'
1709 - name: searchReporter
1711 description: only list reports of a specific reporter
1714 - name: searchReportee
1715 description: only list reports of a specific reportee
1721 description: only list reports of a specific video
1724 - name: searchVideoChannel
1726 description: only list reports of a specific video channel
1731 description: only list blacklisted or deleted videos
1739 description: only list account, comment or video reports
1746 - $ref: '#/components/parameters/start'
1747 - $ref: '#/components/parameters/count'
1748 - $ref: '#/components/parameters/abusesSort'
1751 description: successful operation
1757 $ref: '#/components/schemas/Abuse'
1760 summary: Report an abuse
1773 description: Reason why the user reports this video
1777 $ref: '#/components/schemas/PredefinedAbuseReasons'
1783 description: Video id to report
1787 description: Timestamp in the video that marks the beginning of the report
1791 description: Timestamp in the video that marks the ending of the report
1797 description: Comment id to report
1803 description: Account id to report
1809 description: successful operation
1811 description: incorrect request parameters
1812 '/abuses/{abuseId}':
1814 summary: Update an abuse
1822 - $ref: '#/components/parameters/abuseId'
1830 $ref: '#/components/schemas/AbuseStateSet'
1833 description: Update the report comment visible only to the moderation team
1836 description: successful operation
1838 description: abuse not found
1842 summary: Delete an abuse
1848 - $ref: '#/components/parameters/abuseId'
1851 description: successful operation
1853 description: block not found
1854 '/abuses/{abuseId}/messages':
1856 summary: List messages of an abuse
1862 - $ref: '#/components/parameters/abuseId'
1865 description: successful operation
1871 $ref: '#/components/schemas/AbuseMessage'
1874 summary: Add message to an abuse
1880 - $ref: '#/components/parameters/abuseId'
1889 description: Message to send
1895 description: successful operation
1897 description: incorrect request parameters
1898 '/abuses/{abuseId}/messages/{abuseMessageId}':
1900 summary: Delete an abuse message
1906 - $ref: '#/components/parameters/abuseId'
1907 - $ref: '#/components/parameters/abuseMessageId'
1910 description: successful operation
1912 '/videos/{id}/blacklist':
1914 summary: Block a video
1922 - $ref: '#/components/parameters/idOrUUID'
1925 description: successful operation
1927 summary: Unblock a video by its id
1935 - $ref: '#/components/parameters/idOrUUID'
1938 description: successful operation
1940 description: block not found
1945 summary: List video blocks
1954 list only blocks that match this type:
1958 - `2`: automatic block that needs review
1966 description: plain search that will match with video titles, and more
1969 - $ref: '#/components/parameters/start'
1970 - $ref: '#/components/parameters/count'
1971 - $ref: '#/components/parameters/blacklistsSort'
1974 description: successful operation
1986 $ref: '#/components/schemas/VideoBlacklist'
1987 /videos/{id}/captions:
1989 summary: List captions of a video
1993 - $ref: '#/components/parameters/idOrUUID'
1996 description: successful operation
2008 $ref: '#/components/schemas/VideoCaption'
2009 /videos/{id}/captions/{captionLanguage}:
2011 summary: Add or replace a video caption
2018 - $ref: '#/components/parameters/idOrUUID'
2019 - $ref: '#/components/parameters/captionLanguage'
2022 multipart/form-data:
2027 description: The file to upload.
2032 contentType: text/vtt, application/x-subrip, text/plain
2035 description: successful operation
2037 description: video or language not found
2039 summary: Delete a video caption
2046 - $ref: '#/components/parameters/idOrUUID'
2047 - $ref: '#/components/parameters/captionLanguage'
2050 description: successful operation
2052 description: video or language or caption for that language not found
2055 summary: List video channels
2059 - $ref: '#/components/parameters/start'
2060 - $ref: '#/components/parameters/count'
2061 - $ref: '#/components/parameters/sort'
2064 description: successful operation
2076 $ref: '#/components/schemas/VideoChannel'
2078 summary: Create a video channel
2085 description: successful operation
2090 $ref: '#/components/schemas/VideoChannelCreate'
2091 '/video-channels/{channelHandle}':
2093 summary: Get a video channel
2097 - $ref: '#/components/parameters/channelHandle'
2100 description: successful operation
2104 $ref: '#/components/schemas/VideoChannel'
2106 summary: Update a video channel
2112 - $ref: '#/components/parameters/channelHandle'
2115 description: successful operation
2120 $ref: '#/components/schemas/VideoChannelUpdate'
2122 summary: Delete a video channel
2128 - $ref: '#/components/parameters/channelHandle'
2131 description: successful operation
2132 '/video-channels/{channelHandle}/videos':
2134 summary: List videos of a video channel
2139 - $ref: '#/components/parameters/channelHandle'
2140 - $ref: '#/components/parameters/categoryOneOf'
2141 - $ref: '#/components/parameters/tagsOneOf'
2142 - $ref: '#/components/parameters/tagsAllOf'
2143 - $ref: '#/components/parameters/licenceOneOf'
2144 - $ref: '#/components/parameters/languageOneOf'
2145 - $ref: '#/components/parameters/nsfw'
2146 - $ref: '#/components/parameters/filter'
2147 - $ref: '#/components/parameters/skipCount'
2148 - $ref: '#/components/parameters/start'
2149 - $ref: '#/components/parameters/count'
2150 - $ref: '#/components/parameters/videosSort'
2153 description: successful operation
2157 $ref: '#/components/schemas/VideoListResponse'
2159 /video-playlists/privacies:
2161 summary: List available playlist privacies
2166 description: successful operation
2175 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2179 summary: List video playlists
2183 - $ref: '#/components/parameters/start'
2184 - $ref: '#/components/parameters/count'
2185 - $ref: '#/components/parameters/sort'
2188 description: successful operation
2200 $ref: '#/components/schemas/VideoPlaylist'
2202 summary: Create a video playlist
2203 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2210 description: successful operation
2225 multipart/form-data:
2230 description: Video playlist display name
2233 description: Video playlist thumbnail file
2237 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2239 description: Video playlist description
2242 description: Video channel in which the playlist will be published
2248 contentType: image/jpeg
2250 /video-playlists/{id}:
2252 summary: Get a video playlist
2256 - $ref: '#/components/parameters/idOrUUID'
2259 description: successful operation
2263 $ref: '#/components/schemas/VideoPlaylist'
2265 summary: Update a video playlist
2266 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2273 description: successful operation
2275 - $ref: '#/components/parameters/idOrUUID'
2278 multipart/form-data:
2283 description: Video playlist display name
2286 description: Video playlist thumbnail file
2290 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2292 description: Video playlist description
2295 description: Video channel in which the playlist will be published
2299 contentType: image/jpeg
2301 summary: Delete a video playlist
2307 - $ref: '#/components/parameters/idOrUUID'
2310 description: successful operation
2312 /video-playlists/{id}/videos:
2314 summary: 'List videos of a playlist'
2319 - $ref: '#/components/parameters/idOrUUID'
2322 description: successful operation
2326 $ref: '#/components/schemas/VideoListResponse'
2328 summary: 'Add a video in a playlist'
2335 - $ref: '#/components/parameters/idOrUUID'
2338 description: successful operation
2344 videoPlaylistElement:
2357 description: 'Video to add in the playlist'
2360 description: 'Start the video at this specific timestamp (in seconds)'
2363 description: 'Stop the video at this specific timestamp (in seconds)'
2367 /video-playlists/{id}/videos/reorder:
2369 summary: 'Reorder a playlist'
2375 - $ref: '#/components/parameters/idOrUUID'
2378 description: successful operation
2387 description: 'Start position of the element to reorder'
2389 insertAfterPosition:
2391 description: 'New position for the block to reorder, to add the block before the first element'
2395 description: 'How many element from `startPosition` to reorder'
2399 - insertAfterPosition
2401 /video-playlists/{id}/videos/{playlistElementId}:
2403 summary: 'Update a playlist element'
2409 - $ref: '#/components/parameters/idOrUUID'
2410 - $ref: '#/components/parameters/playlistElementId'
2413 description: successful operation
2422 description: 'Start the video at this specific timestamp (in seconds)'
2425 description: 'Stop the video at this specific timestamp (in seconds)'
2427 summary: 'Delete an element from a playlist'
2433 - $ref: '#/components/parameters/idOrUUID'
2434 - $ref: '#/components/parameters/playlistElementId'
2437 description: successful operation
2439 '/users/me/video-playlists/videos-exist':
2441 summary: 'Check video exists in my playlists'
2450 description: The video ids to check
2457 description: successful operation
2477 '/accounts/{name}/video-channels':
2479 summary: List video channels of an account
2484 - $ref: '#/components/parameters/name'
2487 description: include view statistics for the last 30 days (only if authentified as the account user)
2490 - $ref: '#/components/parameters/start'
2491 - $ref: '#/components/parameters/count'
2492 - $ref: '#/components/parameters/sort'
2495 description: successful operation
2501 $ref: '#/components/schemas/VideoChannel'
2502 '/accounts/{name}/ratings':
2504 summary: List ratings of an account
2510 - $ref: '#/components/parameters/name'
2511 - $ref: '#/components/parameters/start'
2512 - $ref: '#/components/parameters/count'
2513 - $ref: '#/components/parameters/sort'
2517 description: Optionally filter which ratings to retrieve
2525 description: successful operation
2531 $ref: '#/components/schemas/VideoRating'
2532 '/videos/{id}/comment-threads':
2534 summary: List threads of a video
2538 - $ref: '#/components/parameters/idOrUUID'
2539 - $ref: '#/components/parameters/start'
2540 - $ref: '#/components/parameters/count'
2541 - $ref: '#/components/parameters/commentsSort'
2544 description: successful operation
2548 $ref: '#/components/schemas/CommentThreadResponse'
2550 summary: Create a thread
2556 - $ref: '#/components/parameters/idOrUUID'
2559 description: successful operation
2563 $ref: '#/components/schemas/CommentThreadPostResponse'
2565 description: video does not exist
2574 description: 'Text comment'
2578 '/videos/{id}/comment-threads/{threadId}':
2580 summary: Get a thread
2584 - $ref: '#/components/parameters/idOrUUID'
2585 - $ref: '#/components/parameters/threadId'
2588 description: successful operation
2592 $ref: '#/components/schemas/VideoCommentThreadTree'
2593 '/videos/{id}/comments/{commentId}':
2595 summary: Reply to a thread of a video
2601 - $ref: '#/components/parameters/idOrUUID'
2602 - $ref: '#/components/parameters/commentId'
2605 description: successful operation
2609 $ref: '#/components/schemas/CommentThreadPostResponse'
2611 description: thread or video does not exist
2620 description: 'Text comment'
2625 summary: Delete a comment or a reply
2631 - $ref: '#/components/parameters/idOrUUID'
2632 - $ref: '#/components/parameters/commentId'
2635 description: successful operation
2637 description: cannot remove comment of another user
2639 description: comment or video does not exist
2641 description: comment is already deleted
2642 '/videos/{id}/rate':
2644 summary: Like/dislike a video
2650 - $ref: '#/components/parameters/idOrUUID'
2653 description: successful operation
2655 description: video does not exist
2660 summary: Search videos
2665 allowEmptyValue: false
2667 String to search. If the user can make a remote URI search, and the string is an URI then the
2668 PeerTube instance will fetch the remote object and add it to its database. Then,
2669 you can use the REST API to fetch the complete video information and interact with it.
2672 - $ref: '#/components/parameters/categoryOneOf'
2673 - $ref: '#/components/parameters/tagsOneOf'
2674 - $ref: '#/components/parameters/tagsAllOf'
2675 - $ref: '#/components/parameters/licenceOneOf'
2676 - $ref: '#/components/parameters/languageOneOf'
2677 - $ref: '#/components/parameters/nsfw'
2678 - $ref: '#/components/parameters/filter'
2679 - $ref: '#/components/parameters/skipCount'
2680 - $ref: '#/components/parameters/start'
2681 - $ref: '#/components/parameters/count'
2682 - $ref: '#/components/parameters/searchTarget'
2683 - $ref: '#/components/parameters/videosSearchSort'
2686 description: Get videos that are published after this date
2692 description: Get videos that are published before this date
2696 - name: originallyPublishedStartDate
2698 description: Get videos that are originally published after this date
2702 - name: originallyPublishedEndDate
2704 description: Get videos that are originally published before this date
2710 description: Get videos that have this minimum duration
2715 description: Get videos that have this maximum duration
2719 'searchTarget === search-index':
2720 $ref: '#/components/callbacks/searchIndex'
2723 description: successful operation
2727 $ref: '#/components/schemas/VideoListResponse'
2729 description: search index unavailable
2730 /search/video-channels:
2734 summary: Search channels
2740 String to search. If the user can make a remote URI search, and the string is an URI then the
2741 PeerTube instance will fetch the remote object and add it to its database. Then,
2742 you can use the REST API to fetch the complete channel information and interact with it.
2745 - $ref: '#/components/parameters/start'
2746 - $ref: '#/components/parameters/count'
2747 - $ref: '#/components/parameters/searchTarget'
2748 - $ref: '#/components/parameters/sort'
2750 'searchTarget === search-index':
2751 $ref: '#/components/callbacks/searchIndex'
2754 description: successful operation
2760 $ref: '#/components/schemas/VideoChannel'
2762 description: search index unavailable
2763 /blocklist/accounts:
2767 summary: List account blocks
2772 - $ref: '#/components/parameters/start'
2773 - $ref: '#/components/parameters/count'
2774 - $ref: '#/components/parameters/sort'
2777 description: successful operation
2781 summary: Block an account
2793 example: chocobozzz@example.org
2794 description: account to block, in the form `username@domain`
2799 description: successful operation
2801 description: self-blocking forbidden
2802 '/blocklist/accounts/{accountName}':
2806 summary: Unblock an account by its handle
2814 description: account to unblock, in the form `username@domain`
2819 description: successful operation
2821 description: account or account block does not exist
2826 summary: List server blocks
2831 - $ref: '#/components/parameters/start'
2832 - $ref: '#/components/parameters/count'
2833 - $ref: '#/components/parameters/sort'
2836 description: successful operation
2840 summary: Block a server
2853 description: server domain to block
2858 description: successful operation
2860 description: self-blocking forbidden
2861 '/blocklist/servers/{host}':
2865 summary: Unblock a server by its domain
2873 description: server domain to unblock
2879 description: successful operation
2881 description: account block does not exist
2885 - Instance Redundancy
2886 summary: Update a server redundancy policy
2894 description: server domain to mirror
2906 description: allow mirroring of the host's local videos
2911 description: successful operation
2913 description: server is not already known
2918 summary: List videos being mirrored
2926 description: direction of the mirror
2932 - $ref: '#/components/parameters/start'
2933 - $ref: '#/components/parameters/count'
2934 - $ref: '#/components/parameters/videoRedundanciesSort'
2937 description: successful operation
2943 $ref: '#/components/schemas/VideoRedundancy'
2947 summary: Mirror a video
2963 description: successful operation
2965 description: cannot mirror a local video
2967 description: video does not exist
2969 description: video is already mirrored
2970 /redundancy/videos/{redundancyId}:
2974 summary: Delete a mirror done on a video
2979 - name: redundancyId
2982 description: id of an existing redundancy on a video
2987 description: successful operation
2989 description: video redundancy not found
2990 '/feeds/video-comments.{format}':
2994 summary: List comments on videos
2996 - url: 'https://peertube2.cpy.re'
2997 description: Live Test Server (live data - latest nightly version)
2998 - url: 'https://peertube3.cpy.re'
2999 description: Live Test Server (live data - latest RC version)
3000 - url: 'https://peertube.cpy.re'
3001 description: Live Test Server (live data - stable version)
3006 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3019 description: 'limit listing to a specific video'
3024 description: 'limit listing to a specific account'
3029 description: 'limit listing to a specific account'
3032 - name: videoChannelId
3034 description: 'limit listing to a specific video channel'
3037 - name: videoChannelName
3039 description: 'limit listing to a specific video channel'
3044 description: successful operation
3049 default: 'max-age=900' # 15 min cache
3053 $ref: '#/components/schemas/VideoCommentsForXML'
3054 application/rss+xml:
3056 $ref: '#/components/schemas/VideoCommentsForXML'
3059 $ref: '#/components/schemas/VideoCommentsForXML'
3060 application/atom+xml:
3062 $ref: '#/components/schemas/VideoCommentsForXML'
3067 x-summary: field inconsistencies
3070 - videoId filter is mixed with a channel filter
3072 description: video, video channel or account not found
3074 description: accept header unsupported
3075 '/feeds/videos.{format}':
3079 summary: List videos
3081 - url: 'https://peertube2.cpy.re'
3082 description: Live Test Server (live data - latest nightly version)
3083 - url: 'https://peertube3.cpy.re'
3084 description: Live Test Server (live data - latest RC version)
3085 - url: 'https://peertube.cpy.re'
3086 description: Live Test Server (live data - stable version)
3091 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3104 description: 'limit listing to a specific account'
3109 description: 'limit listing to a specific account'
3112 - name: videoChannelId
3114 description: 'limit listing to a specific video channel'
3117 - name: videoChannelName
3119 description: 'limit listing to a specific video channel'
3122 - $ref: '#/components/parameters/sort'
3123 - $ref: '#/components/parameters/nsfw'
3124 - $ref: '#/components/parameters/filter'
3127 description: successful operation
3132 default: 'max-age=900' # 15 min cache
3136 $ref: '#/components/schemas/VideosForXML'
3139 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3140 application/rss+xml:
3142 $ref: '#/components/schemas/VideosForXML'
3145 $ref: '#/components/schemas/VideosForXML'
3146 application/atom+xml:
3148 $ref: '#/components/schemas/VideosForXML'
3153 description: video channel or account not found
3155 description: accept header unsupported
3160 summary: List plugins
3173 - $ref: '#/components/parameters/start'
3174 - $ref: '#/components/parameters/count'
3175 - $ref: '#/components/parameters/sort'
3178 description: successful operation
3182 $ref: '#/components/schemas/PluginResponse'
3187 summary: List available plugins
3200 - name: currentPeerTubeEngine
3204 - $ref: '#/components/parameters/start'
3205 - $ref: '#/components/parameters/count'
3206 - $ref: '#/components/parameters/sort'
3209 description: successful operation
3213 $ref: '#/components/schemas/PluginResponse'
3215 description: plugin index unavailable
3220 summary: Install a plugin
3233 example: peertube-plugin-auth-ldap
3236 additionalProperties: false
3243 additionalProperties: false
3246 description: successful operation
3248 description: should have either `npmName` or `path` set
3253 summary: Update a plugin
3266 example: peertube-plugin-auth-ldap
3269 additionalProperties: false
3276 additionalProperties: false
3279 description: successful operation
3281 description: should have either `npmName` or `path` set
3283 description: existing plugin not found
3288 summary: Uninstall a plugin
3300 description: name of the plugin/theme in its package.json
3301 example: peertube-plugin-auth-ldap
3306 description: successful operation
3308 description: existing plugin not found
3313 summary: Get a plugin
3318 - $ref: '#/components/parameters/npmName'
3321 description: successful operation
3325 $ref: '#/components/schemas/Plugin'
3327 description: plugin not found
3328 /plugins/{npmName}/settings:
3332 summary: Set a plugin's settings
3337 - $ref: '#/components/parameters/npmName'
3346 additionalProperties: true
3349 description: successful operation
3351 description: plugin not found
3352 /plugins/{npmName}/public-settings:
3356 summary: Get a plugin's public settings
3358 - $ref: '#/components/parameters/npmName'
3361 description: successful operation
3366 additionalProperties: true
3368 description: plugin not found
3369 /plugins/{npmName}/registered-settings:
3373 summary: Get a plugin's registered settings
3378 - $ref: '#/components/parameters/npmName'
3381 description: successful operation
3386 additionalProperties: true
3388 description: plugin not found
3390 - url: 'https://peertube2.cpy.re/api/v1'
3391 description: Live Test Server (live data - latest nightly version)
3392 - url: 'https://peertube3.cpy.re/api/v1'
3393 description: Live Test Server (live data - latest RC version)
3394 - url: 'https://peertube.cpy.re/api/v1'
3395 description: Live Test Server (live data - stable version)
3402 description: Offset used to paginate results
3410 description: "Number of items to return"
3420 description: Sort column
3428 description: Plain text search, applied to various parts of the model depending on endpoint
3436 If the administrator enabled search index support, you can override the default search target.
3439 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3440 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3441 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3442 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3443 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3444 * 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
3445 the data from the origin instance API
3455 description: Sort videos by criteria
3470 description: Sort videos by criteria
3485 description: Sort comments by criteria
3495 description: Sort blacklists by criteria
3511 description: Plain text search that will match with user usernames or emails
3518 description: Filter results down to (un)banned users
3525 description: Sort users by criteria
3536 description: Sort abuses by criteria
3543 videoRedundanciesSort:
3547 description: Sort abuses by criteria
3556 description: The name of the account
3559 example: chocobozzz | chocobozzz@example.org
3564 description: The user id
3573 description: The object id or uuid
3581 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3583 name: playlistElementId
3586 description: Playlist element id
3593 description: Abuse id
3597 name: abuseMessageId
3600 description: Abuse message id
3604 name: captionLanguage
3607 description: The caption language
3614 description: The video channel handle
3617 example: my_username | my_username@example.com
3619 name: subscriptionHandle
3622 description: The subscription handle
3625 example: my_username | my_username@example.com
3630 description: The thread id (root comment id)
3637 description: The comment id
3644 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3657 description: tag(s) of the video
3670 description: tag(s) of the video, where all should be present in the video
3683 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
3696 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3709 description: if you don't need the `total` in the response
3720 description: whether to include nsfw videos, if any
3731 Special filters which might require special rights:
3732 * `local` - only videos local to the instance
3733 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3734 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
3744 description: list of uris to check if each is part of the user subscriptions
3754 description: name of the plugin/theme on npmjs.com or in its package.json
3757 example: peertube-plugin-auth-ldap
3761 In the header: *Authorization: Bearer <token\>*
3764 Authenticating via OAuth requires the following steps:
3767 - Have an account with sufficient authorization levels
3769 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3772 - Make Authenticated Requests
3776 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3779 moderator: Moderator scope
3782 VideoConstantNumber:
3788 VideoConstantString:
3795 VideoPlaylistPrivacySet:
3801 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3802 VideoPlaylistPrivacyConstant:
3805 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3809 VideoPlaylistTypeSet:
3814 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3815 VideoPlaylistTypeConstant:
3818 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3829 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3830 VideoPrivacyConstant:
3833 $ref: '#/components/schemas/VideoPrivacySet'
3850 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3861 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3871 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3875 $ref: '#/components/schemas/AbuseStateSet'
3878 AbusePredefinedReasons:
3891 example: [spamOrMisleading]
3893 VideoResolutionConstant:
3897 description: 'Video resolution (240, 360, 720 ...)'
3902 VideoScheduledUpdate:
3905 $ref: '#/components/schemas/VideoPrivacySet'
3909 description: When to update the video
3929 - $ref: '#/components/schemas/Avatar'
3930 VideoChannelSummary:
3947 - $ref: '#/components/schemas/Avatar'
3959 - $ref: '#/components/schemas/Video'
3965 $ref: '#/components/schemas/VideoResolutionConstant'
3968 description: 'Video file size in bytes'
3986 VideoStreamingPlaylists:
3994 description: 'Playlist type (HLS = `1`)'
4003 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)'
4005 $ref: '#/components/schemas/VideoFile'
4021 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4032 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4044 originallyPublishedAt:
4048 $ref: '#/components/schemas/VideoConstantNumber'
4050 $ref: '#/components/schemas/VideoConstantNumber'
4052 $ref: '#/components/schemas/VideoConstantString'
4054 $ref: '#/components/schemas/VideoPrivacyConstant'
4064 example: What is PeerTube?
4067 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4070 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4073 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4089 $ref: '#/components/schemas/VideoStateConstant'
4093 - $ref: '#/components/schemas/VideoScheduledUpdate'
4101 $ref: '#/components/schemas/AccountSummary'
4103 $ref: '#/components/schemas/VideoChannelSummary'
4112 - $ref: '#/components/schemas/Video'
4119 description: A text tell the audience how to support the video creator
4120 example: Please support my work on <insert crowdfunding plateform>! <3
4122 $ref: '#/components/schemas/VideoChannel'
4124 $ref: '#/components/schemas/Account'
4129 example: [flowers, gardening]
4132 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'
4134 $ref: '#/components/schemas/VideoFile'
4147 $ref: '#/components/schemas/VideoStreamingPlaylists'
4148 FileRedundancyInformation:
4185 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4192 $ref: '#/components/schemas/FileRedundancyInformation'
4196 $ref: '#/components/schemas/FileRedundancyInformation'
4197 VideoImportStateConstant:
4205 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4217 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4221 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
4225 $ref: '#/components/schemas/VideoImportStateConstant'
4235 $ref: '#/components/schemas/Video'
4243 example: The video is a spam
4245 $ref: '#/components/schemas/AbusePredefinedReasons'
4247 $ref: '#/components/schemas/Account'
4249 $ref: '#/components/schemas/AbuseStateConstant'
4252 example: Decided to ban the server since it spams us regularly
4263 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4279 $ref: '#/components/schemas/AccountSummary'
4297 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4326 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4342 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4352 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4354 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4356 $ref: '#/components/schemas/AccountSummary'
4358 $ref: '#/components/schemas/VideoChannelSummary'
4380 totalRepliesFromVideoAuthor:
4385 $ref: '#/components/schemas/Account'
4386 VideoCommentThreadTree:
4389 $ref: '#/components/schemas/VideoComment'
4393 $ref: '#/components/schemas/VideoCommentThreadTree'
4397 $ref: '#/components/schemas/VideoConstantString'
4452 $ref: '#/components/schemas/Avatar'
4455 - $ref: '#/components/schemas/Actor'
4468 description: timestamp within the video, in seconds
4535 allowedForCurrentIP:
4537 requiresEmailVerification:
4741 requiresEmailVerification:
4766 allowAdditionalExtensions:
4834 $ref: '#/components/schemas/Actor'
4836 $ref: '#/components/schemas/Actor'
4839 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4852 PredefinedAbuseReasons:
4853 description: Reason categories that help triage reports
4884 - activitypub-http-unicast
4885 - activitypub-http-broadcast
4886 - activitypub-http-fetcher
4887 - activitypub-follow
4893 - activitypub-refresher
4897 additionalProperties: true
4900 additionalProperties: true
4924 VideoUploadResponse:
4935 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4936 CommentThreadResponse:
4945 $ref: '#/components/schemas/VideoComment'
4946 CommentThreadPostResponse:
4949 $ref: '#/components/schemas/VideoComment'
4959 $ref: '#/components/schemas/Video'
4967 description: The user username
4973 description: The user email
4976 description: Theme enabled by this user
4979 description: Has the user confirmed their email address?
4981 $ref: '#/components/schemas/NSFWPolicy'
4984 description: Enable P2P in the player
4987 description: Automatically start playing the video on the watch page
4989 $ref: '#/components/schemas/UserRole'
4998 description: The user video quota
5001 description: The user daily video quota
5006 abusesAcceptedCount:
5012 noInstanceConfigWarningModal:
5023 $ref: '#/components/schemas/Account'
5027 $ref: '#/components/schemas/VideoChannel'
5032 description: The user username
5038 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5044 description: The user email
5047 description: The user video quota
5050 description: The user daily video quota
5052 $ref: '#/components/schemas/UserRole'
5064 description: The user id
5068 description: The updated email of the user
5071 description: The updated video quota of the user
5074 description: The updated daily video quota of the user
5076 $ref: '#/components/schemas/UserRole'
5088 description: Your new password
5094 description: Your new email
5097 description: Your new displayNSFW
5104 description: Your new autoPlayVideo
5114 description: Id of the video
5117 description: Rating of the video
5124 $ref: '#/components/schemas/Video'
5127 description: 'Rating of the video'
5135 description: The username of the user
5138 pattern: '/^[a-z0-9._]{1,50}$/'
5142 description: The password of the user
5148 description: The email of the user
5151 description: The user display name
5159 description: The name for the default channel
5160 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5163 description: The display name for the default channel
5180 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5181 example: Please support my work on <insert crowdfunding plateform>! <3
5193 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5194 example: Please support my work on <insert crowdfunding plateform>! <3
5195 bulkVideosSupportUpdate:
5197 description: 'Update the support field for all videos of this channel'
5202 name: 'media:peerLink'
5211 - application/x-bittorrent
5217 name: 'media:content'
5248 VideoCommentsForXML:
5283 description: video watch page URL
5286 description: video canonical URL
5290 description: video publication date
5293 description: video description
5296 description: video description
5299 description: publisher user name
5302 description: video category (MRSS)
5305 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5320 description: video embed path, relative to the canonical URL domain (MRSS)
5329 description: video watch path, relative to the canonical URL domain (MRSS)
5350 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5351 'media:description':
5358 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5361 description: main streamable file for the video
5371 - application/x-bittorrent
5380 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)
5383 - $ref: '#/components/schemas/MRSSPeerLink'
5384 - $ref: '#/components/schemas/MRSSGroupContent'
5385 NotificationSettingValue:
5406 Notification type, following the `UserNotificationType` enum:
5408 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5410 - `2` NEW_COMMENT_ON_MY_VIDEO
5412 - `3` NEW_ABUSE_FOR_MODERATORS
5414 - `4` BLACKLIST_ON_MY_VIDEO
5416 - `5` UNBLACKLIST_ON_MY_VIDEO
5418 - `6` MY_VIDEO_PUBLISHED
5420 - `7` MY_VIDEO_IMPORT_SUCCESS
5422 - `8` MY_VIDEO_IMPORT_ERROR
5424 - `9` NEW_USER_REGISTRATION
5428 - `11` COMMENT_MENTION
5430 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5432 - `13` NEW_INSTANCE_FOLLOWER
5434 - `14` AUTO_INSTANCE_FOLLOWING
5440 - $ref: '#/components/schemas/VideoInfo'
5444 $ref: '#/components/schemas/ActorInfo'
5453 $ref: '#/components/schemas/VideoInfo'
5474 $ref: '#/components/schemas/VideoInfo'
5476 $ref: '#/components/schemas/ActorInfo'
5485 - $ref: '#/components/schemas/VideoInfo'
5494 - $ref: '#/components/schemas/VideoInfo'
5498 - $ref: '#/components/schemas/ActorInfo'
5506 $ref: '#/components/schemas/ActorInfo'
5534 NotificationListResponse:
5543 $ref: '#/components/schemas/Notification'
5548 example: peertube-plugin-auth-ldap
5576 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5579 additionalProperties: true
5595 $ref: '#/components/schemas/Plugin'
5608 description: RTMP stream key to use to stream into this live video
5614 'https://search.example.org/api/v1/search/videos':
5616 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5619 description: successful operation
5623 $ref: '#/components/schemas/VideoListResponse'