6 name: PeerTube Community
7 url: 'https://joinpeertube.org'
10 url: 'https://github.com/Chocobozzz/PeerTube/blob/master/LICENSE'
12 url: 'https://joinpeertube.org/img/brand.png'
13 altText: PeerTube Project Homepage
17 The PeerTube API is built on HTTP(S) and is RESTful. You can use your favorite
18 HTTP/REST library for your programming language to use PeerTube. The spec API is fully compatible with
19 [openapi-generator](https://github.com/OpenAPITools/openapi-generator/wiki/API-client-generator-HOWTO)
20 which generates a client SDK in the language of your choice - we generate some client SDKs automatically:
22 - [Python](https://framagit.org/framasoft/peertube/clients/python)
23 - [Go](https://framagit.org/framasoft/peertube/clients/go)
24 - [Kotlin](https://framagit.org/framasoft/peertube/clients/kotlin)
26 See the [Quick Start guide](https://docs.joinpeertube.org/#/api-rest-getting-started) so you can play with the PeerTube API.
30 When you sign up for an account, you are given the possibility to generate
31 sessions, and authenticate using this session token. One session token can
32 currently be used at a time.
36 Accounts are given permissions based on their role. There are three roles on
37 PeerTube: Administrator, Moderator, and User. See the [roles guide](https://docs.joinpeertube.org/#/admin-managing-users?id=roles) for a detail of their permissions.
41 The API uses standard HTTP status codes to indicate the success or failure
42 of the API call. The body of the response will be JSON in the following
47 "code": "unauthorized_request", // example inner error code
48 "error": "Token is invalid." // example exposed error message
52 url: https://docs.joinpeertube.org/api-rest-reference.html
56 Accounts encompass remote accounts discovered across the federation,
57 and correspond to the main Actor, along with video channels a user can create, which
60 When a comment is posted, it is done with your Account's Actor.
63 Using some features of PeerTube require authentication, for which User
64 provide different levels of permission as well as associated user
65 information. Each user has a corresponding local Account for federation.
68 Operations related to your own User, when logged-in.
69 - name: My Subscriptions
71 Operations related to your subscriptions to video channels, their
72 new videos, and how to keep up to date with their latest publications!
75 Operations related to your watch history.
76 - name: My Notifications
78 Notifications following new videos, follows or reports. They allow you
79 to keep track of the interactions and overall important information that
80 concerns you. You MAY set per-notification type delivery preference, to
81 receive the info either by mail, by in-browser notification or both.
84 Each server exposes public information regarding supported videos and
88 Jobs are long-running tasks enqueued and processed by the instance
89 itself. No additional worker registration is currently available.
90 - name: Instance Follows
92 Managing servers which the instance interacts with is crucial to the
93 concept of federation in PeerTube and external video indexation. The PeerTube
94 server then deals with inter-server ActivityPub operations and propagates
95 information across its social graph by posting activities to actors' inbox
98 url: https://docs.joinpeertube.org/#/admin-following-instances?id=instances-follows
99 - name: Instance Redundancy
101 Redundancy is part of the inter-server solidarity that PeerTube fosters.
102 Manage the list of instances you wish to help by seeding their videos according
103 to the policy of video selection of your choice. Note that you have a similar functionality
104 to mirror individual videos, see `Video Mirroring`.
106 url: https://docs.joinpeertube.org/#/admin-following-instances?id=instances-redundancy
109 Managing plugins installed from a local path or from NPM, or search for new ones.
111 url: https://docs.joinpeertube.org/#/api-plugins
114 Abuses deal with reports of local or remote videos/comments/accounts alike.
117 Operations dealing with listing, uploading, fetching or modifying videos.
120 The search helps to find _videos_ or _channels_ from within the instance and beyond.
121 Videos from other instances federated by the instance (that is, instances
122 followed by the instance) can be found via keywords and other criteria of
125 Administrators can also enable the use of a remote search system, indexing
126 videos and channels not could be not federated by the instance.
127 - name: Video Comments
129 Operations dealing with comments to a video. Comments are organized in
131 - name: Video Playlists
133 Operations dealing with playlists of videos. Playlists are bound to users
135 - name: Video Channels
137 Operations dealing with the creation, modification and listing of videos within a channel.
140 Operations dealing with blocking videos (removing them from view and
141 preventing interactions).
144 Like/dislike a video.
147 Server syndication feeds
165 - Video Ownership Change
178 - name: Instance Configuration
182 - Instance Redundancy
192 summary: Get an account
194 - $ref: '#/components/parameters/name'
197 description: successful operation
201 $ref: '#/components/schemas/Account'
203 description: account not found
204 '/accounts/{name}/videos':
209 summary: 'List videos of an account'
211 - $ref: '#/components/parameters/name'
212 - $ref: '#/components/parameters/categoryOneOf'
213 - $ref: '#/components/parameters/tagsOneOf'
214 - $ref: '#/components/parameters/tagsAllOf'
215 - $ref: '#/components/parameters/licenceOneOf'
216 - $ref: '#/components/parameters/languageOneOf'
217 - $ref: '#/components/parameters/nsfw'
218 - $ref: '#/components/parameters/filter'
219 - $ref: '#/components/parameters/skipCount'
220 - $ref: '#/components/parameters/start'
221 - $ref: '#/components/parameters/count'
222 - $ref: '#/components/parameters/videosSort'
225 description: successful operation
229 $ref: '#/components/schemas/VideoListResponse'
233 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
234 .then(function(response) {
235 return response.json()
236 }).then(function(data) {
242 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
248 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
250 http = Net::HTTP.new(uri.host, uri.port)
253 response = http.get(uri.request_uri)
255 puts JSON.parse(response.read_body)
260 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
268 summary: List accounts
270 - $ref: '#/components/parameters/start'
271 - $ref: '#/components/parameters/count'
272 - $ref: '#/components/parameters/sort'
275 description: successful operation
281 $ref: '#/components/schemas/Account'
286 summary: Get instance public configuration
289 description: successful operation
293 $ref: '#/components/schemas/ServerConfig'
296 summary: Get instance "About" information
301 description: successful operation
305 $ref: '#/components/schemas/ServerConfigAbout'
308 summary: Get instance runtime configuration
316 description: successful operation
320 $ref: '#/components/schemas/ServerConfigCustom'
322 summary: Set instance runtime configuration
330 description: successful operation
332 x-summary: field inconsistencies
335 - the emailer is disabled and the instance is open to registrations
336 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
338 summary: Delete instance runtime configuration
346 description: successful operation
349 summary: List instance jobs
359 description: The state of the job ('' for for no filter)
369 - $ref: '#/components/parameters/jobType'
370 - $ref: '#/components/parameters/start'
371 - $ref: '#/components/parameters/count'
372 - $ref: '#/components/parameters/sort'
375 description: successful operation
388 $ref: '#/components/schemas/Job'
389 '/server/following/{host}':
396 summary: Unfollow a server
401 description: 'The host to unfollow '
407 description: successful operation
412 summary: List instance followers
414 - $ref: '#/components/parameters/start'
415 - $ref: '#/components/parameters/count'
416 - $ref: '#/components/parameters/sort'
419 description: successful operation
425 $ref: '#/components/schemas/Follow'
430 summary: List instances followed by the server
449 - $ref: '#/components/parameters/start'
450 - $ref: '#/components/parameters/count'
451 - $ref: '#/components/parameters/sort'
454 description: successful operation
460 $ref: '#/components/schemas/Follow'
467 summary: Follow a server
470 description: successful operation
472 description: cannot follow a non-HTTPS server
487 summary: Create a user
495 description: user created
499 $ref: '#/components/schemas/AddUserResponse'
503 operationId: getUserId
505 id: '$response.body#/user/id'
508 operationId: putUserId
510 id: '$response.body#/user/id'
513 operationId: delUserId
515 id: '$response.body#/user/id'
517 description: insufficient authority to create an admin or moderator
522 $ref: '#/components/schemas/AddUser'
523 description: User to create
533 - $ref: '#/components/parameters/usersSearch'
534 - $ref: '#/components/parameters/usersBlocked'
535 - $ref: '#/components/parameters/start'
536 - $ref: '#/components/parameters/count'
537 - $ref: '#/components/parameters/usersSort'
540 description: successful operation
546 $ref: '#/components/schemas/User'
549 - $ref: '#/components/parameters/id'
551 summary: Delete a user
557 operationId: delUserId
560 description: successful operation
567 operationId: getUserId
570 description: successful operation
574 $ref: '#/components/schemas/User'
576 summary: Update a user
581 operationId: putUserId
584 description: successful operation
589 $ref: '#/components/schemas/UpdateUser'
593 summary: Register a user
598 description: successful operation
603 $ref: '#/components/schemas/RegisterUser'
607 summary: Get my user information
615 description: successful operation
621 $ref: '#/components/schemas/User'
623 summary: Update my user information
631 description: successful operation
636 $ref: '#/components/schemas/UpdateMe'
638 /users/me/videos/imports:
640 summary: Get video imports of my user
648 - $ref: '#/components/parameters/start'
649 - $ref: '#/components/parameters/count'
650 - $ref: '#/components/parameters/sort'
653 description: successful operation
657 $ref: '#/components/schemas/VideoImport'
658 /users/me/video-quota-used:
660 summary: Get my user used quota
668 description: successful operation
673 '/users/me/videos/{videoId}/rating':
675 summary: Get rate of my user for a video
685 description: 'The video id '
690 description: successful operation
694 $ref: '#/components/schemas/GetMeVideoRating'
697 summary: Get videos of my user
705 - $ref: '#/components/parameters/start'
706 - $ref: '#/components/parameters/count'
707 - $ref: '#/components/parameters/sort'
710 description: successful operation
714 $ref: '#/components/schemas/VideoListResponse'
715 /users/me/subscriptions:
717 summary: Get my user subscriptions
724 - $ref: '#/components/parameters/start'
725 - $ref: '#/components/parameters/count'
726 - $ref: '#/components/parameters/sort'
729 description: successful operation
733 summary: Add subscription to my user
746 description: uri of the video channels to subscribe to
752 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
755 description: successful operation
756 /users/me/subscriptions/exist:
758 summary: Get if subscriptions exist for my user
765 - $ref: '#/components/parameters/subscriptionsUris'
768 description: successful operation
773 /users/me/subscriptions/videos:
775 summary: List videos of subscriptions of my user
783 - $ref: '#/components/parameters/categoryOneOf'
784 - $ref: '#/components/parameters/tagsOneOf'
785 - $ref: '#/components/parameters/tagsAllOf'
786 - $ref: '#/components/parameters/licenceOneOf'
787 - $ref: '#/components/parameters/languageOneOf'
788 - $ref: '#/components/parameters/nsfw'
789 - $ref: '#/components/parameters/filter'
790 - $ref: '#/components/parameters/skipCount'
791 - $ref: '#/components/parameters/start'
792 - $ref: '#/components/parameters/count'
793 - $ref: '#/components/parameters/videosSort'
796 description: successful operation
800 $ref: '#/components/schemas/VideoListResponse'
801 '/users/me/subscriptions/{subscriptionHandle}':
803 summary: Get subscription of my user
810 - $ref: '#/components/parameters/subscriptionHandle'
813 description: successful operation
817 $ref: '#/components/schemas/VideoChannel'
819 summary: Delete subscription of my user
826 - $ref: '#/components/parameters/subscriptionHandle'
829 description: successful operation
830 /users/me/notifications:
832 summary: List my notifications
840 description: only list unread notifications
843 - $ref: '#/components/parameters/start'
844 - $ref: '#/components/parameters/count'
845 - $ref: '#/components/parameters/sort'
848 description: successful operation
852 $ref: '#/components/schemas/NotificationListResponse'
853 /users/me/notifications/read:
855 summary: Mark notifications as read by their id
868 description: ids of the notifications to mark as read
875 description: successful operation
876 /users/me/notifications/read-all:
878 summary: Mark all my notification as read
885 description: successful operation
886 /users/me/notification-settings:
888 summary: Update my notification settings
899 newVideoFromSubscription:
900 $ref: '#/components/schemas/NotificationSettingValue'
902 $ref: '#/components/schemas/NotificationSettingValue'
904 $ref: '#/components/schemas/NotificationSettingValue'
905 videoAutoBlacklistAsModerator:
906 $ref: '#/components/schemas/NotificationSettingValue'
908 $ref: '#/components/schemas/NotificationSettingValue'
910 $ref: '#/components/schemas/NotificationSettingValue'
911 myVideoImportFinished:
912 $ref: '#/components/schemas/NotificationSettingValue'
914 $ref: '#/components/schemas/NotificationSettingValue'
916 $ref: '#/components/schemas/NotificationSettingValue'
918 $ref: '#/components/schemas/NotificationSettingValue'
920 $ref: '#/components/schemas/NotificationSettingValue'
921 autoInstanceFollowing:
922 $ref: '#/components/schemas/NotificationSettingValue'
925 description: successful operation
926 /users/me/history/videos:
928 summary: List watched videos history
934 - $ref: '#/components/parameters/start'
935 - $ref: '#/components/parameters/count'
938 description: successful operation
942 $ref: '#/components/schemas/VideoListResponse'
943 /users/me/history/videos/remove:
945 summary: Clear video history
957 description: history before this date will be deleted
962 description: successful operation
963 /users/me/avatar/pick:
965 summary: Update my user avatar
972 description: successful operation
976 $ref: '#/components/schemas/Avatar'
978 description: image file too large
984 description: Maximum file size for the avatar
992 description: The file to upload.
997 contentType: image/png, image/jpeg
1000 summary: List video ownership changes
1002 - Video Ownership Change
1007 description: successful operation
1008 '/videos/ownership/{id}/accept':
1010 summary: Accept ownership change request
1012 - Video Ownership Change
1016 - $ref: '#/components/parameters/idOrUUID'
1019 description: successful operation
1021 description: cannot terminate an ownership change of another user
1023 description: video owneship change not found
1024 '/videos/ownership/{id}/refuse':
1026 summary: Refuse ownership change request
1028 - Video Ownership Change
1032 - $ref: '#/components/parameters/idOrUUID'
1035 description: successful operation
1037 description: cannot terminate an ownership change of another user
1039 description: video owneship change not found
1040 '/videos/{id}/give-ownership':
1042 summary: Request ownership change
1044 - Video Ownership Change
1048 - $ref: '#/components/parameters/idOrUUID'
1052 application/x-www-form-urlencoded:
1062 description: successful operation
1064 description: changing video ownership to a remote account is not supported yet
1066 description: video not found
1069 summary: List videos
1073 - $ref: '#/components/parameters/categoryOneOf'
1074 - $ref: '#/components/parameters/tagsOneOf'
1075 - $ref: '#/components/parameters/tagsAllOf'
1076 - $ref: '#/components/parameters/licenceOneOf'
1077 - $ref: '#/components/parameters/languageOneOf'
1078 - $ref: '#/components/parameters/nsfw'
1079 - $ref: '#/components/parameters/filter'
1080 - $ref: '#/components/parameters/skipCount'
1081 - $ref: '#/components/parameters/start'
1082 - $ref: '#/components/parameters/count'
1083 - $ref: '#/components/parameters/videosSort'
1086 description: successful operation
1090 $ref: '#/components/schemas/VideoListResponse'
1093 summary: List available video categories
1098 description: successful operation
1107 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1110 summary: List available video licences
1115 description: successful operation
1124 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1127 summary: List available video languages
1132 description: successful operation
1141 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1144 summary: List available video privacies
1149 description: successful operation
1158 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1161 summary: Update a video
1167 - $ref: '#/components/parameters/idOrUUID'
1170 description: successful operation
1173 multipart/form-data:
1178 description: Video thumbnail file
1182 description: Video preview file
1186 description: Video category
1190 description: Video licence
1194 description: Video language
1197 $ref: '#/components/schemas/VideoPrivacySet'
1199 description: Video description
1202 description: Whether or not we wait transcoding before publish the video
1205 description: A text tell the audience how to support the video creator
1206 example: Please support my work on <insert crowdfunding plateform>! <3
1209 description: Whether or not this video contains sensitive content
1212 description: Video name
1215 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1224 description: Enable or disable comments for this video
1226 originallyPublishedAt:
1227 description: Date when the content was originally published
1231 $ref: '#/components/schemas/VideoScheduledUpdate'
1234 contentType: image/jpeg
1236 contentType: image/jpeg
1238 summary: Get a video
1242 - $ref: '#/components/parameters/idOrUUID'
1245 description: successful operation
1249 $ref: '#/components/schemas/VideoDetails'
1251 summary: Delete a video
1257 - $ref: '#/components/parameters/idOrUUID'
1260 description: successful operation
1261 '/videos/{id}/description':
1263 summary: Get complete video description
1267 - $ref: '#/components/parameters/idOrUUID'
1270 description: successful operation
1275 '/videos/{id}/views':
1277 summary: Add a view to a video
1281 - $ref: '#/components/parameters/idOrUUID'
1284 description: successful operation
1285 '/videos/{id}/watching':
1287 summary: Set watching progress of a video
1293 - $ref: '#/components/parameters/idOrUUID'
1298 $ref: '#/components/schemas/UserWatchingVideo'
1302 description: successful operation
1305 summary: Upload a video
1312 description: successful operation
1316 $ref: '#/components/schemas/VideoUploadResponse'
1318 description: invalid file field, schedule date or parameter
1320 description: video didn't pass upload filter
1322 description: upload has timed out
1324 description: video file too large, due to quota or max body size limit set by the reverse-proxy
1326 X-File-Maximum-Size:
1330 description: Maximum file size for the video
1332 description: video type unsupported
1334 description: video unreadable
1337 multipart/form-data:
1342 description: Video file
1346 description: Channel id that will contain this video
1349 description: Video thumbnail file
1353 description: Video preview file
1357 $ref: '#/components/schemas/VideoPrivacySet'
1359 description: Video category
1363 description: Video licence
1366 description: Video language
1370 description: Video description
1373 description: Whether or not we wait transcoding before publish the video
1376 description: A text tell the audience how to support the video creator
1377 example: Please support my work on <insert crowdfunding plateform>! <3
1380 description: Whether or not this video contains sensitive content
1383 description: Video name
1386 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1396 description: Enable or disable comments for this video
1399 description: Enable or disable downloading for this video
1401 originallyPublishedAt:
1402 description: Date when the content was originally published
1406 $ref: '#/components/schemas/VideoScheduledUpdate'
1413 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1415 contentType: image/jpeg
1417 contentType: image/jpeg
1422 USERNAME="<your_username>"
1423 PASSWORD="<your_password>"
1424 FILE_PATH="<your_file_path>"
1425 CHANNEL_ID="<your_channel_id>"
1428 API_PATH="https://peertube2.cpy.re/api/v1"
1430 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1431 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1432 token=$(curl -s "$API_PATH/users/token" \
1433 --data client_id="$client_id" \
1434 --data client_secret="$client_secret" \
1435 --data grant_type=password \
1436 --data response_type=code \
1437 --data username="$USERNAME" \
1438 --data password="$PASSWORD" \
1439 | jq -r ".access_token")
1441 curl -s "$API_PATH/videos/upload" \
1442 -H "Authorization: Bearer $token" \
1444 --form videofile=@"$FILE_PATH" \
1445 --form channelId=$CHANNEL_ID \
1449 summary: Import a video
1450 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1457 multipart/form-data:
1462 description: Torrent File
1466 description: HTTP target URL
1469 description: Magnet URI
1472 description: Channel id that will contain this video
1475 description: Video thumbnail file
1479 description: Video preview file
1483 $ref: '#/components/schemas/VideoPrivacySet'
1485 description: Video category
1488 description: Video licence
1491 description: Video language
1494 description: Video description
1497 description: Whether or not we wait transcoding before publish the video
1500 description: A text tell the audience how to support the video creator
1501 example: Please support my work on <insert crowdfunding plateform>! <3
1504 description: Whether or not this video contains sensitive content
1507 description: Video name
1510 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1519 description: Enable or disable comments for this video
1522 description: Enable or disable downloading for this video
1525 $ref: '#/components/schemas/VideoScheduledUpdate'
1531 contentType: application/x-bittorrent
1533 contentType: image/jpeg
1535 contentType: image/jpeg
1538 description: successful operation
1542 $ref: '#/components/schemas/VideoUploadResponse'
1544 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1546 description: video didn't pass pre-import filter
1548 description: HTTP or Torrent/magnetURI import not enabled
1552 summary: Create a live
1560 description: successful operation
1564 $ref: '#/components/schemas/VideoUploadResponse'
1566 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1569 multipart/form-data:
1574 description: Channel id that will contain this live video
1579 description: User can stream multiple times in a permanent live
1582 description: Live video/replay thumbnail file
1586 description: Live video/replay preview file
1590 $ref: '#/components/schemas/VideoPrivacySet'
1592 description: Live video/replay category
1595 description: Live video/replay licence
1598 description: Live video/replay language
1601 description: Live video/replay description
1604 description: A text tell the audience how to support the creator
1605 example: Please support my work on <insert crowdfunding plateform>! <3
1608 description: Whether or not this live video/replay contains sensitive content
1611 description: Live video/replay name
1614 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1623 description: Enable or disable comments for this live video/replay
1626 description: Enable or disable downloading for the replay of this live
1633 contentType: image/jpeg
1635 contentType: image/jpeg
1639 summary: Get a live information
1646 - $ref: '#/components/parameters/idOrUUID'
1649 description: successful operation
1653 $ref: '#/components/schemas/LiveVideoResponse'
1655 summary: Update a live information
1662 - $ref: '#/components/parameters/idOrUUID'
1667 $ref: '#/components/schemas/LiveVideoUpdate'
1670 description: Successful operation
1672 description: Bad parameters or trying to update a live that has already started
1674 description: Trying to save replay of the live but saving replay is not enabled on the instance
1678 summary: List my abuses
1687 description: only list the report with this id
1693 $ref: '#/components/schemas/AbuseStateSet'
1694 - $ref: '#/components/parameters/start'
1695 - $ref: '#/components/parameters/count'
1696 - $ref: '#/components/parameters/abusesSort'
1699 description: successful operation
1705 $ref: '#/components/schemas/Abuse'
1709 summary: List abuses
1719 description: only list the report with this id
1722 - name: predefinedReason
1724 description: predefined reason the listed reports should contain
1726 $ref: '#/components/schemas/PredefinedAbuseReasons'
1729 description: plain search that will match with video titles, reporter names and more
1735 $ref: '#/components/schemas/AbuseStateSet'
1736 - name: searchReporter
1738 description: only list reports of a specific reporter
1741 - name: searchReportee
1742 description: only list reports of a specific reportee
1748 description: only list reports of a specific video
1751 - name: searchVideoChannel
1753 description: only list reports of a specific video channel
1758 description: only list blacklisted or deleted videos
1766 description: only list account, comment or video reports
1773 - $ref: '#/components/parameters/start'
1774 - $ref: '#/components/parameters/count'
1775 - $ref: '#/components/parameters/abusesSort'
1778 description: successful operation
1784 $ref: '#/components/schemas/Abuse'
1787 summary: Report an abuse
1800 description: Reason why the user reports this video
1804 $ref: '#/components/schemas/PredefinedAbuseReasons'
1810 description: Video id to report
1814 description: Timestamp in the video that marks the beginning of the report
1818 description: Timestamp in the video that marks the ending of the report
1824 description: Comment id to report
1830 description: Account id to report
1836 description: successful operation
1838 description: incorrect request parameters
1839 '/abuses/{abuseId}':
1841 summary: Update an abuse
1849 - $ref: '#/components/parameters/abuseId'
1857 $ref: '#/components/schemas/AbuseStateSet'
1860 description: Update the report comment visible only to the moderation team
1863 description: successful operation
1865 description: abuse not found
1869 summary: Delete an abuse
1875 - $ref: '#/components/parameters/abuseId'
1878 description: successful operation
1880 description: block not found
1881 '/abuses/{abuseId}/messages':
1883 summary: List messages of an abuse
1889 - $ref: '#/components/parameters/abuseId'
1892 description: successful operation
1898 $ref: '#/components/schemas/AbuseMessage'
1901 summary: Add message to an abuse
1907 - $ref: '#/components/parameters/abuseId'
1916 description: Message to send
1922 description: successful operation
1924 description: incorrect request parameters
1925 '/abuses/{abuseId}/messages/{abuseMessageId}':
1927 summary: Delete an abuse message
1933 - $ref: '#/components/parameters/abuseId'
1934 - $ref: '#/components/parameters/abuseMessageId'
1937 description: successful operation
1939 '/videos/{id}/blacklist':
1941 summary: Block a video
1949 - $ref: '#/components/parameters/idOrUUID'
1952 description: successful operation
1954 summary: Unblock a video by its id
1962 - $ref: '#/components/parameters/idOrUUID'
1965 description: successful operation
1967 description: block not found
1972 summary: List video blocks
1981 list only blocks that match this type:
1985 - `2`: automatic block that needs review
1993 description: plain search that will match with video titles, and more
1996 - $ref: '#/components/parameters/start'
1997 - $ref: '#/components/parameters/count'
1998 - $ref: '#/components/parameters/blacklistsSort'
2001 description: successful operation
2013 $ref: '#/components/schemas/VideoBlacklist'
2014 /videos/{id}/captions:
2016 summary: List captions of a video
2020 - $ref: '#/components/parameters/idOrUUID'
2023 description: successful operation
2035 $ref: '#/components/schemas/VideoCaption'
2036 /videos/{id}/captions/{captionLanguage}:
2038 summary: Add or replace a video caption
2045 - $ref: '#/components/parameters/idOrUUID'
2046 - $ref: '#/components/parameters/captionLanguage'
2049 multipart/form-data:
2054 description: The file to upload.
2059 contentType: text/vtt, application/x-subrip, text/plain
2062 description: successful operation
2064 description: video or language not found
2066 summary: Delete a video caption
2073 - $ref: '#/components/parameters/idOrUUID'
2074 - $ref: '#/components/parameters/captionLanguage'
2077 description: successful operation
2079 description: video or language or caption for that language not found
2082 summary: List video channels
2086 - $ref: '#/components/parameters/start'
2087 - $ref: '#/components/parameters/count'
2088 - $ref: '#/components/parameters/sort'
2091 description: successful operation
2103 $ref: '#/components/schemas/VideoChannel'
2105 summary: Create a video channel
2112 description: successful operation
2117 $ref: '#/components/schemas/VideoChannelCreate'
2118 '/video-channels/{channelHandle}':
2120 summary: Get a video channel
2124 - $ref: '#/components/parameters/channelHandle'
2127 description: successful operation
2131 $ref: '#/components/schemas/VideoChannel'
2133 summary: Update a video channel
2139 - $ref: '#/components/parameters/channelHandle'
2142 description: successful operation
2147 $ref: '#/components/schemas/VideoChannelUpdate'
2149 summary: Delete a video channel
2155 - $ref: '#/components/parameters/channelHandle'
2158 description: successful operation
2159 '/video-channels/{channelHandle}/videos':
2161 summary: List videos of a video channel
2166 - $ref: '#/components/parameters/channelHandle'
2167 - $ref: '#/components/parameters/categoryOneOf'
2168 - $ref: '#/components/parameters/tagsOneOf'
2169 - $ref: '#/components/parameters/tagsAllOf'
2170 - $ref: '#/components/parameters/licenceOneOf'
2171 - $ref: '#/components/parameters/languageOneOf'
2172 - $ref: '#/components/parameters/nsfw'
2173 - $ref: '#/components/parameters/filter'
2174 - $ref: '#/components/parameters/skipCount'
2175 - $ref: '#/components/parameters/start'
2176 - $ref: '#/components/parameters/count'
2177 - $ref: '#/components/parameters/videosSort'
2180 description: successful operation
2184 $ref: '#/components/schemas/VideoListResponse'
2186 /video-playlists/privacies:
2188 summary: List available playlist privacies
2193 description: successful operation
2202 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2206 summary: List video playlists
2210 - $ref: '#/components/parameters/start'
2211 - $ref: '#/components/parameters/count'
2212 - $ref: '#/components/parameters/sort'
2215 description: successful operation
2227 $ref: '#/components/schemas/VideoPlaylist'
2229 summary: Create a video playlist
2230 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2237 description: successful operation
2252 multipart/form-data:
2257 description: Video playlist display name
2260 description: Video playlist thumbnail file
2264 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2266 description: Video playlist description
2269 description: Video channel in which the playlist will be published
2275 contentType: image/jpeg
2277 /video-playlists/{id}:
2279 summary: Get a video playlist
2283 - $ref: '#/components/parameters/idOrUUID'
2286 description: successful operation
2290 $ref: '#/components/schemas/VideoPlaylist'
2292 summary: Update a video playlist
2293 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2300 description: successful operation
2302 - $ref: '#/components/parameters/idOrUUID'
2305 multipart/form-data:
2310 description: Video playlist display name
2313 description: Video playlist thumbnail file
2317 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2319 description: Video playlist description
2322 description: Video channel in which the playlist will be published
2326 contentType: image/jpeg
2328 summary: Delete a video playlist
2334 - $ref: '#/components/parameters/idOrUUID'
2337 description: successful operation
2339 /video-playlists/{id}/videos:
2341 summary: 'List videos of a playlist'
2346 - $ref: '#/components/parameters/idOrUUID'
2349 description: successful operation
2353 $ref: '#/components/schemas/VideoListResponse'
2355 summary: 'Add a video in a playlist'
2362 - $ref: '#/components/parameters/idOrUUID'
2365 description: successful operation
2371 videoPlaylistElement:
2384 description: 'Video to add in the playlist'
2387 description: 'Start the video at this specific timestamp (in seconds)'
2390 description: 'Stop the video at this specific timestamp (in seconds)'
2394 /video-playlists/{id}/videos/reorder:
2396 summary: 'Reorder a playlist'
2402 - $ref: '#/components/parameters/idOrUUID'
2405 description: successful operation
2414 description: 'Start position of the element to reorder'
2416 insertAfterPosition:
2418 description: 'New position for the block to reorder, to add the block before the first element'
2422 description: 'How many element from `startPosition` to reorder'
2426 - insertAfterPosition
2428 /video-playlists/{id}/videos/{playlistElementId}:
2430 summary: 'Update a playlist element'
2436 - $ref: '#/components/parameters/idOrUUID'
2437 - $ref: '#/components/parameters/playlistElementId'
2440 description: successful operation
2449 description: 'Start the video at this specific timestamp (in seconds)'
2452 description: 'Stop the video at this specific timestamp (in seconds)'
2454 summary: 'Delete an element from a playlist'
2460 - $ref: '#/components/parameters/idOrUUID'
2461 - $ref: '#/components/parameters/playlistElementId'
2464 description: successful operation
2466 '/users/me/video-playlists/videos-exist':
2468 summary: 'Check video exists in my playlists'
2477 description: The video ids to check
2484 description: successful operation
2504 '/accounts/{name}/video-channels':
2506 summary: List video channels of an account
2511 - $ref: '#/components/parameters/name'
2514 description: include view statistics for the last 30 days (only if authentified as the account user)
2517 - $ref: '#/components/parameters/start'
2518 - $ref: '#/components/parameters/count'
2519 - $ref: '#/components/parameters/sort'
2522 description: successful operation
2528 $ref: '#/components/schemas/VideoChannel'
2529 '/accounts/{name}/ratings':
2531 summary: List ratings of an account
2537 - $ref: '#/components/parameters/name'
2538 - $ref: '#/components/parameters/start'
2539 - $ref: '#/components/parameters/count'
2540 - $ref: '#/components/parameters/sort'
2544 description: Optionally filter which ratings to retrieve
2552 description: successful operation
2558 $ref: '#/components/schemas/VideoRating'
2559 '/videos/{id}/comment-threads':
2561 summary: List threads of a video
2565 - $ref: '#/components/parameters/idOrUUID'
2566 - $ref: '#/components/parameters/start'
2567 - $ref: '#/components/parameters/count'
2568 - $ref: '#/components/parameters/commentsSort'
2571 description: successful operation
2575 $ref: '#/components/schemas/CommentThreadResponse'
2577 summary: Create a thread
2583 - $ref: '#/components/parameters/idOrUUID'
2586 description: successful operation
2590 $ref: '#/components/schemas/CommentThreadPostResponse'
2592 description: video does not exist
2601 description: 'Text comment'
2605 '/videos/{id}/comment-threads/{threadId}':
2607 summary: Get a thread
2611 - $ref: '#/components/parameters/idOrUUID'
2612 - $ref: '#/components/parameters/threadId'
2615 description: successful operation
2619 $ref: '#/components/schemas/VideoCommentThreadTree'
2620 '/videos/{id}/comments/{commentId}':
2622 summary: Reply to a thread of a video
2628 - $ref: '#/components/parameters/idOrUUID'
2629 - $ref: '#/components/parameters/commentId'
2632 description: successful operation
2636 $ref: '#/components/schemas/CommentThreadPostResponse'
2638 description: thread or video does not exist
2647 description: 'Text comment'
2652 summary: Delete a comment or a reply
2658 - $ref: '#/components/parameters/idOrUUID'
2659 - $ref: '#/components/parameters/commentId'
2662 description: successful operation
2664 description: cannot remove comment of another user
2666 description: comment or video does not exist
2668 description: comment is already deleted
2669 '/videos/{id}/rate':
2671 summary: Like/dislike a video
2677 - $ref: '#/components/parameters/idOrUUID'
2680 description: successful operation
2682 description: video does not exist
2687 summary: Search videos
2692 allowEmptyValue: false
2694 String to search. If the user can make a remote URI search, and the string is an URI then the
2695 PeerTube instance will fetch the remote object and add it to its database. Then,
2696 you can use the REST API to fetch the complete video information and interact with it.
2699 - $ref: '#/components/parameters/categoryOneOf'
2700 - $ref: '#/components/parameters/tagsOneOf'
2701 - $ref: '#/components/parameters/tagsAllOf'
2702 - $ref: '#/components/parameters/licenceOneOf'
2703 - $ref: '#/components/parameters/languageOneOf'
2704 - $ref: '#/components/parameters/nsfw'
2705 - $ref: '#/components/parameters/filter'
2706 - $ref: '#/components/parameters/skipCount'
2707 - $ref: '#/components/parameters/start'
2708 - $ref: '#/components/parameters/count'
2709 - $ref: '#/components/parameters/searchTarget'
2710 - $ref: '#/components/parameters/videosSearchSort'
2713 description: Get videos that are published after this date
2719 description: Get videos that are published before this date
2723 - name: originallyPublishedStartDate
2725 description: Get videos that are originally published after this date
2729 - name: originallyPublishedEndDate
2731 description: Get videos that are originally published before this date
2737 description: Get videos that have this minimum duration
2742 description: Get videos that have this maximum duration
2746 'searchTarget === search-index':
2747 $ref: '#/components/callbacks/searchIndex'
2750 description: successful operation
2754 $ref: '#/components/schemas/VideoListResponse'
2756 description: search index unavailable
2757 /search/video-channels:
2761 summary: Search channels
2767 String to search. If the user can make a remote URI search, and the string is an URI then the
2768 PeerTube instance will fetch the remote object and add it to its database. Then,
2769 you can use the REST API to fetch the complete channel information and interact with it.
2772 - $ref: '#/components/parameters/start'
2773 - $ref: '#/components/parameters/count'
2774 - $ref: '#/components/parameters/searchTarget'
2775 - $ref: '#/components/parameters/sort'
2777 'searchTarget === search-index':
2778 $ref: '#/components/callbacks/searchIndex'
2781 description: successful operation
2787 $ref: '#/components/schemas/VideoChannel'
2789 description: search index unavailable
2790 /blocklist/accounts:
2794 summary: List account blocks
2799 - $ref: '#/components/parameters/start'
2800 - $ref: '#/components/parameters/count'
2801 - $ref: '#/components/parameters/sort'
2804 description: successful operation
2808 summary: Block an account
2820 example: chocobozzz@example.org
2821 description: account to block, in the form `username@domain`
2826 description: successful operation
2828 description: self-blocking forbidden
2829 '/blocklist/accounts/{accountName}':
2833 summary: Unblock an account by its handle
2841 description: account to unblock, in the form `username@domain`
2846 description: successful operation
2848 description: account or account block does not exist
2853 summary: List server blocks
2858 - $ref: '#/components/parameters/start'
2859 - $ref: '#/components/parameters/count'
2860 - $ref: '#/components/parameters/sort'
2863 description: successful operation
2867 summary: Block a server
2880 description: server domain to block
2885 description: successful operation
2887 description: self-blocking forbidden
2888 '/blocklist/servers/{host}':
2892 summary: Unblock a server by its domain
2900 description: server domain to unblock
2906 description: successful operation
2908 description: account block does not exist
2912 - Instance Redundancy
2913 summary: Update a server redundancy policy
2921 description: server domain to mirror
2933 description: allow mirroring of the host's local videos
2938 description: successful operation
2940 description: server is not already known
2945 summary: List videos being mirrored
2953 description: direction of the mirror
2959 - $ref: '#/components/parameters/start'
2960 - $ref: '#/components/parameters/count'
2961 - $ref: '#/components/parameters/videoRedundanciesSort'
2964 description: successful operation
2970 $ref: '#/components/schemas/VideoRedundancy'
2974 summary: Mirror a video
2990 description: successful operation
2992 description: cannot mirror a local video
2994 description: video does not exist
2996 description: video is already mirrored
2997 /redundancy/videos/{redundancyId}:
3001 summary: Delete a mirror done on a video
3006 - name: redundancyId
3009 description: id of an existing redundancy on a video
3014 description: successful operation
3016 description: video redundancy not found
3017 '/feeds/video-comments.{format}':
3021 summary: List comments on videos
3023 - url: 'https://peertube2.cpy.re'
3024 description: Live Test Server (live data - latest nightly version)
3025 - url: 'https://peertube3.cpy.re'
3026 description: Live Test Server (live data - latest RC version)
3027 - url: 'https://peertube.cpy.re'
3028 description: Live Test Server (live data - stable version)
3033 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3046 description: 'limit listing to a specific video'
3051 description: 'limit listing to a specific account'
3056 description: 'limit listing to a specific account'
3059 - name: videoChannelId
3061 description: 'limit listing to a specific video channel'
3064 - name: videoChannelName
3066 description: 'limit listing to a specific video channel'
3071 description: successful operation
3076 default: 'max-age=900' # 15 min cache
3080 $ref: '#/components/schemas/VideoCommentsForXML'
3081 application/rss+xml:
3083 $ref: '#/components/schemas/VideoCommentsForXML'
3086 $ref: '#/components/schemas/VideoCommentsForXML'
3087 application/atom+xml:
3089 $ref: '#/components/schemas/VideoCommentsForXML'
3094 x-summary: field inconsistencies
3097 - videoId filter is mixed with a channel filter
3099 description: video, video channel or account not found
3101 description: accept header unsupported
3102 '/feeds/videos.{format}':
3106 summary: List videos
3108 - url: 'https://peertube2.cpy.re'
3109 description: Live Test Server (live data - latest nightly version)
3110 - url: 'https://peertube3.cpy.re'
3111 description: Live Test Server (live data - latest RC version)
3112 - url: 'https://peertube.cpy.re'
3113 description: Live Test Server (live data - stable version)
3118 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3131 description: 'limit listing to a specific account'
3136 description: 'limit listing to a specific account'
3139 - name: videoChannelId
3141 description: 'limit listing to a specific video channel'
3144 - name: videoChannelName
3146 description: 'limit listing to a specific video channel'
3149 - $ref: '#/components/parameters/sort'
3150 - $ref: '#/components/parameters/nsfw'
3151 - $ref: '#/components/parameters/filter'
3154 description: successful operation
3159 default: 'max-age=900' # 15 min cache
3163 $ref: '#/components/schemas/VideosForXML'
3166 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3167 application/rss+xml:
3169 $ref: '#/components/schemas/VideosForXML'
3172 $ref: '#/components/schemas/VideosForXML'
3173 application/atom+xml:
3175 $ref: '#/components/schemas/VideosForXML'
3180 description: video channel or account not found
3182 description: accept header unsupported
3187 summary: List plugins
3200 - $ref: '#/components/parameters/start'
3201 - $ref: '#/components/parameters/count'
3202 - $ref: '#/components/parameters/sort'
3205 description: successful operation
3209 $ref: '#/components/schemas/PluginResponse'
3214 summary: List available plugins
3227 - name: currentPeerTubeEngine
3231 - $ref: '#/components/parameters/start'
3232 - $ref: '#/components/parameters/count'
3233 - $ref: '#/components/parameters/sort'
3236 description: successful operation
3240 $ref: '#/components/schemas/PluginResponse'
3242 description: plugin index unavailable
3247 summary: Install a plugin
3260 example: peertube-plugin-auth-ldap
3263 additionalProperties: false
3270 additionalProperties: false
3273 description: successful operation
3275 description: should have either `npmName` or `path` set
3280 summary: Update a plugin
3293 example: peertube-plugin-auth-ldap
3296 additionalProperties: false
3303 additionalProperties: false
3306 description: successful operation
3308 description: should have either `npmName` or `path` set
3310 description: existing plugin not found
3315 summary: Uninstall a plugin
3327 description: name of the plugin/theme in its package.json
3328 example: peertube-plugin-auth-ldap
3333 description: successful operation
3335 description: existing plugin not found
3340 summary: Get a plugin
3345 - $ref: '#/components/parameters/npmName'
3348 description: successful operation
3352 $ref: '#/components/schemas/Plugin'
3354 description: plugin not found
3355 /plugins/{npmName}/settings:
3359 summary: Set a plugin's settings
3364 - $ref: '#/components/parameters/npmName'
3373 additionalProperties: true
3376 description: successful operation
3378 description: plugin not found
3379 /plugins/{npmName}/public-settings:
3383 summary: Get a plugin's public settings
3385 - $ref: '#/components/parameters/npmName'
3388 description: successful operation
3393 additionalProperties: true
3395 description: plugin not found
3396 /plugins/{npmName}/registered-settings:
3400 summary: Get a plugin's registered settings
3405 - $ref: '#/components/parameters/npmName'
3408 description: successful operation
3413 additionalProperties: true
3415 description: plugin not found
3417 - url: 'https://peertube2.cpy.re/api/v1'
3418 description: Live Test Server (live data - latest nightly version)
3419 - url: 'https://peertube3.cpy.re/api/v1'
3420 description: Live Test Server (live data - latest RC version)
3421 - url: 'https://peertube.cpy.re/api/v1'
3422 description: Live Test Server (live data - stable version)
3429 description: Offset used to paginate results
3437 description: "Number of items to return"
3447 description: Sort column
3455 description: Plain text search, applied to various parts of the model depending on endpoint
3463 If the administrator enabled search index support, you can override the default search target.
3466 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3467 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3468 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3469 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3470 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3471 * 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
3472 the data from the origin instance API
3482 description: Sort videos by criteria
3497 description: Sort videos by criteria
3512 description: Sort comments by criteria
3522 description: Sort blacklists by criteria
3538 description: Plain text search that will match with user usernames or emails
3545 description: Filter results down to (un)banned users
3552 description: Sort users by criteria
3563 description: Sort abuses by criteria
3570 videoRedundanciesSort:
3574 description: Sort abuses by criteria
3583 description: The username or handle of the account
3586 example: chocobozzz | chocobozzz@example.org
3591 description: The user id
3600 description: The object id or uuid
3608 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3610 name: playlistElementId
3613 description: Playlist element id
3620 description: Abuse id
3624 name: abuseMessageId
3627 description: Abuse message id
3631 name: captionLanguage
3634 description: The caption language
3641 description: The video channel handle
3644 example: my_username | my_username@example.com
3646 name: subscriptionHandle
3649 description: The subscription handle
3652 example: my_username | my_username@example.com
3657 description: The thread id (root comment id)
3664 description: The comment id
3671 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3684 description: tag(s) of the video
3697 description: tag(s) of the video, where all should be present in the video
3710 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
3723 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3736 description: if you don't need the `total` in the response
3747 description: whether to include nsfw videos, if any
3758 Special filters which might require special rights:
3759 * `local` - only videos local to the instance
3760 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3761 * `all` - all videos, showing private and unlisted videos (requires Admin privileges)
3771 description: list of uris to check if each is part of the user subscriptions
3781 description: name of the plugin/theme on npmjs.com or in its package.json
3784 example: peertube-plugin-auth-ldap
3789 description: job type
3793 - activitypub-follow
3794 - activitypub-http-broadcast
3795 - activitypub-http-fetcher
3796 - activitypub-http-unicast
3802 - activitypub-refresher
3808 In the header: *Authorization: Bearer <token\>*
3811 Authenticating via OAuth requires the following steps:
3814 - Have an account with sufficient authorization levels
3816 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3819 - Make Authenticated Requests
3823 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3826 moderator: Moderator scope
3829 VideoConstantNumber:
3835 VideoConstantString:
3842 VideoPlaylistPrivacySet:
3848 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3849 VideoPlaylistPrivacyConstant:
3852 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3856 VideoPlaylistTypeSet:
3861 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3862 VideoPlaylistTypeConstant:
3865 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3876 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3877 VideoPrivacyConstant:
3880 $ref: '#/components/schemas/VideoPrivacySet'
3897 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3908 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3918 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3922 $ref: '#/components/schemas/AbuseStateSet'
3925 AbusePredefinedReasons:
3938 example: [spamOrMisleading]
3940 VideoResolutionConstant:
3944 description: 'Video resolution (240, 360, 720 ...)'
3949 VideoScheduledUpdate:
3952 $ref: '#/components/schemas/VideoPrivacySet'
3956 description: When to update the video
3976 - $ref: '#/components/schemas/Avatar'
3977 VideoChannelSummary:
3994 - $ref: '#/components/schemas/Avatar'
4006 - $ref: '#/components/schemas/Video'
4012 $ref: '#/components/schemas/VideoResolutionConstant'
4015 description: 'Video file size in bytes'
4033 VideoStreamingPlaylists:
4041 description: 'Playlist type (HLS = `1`)'
4050 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)'
4052 $ref: '#/components/schemas/VideoFile'
4068 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4079 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4091 originallyPublishedAt:
4095 $ref: '#/components/schemas/VideoConstantNumber'
4097 $ref: '#/components/schemas/VideoConstantNumber'
4099 $ref: '#/components/schemas/VideoConstantString'
4101 $ref: '#/components/schemas/VideoPrivacyConstant'
4111 example: What is PeerTube?
4114 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4117 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4120 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4136 $ref: '#/components/schemas/VideoStateConstant'
4140 - $ref: '#/components/schemas/VideoScheduledUpdate'
4148 $ref: '#/components/schemas/AccountSummary'
4150 $ref: '#/components/schemas/VideoChannelSummary'
4159 - $ref: '#/components/schemas/Video'
4166 description: A text tell the audience how to support the video creator
4167 example: Please support my work on <insert crowdfunding plateform>! <3
4169 $ref: '#/components/schemas/VideoChannel'
4171 $ref: '#/components/schemas/Account'
4176 example: [flowers, gardening]
4179 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'
4181 $ref: '#/components/schemas/VideoFile'
4194 $ref: '#/components/schemas/VideoStreamingPlaylists'
4195 FileRedundancyInformation:
4232 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4239 $ref: '#/components/schemas/FileRedundancyInformation'
4243 $ref: '#/components/schemas/FileRedundancyInformation'
4244 VideoImportStateConstant:
4252 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4264 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4268 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
4272 $ref: '#/components/schemas/VideoImportStateConstant'
4282 $ref: '#/components/schemas/Video'
4290 example: The video is a spam
4292 $ref: '#/components/schemas/AbusePredefinedReasons'
4294 $ref: '#/components/schemas/Account'
4296 $ref: '#/components/schemas/AbuseStateConstant'
4299 example: Decided to ban the server since it spams us regularly
4310 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4326 $ref: '#/components/schemas/AccountSummary'
4344 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4373 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4389 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4399 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4401 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4403 $ref: '#/components/schemas/AccountSummary'
4405 $ref: '#/components/schemas/VideoChannelSummary'
4427 totalRepliesFromVideoAuthor:
4432 $ref: '#/components/schemas/Account'
4433 VideoCommentThreadTree:
4436 $ref: '#/components/schemas/VideoComment'
4440 $ref: '#/components/schemas/VideoCommentThreadTree'
4444 $ref: '#/components/schemas/VideoConstantString'
4499 $ref: '#/components/schemas/Avatar'
4502 - $ref: '#/components/schemas/Actor'
4515 description: timestamp within the video, in seconds
4582 allowedForCurrentIP:
4584 requiresEmailVerification:
4788 requiresEmailVerification:
4813 allowAdditionalExtensions:
4881 $ref: '#/components/schemas/Actor'
4883 $ref: '#/components/schemas/Actor'
4886 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4899 PredefinedAbuseReasons:
4900 description: Reason categories that help triage reports
4931 - activitypub-http-unicast
4932 - activitypub-http-broadcast
4933 - activitypub-http-fetcher
4934 - activitypub-follow
4940 - activitypub-refresher
4944 additionalProperties: true
4947 additionalProperties: true
4971 VideoUploadResponse:
4982 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4983 CommentThreadResponse:
4992 $ref: '#/components/schemas/VideoComment'
4993 CommentThreadPostResponse:
4996 $ref: '#/components/schemas/VideoComment'
5006 $ref: '#/components/schemas/Video'
5014 description: The user username
5020 description: The user email
5023 description: Theme enabled by this user
5026 description: Has the user confirmed their email address?
5028 $ref: '#/components/schemas/NSFWPolicy'
5031 description: Enable P2P in the player
5034 description: Automatically start playing the video on the watch page
5036 $ref: '#/components/schemas/UserRole'
5045 description: The user video quota
5048 description: The user daily video quota
5053 abusesAcceptedCount:
5059 noInstanceConfigWarningModal:
5070 $ref: '#/components/schemas/Account'
5074 $ref: '#/components/schemas/VideoChannel'
5079 description: The user username
5085 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5091 description: The user email
5094 description: The user video quota
5097 description: The user daily video quota
5099 $ref: '#/components/schemas/UserRole'
5111 description: The user id
5115 description: The updated email of the user
5118 description: The updated video quota of the user
5121 description: The updated daily video quota of the user
5123 $ref: '#/components/schemas/UserRole'
5135 description: Your new password
5141 description: Your new email
5144 description: Your new displayNSFW
5151 description: Your new autoPlayVideo
5161 description: Id of the video
5164 description: Rating of the video
5171 $ref: '#/components/schemas/Video'
5174 description: 'Rating of the video'
5182 description: The username of the user
5185 pattern: '/^[a-z0-9._]{1,50}$/'
5189 description: The password of the user
5195 description: The email of the user
5198 description: The user display name
5206 description: The username for the default channel
5207 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5210 description: The display name for the default channel
5227 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5228 example: Please support my work on <insert crowdfunding plateform>! <3
5240 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5241 example: Please support my work on <insert crowdfunding plateform>! <3
5242 bulkVideosSupportUpdate:
5244 description: 'Update the support field for all videos of this channel'
5249 name: 'media:peerLink'
5258 - application/x-bittorrent
5264 name: 'media:content'
5295 VideoCommentsForXML:
5330 description: video watch page URL
5333 description: video canonical URL
5337 description: video publication date
5340 description: video description
5343 description: video description
5346 description: publisher user name
5349 description: video category (MRSS)
5352 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5367 description: video embed path, relative to the canonical URL domain (MRSS)
5376 description: video watch path, relative to the canonical URL domain (MRSS)
5397 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5398 'media:description':
5405 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5408 description: main streamable file for the video
5418 - application/x-bittorrent
5427 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)
5430 - $ref: '#/components/schemas/MRSSPeerLink'
5431 - $ref: '#/components/schemas/MRSSGroupContent'
5432 NotificationSettingValue:
5453 Notification type, following the `UserNotificationType` enum:
5455 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5457 - `2` NEW_COMMENT_ON_MY_VIDEO
5459 - `3` NEW_ABUSE_FOR_MODERATORS
5461 - `4` BLACKLIST_ON_MY_VIDEO
5463 - `5` UNBLACKLIST_ON_MY_VIDEO
5465 - `6` MY_VIDEO_PUBLISHED
5467 - `7` MY_VIDEO_IMPORT_SUCCESS
5469 - `8` MY_VIDEO_IMPORT_ERROR
5471 - `9` NEW_USER_REGISTRATION
5475 - `11` COMMENT_MENTION
5477 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5479 - `13` NEW_INSTANCE_FOLLOWER
5481 - `14` AUTO_INSTANCE_FOLLOWING
5487 - $ref: '#/components/schemas/VideoInfo'
5491 $ref: '#/components/schemas/ActorInfo'
5500 $ref: '#/components/schemas/VideoInfo'
5521 $ref: '#/components/schemas/VideoInfo'
5523 $ref: '#/components/schemas/ActorInfo'
5532 - $ref: '#/components/schemas/VideoInfo'
5541 - $ref: '#/components/schemas/VideoInfo'
5545 - $ref: '#/components/schemas/ActorInfo'
5553 $ref: '#/components/schemas/ActorInfo'
5581 NotificationListResponse:
5590 $ref: '#/components/schemas/Notification'
5595 example: peertube-plugin-auth-ldap
5623 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5626 additionalProperties: true
5642 $ref: '#/components/schemas/Plugin'
5649 description: User can stream multiple times in a permanent live
5658 description: RTMP stream key to use to stream into this live video
5662 description: User can stream multiple times in a permanent live
5667 'https://search.example.org/api/v1/search/videos':
5669 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5672 description: successful operation
5676 $ref: '#/components/schemas/VideoListResponse'