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: invalid file field, schedule date or parameter
1318 description: video didn't pass upload filter
1320 description: upload has timed out
1322 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1324 X-File-Maximum-Size:
1328 description: Maximum file size for the video
1330 description: video type unsupported
1332 description: video unreadable
1335 multipart/form-data:
1340 description: Video file
1344 description: Channel id that will contain this video
1347 description: Video thumbnail file
1351 description: Video preview file
1355 $ref: '#/components/schemas/VideoPrivacySet'
1357 description: Video category
1361 description: Video licence
1364 description: Video language
1368 description: Video description
1371 description: Whether or not we wait transcoding before publish the video
1374 description: A text tell the audience how to support the video creator
1375 example: Please support my work on <insert crowdfunding plateform>! <3
1378 description: Whether or not this video contains sensitive content
1381 description: Video name
1384 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1394 description: Enable or disable comments for this video
1397 description: Enable or disable downloading for this video
1399 originallyPublishedAt:
1400 description: Date when the content was originally published
1404 $ref: '#/components/schemas/VideoScheduledUpdate'
1411 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1413 contentType: image/jpeg
1415 contentType: image/jpeg
1420 USERNAME="<your_username>"
1421 PASSWORD="<your_password>"
1422 FILE_PATH="<your_file_path>"
1423 CHANNEL_ID="<your_channel_id>"
1426 API_PATH="https://peertube2.cpy.re/api/v1"
1428 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1429 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1430 token=$(curl -s "$API_PATH/users/token" \
1431 --data client_id="$client_id" \
1432 --data client_secret="$client_secret" \
1433 --data grant_type=password \
1434 --data response_type=code \
1435 --data username="$USERNAME" \
1436 --data password="$PASSWORD" \
1437 | jq -r ".access_token")
1439 curl -s "$API_PATH/videos/upload" \
1440 -H "Authorization: Bearer $token" \
1442 --form videofile=@"$FILE_PATH" \
1443 --form channelId=$CHANNEL_ID \
1447 summary: Import a video
1448 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1455 multipart/form-data:
1460 description: Torrent File
1464 description: HTTP target URL
1467 description: Magnet URI
1470 description: Channel id that will contain this video
1473 description: Video thumbnail file
1477 description: Video preview file
1481 $ref: '#/components/schemas/VideoPrivacySet'
1483 description: Video category
1486 description: Video licence
1489 description: Video language
1492 description: Video description
1495 description: Whether or not we wait transcoding before publish the video
1498 description: A text tell the audience how to support the video creator
1499 example: Please support my work on <insert crowdfunding plateform>! <3
1502 description: Whether or not this video contains sensitive content
1505 description: Video name
1508 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1517 description: Enable or disable comments for this video
1520 description: Enable or disable downloading for this video
1523 $ref: '#/components/schemas/VideoScheduledUpdate'
1529 contentType: application/x-bittorrent
1531 contentType: image/jpeg
1533 contentType: image/jpeg
1536 description: successful operation
1540 $ref: '#/components/schemas/VideoUploadResponse'
1542 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1544 description: video didn't pass pre-import filter
1546 description: HTTP or Torrent/magnetURI import not enabled
1550 summary: Create a live
1558 description: successful operation
1562 $ref: '#/components/schemas/VideoUploadResponse'
1564 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1567 multipart/form-data:
1572 description: Channel id that will contain this live video
1577 description: User can stream multiple times in a permanent live
1580 description: Live video/replay thumbnail file
1584 description: Live video/replay preview file
1588 $ref: '#/components/schemas/VideoPrivacySet'
1590 description: Live video/replay category
1593 description: Live video/replay licence
1596 description: Live video/replay language
1599 description: Live video/replay description
1602 description: A text tell the audience how to support the creator
1603 example: Please support my work on <insert crowdfunding plateform>! <3
1606 description: Whether or not this live video/replay contains sensitive content
1609 description: Live video/replay name
1612 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1621 description: Enable or disable comments for this live video/replay
1624 description: Enable or disable downloading for the replay of this live
1631 contentType: image/jpeg
1633 contentType: image/jpeg
1637 summary: Get a live information
1644 - $ref: '#/components/parameters/idOrUUID'
1647 description: successful operation
1651 $ref: '#/components/schemas/LiveVideoResponse'
1653 summary: Update a live information
1660 - $ref: '#/components/parameters/idOrUUID'
1665 $ref: '#/components/schemas/LiveVideoUpdate'
1668 description: Successful operation
1670 description: Bad parameters or trying to update a live that has already started
1672 description: Trying to save replay of the live but saving replay is not enabled on the instance
1676 summary: List my abuses
1685 description: only list the report with this id
1691 $ref: '#/components/schemas/AbuseStateSet'
1692 - $ref: '#/components/parameters/start'
1693 - $ref: '#/components/parameters/count'
1694 - $ref: '#/components/parameters/abusesSort'
1697 description: successful operation
1703 $ref: '#/components/schemas/Abuse'
1707 summary: List abuses
1717 description: only list the report with this id
1720 - name: predefinedReason
1722 description: predefined reason the listed reports should contain
1724 $ref: '#/components/schemas/PredefinedAbuseReasons'
1727 description: plain search that will match with video titles, reporter names and more
1733 $ref: '#/components/schemas/AbuseStateSet'
1734 - name: searchReporter
1736 description: only list reports of a specific reporter
1739 - name: searchReportee
1740 description: only list reports of a specific reportee
1746 description: only list reports of a specific video
1749 - name: searchVideoChannel
1751 description: only list reports of a specific video channel
1756 description: only list blacklisted or deleted videos
1764 description: only list account, comment or video reports
1771 - $ref: '#/components/parameters/start'
1772 - $ref: '#/components/parameters/count'
1773 - $ref: '#/components/parameters/abusesSort'
1776 description: successful operation
1782 $ref: '#/components/schemas/Abuse'
1785 summary: Report an abuse
1798 description: Reason why the user reports this video
1802 $ref: '#/components/schemas/PredefinedAbuseReasons'
1808 description: Video id to report
1812 description: Timestamp in the video that marks the beginning of the report
1816 description: Timestamp in the video that marks the ending of the report
1822 description: Comment id to report
1828 description: Account id to report
1834 description: successful operation
1836 description: incorrect request parameters
1837 '/abuses/{abuseId}':
1839 summary: Update an abuse
1847 - $ref: '#/components/parameters/abuseId'
1855 $ref: '#/components/schemas/AbuseStateSet'
1858 description: Update the report comment visible only to the moderation team
1861 description: successful operation
1863 description: abuse not found
1867 summary: Delete an abuse
1873 - $ref: '#/components/parameters/abuseId'
1876 description: successful operation
1878 description: block not found
1879 '/abuses/{abuseId}/messages':
1881 summary: List messages of an abuse
1887 - $ref: '#/components/parameters/abuseId'
1890 description: successful operation
1896 $ref: '#/components/schemas/AbuseMessage'
1899 summary: Add message to an abuse
1905 - $ref: '#/components/parameters/abuseId'
1914 description: Message to send
1920 description: successful operation
1922 description: incorrect request parameters
1923 '/abuses/{abuseId}/messages/{abuseMessageId}':
1925 summary: Delete an abuse message
1931 - $ref: '#/components/parameters/abuseId'
1932 - $ref: '#/components/parameters/abuseMessageId'
1935 description: successful operation
1937 '/videos/{id}/blacklist':
1939 summary: Block a video
1947 - $ref: '#/components/parameters/idOrUUID'
1950 description: successful operation
1952 summary: Unblock a video by its id
1960 - $ref: '#/components/parameters/idOrUUID'
1963 description: successful operation
1965 description: block not found
1970 summary: List video blocks
1979 list only blocks that match this type:
1983 - `2`: automatic block that needs review
1991 description: plain search that will match with video titles, and more
1994 - $ref: '#/components/parameters/start'
1995 - $ref: '#/components/parameters/count'
1996 - $ref: '#/components/parameters/blacklistsSort'
1999 description: successful operation
2011 $ref: '#/components/schemas/VideoBlacklist'
2012 /videos/{id}/captions:
2014 summary: List captions of a video
2018 - $ref: '#/components/parameters/idOrUUID'
2021 description: successful operation
2033 $ref: '#/components/schemas/VideoCaption'
2034 /videos/{id}/captions/{captionLanguage}:
2036 summary: Add or replace a video caption
2043 - $ref: '#/components/parameters/idOrUUID'
2044 - $ref: '#/components/parameters/captionLanguage'
2047 multipart/form-data:
2052 description: The file to upload.
2057 contentType: text/vtt, application/x-subrip, text/plain
2060 description: successful operation
2062 description: video or language not found
2064 summary: Delete a video caption
2071 - $ref: '#/components/parameters/idOrUUID'
2072 - $ref: '#/components/parameters/captionLanguage'
2075 description: successful operation
2077 description: video or language or caption for that language not found
2080 summary: List video channels
2084 - $ref: '#/components/parameters/start'
2085 - $ref: '#/components/parameters/count'
2086 - $ref: '#/components/parameters/sort'
2089 description: successful operation
2101 $ref: '#/components/schemas/VideoChannel'
2103 summary: Create a video channel
2110 description: successful operation
2115 $ref: '#/components/schemas/VideoChannelCreate'
2116 '/video-channels/{channelHandle}':
2118 summary: Get a video channel
2122 - $ref: '#/components/parameters/channelHandle'
2125 description: successful operation
2129 $ref: '#/components/schemas/VideoChannel'
2131 summary: Update a video channel
2137 - $ref: '#/components/parameters/channelHandle'
2140 description: successful operation
2145 $ref: '#/components/schemas/VideoChannelUpdate'
2147 summary: Delete a video channel
2153 - $ref: '#/components/parameters/channelHandle'
2156 description: successful operation
2157 '/video-channels/{channelHandle}/videos':
2159 summary: List videos of a video channel
2164 - $ref: '#/components/parameters/channelHandle'
2165 - $ref: '#/components/parameters/categoryOneOf'
2166 - $ref: '#/components/parameters/tagsOneOf'
2167 - $ref: '#/components/parameters/tagsAllOf'
2168 - $ref: '#/components/parameters/licenceOneOf'
2169 - $ref: '#/components/parameters/languageOneOf'
2170 - $ref: '#/components/parameters/nsfw'
2171 - $ref: '#/components/parameters/filter'
2172 - $ref: '#/components/parameters/skipCount'
2173 - $ref: '#/components/parameters/start'
2174 - $ref: '#/components/parameters/count'
2175 - $ref: '#/components/parameters/videosSort'
2178 description: successful operation
2182 $ref: '#/components/schemas/VideoListResponse'
2184 /video-playlists/privacies:
2186 summary: List available playlist privacies
2191 description: successful operation
2200 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2204 summary: List video playlists
2208 - $ref: '#/components/parameters/start'
2209 - $ref: '#/components/parameters/count'
2210 - $ref: '#/components/parameters/sort'
2213 description: successful operation
2225 $ref: '#/components/schemas/VideoPlaylist'
2227 summary: Create a video playlist
2228 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2235 description: successful operation
2250 multipart/form-data:
2255 description: Video playlist display name
2258 description: Video playlist thumbnail file
2262 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2264 description: Video playlist description
2267 description: Video channel in which the playlist will be published
2273 contentType: image/jpeg
2275 /video-playlists/{id}:
2277 summary: Get a video playlist
2281 - $ref: '#/components/parameters/idOrUUID'
2284 description: successful operation
2288 $ref: '#/components/schemas/VideoPlaylist'
2290 summary: Update a video playlist
2291 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2298 description: successful operation
2300 - $ref: '#/components/parameters/idOrUUID'
2303 multipart/form-data:
2308 description: Video playlist display name
2311 description: Video playlist thumbnail file
2315 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2317 description: Video playlist description
2320 description: Video channel in which the playlist will be published
2324 contentType: image/jpeg
2326 summary: Delete a video playlist
2332 - $ref: '#/components/parameters/idOrUUID'
2335 description: successful operation
2337 /video-playlists/{id}/videos:
2339 summary: 'List videos of a playlist'
2344 - $ref: '#/components/parameters/idOrUUID'
2347 description: successful operation
2351 $ref: '#/components/schemas/VideoListResponse'
2353 summary: 'Add a video in a playlist'
2360 - $ref: '#/components/parameters/idOrUUID'
2363 description: successful operation
2369 videoPlaylistElement:
2382 description: 'Video to add in the playlist'
2385 description: 'Start the video at this specific timestamp (in seconds)'
2388 description: 'Stop the video at this specific timestamp (in seconds)'
2392 /video-playlists/{id}/videos/reorder:
2394 summary: 'Reorder a playlist'
2400 - $ref: '#/components/parameters/idOrUUID'
2403 description: successful operation
2412 description: 'Start position of the element to reorder'
2414 insertAfterPosition:
2416 description: 'New position for the block to reorder, to add the block before the first element'
2420 description: 'How many element from `startPosition` to reorder'
2424 - insertAfterPosition
2426 /video-playlists/{id}/videos/{playlistElementId}:
2428 summary: 'Update a playlist element'
2434 - $ref: '#/components/parameters/idOrUUID'
2435 - $ref: '#/components/parameters/playlistElementId'
2438 description: successful operation
2447 description: 'Start the video at this specific timestamp (in seconds)'
2450 description: 'Stop the video at this specific timestamp (in seconds)'
2452 summary: 'Delete an element from a playlist'
2458 - $ref: '#/components/parameters/idOrUUID'
2459 - $ref: '#/components/parameters/playlistElementId'
2462 description: successful operation
2464 '/users/me/video-playlists/videos-exist':
2466 summary: 'Check video exists in my playlists'
2475 description: The video ids to check
2482 description: successful operation
2502 '/accounts/{name}/video-channels':
2504 summary: List video channels of an account
2509 - $ref: '#/components/parameters/name'
2512 description: include view statistics for the last 30 days (only if authentified as the account user)
2515 - $ref: '#/components/parameters/start'
2516 - $ref: '#/components/parameters/count'
2517 - $ref: '#/components/parameters/sort'
2520 description: successful operation
2526 $ref: '#/components/schemas/VideoChannel'
2527 '/accounts/{name}/ratings':
2529 summary: List ratings of an account
2535 - $ref: '#/components/parameters/name'
2536 - $ref: '#/components/parameters/start'
2537 - $ref: '#/components/parameters/count'
2538 - $ref: '#/components/parameters/sort'
2542 description: Optionally filter which ratings to retrieve
2550 description: successful operation
2556 $ref: '#/components/schemas/VideoRating'
2557 '/videos/{id}/comment-threads':
2559 summary: List threads of a video
2563 - $ref: '#/components/parameters/idOrUUID'
2564 - $ref: '#/components/parameters/start'
2565 - $ref: '#/components/parameters/count'
2566 - $ref: '#/components/parameters/commentsSort'
2569 description: successful operation
2573 $ref: '#/components/schemas/CommentThreadResponse'
2575 summary: Create a thread
2581 - $ref: '#/components/parameters/idOrUUID'
2584 description: successful operation
2588 $ref: '#/components/schemas/CommentThreadPostResponse'
2590 description: video does not exist
2599 description: 'Text comment'
2603 '/videos/{id}/comment-threads/{threadId}':
2605 summary: Get a thread
2609 - $ref: '#/components/parameters/idOrUUID'
2610 - $ref: '#/components/parameters/threadId'
2613 description: successful operation
2617 $ref: '#/components/schemas/VideoCommentThreadTree'
2618 '/videos/{id}/comments/{commentId}':
2620 summary: Reply to a thread of a video
2626 - $ref: '#/components/parameters/idOrUUID'
2627 - $ref: '#/components/parameters/commentId'
2630 description: successful operation
2634 $ref: '#/components/schemas/CommentThreadPostResponse'
2636 description: thread or video does not exist
2645 description: 'Text comment'
2650 summary: Delete a comment or a reply
2656 - $ref: '#/components/parameters/idOrUUID'
2657 - $ref: '#/components/parameters/commentId'
2660 description: successful operation
2662 description: cannot remove comment of another user
2664 description: comment or video does not exist
2666 description: comment is already deleted
2667 '/videos/{id}/rate':
2669 summary: Like/dislike a video
2675 - $ref: '#/components/parameters/idOrUUID'
2678 description: successful operation
2680 description: video does not exist
2685 summary: Search videos
2690 allowEmptyValue: false
2692 String to search. If the user can make a remote URI search, and the string is an URI then the
2693 PeerTube instance will fetch the remote object and add it to its database. Then,
2694 you can use the REST API to fetch the complete video information and interact with it.
2697 - $ref: '#/components/parameters/categoryOneOf'
2698 - $ref: '#/components/parameters/tagsOneOf'
2699 - $ref: '#/components/parameters/tagsAllOf'
2700 - $ref: '#/components/parameters/licenceOneOf'
2701 - $ref: '#/components/parameters/languageOneOf'
2702 - $ref: '#/components/parameters/nsfw'
2703 - $ref: '#/components/parameters/filter'
2704 - $ref: '#/components/parameters/skipCount'
2705 - $ref: '#/components/parameters/start'
2706 - $ref: '#/components/parameters/count'
2707 - $ref: '#/components/parameters/searchTarget'
2708 - $ref: '#/components/parameters/videosSearchSort'
2711 description: Get videos that are published after this date
2717 description: Get videos that are published before this date
2721 - name: originallyPublishedStartDate
2723 description: Get videos that are originally published after this date
2727 - name: originallyPublishedEndDate
2729 description: Get videos that are originally published before this date
2735 description: Get videos that have this minimum duration
2740 description: Get videos that have this maximum duration
2744 'searchTarget === search-index':
2745 $ref: '#/components/callbacks/searchIndex'
2748 description: successful operation
2752 $ref: '#/components/schemas/VideoListResponse'
2754 description: search index unavailable
2755 /search/video-channels:
2759 summary: Search channels
2765 String to search. If the user can make a remote URI search, and the string is an URI then the
2766 PeerTube instance will fetch the remote object and add it to its database. Then,
2767 you can use the REST API to fetch the complete channel information and interact with it.
2770 - $ref: '#/components/parameters/start'
2771 - $ref: '#/components/parameters/count'
2772 - $ref: '#/components/parameters/searchTarget'
2773 - $ref: '#/components/parameters/sort'
2775 'searchTarget === search-index':
2776 $ref: '#/components/callbacks/searchIndex'
2779 description: successful operation
2785 $ref: '#/components/schemas/VideoChannel'
2787 description: search index unavailable
2788 /blocklist/accounts:
2792 summary: List account blocks
2797 - $ref: '#/components/parameters/start'
2798 - $ref: '#/components/parameters/count'
2799 - $ref: '#/components/parameters/sort'
2802 description: successful operation
2806 summary: Block an account
2818 example: chocobozzz@example.org
2819 description: account to block, in the form `username@domain`
2824 description: successful operation
2826 description: self-blocking forbidden
2827 '/blocklist/accounts/{accountName}':
2831 summary: Unblock an account by its handle
2839 description: account to unblock, in the form `username@domain`
2844 description: successful operation
2846 description: account or account block does not exist
2851 summary: List server blocks
2856 - $ref: '#/components/parameters/start'
2857 - $ref: '#/components/parameters/count'
2858 - $ref: '#/components/parameters/sort'
2861 description: successful operation
2865 summary: Block a server
2878 description: server domain to block
2883 description: successful operation
2885 description: self-blocking forbidden
2886 '/blocklist/servers/{host}':
2890 summary: Unblock a server by its domain
2898 description: server domain to unblock
2904 description: successful operation
2906 description: account block does not exist
2910 - Instance Redundancy
2911 summary: Update a server redundancy policy
2919 description: server domain to mirror
2931 description: allow mirroring of the host's local videos
2936 description: successful operation
2938 description: server is not already known
2943 summary: List videos being mirrored
2951 description: direction of the mirror
2957 - $ref: '#/components/parameters/start'
2958 - $ref: '#/components/parameters/count'
2959 - $ref: '#/components/parameters/videoRedundanciesSort'
2962 description: successful operation
2968 $ref: '#/components/schemas/VideoRedundancy'
2972 summary: Mirror a video
2988 description: successful operation
2990 description: cannot mirror a local video
2992 description: video does not exist
2994 description: video is already mirrored
2995 /redundancy/videos/{redundancyId}:
2999 summary: Delete a mirror done on a video
3004 - name: redundancyId
3007 description: id of an existing redundancy on a video
3012 description: successful operation
3014 description: video redundancy not found
3015 '/feeds/video-comments.{format}':
3019 summary: List comments on videos
3021 - url: 'https://peertube2.cpy.re'
3022 description: Live Test Server (live data - latest nightly version)
3023 - url: 'https://peertube3.cpy.re'
3024 description: Live Test Server (live data - latest RC version)
3025 - url: 'https://peertube.cpy.re'
3026 description: Live Test Server (live data - stable version)
3031 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3044 description: 'limit listing to a specific video'
3049 description: 'limit listing to a specific account'
3054 description: 'limit listing to a specific account'
3057 - name: videoChannelId
3059 description: 'limit listing to a specific video channel'
3062 - name: videoChannelName
3064 description: 'limit listing to a specific video channel'
3069 description: successful operation
3074 default: 'max-age=900' # 15 min cache
3078 $ref: '#/components/schemas/VideoCommentsForXML'
3079 application/rss+xml:
3081 $ref: '#/components/schemas/VideoCommentsForXML'
3084 $ref: '#/components/schemas/VideoCommentsForXML'
3085 application/atom+xml:
3087 $ref: '#/components/schemas/VideoCommentsForXML'
3092 x-summary: field inconsistencies
3095 - videoId filter is mixed with a channel filter
3097 description: video, video channel or account not found
3099 description: accept header unsupported
3100 '/feeds/videos.{format}':
3104 summary: List videos
3106 - url: 'https://peertube2.cpy.re'
3107 description: Live Test Server (live data - latest nightly version)
3108 - url: 'https://peertube3.cpy.re'
3109 description: Live Test Server (live data - latest RC version)
3110 - url: 'https://peertube.cpy.re'
3111 description: Live Test Server (live data - stable version)
3116 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3129 description: 'limit listing to a specific account'
3134 description: 'limit listing to a specific account'
3137 - name: videoChannelId
3139 description: 'limit listing to a specific video channel'
3142 - name: videoChannelName
3144 description: 'limit listing to a specific video channel'
3147 - $ref: '#/components/parameters/sort'
3148 - $ref: '#/components/parameters/nsfw'
3149 - $ref: '#/components/parameters/filter'
3152 description: successful operation
3157 default: 'max-age=900' # 15 min cache
3161 $ref: '#/components/schemas/VideosForXML'
3164 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3165 application/rss+xml:
3167 $ref: '#/components/schemas/VideosForXML'
3170 $ref: '#/components/schemas/VideosForXML'
3171 application/atom+xml:
3173 $ref: '#/components/schemas/VideosForXML'
3178 description: video channel or account not found
3180 description: accept header unsupported
3185 summary: List plugins
3198 - $ref: '#/components/parameters/start'
3199 - $ref: '#/components/parameters/count'
3200 - $ref: '#/components/parameters/sort'
3203 description: successful operation
3207 $ref: '#/components/schemas/PluginResponse'
3212 summary: List available plugins
3225 - name: currentPeerTubeEngine
3229 - $ref: '#/components/parameters/start'
3230 - $ref: '#/components/parameters/count'
3231 - $ref: '#/components/parameters/sort'
3234 description: successful operation
3238 $ref: '#/components/schemas/PluginResponse'
3240 description: plugin index unavailable
3245 summary: Install a plugin
3258 example: peertube-plugin-auth-ldap
3261 additionalProperties: false
3268 additionalProperties: false
3271 description: successful operation
3273 description: should have either `npmName` or `path` set
3278 summary: Update a plugin
3291 example: peertube-plugin-auth-ldap
3294 additionalProperties: false
3301 additionalProperties: false
3304 description: successful operation
3306 description: should have either `npmName` or `path` set
3308 description: existing plugin not found
3313 summary: Uninstall a plugin
3325 description: name of the plugin/theme in its package.json
3326 example: peertube-plugin-auth-ldap
3331 description: successful operation
3333 description: existing plugin not found
3338 summary: Get a plugin
3343 - $ref: '#/components/parameters/npmName'
3346 description: successful operation
3350 $ref: '#/components/schemas/Plugin'
3352 description: plugin not found
3353 /plugins/{npmName}/settings:
3357 summary: Set a plugin's settings
3362 - $ref: '#/components/parameters/npmName'
3371 additionalProperties: true
3374 description: successful operation
3376 description: plugin not found
3377 /plugins/{npmName}/public-settings:
3381 summary: Get a plugin's public settings
3383 - $ref: '#/components/parameters/npmName'
3386 description: successful operation
3391 additionalProperties: true
3393 description: plugin not found
3394 /plugins/{npmName}/registered-settings:
3398 summary: Get a plugin's registered settings
3403 - $ref: '#/components/parameters/npmName'
3406 description: successful operation
3411 additionalProperties: true
3413 description: plugin not found
3415 - url: 'https://peertube2.cpy.re/api/v1'
3416 description: Live Test Server (live data - latest nightly version)
3417 - url: 'https://peertube3.cpy.re/api/v1'
3418 description: Live Test Server (live data - latest RC version)
3419 - url: 'https://peertube.cpy.re/api/v1'
3420 description: Live Test Server (live data - stable version)
3427 description: Offset used to paginate results
3435 description: "Number of items to return"
3445 description: Sort column
3453 description: Plain text search, applied to various parts of the model depending on endpoint
3461 If the administrator enabled search index support, you can override the default search target.
3464 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3465 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3466 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3467 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3468 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3469 * 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
3470 the data from the origin instance API
3480 description: Sort videos by criteria
3495 description: Sort videos by criteria
3510 description: Sort comments by criteria
3520 description: Sort blacklists by criteria
3536 description: Plain text search that will match with user usernames or emails
3543 description: Filter results down to (un)banned users
3550 description: Sort users by criteria
3561 description: Sort abuses by criteria
3568 videoRedundanciesSort:
3572 description: Sort abuses by criteria
3581 description: The username or handle of the account
3584 example: chocobozzz | chocobozzz@example.org
3589 description: The user id
3598 description: The object id or uuid
3606 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3608 name: playlistElementId
3611 description: Playlist element id
3618 description: Abuse id
3622 name: abuseMessageId
3625 description: Abuse message id
3629 name: captionLanguage
3632 description: The caption language
3639 description: The video channel handle
3642 example: my_username | my_username@example.com
3644 name: subscriptionHandle
3647 description: The subscription handle
3650 example: my_username | my_username@example.com
3655 description: The thread id (root comment id)
3662 description: The comment id
3669 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3682 description: tag(s) of the video
3695 description: tag(s) of the video, where all should be present in the video
3708 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
3721 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3734 description: if you don't need the `total` in the response
3745 description: whether to include nsfw videos, if any
3756 Special filters which might require special rights:
3757 * `local` - only videos local to the instance
3758 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3759 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
3769 description: list of uris to check if each is part of the user subscriptions
3779 description: name of the plugin/theme on npmjs.com or in its package.json
3782 example: peertube-plugin-auth-ldap
3786 In the header: *Authorization: Bearer <token\>*
3789 Authenticating via OAuth requires the following steps:
3792 - Have an account with sufficient authorization levels
3794 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3797 - Make Authenticated Requests
3801 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3804 moderator: Moderator scope
3807 VideoConstantNumber:
3813 VideoConstantString:
3820 VideoPlaylistPrivacySet:
3826 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3827 VideoPlaylistPrivacyConstant:
3830 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3834 VideoPlaylistTypeSet:
3839 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3840 VideoPlaylistTypeConstant:
3843 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3854 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3855 VideoPrivacyConstant:
3858 $ref: '#/components/schemas/VideoPrivacySet'
3875 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3886 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3896 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3900 $ref: '#/components/schemas/AbuseStateSet'
3903 AbusePredefinedReasons:
3916 example: [spamOrMisleading]
3918 VideoResolutionConstant:
3922 description: 'Video resolution (240, 360, 720 ...)'
3927 VideoScheduledUpdate:
3930 $ref: '#/components/schemas/VideoPrivacySet'
3934 description: When to update the video
3954 - $ref: '#/components/schemas/Avatar'
3955 VideoChannelSummary:
3972 - $ref: '#/components/schemas/Avatar'
3984 - $ref: '#/components/schemas/Video'
3990 $ref: '#/components/schemas/VideoResolutionConstant'
3993 description: 'Video file size in bytes'
4011 VideoStreamingPlaylists:
4019 description: 'Playlist type (HLS = `1`)'
4028 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)'
4030 $ref: '#/components/schemas/VideoFile'
4046 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4057 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4069 originallyPublishedAt:
4073 $ref: '#/components/schemas/VideoConstantNumber'
4075 $ref: '#/components/schemas/VideoConstantNumber'
4077 $ref: '#/components/schemas/VideoConstantString'
4079 $ref: '#/components/schemas/VideoPrivacyConstant'
4089 example: What is PeerTube?
4092 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4095 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4098 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4114 $ref: '#/components/schemas/VideoStateConstant'
4118 - $ref: '#/components/schemas/VideoScheduledUpdate'
4126 $ref: '#/components/schemas/AccountSummary'
4128 $ref: '#/components/schemas/VideoChannelSummary'
4137 - $ref: '#/components/schemas/Video'
4144 description: A text tell the audience how to support the video creator
4145 example: Please support my work on <insert crowdfunding plateform>! <3
4147 $ref: '#/components/schemas/VideoChannel'
4149 $ref: '#/components/schemas/Account'
4154 example: [flowers, gardening]
4157 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'
4159 $ref: '#/components/schemas/VideoFile'
4172 $ref: '#/components/schemas/VideoStreamingPlaylists'
4173 FileRedundancyInformation:
4210 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4217 $ref: '#/components/schemas/FileRedundancyInformation'
4221 $ref: '#/components/schemas/FileRedundancyInformation'
4222 VideoImportStateConstant:
4230 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4242 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4246 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
4250 $ref: '#/components/schemas/VideoImportStateConstant'
4260 $ref: '#/components/schemas/Video'
4268 example: The video is a spam
4270 $ref: '#/components/schemas/AbusePredefinedReasons'
4272 $ref: '#/components/schemas/Account'
4274 $ref: '#/components/schemas/AbuseStateConstant'
4277 example: Decided to ban the server since it spams us regularly
4288 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4304 $ref: '#/components/schemas/AccountSummary'
4322 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4351 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4367 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4377 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4379 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4381 $ref: '#/components/schemas/AccountSummary'
4383 $ref: '#/components/schemas/VideoChannelSummary'
4405 totalRepliesFromVideoAuthor:
4410 $ref: '#/components/schemas/Account'
4411 VideoCommentThreadTree:
4414 $ref: '#/components/schemas/VideoComment'
4418 $ref: '#/components/schemas/VideoCommentThreadTree'
4422 $ref: '#/components/schemas/VideoConstantString'
4477 $ref: '#/components/schemas/Avatar'
4480 - $ref: '#/components/schemas/Actor'
4493 description: timestamp within the video, in seconds
4560 allowedForCurrentIP:
4562 requiresEmailVerification:
4766 requiresEmailVerification:
4791 allowAdditionalExtensions:
4859 $ref: '#/components/schemas/Actor'
4861 $ref: '#/components/schemas/Actor'
4864 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4877 PredefinedAbuseReasons:
4878 description: Reason categories that help triage reports
4909 - activitypub-http-unicast
4910 - activitypub-http-broadcast
4911 - activitypub-http-fetcher
4912 - activitypub-follow
4918 - activitypub-refresher
4922 additionalProperties: true
4925 additionalProperties: true
4949 VideoUploadResponse:
4960 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4961 CommentThreadResponse:
4970 $ref: '#/components/schemas/VideoComment'
4971 CommentThreadPostResponse:
4974 $ref: '#/components/schemas/VideoComment'
4984 $ref: '#/components/schemas/Video'
4992 description: The user username
4998 description: The user email
5001 description: Theme enabled by this user
5004 description: Has the user confirmed their email address?
5006 $ref: '#/components/schemas/NSFWPolicy'
5009 description: Enable P2P in the player
5012 description: Automatically start playing the video on the watch page
5014 $ref: '#/components/schemas/UserRole'
5023 description: The user video quota
5026 description: The user daily video quota
5031 abusesAcceptedCount:
5037 noInstanceConfigWarningModal:
5048 $ref: '#/components/schemas/Account'
5052 $ref: '#/components/schemas/VideoChannel'
5057 description: The user username
5063 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5069 description: The user email
5072 description: The user video quota
5075 description: The user daily video quota
5077 $ref: '#/components/schemas/UserRole'
5089 description: The user id
5093 description: The updated email of the user
5096 description: The updated video quota of the user
5099 description: The updated daily video quota of the user
5101 $ref: '#/components/schemas/UserRole'
5113 description: Your new password
5119 description: Your new email
5122 description: Your new displayNSFW
5129 description: Your new autoPlayVideo
5139 description: Id of the video
5142 description: Rating of the video
5149 $ref: '#/components/schemas/Video'
5152 description: 'Rating of the video'
5160 description: The username of the user
5163 pattern: '/^[a-z0-9._]{1,50}$/'
5167 description: The password of the user
5173 description: The email of the user
5176 description: The user display name
5184 description: The username for the default channel
5185 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5188 description: The display name for the default channel
5205 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5206 example: Please support my work on <insert crowdfunding plateform>! <3
5218 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5219 example: Please support my work on <insert crowdfunding plateform>! <3
5220 bulkVideosSupportUpdate:
5222 description: 'Update the support field for all videos of this channel'
5227 name: 'media:peerLink'
5236 - application/x-bittorrent
5242 name: 'media:content'
5273 VideoCommentsForXML:
5308 description: video watch page URL
5311 description: video canonical URL
5315 description: video publication date
5318 description: video description
5321 description: video description
5324 description: publisher user name
5327 description: video category (MRSS)
5330 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5345 description: video embed path, relative to the canonical URL domain (MRSS)
5354 description: video watch path, relative to the canonical URL domain (MRSS)
5375 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5376 'media:description':
5383 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5386 description: main streamable file for the video
5396 - application/x-bittorrent
5405 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)
5408 - $ref: '#/components/schemas/MRSSPeerLink'
5409 - $ref: '#/components/schemas/MRSSGroupContent'
5410 NotificationSettingValue:
5431 Notification type, following the `UserNotificationType` enum:
5433 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5435 - `2` NEW_COMMENT_ON_MY_VIDEO
5437 - `3` NEW_ABUSE_FOR_MODERATORS
5439 - `4` BLACKLIST_ON_MY_VIDEO
5441 - `5` UNBLACKLIST_ON_MY_VIDEO
5443 - `6` MY_VIDEO_PUBLISHED
5445 - `7` MY_VIDEO_IMPORT_SUCCESS
5447 - `8` MY_VIDEO_IMPORT_ERROR
5449 - `9` NEW_USER_REGISTRATION
5453 - `11` COMMENT_MENTION
5455 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5457 - `13` NEW_INSTANCE_FOLLOWER
5459 - `14` AUTO_INSTANCE_FOLLOWING
5465 - $ref: '#/components/schemas/VideoInfo'
5469 $ref: '#/components/schemas/ActorInfo'
5478 $ref: '#/components/schemas/VideoInfo'
5499 $ref: '#/components/schemas/VideoInfo'
5501 $ref: '#/components/schemas/ActorInfo'
5510 - $ref: '#/components/schemas/VideoInfo'
5519 - $ref: '#/components/schemas/VideoInfo'
5523 - $ref: '#/components/schemas/ActorInfo'
5531 $ref: '#/components/schemas/ActorInfo'
5559 NotificationListResponse:
5568 $ref: '#/components/schemas/Notification'
5573 example: peertube-plugin-auth-ldap
5601 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5604 additionalProperties: true
5620 $ref: '#/components/schemas/Plugin'
5627 description: User can stream multiple times in a permanent live
5636 description: RTMP stream key to use to stream into this live video
5640 description: User can stream multiple times in a permanent live
5645 'https://search.example.org/api/v1/search/videos':
5647 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5650 description: successful operation
5654 $ref: '#/components/schemas/VideoListResponse'