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'
976 description: image file too large
982 description: Maximum file size for the avatar
990 description: The file to upload.
995 contentType: image/png, image/jpeg
998 summary: List video ownership changes
1000 - Video Ownership Change
1005 description: successful operation
1006 '/videos/ownership/{id}/accept':
1008 summary: Accept ownership change request
1010 - Video Ownership Change
1014 - $ref: '#/components/parameters/idOrUUID'
1017 description: successful operation
1019 description: cannot terminate an ownership change of another user
1021 description: video owneship change not found
1022 '/videos/ownership/{id}/refuse':
1024 summary: Refuse ownership change request
1026 - Video Ownership Change
1030 - $ref: '#/components/parameters/idOrUUID'
1033 description: successful operation
1035 description: cannot terminate an ownership change of another user
1037 description: video owneship change not found
1038 '/videos/{id}/give-ownership':
1040 summary: Request ownership change
1042 - Video Ownership Change
1046 - $ref: '#/components/parameters/idOrUUID'
1050 application/x-www-form-urlencoded:
1060 description: successful operation
1062 description: changing video ownership to a remote account is not supported yet
1064 description: video not found
1067 summary: List videos
1071 - $ref: '#/components/parameters/categoryOneOf'
1072 - $ref: '#/components/parameters/tagsOneOf'
1073 - $ref: '#/components/parameters/tagsAllOf'
1074 - $ref: '#/components/parameters/licenceOneOf'
1075 - $ref: '#/components/parameters/languageOneOf'
1076 - $ref: '#/components/parameters/nsfw'
1077 - $ref: '#/components/parameters/filter'
1078 - $ref: '#/components/parameters/skipCount'
1079 - $ref: '#/components/parameters/start'
1080 - $ref: '#/components/parameters/count'
1081 - $ref: '#/components/parameters/videosSort'
1084 description: successful operation
1088 $ref: '#/components/schemas/VideoListResponse'
1091 summary: List available video categories
1096 description: successful operation
1105 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1108 summary: List available video licences
1113 description: successful operation
1122 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1125 summary: List available video languages
1130 description: successful operation
1139 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1142 summary: List available video privacies
1147 description: successful operation
1156 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1159 summary: Update a video
1165 - $ref: '#/components/parameters/idOrUUID'
1168 description: successful operation
1171 multipart/form-data:
1176 description: Video thumbnail file
1180 description: Video preview file
1184 description: Video category
1188 description: Video licence
1192 description: Video language
1195 $ref: '#/components/schemas/VideoPrivacySet'
1197 description: Video description
1200 description: Whether or not we wait transcoding before publish the video
1203 description: A text tell the audience how to support the video creator
1204 example: Please support my work on <insert crowdfunding plateform>! <3
1207 description: Whether or not this video contains sensitive content
1210 description: Video name
1213 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1222 description: Enable or disable comments for this video
1224 originallyPublishedAt:
1225 description: Date when the content was originally published
1229 $ref: '#/components/schemas/VideoScheduledUpdate'
1232 contentType: image/jpeg
1234 contentType: image/jpeg
1236 summary: Get a video
1240 - $ref: '#/components/parameters/idOrUUID'
1243 description: successful operation
1247 $ref: '#/components/schemas/VideoDetails'
1249 summary: Delete a video
1255 - $ref: '#/components/parameters/idOrUUID'
1258 description: successful operation
1259 '/videos/{id}/description':
1261 summary: Get complete video description
1265 - $ref: '#/components/parameters/idOrUUID'
1268 description: successful operation
1273 '/videos/{id}/views':
1275 summary: Add a view to a video
1279 - $ref: '#/components/parameters/idOrUUID'
1282 description: successful operation
1283 '/videos/{id}/watching':
1285 summary: Set watching progress of a video
1291 - $ref: '#/components/parameters/idOrUUID'
1296 $ref: '#/components/schemas/UserWatchingVideo'
1300 description: successful operation
1303 summary: Upload a video
1310 description: successful operation
1314 $ref: '#/components/schemas/VideoUploadResponse'
1316 description: user video quota is exceeded with this video
1318 description: upload has timed out
1320 description: video file too large
1322 X-File-Maximum-Size:
1326 description: Maximum file size for the video
1328 description: invalid input file
1331 multipart/form-data:
1336 description: Video file
1340 description: Channel id that will contain this video
1343 description: Video thumbnail file
1347 description: Video preview file
1351 $ref: '#/components/schemas/VideoPrivacySet'
1353 description: Video category
1357 description: Video licence
1360 description: Video language
1364 description: Video description
1367 description: Whether or not we wait transcoding before publish the video
1370 description: A text tell the audience how to support the video creator
1371 example: Please support my work on <insert crowdfunding plateform>! <3
1374 description: Whether or not this video contains sensitive content
1377 description: Video name
1380 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1390 description: Enable or disable comments for this video
1393 description: Enable or disable downloading for this video
1395 originallyPublishedAt:
1396 description: Date when the content was originally published
1400 $ref: '#/components/schemas/VideoScheduledUpdate'
1407 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1409 contentType: image/jpeg
1411 contentType: image/jpeg
1416 USERNAME="<your_username>"
1417 PASSWORD="<your_password>"
1418 FILE_PATH="<your_file_path>"
1419 CHANNEL_ID="<your_channel_id>"
1422 API_PATH="https://peertube2.cpy.re/api/v1"
1424 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1425 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1426 token=$(curl -s "$API_PATH/users/token" \
1427 --data client_id="$client_id" \
1428 --data client_secret="$client_secret" \
1429 --data grant_type=password \
1430 --data response_type=code \
1431 --data username="$USERNAME" \
1432 --data password="$PASSWORD" \
1433 | jq -r ".access_token")
1435 curl -s "$API_PATH/videos/upload" \
1436 -H "Authorization: Bearer $token" \
1438 --form videofile=@"$FILE_PATH" \
1439 --form channelId=$CHANNEL_ID \
1443 summary: Import a video
1444 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1451 multipart/form-data:
1456 description: Torrent File
1460 description: HTTP target URL
1463 description: Magnet URI
1466 description: Channel id that will contain this video
1469 description: Video thumbnail file
1473 description: Video preview file
1477 $ref: '#/components/schemas/VideoPrivacySet'
1479 description: Video category
1482 description: Video licence
1485 description: Video language
1488 description: Video description
1491 description: Whether or not we wait transcoding before publish the video
1494 description: A text tell the audience how to support the video creator
1495 example: Please support my work on <insert crowdfunding plateform>! <3
1498 description: Whether or not this video contains sensitive content
1501 description: Video name
1504 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1513 description: Enable or disable comments for this video
1516 description: Enable or disable downloading for this video
1519 $ref: '#/components/schemas/VideoScheduledUpdate'
1525 contentType: application/x-bittorrent
1527 contentType: image/jpeg
1529 contentType: image/jpeg
1532 description: successful operation
1536 $ref: '#/components/schemas/VideoUploadResponse'
1538 description: HTTP or Torrent/magnetURI import not enabled
1540 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1544 summary: Create a live
1552 description: successful operation
1556 $ref: '#/components/schemas/VideoUploadResponse'
1558 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1561 multipart/form-data:
1566 description: Channel id that will contain this live video
1571 description: User can stream multiple times in a permanent live
1574 description: Live video/replay thumbnail file
1578 description: Live video/replay preview file
1582 $ref: '#/components/schemas/VideoPrivacySet'
1584 description: Live video/replay category
1587 description: Live video/replay licence
1590 description: Live video/replay language
1593 description: Live video/replay description
1596 description: A text tell the audience how to support the creator
1597 example: Please support my work on <insert crowdfunding plateform>! <3
1600 description: Whether or not this live video/replay contains sensitive content
1603 description: Live video/replay name
1606 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1615 description: Enable or disable comments for this live video/replay
1618 description: Enable or disable downloading for the replay of this live
1625 contentType: image/jpeg
1627 contentType: image/jpeg
1631 summary: Get a live information
1638 - $ref: '#/components/parameters/idOrUUID'
1641 description: successful operation
1645 $ref: '#/components/schemas/LiveVideoResponse'
1647 summary: Update a live information
1654 - $ref: '#/components/parameters/idOrUUID'
1659 $ref: '#/components/schemas/LiveVideoUpdate'
1662 description: Successful operation
1664 description: Bad parameters or trying to update a live that has already started
1666 description: Trying to save replay of the live but saving replay is not enabled on the instance
1670 summary: List my abuses
1679 description: only list the report with this id
1685 $ref: '#/components/schemas/AbuseStateSet'
1686 - $ref: '#/components/parameters/start'
1687 - $ref: '#/components/parameters/count'
1688 - $ref: '#/components/parameters/abusesSort'
1691 description: successful operation
1697 $ref: '#/components/schemas/Abuse'
1701 summary: List abuses
1711 description: only list the report with this id
1714 - name: predefinedReason
1716 description: predefined reason the listed reports should contain
1718 $ref: '#/components/schemas/PredefinedAbuseReasons'
1721 description: plain search that will match with video titles, reporter names and more
1727 $ref: '#/components/schemas/AbuseStateSet'
1728 - name: searchReporter
1730 description: only list reports of a specific reporter
1733 - name: searchReportee
1734 description: only list reports of a specific reportee
1740 description: only list reports of a specific video
1743 - name: searchVideoChannel
1745 description: only list reports of a specific video channel
1750 description: only list blacklisted or deleted videos
1758 description: only list account, comment or video reports
1765 - $ref: '#/components/parameters/start'
1766 - $ref: '#/components/parameters/count'
1767 - $ref: '#/components/parameters/abusesSort'
1770 description: successful operation
1776 $ref: '#/components/schemas/Abuse'
1779 summary: Report an abuse
1792 description: Reason why the user reports this video
1796 $ref: '#/components/schemas/PredefinedAbuseReasons'
1802 description: Video id to report
1806 description: Timestamp in the video that marks the beginning of the report
1810 description: Timestamp in the video that marks the ending of the report
1816 description: Comment id to report
1822 description: Account id to report
1828 description: successful operation
1830 description: incorrect request parameters
1831 '/abuses/{abuseId}':
1833 summary: Update an abuse
1841 - $ref: '#/components/parameters/abuseId'
1849 $ref: '#/components/schemas/AbuseStateSet'
1852 description: Update the report comment visible only to the moderation team
1855 description: successful operation
1857 description: abuse not found
1861 summary: Delete an abuse
1867 - $ref: '#/components/parameters/abuseId'
1870 description: successful operation
1872 description: block not found
1873 '/abuses/{abuseId}/messages':
1875 summary: List messages of an abuse
1881 - $ref: '#/components/parameters/abuseId'
1884 description: successful operation
1890 $ref: '#/components/schemas/AbuseMessage'
1893 summary: Add message to an abuse
1899 - $ref: '#/components/parameters/abuseId'
1908 description: Message to send
1914 description: successful operation
1916 description: incorrect request parameters
1917 '/abuses/{abuseId}/messages/{abuseMessageId}':
1919 summary: Delete an abuse message
1925 - $ref: '#/components/parameters/abuseId'
1926 - $ref: '#/components/parameters/abuseMessageId'
1929 description: successful operation
1931 '/videos/{id}/blacklist':
1933 summary: Block a video
1941 - $ref: '#/components/parameters/idOrUUID'
1944 description: successful operation
1946 summary: Unblock a video by its id
1954 - $ref: '#/components/parameters/idOrUUID'
1957 description: successful operation
1959 description: block not found
1964 summary: List video blocks
1973 list only blocks that match this type:
1977 - `2`: automatic block that needs review
1985 description: plain search that will match with video titles, and more
1988 - $ref: '#/components/parameters/start'
1989 - $ref: '#/components/parameters/count'
1990 - $ref: '#/components/parameters/blacklistsSort'
1993 description: successful operation
2005 $ref: '#/components/schemas/VideoBlacklist'
2006 /videos/{id}/captions:
2008 summary: List captions of a video
2012 - $ref: '#/components/parameters/idOrUUID'
2015 description: successful operation
2027 $ref: '#/components/schemas/VideoCaption'
2028 /videos/{id}/captions/{captionLanguage}:
2030 summary: Add or replace a video caption
2037 - $ref: '#/components/parameters/idOrUUID'
2038 - $ref: '#/components/parameters/captionLanguage'
2041 multipart/form-data:
2046 description: The file to upload.
2051 contentType: text/vtt, application/x-subrip, text/plain
2054 description: successful operation
2056 description: video or language not found
2058 summary: Delete a video caption
2065 - $ref: '#/components/parameters/idOrUUID'
2066 - $ref: '#/components/parameters/captionLanguage'
2069 description: successful operation
2071 description: video or language or caption for that language not found
2074 summary: List video channels
2078 - $ref: '#/components/parameters/start'
2079 - $ref: '#/components/parameters/count'
2080 - $ref: '#/components/parameters/sort'
2083 description: successful operation
2095 $ref: '#/components/schemas/VideoChannel'
2097 summary: Create a video channel
2104 description: successful operation
2109 $ref: '#/components/schemas/VideoChannelCreate'
2110 '/video-channels/{channelHandle}':
2112 summary: Get a video channel
2116 - $ref: '#/components/parameters/channelHandle'
2119 description: successful operation
2123 $ref: '#/components/schemas/VideoChannel'
2125 summary: Update a video channel
2131 - $ref: '#/components/parameters/channelHandle'
2134 description: successful operation
2139 $ref: '#/components/schemas/VideoChannelUpdate'
2141 summary: Delete a video channel
2147 - $ref: '#/components/parameters/channelHandle'
2150 description: successful operation
2151 '/video-channels/{channelHandle}/videos':
2153 summary: List videos of a video channel
2158 - $ref: '#/components/parameters/channelHandle'
2159 - $ref: '#/components/parameters/categoryOneOf'
2160 - $ref: '#/components/parameters/tagsOneOf'
2161 - $ref: '#/components/parameters/tagsAllOf'
2162 - $ref: '#/components/parameters/licenceOneOf'
2163 - $ref: '#/components/parameters/languageOneOf'
2164 - $ref: '#/components/parameters/nsfw'
2165 - $ref: '#/components/parameters/filter'
2166 - $ref: '#/components/parameters/skipCount'
2167 - $ref: '#/components/parameters/start'
2168 - $ref: '#/components/parameters/count'
2169 - $ref: '#/components/parameters/videosSort'
2172 description: successful operation
2176 $ref: '#/components/schemas/VideoListResponse'
2178 /video-playlists/privacies:
2180 summary: List available playlist privacies
2185 description: successful operation
2194 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2198 summary: List video playlists
2202 - $ref: '#/components/parameters/start'
2203 - $ref: '#/components/parameters/count'
2204 - $ref: '#/components/parameters/sort'
2207 description: successful operation
2219 $ref: '#/components/schemas/VideoPlaylist'
2221 summary: Create a video playlist
2222 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2229 description: successful operation
2244 multipart/form-data:
2249 description: Video playlist display name
2252 description: Video playlist thumbnail file
2256 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2258 description: Video playlist description
2261 description: Video channel in which the playlist will be published
2267 contentType: image/jpeg
2269 /video-playlists/{id}:
2271 summary: Get a video playlist
2275 - $ref: '#/components/parameters/idOrUUID'
2278 description: successful operation
2282 $ref: '#/components/schemas/VideoPlaylist'
2284 summary: Update a video playlist
2285 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2292 description: successful operation
2294 - $ref: '#/components/parameters/idOrUUID'
2297 multipart/form-data:
2302 description: Video playlist display name
2305 description: Video playlist thumbnail file
2309 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2311 description: Video playlist description
2314 description: Video channel in which the playlist will be published
2318 contentType: image/jpeg
2320 summary: Delete a video playlist
2326 - $ref: '#/components/parameters/idOrUUID'
2329 description: successful operation
2331 /video-playlists/{id}/videos:
2333 summary: 'List videos of a playlist'
2338 - $ref: '#/components/parameters/idOrUUID'
2341 description: successful operation
2345 $ref: '#/components/schemas/VideoListResponse'
2347 summary: 'Add a video in a playlist'
2354 - $ref: '#/components/parameters/idOrUUID'
2357 description: successful operation
2363 videoPlaylistElement:
2376 description: 'Video to add in the playlist'
2379 description: 'Start the video at this specific timestamp (in seconds)'
2382 description: 'Stop the video at this specific timestamp (in seconds)'
2386 /video-playlists/{id}/videos/reorder:
2388 summary: 'Reorder a playlist'
2394 - $ref: '#/components/parameters/idOrUUID'
2397 description: successful operation
2406 description: 'Start position of the element to reorder'
2408 insertAfterPosition:
2410 description: 'New position for the block to reorder, to add the block before the first element'
2414 description: 'How many element from `startPosition` to reorder'
2418 - insertAfterPosition
2420 /video-playlists/{id}/videos/{playlistElementId}:
2422 summary: 'Update a playlist element'
2428 - $ref: '#/components/parameters/idOrUUID'
2429 - $ref: '#/components/parameters/playlistElementId'
2432 description: successful operation
2441 description: 'Start the video at this specific timestamp (in seconds)'
2444 description: 'Stop the video at this specific timestamp (in seconds)'
2446 summary: 'Delete an element from a playlist'
2452 - $ref: '#/components/parameters/idOrUUID'
2453 - $ref: '#/components/parameters/playlistElementId'
2456 description: successful operation
2458 '/users/me/video-playlists/videos-exist':
2460 summary: 'Check video exists in my playlists'
2469 description: The video ids to check
2476 description: successful operation
2496 '/accounts/{name}/video-channels':
2498 summary: List video channels of an account
2503 - $ref: '#/components/parameters/name'
2506 description: include view statistics for the last 30 days (only if authentified as the account user)
2509 - $ref: '#/components/parameters/start'
2510 - $ref: '#/components/parameters/count'
2511 - $ref: '#/components/parameters/sort'
2514 description: successful operation
2520 $ref: '#/components/schemas/VideoChannel'
2521 '/accounts/{name}/ratings':
2523 summary: List ratings of an account
2529 - $ref: '#/components/parameters/name'
2530 - $ref: '#/components/parameters/start'
2531 - $ref: '#/components/parameters/count'
2532 - $ref: '#/components/parameters/sort'
2536 description: Optionally filter which ratings to retrieve
2544 description: successful operation
2550 $ref: '#/components/schemas/VideoRating'
2551 '/videos/{id}/comment-threads':
2553 summary: List threads of a video
2557 - $ref: '#/components/parameters/idOrUUID'
2558 - $ref: '#/components/parameters/start'
2559 - $ref: '#/components/parameters/count'
2560 - $ref: '#/components/parameters/commentsSort'
2563 description: successful operation
2567 $ref: '#/components/schemas/CommentThreadResponse'
2569 summary: Create a thread
2575 - $ref: '#/components/parameters/idOrUUID'
2578 description: successful operation
2582 $ref: '#/components/schemas/CommentThreadPostResponse'
2584 description: video does not exist
2593 description: 'Text comment'
2597 '/videos/{id}/comment-threads/{threadId}':
2599 summary: Get a thread
2603 - $ref: '#/components/parameters/idOrUUID'
2604 - $ref: '#/components/parameters/threadId'
2607 description: successful operation
2611 $ref: '#/components/schemas/VideoCommentThreadTree'
2612 '/videos/{id}/comments/{commentId}':
2614 summary: Reply to a thread of a video
2620 - $ref: '#/components/parameters/idOrUUID'
2621 - $ref: '#/components/parameters/commentId'
2624 description: successful operation
2628 $ref: '#/components/schemas/CommentThreadPostResponse'
2630 description: thread or video does not exist
2639 description: 'Text comment'
2644 summary: Delete a comment or a reply
2650 - $ref: '#/components/parameters/idOrUUID'
2651 - $ref: '#/components/parameters/commentId'
2654 description: successful operation
2656 description: cannot remove comment of another user
2658 description: comment or video does not exist
2660 description: comment is already deleted
2661 '/videos/{id}/rate':
2663 summary: Like/dislike a video
2669 - $ref: '#/components/parameters/idOrUUID'
2672 description: successful operation
2674 description: video does not exist
2679 summary: Search videos
2684 allowEmptyValue: false
2686 String to search. If the user can make a remote URI search, and the string is an URI then the
2687 PeerTube instance will fetch the remote object and add it to its database. Then,
2688 you can use the REST API to fetch the complete video information and interact with it.
2691 - $ref: '#/components/parameters/categoryOneOf'
2692 - $ref: '#/components/parameters/tagsOneOf'
2693 - $ref: '#/components/parameters/tagsAllOf'
2694 - $ref: '#/components/parameters/licenceOneOf'
2695 - $ref: '#/components/parameters/languageOneOf'
2696 - $ref: '#/components/parameters/nsfw'
2697 - $ref: '#/components/parameters/filter'
2698 - $ref: '#/components/parameters/skipCount'
2699 - $ref: '#/components/parameters/start'
2700 - $ref: '#/components/parameters/count'
2701 - $ref: '#/components/parameters/searchTarget'
2702 - $ref: '#/components/parameters/videosSearchSort'
2705 description: Get videos that are published after this date
2711 description: Get videos that are published before this date
2715 - name: originallyPublishedStartDate
2717 description: Get videos that are originally published after this date
2721 - name: originallyPublishedEndDate
2723 description: Get videos that are originally published before this date
2729 description: Get videos that have this minimum duration
2734 description: Get videos that have this maximum duration
2738 'searchTarget === search-index':
2739 $ref: '#/components/callbacks/searchIndex'
2742 description: successful operation
2746 $ref: '#/components/schemas/VideoListResponse'
2748 description: search index unavailable
2749 /search/video-channels:
2753 summary: Search channels
2759 String to search. If the user can make a remote URI search, and the string is an URI then the
2760 PeerTube instance will fetch the remote object and add it to its database. Then,
2761 you can use the REST API to fetch the complete channel information and interact with it.
2764 - $ref: '#/components/parameters/start'
2765 - $ref: '#/components/parameters/count'
2766 - $ref: '#/components/parameters/searchTarget'
2767 - $ref: '#/components/parameters/sort'
2769 'searchTarget === search-index':
2770 $ref: '#/components/callbacks/searchIndex'
2773 description: successful operation
2779 $ref: '#/components/schemas/VideoChannel'
2781 description: search index unavailable
2782 /blocklist/accounts:
2786 summary: List account blocks
2791 - $ref: '#/components/parameters/start'
2792 - $ref: '#/components/parameters/count'
2793 - $ref: '#/components/parameters/sort'
2796 description: successful operation
2800 summary: Block an account
2812 example: chocobozzz@example.org
2813 description: account to block, in the form `username@domain`
2818 description: successful operation
2820 description: self-blocking forbidden
2821 '/blocklist/accounts/{accountName}':
2825 summary: Unblock an account by its handle
2833 description: account to unblock, in the form `username@domain`
2838 description: successful operation
2840 description: account or account block does not exist
2845 summary: List server blocks
2850 - $ref: '#/components/parameters/start'
2851 - $ref: '#/components/parameters/count'
2852 - $ref: '#/components/parameters/sort'
2855 description: successful operation
2859 summary: Block a server
2872 description: server domain to block
2877 description: successful operation
2879 description: self-blocking forbidden
2880 '/blocklist/servers/{host}':
2884 summary: Unblock a server by its domain
2892 description: server domain to unblock
2898 description: successful operation
2900 description: account block does not exist
2904 - Instance Redundancy
2905 summary: Update a server redundancy policy
2913 description: server domain to mirror
2925 description: allow mirroring of the host's local videos
2930 description: successful operation
2932 description: server is not already known
2937 summary: List videos being mirrored
2945 description: direction of the mirror
2951 - $ref: '#/components/parameters/start'
2952 - $ref: '#/components/parameters/count'
2953 - $ref: '#/components/parameters/videoRedundanciesSort'
2956 description: successful operation
2962 $ref: '#/components/schemas/VideoRedundancy'
2966 summary: Mirror a video
2982 description: successful operation
2984 description: cannot mirror a local video
2986 description: video does not exist
2988 description: video is already mirrored
2989 /redundancy/videos/{redundancyId}:
2993 summary: Delete a mirror done on a video
2998 - name: redundancyId
3001 description: id of an existing redundancy on a video
3006 description: successful operation
3008 description: video redundancy not found
3009 '/feeds/video-comments.{format}':
3013 summary: List comments on videos
3015 - url: 'https://peertube2.cpy.re'
3016 description: Live Test Server (live data - latest nightly version)
3017 - url: 'https://peertube3.cpy.re'
3018 description: Live Test Server (live data - latest RC version)
3019 - url: 'https://peertube.cpy.re'
3020 description: Live Test Server (live data - stable version)
3025 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3038 description: 'limit listing to a specific video'
3043 description: 'limit listing to a specific account'
3048 description: 'limit listing to a specific account'
3051 - name: videoChannelId
3053 description: 'limit listing to a specific video channel'
3056 - name: videoChannelName
3058 description: 'limit listing to a specific video channel'
3063 description: successful operation
3068 default: 'max-age=900' # 15 min cache
3072 $ref: '#/components/schemas/VideoCommentsForXML'
3073 application/rss+xml:
3075 $ref: '#/components/schemas/VideoCommentsForXML'
3078 $ref: '#/components/schemas/VideoCommentsForXML'
3079 application/atom+xml:
3081 $ref: '#/components/schemas/VideoCommentsForXML'
3086 x-summary: field inconsistencies
3089 - videoId filter is mixed with a channel filter
3091 description: video, video channel or account not found
3093 description: accept header unsupported
3094 '/feeds/videos.{format}':
3098 summary: List videos
3100 - url: 'https://peertube2.cpy.re'
3101 description: Live Test Server (live data - latest nightly version)
3102 - url: 'https://peertube3.cpy.re'
3103 description: Live Test Server (live data - latest RC version)
3104 - url: 'https://peertube.cpy.re'
3105 description: Live Test Server (live data - stable version)
3110 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3123 description: 'limit listing to a specific account'
3128 description: 'limit listing to a specific account'
3131 - name: videoChannelId
3133 description: 'limit listing to a specific video channel'
3136 - name: videoChannelName
3138 description: 'limit listing to a specific video channel'
3141 - $ref: '#/components/parameters/sort'
3142 - $ref: '#/components/parameters/nsfw'
3143 - $ref: '#/components/parameters/filter'
3146 description: successful operation
3151 default: 'max-age=900' # 15 min cache
3155 $ref: '#/components/schemas/VideosForXML'
3158 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3159 application/rss+xml:
3161 $ref: '#/components/schemas/VideosForXML'
3164 $ref: '#/components/schemas/VideosForXML'
3165 application/atom+xml:
3167 $ref: '#/components/schemas/VideosForXML'
3172 description: video channel or account not found
3174 description: accept header unsupported
3179 summary: List plugins
3192 - $ref: '#/components/parameters/start'
3193 - $ref: '#/components/parameters/count'
3194 - $ref: '#/components/parameters/sort'
3197 description: successful operation
3201 $ref: '#/components/schemas/PluginResponse'
3206 summary: List available plugins
3219 - name: currentPeerTubeEngine
3223 - $ref: '#/components/parameters/start'
3224 - $ref: '#/components/parameters/count'
3225 - $ref: '#/components/parameters/sort'
3228 description: successful operation
3232 $ref: '#/components/schemas/PluginResponse'
3234 description: plugin index unavailable
3239 summary: Install a plugin
3252 example: peertube-plugin-auth-ldap
3255 additionalProperties: false
3262 additionalProperties: false
3265 description: successful operation
3267 description: should have either `npmName` or `path` set
3272 summary: Update a plugin
3285 example: peertube-plugin-auth-ldap
3288 additionalProperties: false
3295 additionalProperties: false
3298 description: successful operation
3300 description: should have either `npmName` or `path` set
3302 description: existing plugin not found
3307 summary: Uninstall a plugin
3319 description: name of the plugin/theme in its package.json
3320 example: peertube-plugin-auth-ldap
3325 description: successful operation
3327 description: existing plugin not found
3332 summary: Get a plugin
3337 - $ref: '#/components/parameters/npmName'
3340 description: successful operation
3344 $ref: '#/components/schemas/Plugin'
3346 description: plugin not found
3347 /plugins/{npmName}/settings:
3351 summary: Set a plugin's settings
3356 - $ref: '#/components/parameters/npmName'
3365 additionalProperties: true
3368 description: successful operation
3370 description: plugin not found
3371 /plugins/{npmName}/public-settings:
3375 summary: Get a plugin's public settings
3377 - $ref: '#/components/parameters/npmName'
3380 description: successful operation
3385 additionalProperties: true
3387 description: plugin not found
3388 /plugins/{npmName}/registered-settings:
3392 summary: Get a plugin's registered settings
3397 - $ref: '#/components/parameters/npmName'
3400 description: successful operation
3405 additionalProperties: true
3407 description: plugin not found
3409 - url: 'https://peertube2.cpy.re/api/v1'
3410 description: Live Test Server (live data - latest nightly version)
3411 - url: 'https://peertube3.cpy.re/api/v1'
3412 description: Live Test Server (live data - latest RC version)
3413 - url: 'https://peertube.cpy.re/api/v1'
3414 description: Live Test Server (live data - stable version)
3421 description: Offset used to paginate results
3429 description: "Number of items to return"
3439 description: Sort column
3447 description: Plain text search, applied to various parts of the model depending on endpoint
3455 If the administrator enabled search index support, you can override the default search target.
3458 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3459 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3460 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3461 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3462 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3463 * 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
3464 the data from the origin instance API
3474 description: Sort videos by criteria
3489 description: Sort videos by criteria
3504 description: Sort comments by criteria
3514 description: Sort blacklists by criteria
3530 description: Plain text search that will match with user usernames or emails
3537 description: Filter results down to (un)banned users
3544 description: Sort users by criteria
3555 description: Sort abuses by criteria
3562 videoRedundanciesSort:
3566 description: Sort abuses by criteria
3575 description: The name of the account
3578 example: chocobozzz | chocobozzz@example.org
3583 description: The user id
3592 description: The object id or uuid
3600 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3602 name: playlistElementId
3605 description: Playlist element id
3612 description: Abuse id
3616 name: abuseMessageId
3619 description: Abuse message id
3623 name: captionLanguage
3626 description: The caption language
3633 description: The video channel handle
3636 example: my_username | my_username@example.com
3638 name: subscriptionHandle
3641 description: The subscription handle
3644 example: my_username | my_username@example.com
3649 description: The thread id (root comment id)
3656 description: The comment id
3663 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3676 description: tag(s) of the video
3689 description: tag(s) of the video, where all should be present in the video
3702 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
3715 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3728 description: if you don't need the `total` in the response
3739 description: whether to include nsfw videos, if any
3750 Special filters which might require special rights:
3751 * `local` - only videos local to the instance
3752 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3753 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
3763 description: list of uris to check if each is part of the user subscriptions
3773 description: name of the plugin/theme on npmjs.com or in its package.json
3776 example: peertube-plugin-auth-ldap
3780 In the header: *Authorization: Bearer <token\>*
3783 Authenticating via OAuth requires the following steps:
3786 - Have an account with sufficient authorization levels
3788 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3791 - Make Authenticated Requests
3795 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3798 moderator: Moderator scope
3801 VideoConstantNumber:
3807 VideoConstantString:
3814 VideoPlaylistPrivacySet:
3820 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3821 VideoPlaylistPrivacyConstant:
3824 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3828 VideoPlaylistTypeSet:
3833 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3834 VideoPlaylistTypeConstant:
3837 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3848 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3849 VideoPrivacyConstant:
3852 $ref: '#/components/schemas/VideoPrivacySet'
3869 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3880 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3890 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3894 $ref: '#/components/schemas/AbuseStateSet'
3897 AbusePredefinedReasons:
3910 example: [spamOrMisleading]
3912 VideoResolutionConstant:
3916 description: 'Video resolution (240, 360, 720 ...)'
3921 VideoScheduledUpdate:
3924 $ref: '#/components/schemas/VideoPrivacySet'
3928 description: When to update the video
3948 - $ref: '#/components/schemas/Avatar'
3949 VideoChannelSummary:
3966 - $ref: '#/components/schemas/Avatar'
3978 - $ref: '#/components/schemas/Video'
3984 $ref: '#/components/schemas/VideoResolutionConstant'
3987 description: 'Video file size in bytes'
4005 VideoStreamingPlaylists:
4013 description: 'Playlist type (HLS = `1`)'
4022 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)'
4024 $ref: '#/components/schemas/VideoFile'
4040 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4051 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4063 originallyPublishedAt:
4067 $ref: '#/components/schemas/VideoConstantNumber'
4069 $ref: '#/components/schemas/VideoConstantNumber'
4071 $ref: '#/components/schemas/VideoConstantString'
4073 $ref: '#/components/schemas/VideoPrivacyConstant'
4083 example: What is PeerTube?
4086 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4089 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4092 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4108 $ref: '#/components/schemas/VideoStateConstant'
4112 - $ref: '#/components/schemas/VideoScheduledUpdate'
4120 $ref: '#/components/schemas/AccountSummary'
4122 $ref: '#/components/schemas/VideoChannelSummary'
4131 - $ref: '#/components/schemas/Video'
4138 description: A text tell the audience how to support the video creator
4139 example: Please support my work on <insert crowdfunding plateform>! <3
4141 $ref: '#/components/schemas/VideoChannel'
4143 $ref: '#/components/schemas/Account'
4148 example: [flowers, gardening]
4151 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'
4153 $ref: '#/components/schemas/VideoFile'
4166 $ref: '#/components/schemas/VideoStreamingPlaylists'
4167 FileRedundancyInformation:
4204 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4211 $ref: '#/components/schemas/FileRedundancyInformation'
4215 $ref: '#/components/schemas/FileRedundancyInformation'
4216 VideoImportStateConstant:
4224 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4236 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4240 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
4244 $ref: '#/components/schemas/VideoImportStateConstant'
4254 $ref: '#/components/schemas/Video'
4262 example: The video is a spam
4264 $ref: '#/components/schemas/AbusePredefinedReasons'
4266 $ref: '#/components/schemas/Account'
4268 $ref: '#/components/schemas/AbuseStateConstant'
4271 example: Decided to ban the server since it spams us regularly
4282 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4298 $ref: '#/components/schemas/AccountSummary'
4316 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4345 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4361 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4371 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4373 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4375 $ref: '#/components/schemas/AccountSummary'
4377 $ref: '#/components/schemas/VideoChannelSummary'
4399 totalRepliesFromVideoAuthor:
4404 $ref: '#/components/schemas/Account'
4405 VideoCommentThreadTree:
4408 $ref: '#/components/schemas/VideoComment'
4412 $ref: '#/components/schemas/VideoCommentThreadTree'
4416 $ref: '#/components/schemas/VideoConstantString'
4471 $ref: '#/components/schemas/Avatar'
4474 - $ref: '#/components/schemas/Actor'
4487 description: timestamp within the video, in seconds
4554 allowedForCurrentIP:
4556 requiresEmailVerification:
4760 requiresEmailVerification:
4785 allowAdditionalExtensions:
4853 $ref: '#/components/schemas/Actor'
4855 $ref: '#/components/schemas/Actor'
4858 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4871 PredefinedAbuseReasons:
4872 description: Reason categories that help triage reports
4903 - activitypub-http-unicast
4904 - activitypub-http-broadcast
4905 - activitypub-http-fetcher
4906 - activitypub-follow
4912 - activitypub-refresher
4916 additionalProperties: true
4919 additionalProperties: true
4943 VideoUploadResponse:
4954 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4955 CommentThreadResponse:
4964 $ref: '#/components/schemas/VideoComment'
4965 CommentThreadPostResponse:
4968 $ref: '#/components/schemas/VideoComment'
4978 $ref: '#/components/schemas/Video'
4986 description: The user username
4992 description: The user email
4995 description: Theme enabled by this user
4998 description: Has the user confirmed their email address?
5000 $ref: '#/components/schemas/NSFWPolicy'
5003 description: Enable P2P in the player
5006 description: Automatically start playing the video on the watch page
5008 $ref: '#/components/schemas/UserRole'
5017 description: The user video quota
5020 description: The user daily video quota
5025 abusesAcceptedCount:
5031 noInstanceConfigWarningModal:
5042 $ref: '#/components/schemas/Account'
5046 $ref: '#/components/schemas/VideoChannel'
5051 description: The user username
5057 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5063 description: The user email
5066 description: The user video quota
5069 description: The user daily video quota
5071 $ref: '#/components/schemas/UserRole'
5083 description: The user id
5087 description: The updated email of the user
5090 description: The updated video quota of the user
5093 description: The updated daily video quota of the user
5095 $ref: '#/components/schemas/UserRole'
5107 description: Your new password
5113 description: Your new email
5116 description: Your new displayNSFW
5123 description: Your new autoPlayVideo
5133 description: Id of the video
5136 description: Rating of the video
5143 $ref: '#/components/schemas/Video'
5146 description: 'Rating of the video'
5154 description: The username of the user
5157 pattern: '/^[a-z0-9._]{1,50}$/'
5161 description: The password of the user
5167 description: The email of the user
5170 description: The user display name
5178 description: The name for the default channel
5179 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5182 description: The display name for the default channel
5199 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5200 example: Please support my work on <insert crowdfunding plateform>! <3
5212 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5213 example: Please support my work on <insert crowdfunding plateform>! <3
5214 bulkVideosSupportUpdate:
5216 description: 'Update the support field for all videos of this channel'
5221 name: 'media:peerLink'
5230 - application/x-bittorrent
5236 name: 'media:content'
5267 VideoCommentsForXML:
5302 description: video watch page URL
5305 description: video canonical URL
5309 description: video publication date
5312 description: video description
5315 description: video description
5318 description: publisher user name
5321 description: video category (MRSS)
5324 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5339 description: video embed path, relative to the canonical URL domain (MRSS)
5348 description: video watch path, relative to the canonical URL domain (MRSS)
5369 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5370 'media:description':
5377 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5380 description: main streamable file for the video
5390 - application/x-bittorrent
5399 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)
5402 - $ref: '#/components/schemas/MRSSPeerLink'
5403 - $ref: '#/components/schemas/MRSSGroupContent'
5404 NotificationSettingValue:
5425 Notification type, following the `UserNotificationType` enum:
5427 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5429 - `2` NEW_COMMENT_ON_MY_VIDEO
5431 - `3` NEW_ABUSE_FOR_MODERATORS
5433 - `4` BLACKLIST_ON_MY_VIDEO
5435 - `5` UNBLACKLIST_ON_MY_VIDEO
5437 - `6` MY_VIDEO_PUBLISHED
5439 - `7` MY_VIDEO_IMPORT_SUCCESS
5441 - `8` MY_VIDEO_IMPORT_ERROR
5443 - `9` NEW_USER_REGISTRATION
5447 - `11` COMMENT_MENTION
5449 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5451 - `13` NEW_INSTANCE_FOLLOWER
5453 - `14` AUTO_INSTANCE_FOLLOWING
5459 - $ref: '#/components/schemas/VideoInfo'
5463 $ref: '#/components/schemas/ActorInfo'
5472 $ref: '#/components/schemas/VideoInfo'
5493 $ref: '#/components/schemas/VideoInfo'
5495 $ref: '#/components/schemas/ActorInfo'
5504 - $ref: '#/components/schemas/VideoInfo'
5513 - $ref: '#/components/schemas/VideoInfo'
5517 - $ref: '#/components/schemas/ActorInfo'
5525 $ref: '#/components/schemas/ActorInfo'
5553 NotificationListResponse:
5562 $ref: '#/components/schemas/Notification'
5567 example: peertube-plugin-auth-ldap
5595 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5598 additionalProperties: true
5614 $ref: '#/components/schemas/Plugin'
5621 description: User can stream multiple times in a permanent live
5630 description: RTMP stream key to use to stream into this live video
5634 description: User can stream multiple times in a permanent live
5639 'https://search.example.org/api/v1/search/videos':
5641 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5644 description: successful operation
5648 $ref: '#/components/schemas/VideoListResponse'