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!
73 - name: My Notifications
75 Notifications following new videos, follows or reports. They allow you
76 to keep track of the interactions and overall important information that
77 concerns you. You MAY set per-notification type delivery preference, to
78 receive the info either by mail, by in-browser notification or both.
81 Each server exposes public information regarding supported videos and
85 Jobs are long-running tasks enqueued and processed by the instance
86 itself. No additional worker registration is currently available.
87 - name: Instance Follows
89 Managing servers which the instance interacts with is crucial to the
90 concept of federation in PeerTube and external video indexation. The PeerTube
91 server then deals with inter-server ActivityPub operations and propagates
92 information across its social graph by posting activities to actors' inbox
95 url: https://docs.joinpeertube.org/#/admin-following-instances?id=instances-follows
96 - name: Instance Redundancy
98 Redundancy is part of the inter-server solidarity that PeerTube fosters.
99 Manage the list of instances you wish to help by seeding their videos according
100 to the policy of video selection of your choice. Note that you have a similar functionality
101 to mirror individual videos, see `Video Mirroring`.
103 url: https://docs.joinpeertube.org/#/admin-following-instances?id=instances-redundancy
106 Managing plugins installed from a local path or from NPM, or search for new ones.
108 url: https://docs.joinpeertube.org/#/api-plugins
111 Abuses deal with reports of local or remote videos/comments/accounts alike.
114 Operations dealing with listing, uploading, fetching or modifying videos.
117 The search helps to find _videos_ or _channels_ from within the instance and beyond.
118 Videos from other instances federated by the instance (that is, instances
119 followed by the instance) can be found via keywords and other criteria of
122 Administrators can also enable the use of a remote search system, indexing
123 videos and channels not could be not federated by the instance.
124 - name: Video Comments
126 Operations dealing with comments to a video. Comments are organized in
128 - name: Video Playlists
130 Operations dealing with playlists of videos. Playlists are bound to users
132 - name: Video Channels
134 Operations dealing with the creation, modification and listing of videos within a channel.
137 Operations dealing with blocking videos (removing them from view and
138 preventing interactions).
141 Like/dislike a video.
144 Server syndication feeds
161 - Video Ownership Change
174 - name: Instance Configuration
178 - Instance Redundancy
188 summary: Get an account
190 - $ref: '#/components/parameters/name'
193 description: successful operation
197 $ref: '#/components/schemas/Account'
199 description: account not found
200 '/accounts/{name}/videos':
205 summary: 'List videos of an account'
207 - $ref: '#/components/parameters/name'
208 - $ref: '#/components/parameters/categoryOneOf'
209 - $ref: '#/components/parameters/tagsOneOf'
210 - $ref: '#/components/parameters/tagsAllOf'
211 - $ref: '#/components/parameters/licenceOneOf'
212 - $ref: '#/components/parameters/languageOneOf'
213 - $ref: '#/components/parameters/nsfw'
214 - $ref: '#/components/parameters/filter'
215 - $ref: '#/components/parameters/skipCount'
216 - $ref: '#/components/parameters/start'
217 - $ref: '#/components/parameters/count'
218 - $ref: '#/components/parameters/videosSort'
221 description: successful operation
225 $ref: '#/components/schemas/VideoListResponse'
229 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
230 .then(function(response) {
231 return response.json()
232 }).then(function(data) {
238 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
244 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
246 http = Net::HTTP.new(uri.host, uri.port)
249 response = http.get(uri.request_uri)
251 puts JSON.parse(response.read_body)
256 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
264 summary: List accounts
266 - $ref: '#/components/parameters/start'
267 - $ref: '#/components/parameters/count'
268 - $ref: '#/components/parameters/sort'
271 description: successful operation
277 $ref: '#/components/schemas/Account'
282 summary: Get instance public configuration
285 description: successful operation
289 $ref: '#/components/schemas/ServerConfig'
292 summary: Get instance "About" information
297 description: successful operation
301 $ref: '#/components/schemas/ServerConfigAbout'
304 summary: Get instance runtime configuration
312 description: successful operation
316 $ref: '#/components/schemas/ServerConfigCustom'
318 summary: Set instance runtime configuration
326 description: successful operation
328 x-summary: field inconsistencies
331 - the emailer is disabled and the instance is open to registrations
332 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
334 summary: Delete instance runtime configuration
342 description: successful operation
345 summary: List instance jobs
355 description: The state of the job
364 - $ref: '#/components/parameters/start'
365 - $ref: '#/components/parameters/count'
366 - $ref: '#/components/parameters/sort'
369 description: successful operation
382 $ref: '#/components/schemas/Job'
383 '/server/following/{host}':
390 summary: Unfollow a server
395 description: 'The host to unfollow '
401 description: successful operation
406 summary: List instance followers
408 - $ref: '#/components/parameters/start'
409 - $ref: '#/components/parameters/count'
410 - $ref: '#/components/parameters/sort'
413 description: successful operation
419 $ref: '#/components/schemas/Follow'
424 summary: List instances followed by the server
443 - $ref: '#/components/parameters/start'
444 - $ref: '#/components/parameters/count'
445 - $ref: '#/components/parameters/sort'
448 description: successful operation
454 $ref: '#/components/schemas/Follow'
461 summary: Follow a server
464 description: successful operation
466 description: cannot follow a non-HTTPS server
481 summary: Create a user
489 description: user created
493 $ref: '#/components/schemas/AddUserResponse'
497 operationId: getUserId
499 id: '$response.body#/user/id'
502 operationId: putUserId
504 id: '$response.body#/user/id'
507 operationId: delUserId
509 id: '$response.body#/user/id'
511 description: insufficient authority to create an admin or moderator
516 $ref: '#/components/schemas/AddUser'
517 description: User to create
527 - $ref: '#/components/parameters/usersSearch'
528 - $ref: '#/components/parameters/usersBlocked'
529 - $ref: '#/components/parameters/start'
530 - $ref: '#/components/parameters/count'
531 - $ref: '#/components/parameters/usersSort'
534 description: successful operation
540 $ref: '#/components/schemas/User'
543 - $ref: '#/components/parameters/id'
545 summary: Delete a user
551 operationId: delUserId
554 description: successful operation
561 operationId: getUserId
564 description: successful operation
568 $ref: '#/components/schemas/User'
570 summary: Update a user
575 operationId: putUserId
578 description: successful operation
583 $ref: '#/components/schemas/UpdateUser'
587 summary: Register a user
592 description: successful operation
597 $ref: '#/components/schemas/RegisterUser'
601 summary: Get my user information
609 description: successful operation
615 $ref: '#/components/schemas/User'
617 summary: Update my user information
625 description: successful operation
630 $ref: '#/components/schemas/UpdateMe'
632 /users/me/videos/imports:
634 summary: Get video imports of my user
642 - $ref: '#/components/parameters/start'
643 - $ref: '#/components/parameters/count'
644 - $ref: '#/components/parameters/sort'
647 description: successful operation
651 $ref: '#/components/schemas/VideoImport'
652 /users/me/video-quota-used:
654 summary: Get my user used quota
662 description: successful operation
667 '/users/me/videos/{videoId}/rating':
669 summary: Get rate of my user for a video
679 description: 'The video id '
684 description: successful operation
688 $ref: '#/components/schemas/GetMeVideoRating'
691 summary: Get videos of my user
699 - $ref: '#/components/parameters/start'
700 - $ref: '#/components/parameters/count'
701 - $ref: '#/components/parameters/sort'
704 description: successful operation
708 $ref: '#/components/schemas/VideoListResponse'
709 /users/me/subscriptions:
711 summary: Get my user subscriptions
718 - $ref: '#/components/parameters/start'
719 - $ref: '#/components/parameters/count'
720 - $ref: '#/components/parameters/sort'
723 description: successful operation
727 summary: Add subscription to my user
740 description: uri of the video channels to subscribe to
746 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
749 description: successful operation
750 /users/me/subscriptions/exist:
752 summary: Get if subscriptions exist for my user
759 - $ref: '#/components/parameters/subscriptionsUris'
762 description: successful operation
767 /users/me/subscriptions/videos:
769 summary: List videos of subscriptions of my user
777 - $ref: '#/components/parameters/categoryOneOf'
778 - $ref: '#/components/parameters/tagsOneOf'
779 - $ref: '#/components/parameters/tagsAllOf'
780 - $ref: '#/components/parameters/licenceOneOf'
781 - $ref: '#/components/parameters/languageOneOf'
782 - $ref: '#/components/parameters/nsfw'
783 - $ref: '#/components/parameters/filter'
784 - $ref: '#/components/parameters/skipCount'
785 - $ref: '#/components/parameters/start'
786 - $ref: '#/components/parameters/count'
787 - $ref: '#/components/parameters/videosSort'
790 description: successful operation
794 $ref: '#/components/schemas/VideoListResponse'
795 '/users/me/subscriptions/{subscriptionHandle}':
797 summary: Get subscription of my user
804 - $ref: '#/components/parameters/subscriptionHandle'
807 description: successful operation
811 $ref: '#/components/schemas/VideoChannel'
813 summary: Delete subscription of my user
820 - $ref: '#/components/parameters/subscriptionHandle'
823 description: successful operation
824 /users/me/notifications:
826 summary: List my notifications
834 description: only list unread notifications
837 - $ref: '#/components/parameters/start'
838 - $ref: '#/components/parameters/count'
839 - $ref: '#/components/parameters/sort'
842 description: successful operation
846 $ref: '#/components/schemas/NotificationListResponse'
847 /users/me/notifications/read:
849 summary: Mark notifications as read by their id
862 description: ids of the notifications to mark as read
869 description: successful operation
870 /users/me/notifications/read-all:
872 summary: Mark all my notification as read
879 description: successful operation
880 /users/me/notification-settings:
882 summary: Update my notification settings
893 newVideoFromSubscription:
894 $ref: '#/components/schemas/NotificationSettingValue'
896 $ref: '#/components/schemas/NotificationSettingValue'
898 $ref: '#/components/schemas/NotificationSettingValue'
899 videoAutoBlacklistAsModerator:
900 $ref: '#/components/schemas/NotificationSettingValue'
902 $ref: '#/components/schemas/NotificationSettingValue'
904 $ref: '#/components/schemas/NotificationSettingValue'
905 myVideoImportFinished:
906 $ref: '#/components/schemas/NotificationSettingValue'
908 $ref: '#/components/schemas/NotificationSettingValue'
910 $ref: '#/components/schemas/NotificationSettingValue'
912 $ref: '#/components/schemas/NotificationSettingValue'
914 $ref: '#/components/schemas/NotificationSettingValue'
915 autoInstanceFollowing:
916 $ref: '#/components/schemas/NotificationSettingValue'
919 description: successful operation
920 /users/me/avatar/pick:
922 summary: Update my user avatar
929 description: successful operation
933 $ref: '#/components/schemas/Avatar'
941 description: The file to upload.
946 contentType: image/png, image/jpeg
949 summary: List video ownership changes
951 - Video Ownership Change
956 description: successful operation
957 '/videos/ownership/{id}/accept':
959 summary: Accept ownership change request
961 - Video Ownership Change
965 - $ref: '#/components/parameters/idOrUUID'
968 description: successful operation
970 description: cannot terminate an ownership change of another user
972 description: video owneship change not found
973 '/videos/ownership/{id}/refuse':
975 summary: Refuse ownership change request
977 - Video Ownership Change
981 - $ref: '#/components/parameters/idOrUUID'
984 description: successful operation
986 description: cannot terminate an ownership change of another user
988 description: video owneship change not found
989 '/videos/{id}/give-ownership':
991 summary: Request ownership change
993 - Video Ownership Change
997 - $ref: '#/components/parameters/idOrUUID'
1001 application/x-www-form-urlencoded:
1011 description: successful operation
1013 description: changing video ownership to a remote account is not supported yet
1015 description: video not found
1018 summary: List videos
1022 - $ref: '#/components/parameters/categoryOneOf'
1023 - $ref: '#/components/parameters/tagsOneOf'
1024 - $ref: '#/components/parameters/tagsAllOf'
1025 - $ref: '#/components/parameters/licenceOneOf'
1026 - $ref: '#/components/parameters/languageOneOf'
1027 - $ref: '#/components/parameters/nsfw'
1028 - $ref: '#/components/parameters/filter'
1029 - $ref: '#/components/parameters/skipCount'
1030 - $ref: '#/components/parameters/start'
1031 - $ref: '#/components/parameters/count'
1032 - $ref: '#/components/parameters/videosSort'
1035 description: successful operation
1039 $ref: '#/components/schemas/VideoListResponse'
1042 summary: List available video categories
1047 description: successful operation
1056 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1059 summary: List available video licences
1064 description: successful operation
1073 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1076 summary: List available video languages
1081 description: successful operation
1090 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1093 summary: List available video privacies
1098 description: successful operation
1107 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1110 summary: Update a video
1116 - $ref: '#/components/parameters/idOrUUID'
1119 description: successful operation
1122 multipart/form-data:
1127 description: Video thumbnail file
1131 description: Video preview file
1135 description: Video category
1139 description: Video licence
1143 description: Video language
1146 $ref: '#/components/schemas/VideoPrivacySet'
1148 description: Video description
1151 description: Whether or not we wait transcoding before publish the video
1154 description: A text tell the audience how to support the video creator
1155 example: Please support my work on <insert crowdfunding plateform>! <3
1158 description: Whether or not this video contains sensitive content
1161 description: Video name
1164 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1173 description: Enable or disable comments for this video
1175 originallyPublishedAt:
1176 description: Date when the content was originally published
1180 $ref: '#/components/schemas/VideoScheduledUpdate'
1183 contentType: image/jpeg
1185 contentType: image/jpeg
1187 summary: Get a video
1191 - $ref: '#/components/parameters/idOrUUID'
1194 description: successful operation
1198 $ref: '#/components/schemas/VideoDetails'
1200 summary: Delete a video
1206 - $ref: '#/components/parameters/idOrUUID'
1209 description: successful operation
1210 '/videos/{id}/description':
1212 summary: Get complete video description
1216 - $ref: '#/components/parameters/idOrUUID'
1219 description: successful operation
1224 '/videos/{id}/views':
1226 summary: Add a view to a video
1230 - $ref: '#/components/parameters/idOrUUID'
1233 description: successful operation
1234 '/videos/{id}/watching':
1236 summary: Set watching progress of a video
1242 - $ref: '#/components/parameters/idOrUUID'
1247 $ref: '#/components/schemas/UserWatchingVideo'
1251 description: successful operation
1254 summary: Upload a video
1261 description: successful operation
1265 $ref: '#/components/schemas/VideoUploadResponse'
1267 description: user video quota is exceeded with this video
1269 description: upload has timed out
1271 description: invalid input file
1274 multipart/form-data:
1279 description: Video file
1283 description: Channel id that will contain this video
1286 description: Video thumbnail file
1290 description: Video preview file
1294 $ref: '#/components/schemas/VideoPrivacySet'
1296 description: Video category
1300 description: Video licence
1303 description: Video language
1307 description: Video description
1310 description: Whether or not we wait transcoding before publish the video
1313 description: A text tell the audience how to support the video creator
1314 example: Please support my work on <insert crowdfunding plateform>! <3
1317 description: Whether or not this video contains sensitive content
1320 description: Video name
1323 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1333 description: Enable or disable comments for this video
1336 description: Enable or disable downloading for this video
1338 originallyPublishedAt:
1339 description: Date when the content was originally published
1343 $ref: '#/components/schemas/VideoScheduledUpdate'
1350 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
1352 contentType: image/jpeg
1354 contentType: image/jpeg
1359 USERNAME="<your_username>"
1360 PASSWORD="<your_password>"
1361 FILE_PATH="<your_file_path>"
1362 CHANNEL_ID="<your_channel_id>"
1365 API_PATH="https://peertube2.cpy.re/api/v1"
1367 client_id=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_id")
1368 client_secret=$(curl -s "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
1369 token=$(curl -s "$API_PATH/users/token" \
1370 --data client_id="$client_id" \
1371 --data client_secret="$client_secret" \
1372 --data grant_type=password \
1373 --data response_type=code \
1374 --data username="$USERNAME" \
1375 --data password="$PASSWORD" \
1376 | jq -r ".access_token")
1378 curl -s "$API_PATH/videos/upload" \
1379 -H "Authorization: Bearer $token" \
1381 --form videofile=@"$FILE_PATH" \
1382 --form channelId=$CHANNEL_ID \
1386 summary: Import a video
1387 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
1394 multipart/form-data:
1399 description: Torrent File
1403 description: HTTP target URL
1406 description: Magnet URI
1409 description: Channel id that will contain this video
1412 description: Video thumbnail file
1416 description: Video preview file
1420 $ref: '#/components/schemas/VideoPrivacySet'
1422 description: Video category
1425 description: Video licence
1428 description: Video language
1431 description: Video description
1434 description: Whether or not we wait transcoding before publish the video
1437 description: A text tell the audience how to support the video creator
1438 example: Please support my work on <insert crowdfunding plateform>! <3
1441 description: Whether or not this video contains sensitive content
1444 description: Video name
1447 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1456 description: Enable or disable comments for this video
1459 description: Enable or disable downloading for this video
1462 $ref: '#/components/schemas/VideoScheduledUpdate'
1468 contentType: application/x-bittorrent
1470 contentType: image/jpeg
1472 contentType: image/jpeg
1475 description: successful operation
1479 $ref: '#/components/schemas/VideoUploadResponse'
1481 description: HTTP or Torrent/magnetURI import not enabled
1483 description: '`magnetUri` or `targetUrl` or a torrent file missing'
1487 summary: Create a live
1495 description: successful operation
1499 $ref: '#/components/schemas/VideoUploadResponse'
1501 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1504 multipart/form-data:
1509 description: Channel id that will contain this live video
1514 description: Live video/replay thumbnail file
1518 description: Live video/replay preview file
1522 $ref: '#/components/schemas/VideoPrivacySet'
1524 description: Live video/replay category
1527 description: Live video/replay licence
1530 description: Live video/replay language
1533 description: Live video/replay description
1536 description: A text tell the audience how to support the creator
1537 example: Please support my work on <insert crowdfunding plateform>! <3
1540 description: Whether or not this live video/replay contains sensitive content
1543 description: Live video/replay name
1546 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
1555 description: Enable or disable comments for this live video/replay
1558 description: Enable or disable downloading for the replay of this live
1565 contentType: image/jpeg
1567 contentType: image/jpeg
1571 summary: Get a live information
1578 - $ref: '#/components/parameters/idOrUUID'
1581 description: successful operation
1585 $ref: '#/components/schemas/LiveVideoResponse'
1587 summary: Update a live information
1594 - $ref: '#/components/parameters/idOrUUID'
1599 $ref: '#/components/schemas/LiveVideoUpdate'
1602 description: Successful operation
1604 description: Bad parameters or trying to update a live that has already started
1606 description: Trying to save replay of the live but saving replay is not enabled on the instance
1610 summary: List my abuses
1619 description: only list the report with this id
1625 $ref: '#/components/schemas/AbuseStateSet'
1626 - $ref: '#/components/parameters/start'
1627 - $ref: '#/components/parameters/count'
1628 - $ref: '#/components/parameters/abusesSort'
1631 description: successful operation
1637 $ref: '#/components/schemas/Abuse'
1641 summary: List abuses
1651 description: only list the report with this id
1654 - name: predefinedReason
1656 description: predefined reason the listed reports should contain
1658 $ref: '#/components/schemas/PredefinedAbuseReasons'
1661 description: plain search that will match with video titles, reporter names and more
1667 $ref: '#/components/schemas/AbuseStateSet'
1668 - name: searchReporter
1670 description: only list reports of a specific reporter
1673 - name: searchReportee
1674 description: only list reports of a specific reportee
1680 description: only list reports of a specific video
1683 - name: searchVideoChannel
1685 description: only list reports of a specific video channel
1690 description: only list blacklisted or deleted videos
1698 description: only list account, comment or video reports
1705 - $ref: '#/components/parameters/start'
1706 - $ref: '#/components/parameters/count'
1707 - $ref: '#/components/parameters/abusesSort'
1710 description: successful operation
1716 $ref: '#/components/schemas/Abuse'
1719 summary: Report an abuse
1732 description: Reason why the user reports this video
1736 $ref: '#/components/schemas/PredefinedAbuseReasons'
1742 description: Video id to report
1746 description: Timestamp in the video that marks the beginning of the report
1750 description: Timestamp in the video that marks the ending of the report
1756 description: Comment id to report
1762 description: Account id to report
1768 description: successful operation
1770 description: incorrect request parameters
1771 '/abuses/{abuseId}':
1773 summary: Update an abuse
1781 - $ref: '#/components/parameters/abuseId'
1789 $ref: '#/components/schemas/AbuseStateSet'
1792 description: Update the report comment visible only to the moderation team
1795 description: successful operation
1797 description: abuse not found
1801 summary: Delete an abuse
1807 - $ref: '#/components/parameters/abuseId'
1810 description: successful operation
1812 description: block not found
1813 '/abuses/{abuseId}/messages':
1815 summary: List messages of an abuse
1821 - $ref: '#/components/parameters/abuseId'
1824 description: successful operation
1830 $ref: '#/components/schemas/AbuseMessage'
1833 summary: Add message to an abuse
1839 - $ref: '#/components/parameters/abuseId'
1848 description: Message to send
1854 description: successful operation
1856 description: incorrect request parameters
1857 '/abuses/{abuseId}/messages/{abuseMessageId}':
1859 summary: Delete an abuse message
1865 - $ref: '#/components/parameters/abuseId'
1866 - $ref: '#/components/parameters/abuseMessageId'
1869 description: successful operation
1871 '/videos/{id}/blacklist':
1873 summary: Block a video
1881 - $ref: '#/components/parameters/idOrUUID'
1884 description: successful operation
1886 summary: Unblock a video by its id
1894 - $ref: '#/components/parameters/idOrUUID'
1897 description: successful operation
1899 description: block not found
1904 summary: List video blocks
1913 list only blocks that match this type:
1917 - `2`: automatic block that needs review
1925 description: plain search that will match with video titles, and more
1928 - $ref: '#/components/parameters/start'
1929 - $ref: '#/components/parameters/count'
1930 - $ref: '#/components/parameters/blacklistsSort'
1933 description: successful operation
1945 $ref: '#/components/schemas/VideoBlacklist'
1946 /videos/{id}/captions:
1948 summary: List captions of a video
1952 - $ref: '#/components/parameters/idOrUUID'
1955 description: successful operation
1967 $ref: '#/components/schemas/VideoCaption'
1968 /videos/{id}/captions/{captionLanguage}:
1970 summary: Add or replace a video caption
1974 - $ref: '#/components/parameters/idOrUUID'
1975 - $ref: '#/components/parameters/captionLanguage'
1978 multipart/form-data:
1983 description: The file to upload.
1988 contentType: text/vtt, application/x-subrip, text/plain
1991 description: successful operation
1993 description: video or language not found
1995 summary: Delete a video caption
1999 - $ref: '#/components/parameters/idOrUUID'
2000 - $ref: '#/components/parameters/captionLanguage'
2003 description: successful operation
2005 description: video or language or caption for that language not found
2008 summary: List video channels
2012 - $ref: '#/components/parameters/start'
2013 - $ref: '#/components/parameters/count'
2014 - $ref: '#/components/parameters/sort'
2017 description: successful operation
2029 $ref: '#/components/schemas/VideoChannel'
2031 summary: Create a video channel
2038 description: successful operation
2043 $ref: '#/components/schemas/VideoChannelCreate'
2044 '/video-channels/{channelHandle}':
2046 summary: Get a video channel
2050 - $ref: '#/components/parameters/channelHandle'
2053 description: successful operation
2057 $ref: '#/components/schemas/VideoChannel'
2059 summary: Update a video channel
2065 - $ref: '#/components/parameters/channelHandle'
2068 description: successful operation
2073 $ref: '#/components/schemas/VideoChannelUpdate'
2075 summary: Delete a video channel
2081 - $ref: '#/components/parameters/channelHandle'
2084 description: successful operation
2085 '/video-channels/{channelHandle}/videos':
2087 summary: List videos of a video channel
2092 - $ref: '#/components/parameters/channelHandle'
2093 - $ref: '#/components/parameters/categoryOneOf'
2094 - $ref: '#/components/parameters/tagsOneOf'
2095 - $ref: '#/components/parameters/tagsAllOf'
2096 - $ref: '#/components/parameters/licenceOneOf'
2097 - $ref: '#/components/parameters/languageOneOf'
2098 - $ref: '#/components/parameters/nsfw'
2099 - $ref: '#/components/parameters/filter'
2100 - $ref: '#/components/parameters/skipCount'
2101 - $ref: '#/components/parameters/start'
2102 - $ref: '#/components/parameters/count'
2103 - $ref: '#/components/parameters/videosSort'
2106 description: successful operation
2110 $ref: '#/components/schemas/VideoListResponse'
2112 /video-playlists/privacies:
2114 summary: List available playlist privacies
2119 description: successful operation
2128 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
2132 summary: List video playlists
2136 - $ref: '#/components/parameters/start'
2137 - $ref: '#/components/parameters/count'
2138 - $ref: '#/components/parameters/sort'
2141 description: successful operation
2153 $ref: '#/components/schemas/VideoPlaylist'
2155 summary: Create a video playlist
2156 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
2163 description: successful operation
2178 multipart/form-data:
2183 description: Video playlist display name
2186 description: Video playlist thumbnail file
2190 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2192 description: Video playlist description
2195 description: Video channel in which the playlist will be published
2201 contentType: image/jpeg
2203 /video-playlists/{id}:
2205 summary: Get a video playlist
2209 - $ref: '#/components/parameters/idOrUUID'
2212 description: successful operation
2216 $ref: '#/components/schemas/VideoPlaylist'
2218 summary: Update a video playlist
2219 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
2226 description: successful operation
2228 - $ref: '#/components/parameters/idOrUUID'
2231 multipart/form-data:
2236 description: Video playlist display name
2239 description: Video playlist thumbnail file
2243 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
2245 description: Video playlist description
2248 description: Video channel in which the playlist will be published
2252 contentType: image/jpeg
2254 summary: Delete a video playlist
2260 - $ref: '#/components/parameters/idOrUUID'
2263 description: successful operation
2265 /video-playlists/{id}/videos:
2267 summary: 'List videos of a playlist'
2272 - $ref: '#/components/parameters/idOrUUID'
2275 description: successful operation
2279 $ref: '#/components/schemas/VideoListResponse'
2281 summary: 'Add a video in a playlist'
2288 - $ref: '#/components/parameters/idOrUUID'
2291 description: successful operation
2297 videoPlaylistElement:
2310 description: 'Video to add in the playlist'
2313 description: 'Start the video at this specific timestamp (in seconds)'
2316 description: 'Stop the video at this specific timestamp (in seconds)'
2320 /video-playlists/{id}/videos/reorder:
2322 summary: 'Reorder a playlist'
2328 - $ref: '#/components/parameters/idOrUUID'
2331 description: successful operation
2340 description: 'Start position of the element to reorder'
2342 insertAfterPosition:
2344 description: 'New position for the block to reorder, to add the block before the first element'
2348 description: 'How many element from `startPosition` to reorder'
2352 - insertAfterPosition
2354 /video-playlists/{id}/videos/{playlistElementId}:
2356 summary: 'Update a playlist element'
2362 - $ref: '#/components/parameters/idOrUUID'
2363 - $ref: '#/components/parameters/playlistElementId'
2366 description: successful operation
2375 description: 'Start the video at this specific timestamp (in seconds)'
2378 description: 'Stop the video at this specific timestamp (in seconds)'
2380 summary: 'Delete an element from a playlist'
2386 - $ref: '#/components/parameters/idOrUUID'
2387 - $ref: '#/components/parameters/playlistElementId'
2390 description: successful operation
2392 '/users/me/video-playlists/videos-exist':
2394 summary: 'Check video exists in my playlists'
2403 description: The video ids to check
2410 description: successful operation
2430 '/accounts/{name}/video-channels':
2432 summary: List video channels of an account
2437 - $ref: '#/components/parameters/name'
2440 description: include view statistics for the last 30 days (only if authentified as the account user)
2443 - $ref: '#/components/parameters/start'
2444 - $ref: '#/components/parameters/count'
2445 - $ref: '#/components/parameters/sort'
2448 description: successful operation
2454 $ref: '#/components/schemas/VideoChannel'
2455 '/accounts/{name}/ratings':
2457 summary: List ratings of an account
2463 - $ref: '#/components/parameters/name'
2464 - $ref: '#/components/parameters/start'
2465 - $ref: '#/components/parameters/count'
2466 - $ref: '#/components/parameters/sort'
2470 description: Optionally filter which ratings to retrieve
2478 description: successful operation
2484 $ref: '#/components/schemas/VideoRating'
2485 '/videos/{id}/comment-threads':
2487 summary: List threads of a video
2491 - $ref: '#/components/parameters/idOrUUID'
2492 - $ref: '#/components/parameters/start'
2493 - $ref: '#/components/parameters/count'
2494 - $ref: '#/components/parameters/commentsSort'
2497 description: successful operation
2501 $ref: '#/components/schemas/CommentThreadResponse'
2503 summary: Create a thread
2509 - $ref: '#/components/parameters/idOrUUID'
2512 description: successful operation
2516 $ref: '#/components/schemas/CommentThreadPostResponse'
2518 description: video does not exist
2527 description: 'Text comment'
2531 '/videos/{id}/comment-threads/{threadId}':
2533 summary: Get a thread
2537 - $ref: '#/components/parameters/idOrUUID'
2538 - $ref: '#/components/parameters/threadId'
2541 description: successful operation
2545 $ref: '#/components/schemas/VideoCommentThreadTree'
2546 '/videos/{id}/comments/{commentId}':
2548 summary: Reply to a thread of a video
2554 - $ref: '#/components/parameters/idOrUUID'
2555 - $ref: '#/components/parameters/commentId'
2558 description: successful operation
2562 $ref: '#/components/schemas/CommentThreadPostResponse'
2564 description: thread or video does not exist
2573 description: 'Text comment'
2578 summary: Delete a comment or a reply
2584 - $ref: '#/components/parameters/idOrUUID'
2585 - $ref: '#/components/parameters/commentId'
2588 description: successful operation
2590 description: cannot remove comment of another user
2592 description: comment or video does not exist
2594 description: comment is already deleted
2595 '/videos/{id}/rate':
2597 summary: Like/dislike a video
2603 - $ref: '#/components/parameters/idOrUUID'
2606 description: successful operation
2608 description: video does not exist
2613 summary: Search videos
2618 allowEmptyValue: false
2620 String to search. If the user can make a remote URI search, and the string is an URI then the
2621 PeerTube instance will fetch the remote object and add it to its database. Then,
2622 you can use the REST API to fetch the complete video information and interact with it.
2625 - $ref: '#/components/parameters/categoryOneOf'
2626 - $ref: '#/components/parameters/tagsOneOf'
2627 - $ref: '#/components/parameters/tagsAllOf'
2628 - $ref: '#/components/parameters/licenceOneOf'
2629 - $ref: '#/components/parameters/languageOneOf'
2630 - $ref: '#/components/parameters/nsfw'
2631 - $ref: '#/components/parameters/filter'
2632 - $ref: '#/components/parameters/skipCount'
2633 - $ref: '#/components/parameters/start'
2634 - $ref: '#/components/parameters/count'
2635 - $ref: '#/components/parameters/searchTarget'
2636 - $ref: '#/components/parameters/videosSearchSort'
2639 description: Get videos that are published after this date
2645 description: Get videos that are published before this date
2649 - name: originallyPublishedStartDate
2651 description: Get videos that are originally published after this date
2655 - name: originallyPublishedEndDate
2657 description: Get videos that are originally published before this date
2663 description: Get videos that have this minimum duration
2668 description: Get videos that have this maximum duration
2672 'searchTarget === search-index':
2673 $ref: '#/components/callbacks/searchIndex'
2676 description: successful operation
2680 $ref: '#/components/schemas/VideoListResponse'
2682 description: search index unavailable
2683 /search/video-channels:
2687 summary: Search channels
2693 String to search. If the user can make a remote URI search, and the string is an URI then the
2694 PeerTube instance will fetch the remote object and add it to its database. Then,
2695 you can use the REST API to fetch the complete channel information and interact with it.
2698 - $ref: '#/components/parameters/start'
2699 - $ref: '#/components/parameters/count'
2700 - $ref: '#/components/parameters/searchTarget'
2701 - $ref: '#/components/parameters/sort'
2703 'searchTarget === search-index':
2704 $ref: '#/components/callbacks/searchIndex'
2707 description: successful operation
2713 $ref: '#/components/schemas/VideoChannel'
2715 description: search index unavailable
2716 /blocklist/accounts:
2720 summary: List account blocks
2725 - $ref: '#/components/parameters/start'
2726 - $ref: '#/components/parameters/count'
2727 - $ref: '#/components/parameters/sort'
2730 description: successful operation
2734 summary: Block an account
2746 example: chocobozzz@example.org
2747 description: account to block, in the form `username@domain`
2752 description: successful operation
2754 description: self-blocking forbidden
2755 '/blocklist/accounts/{accountName}':
2759 summary: Unblock an account by its handle
2767 description: account to unblock, in the form `username@domain`
2772 description: successful operation
2774 description: account or account block does not exist
2779 summary: List server blocks
2784 - $ref: '#/components/parameters/start'
2785 - $ref: '#/components/parameters/count'
2786 - $ref: '#/components/parameters/sort'
2789 description: successful operation
2793 summary: Block a server
2806 description: server domain to block
2811 description: successful operation
2813 description: self-blocking forbidden
2814 '/blocklist/servers/{host}':
2818 summary: Unblock a server by its domain
2826 description: server domain to unblock
2832 description: successful operation
2834 description: account block does not exist
2838 - Instance Redundancy
2839 summary: Update a server redundancy policy
2847 description: server domain to mirror
2859 description: allow mirroring of the host's local videos
2864 description: successful operation
2866 description: server is not already known
2871 summary: List videos being mirrored
2879 description: direction of the mirror
2885 - $ref: '#/components/parameters/start'
2886 - $ref: '#/components/parameters/count'
2887 - $ref: '#/components/parameters/videoRedundanciesSort'
2890 description: successful operation
2896 $ref: '#/components/schemas/VideoRedundancy'
2900 summary: Mirror a video
2916 description: successful operation
2918 description: cannot mirror a local video
2920 description: video does not exist
2922 description: video is already mirrored
2923 /redundancy/videos/{redundancyId}:
2927 summary: Delete a mirror done on a video
2932 - name: redundancyId
2935 description: id of an existing redundancy on a video
2940 description: successful operation
2942 description: video redundancy not found
2943 '/feeds/video-comments.{format}':
2947 summary: List comments on videos
2949 - url: 'https://peertube2.cpy.re'
2950 description: Live Test Server (live data - latest nightly version)
2951 - url: 'https://peertube3.cpy.re'
2952 description: Live Test Server (live data - latest RC version)
2953 - url: 'https://peertube.cpy.re'
2954 description: Live Test Server (live data - stable version)
2959 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
2972 description: 'limit listing to a specific video'
2977 description: 'limit listing to a specific account'
2982 description: 'limit listing to a specific account'
2985 - name: videoChannelId
2987 description: 'limit listing to a specific video channel'
2990 - name: videoChannelName
2992 description: 'limit listing to a specific video channel'
2997 description: successful operation
3002 default: 'max-age=900' # 15 min cache
3006 $ref: '#/components/schemas/VideoCommentsForXML'
3007 application/rss+xml:
3009 $ref: '#/components/schemas/VideoCommentsForXML'
3012 $ref: '#/components/schemas/VideoCommentsForXML'
3013 application/atom+xml:
3015 $ref: '#/components/schemas/VideoCommentsForXML'
3020 x-summary: field inconsistencies
3023 - videoId filter is mixed with a channel filter
3025 description: video, video channel or account not found
3027 description: accept header unsupported
3028 '/feeds/videos.{format}':
3032 summary: List videos
3034 - url: 'https://peertube2.cpy.re'
3035 description: Live Test Server (live data - latest nightly version)
3036 - url: 'https://peertube3.cpy.re'
3037 description: Live Test Server (live data - latest RC version)
3038 - url: 'https://peertube.cpy.re'
3039 description: Live Test Server (live data - stable version)
3044 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
3057 description: 'limit listing to a specific account'
3062 description: 'limit listing to a specific account'
3065 - name: videoChannelId
3067 description: 'limit listing to a specific video channel'
3070 - name: videoChannelName
3072 description: 'limit listing to a specific video channel'
3075 - $ref: '#/components/parameters/sort'
3076 - $ref: '#/components/parameters/nsfw'
3077 - $ref: '#/components/parameters/filter'
3080 description: successful operation
3085 default: 'max-age=900' # 15 min cache
3089 $ref: '#/components/schemas/VideosForXML'
3092 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
3093 application/rss+xml:
3095 $ref: '#/components/schemas/VideosForXML'
3098 $ref: '#/components/schemas/VideosForXML'
3099 application/atom+xml:
3101 $ref: '#/components/schemas/VideosForXML'
3106 description: video channel or account not found
3108 description: accept header unsupported
3113 summary: List plugins
3126 - $ref: '#/components/parameters/start'
3127 - $ref: '#/components/parameters/count'
3128 - $ref: '#/components/parameters/sort'
3131 description: successful operation
3135 $ref: '#/components/schemas/PluginResponse'
3140 summary: List available plugins
3153 - name: currentPeerTubeEngine
3157 - $ref: '#/components/parameters/start'
3158 - $ref: '#/components/parameters/count'
3159 - $ref: '#/components/parameters/sort'
3162 description: successful operation
3166 $ref: '#/components/schemas/PluginResponse'
3168 description: plugin index unavailable
3173 summary: Install a plugin
3186 example: peertube-plugin-auth-ldap
3189 additionalProperties: false
3196 additionalProperties: false
3199 description: successful operation
3201 description: should have either `npmName` or `path` set
3206 summary: Update a plugin
3219 example: peertube-plugin-auth-ldap
3222 additionalProperties: false
3229 additionalProperties: false
3232 description: successful operation
3234 description: should have either `npmName` or `path` set
3236 description: existing plugin not found
3241 summary: Uninstall a plugin
3253 description: name of the plugin/theme in its package.json
3254 example: peertube-plugin-auth-ldap
3259 description: successful operation
3261 description: existing plugin not found
3266 summary: Get a plugin
3271 - $ref: '#/components/parameters/npmName'
3274 description: successful operation
3278 $ref: '#/components/schemas/Plugin'
3280 description: plugin not found
3281 /plugins/{npmName}/settings:
3285 summary: Set a plugin's settings
3290 - $ref: '#/components/parameters/npmName'
3299 additionalProperties: true
3302 description: successful operation
3304 description: plugin not found
3305 /plugins/{npmName}/public-settings:
3309 summary: Get a plugin's public settings
3311 - $ref: '#/components/parameters/npmName'
3314 description: successful operation
3319 additionalProperties: true
3321 description: plugin not found
3322 /plugins/{npmName}/registered-settings:
3326 summary: Get a plugin's registered settings
3331 - $ref: '#/components/parameters/npmName'
3334 description: successful operation
3339 additionalProperties: true
3341 description: plugin not found
3343 - url: 'https://peertube2.cpy.re/api/v1'
3344 description: Live Test Server (live data - latest nightly version)
3345 - url: 'https://peertube3.cpy.re/api/v1'
3346 description: Live Test Server (live data - latest RC version)
3347 - url: 'https://peertube.cpy.re/api/v1'
3348 description: Live Test Server (live data - stable version)
3355 description: Offset used to paginate results
3363 description: "Number of items to return"
3373 description: Sort column
3381 description: Plain text search, applied to various parts of the model depending on endpoint
3389 If the administrator enabled search index support, you can override the default search target.
3392 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
3393 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
3394 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
3395 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
3396 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
3397 * 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
3398 the data from the origin instance API
3408 description: Sort videos by criteria
3423 description: Sort videos by criteria
3438 description: Sort comments by criteria
3448 description: Sort blacklists by criteria
3464 description: Plain text search that will match with user usernames or emails
3471 description: Filter results down to (un)banned users
3478 description: Sort users by criteria
3489 description: Sort abuses by criteria
3496 videoRedundanciesSort:
3500 description: Sort abuses by criteria
3509 description: The name of the account
3512 example: chocobozzz | chocobozzz@example.org
3517 description: The user id
3526 description: The object id or uuid
3534 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3536 name: playlistElementId
3539 description: Playlist element id
3546 description: Abuse id
3550 name: abuseMessageId
3553 description: Abuse message id
3557 name: captionLanguage
3560 description: The caption language
3567 description: The video channel handle
3570 example: my_username | my_username@example.com
3572 name: subscriptionHandle
3575 description: The subscription handle
3578 example: my_username | my_username@example.com
3583 description: The thread id (root comment id)
3590 description: The comment id
3597 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3610 description: tag(s) of the video
3623 description: tag(s) of the video, where all should be present in the video
3636 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
3649 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3662 description: if you don't need the `total` in the response
3673 description: whether to include nsfw videos, if any
3684 Special filters (local for instance) which might require special rights:
3685 * `local` - only videos local to the instance
3686 * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
3696 description: list of uris to check if each is part of the user subscriptions
3706 description: name of the plugin/theme on npmjs.com or in its package.json
3709 example: peertube-plugin-auth-ldap
3713 In the header: *Authorization: Bearer <token\>*
3716 Authenticating via OAuth requires the following steps:
3719 - Have an account with sufficient authorization levels
3721 - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
3724 - Make Authenticated Requests
3728 tokenUrl: 'https://peertube.example.com/api/v1/users/token'
3731 moderator: Moderator scope
3734 VideoConstantNumber:
3740 VideoConstantString:
3747 VideoPlaylistPrivacySet:
3753 description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
3754 VideoPlaylistPrivacyConstant:
3757 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3761 VideoPlaylistTypeSet:
3766 description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
3767 VideoPlaylistTypeConstant:
3770 $ref: '#/components/schemas/VideoPlaylistTypeSet'
3781 description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
3782 VideoPrivacyConstant:
3785 $ref: '#/components/schemas/VideoPrivacySet'
3802 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
3813 description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
3823 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
3827 $ref: '#/components/schemas/AbuseStateSet'
3830 AbusePredefinedReasons:
3843 example: [spamOrMisleading]
3845 VideoResolutionConstant:
3849 description: 'Video resolution (240, 360, 720 ...)'
3854 VideoScheduledUpdate:
3857 $ref: '#/components/schemas/VideoPrivacySet'
3861 description: When to update the video
3881 - $ref: '#/components/schemas/Avatar'
3882 VideoChannelSummary:
3899 - $ref: '#/components/schemas/Avatar'
3911 - $ref: '#/components/schemas/Video'
3917 $ref: '#/components/schemas/VideoResolutionConstant'
3920 description: 'Video file size in bytes'
3938 VideoStreamingPlaylists:
3946 description: 'Playlist type (HLS = `1`)'
3955 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)'
3957 $ref: '#/components/schemas/VideoFile'
3973 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3984 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3996 originallyPublishedAt:
4000 $ref: '#/components/schemas/VideoConstantNumber'
4002 $ref: '#/components/schemas/VideoConstantNumber'
4004 $ref: '#/components/schemas/VideoConstantString'
4006 $ref: '#/components/schemas/VideoPrivacyConstant'
4016 example: What is PeerTube?
4019 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4022 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
4025 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
4041 $ref: '#/components/schemas/VideoStateConstant'
4045 - $ref: '#/components/schemas/VideoScheduledUpdate'
4053 $ref: '#/components/schemas/AccountSummary'
4055 $ref: '#/components/schemas/VideoChannelSummary'
4064 - $ref: '#/components/schemas/Video'
4071 description: A text tell the audience how to support the video creator
4072 example: Please support my work on <insert crowdfunding plateform>! <3
4074 $ref: '#/components/schemas/VideoChannel'
4076 $ref: '#/components/schemas/Account'
4081 example: [flowers, gardening]
4084 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'
4086 $ref: '#/components/schemas/VideoFile'
4099 $ref: '#/components/schemas/VideoStreamingPlaylists'
4100 FileRedundancyInformation:
4137 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4144 $ref: '#/components/schemas/FileRedundancyInformation'
4148 $ref: '#/components/schemas/FileRedundancyInformation'
4149 VideoImportStateConstant:
4157 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
4169 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
4173 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
4177 $ref: '#/components/schemas/VideoImportStateConstant'
4187 $ref: '#/components/schemas/Video'
4195 example: The video is a spam
4197 $ref: '#/components/schemas/AbusePredefinedReasons'
4199 $ref: '#/components/schemas/Account'
4201 $ref: '#/components/schemas/AbuseStateConstant'
4204 example: Decided to ban the server since it spams us regularly
4215 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4231 $ref: '#/components/schemas/AccountSummary'
4249 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4278 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4294 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4304 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
4306 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
4308 $ref: '#/components/schemas/AccountSummary'
4310 $ref: '#/components/schemas/VideoChannelSummary'
4332 totalRepliesFromVideoAuthor:
4337 $ref: '#/components/schemas/Account'
4338 VideoCommentThreadTree:
4341 $ref: '#/components/schemas/VideoComment'
4345 $ref: '#/components/schemas/VideoCommentThreadTree'
4349 $ref: '#/components/schemas/VideoConstantString'
4404 $ref: '#/components/schemas/Avatar'
4407 - $ref: '#/components/schemas/Actor'
4420 description: timestamp within the video, in seconds
4487 allowedForCurrentIP:
4489 requiresEmailVerification:
4693 requiresEmailVerification:
4718 allowAdditionalExtensions:
4786 $ref: '#/components/schemas/Actor'
4788 $ref: '#/components/schemas/Actor'
4791 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
4804 PredefinedAbuseReasons:
4805 description: Reason categories that help triage reports
4836 - activitypub-http-unicast
4837 - activitypub-http-broadcast
4838 - activitypub-http-fetcher
4839 - activitypub-follow
4845 - activitypub-refresher
4849 additionalProperties: true
4852 additionalProperties: true
4876 VideoUploadResponse:
4887 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4888 CommentThreadResponse:
4897 $ref: '#/components/schemas/VideoComment'
4898 CommentThreadPostResponse:
4901 $ref: '#/components/schemas/VideoComment'
4911 $ref: '#/components/schemas/Video'
4919 description: The user username
4925 description: The user email
4928 description: Theme enabled by this user
4931 description: Has the user confirmed their email address?
4933 $ref: '#/components/schemas/NSFWPolicy'
4936 description: Enable P2P in the player
4939 description: Automatically start playing the video on the watch page
4941 $ref: '#/components/schemas/UserRole'
4950 description: The user video quota
4953 description: The user daily video quota
4958 abusesAcceptedCount:
4964 noInstanceConfigWarningModal:
4975 $ref: '#/components/schemas/Account'
4979 $ref: '#/components/schemas/VideoChannel'
4984 description: The user username
4990 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
4996 description: The user email
4999 description: The user video quota
5002 description: The user daily video quota
5004 $ref: '#/components/schemas/UserRole'
5016 description: The user id
5020 description: The updated email of the user
5023 description: The updated video quota of the user
5026 description: The updated daily video quota of the user
5028 $ref: '#/components/schemas/UserRole'
5040 description: Your new password
5046 description: Your new email
5049 description: Your new displayNSFW
5056 description: Your new autoPlayVideo
5066 description: Id of the video
5069 description: Rating of the video
5076 $ref: '#/components/schemas/Video'
5079 description: 'Rating of the video'
5087 description: The username of the user
5090 pattern: '/^[a-z0-9._]{1,50}$/'
5094 description: The password of the user
5100 description: The email of the user
5103 description: The user display name
5111 description: The name for the default channel
5112 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5115 description: The display name for the default channel
5132 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5133 example: Please support my work on <insert crowdfunding plateform>! <3
5145 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
5146 example: Please support my work on <insert crowdfunding plateform>! <3
5147 bulkVideosSupportUpdate:
5149 description: 'Update the support field for all videos of this channel'
5154 name: 'media:peerLink'
5163 - application/x-bittorrent
5169 name: 'media:content'
5200 VideoCommentsForXML:
5235 description: video watch page URL
5238 description: video canonical URL
5242 description: video publication date
5245 description: video description
5248 description: video description
5251 description: publisher user name
5254 description: video category (MRSS)
5257 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
5272 description: video embed path, relative to the canonical URL domain (MRSS)
5281 description: video watch path, relative to the canonical URL domain (MRSS)
5302 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
5303 'media:description':
5310 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
5313 description: main streamable file for the video
5323 - application/x-bittorrent
5332 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)
5335 - $ref: '#/components/schemas/MRSSPeerLink'
5336 - $ref: '#/components/schemas/MRSSGroupContent'
5337 NotificationSettingValue:
5358 Notification type, following the `UserNotificationType` enum:
5360 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
5362 - `2` NEW_COMMENT_ON_MY_VIDEO
5364 - `3` NEW_ABUSE_FOR_MODERATORS
5366 - `4` BLACKLIST_ON_MY_VIDEO
5368 - `5` UNBLACKLIST_ON_MY_VIDEO
5370 - `6` MY_VIDEO_PUBLISHED
5372 - `7` MY_VIDEO_IMPORT_SUCCESS
5374 - `8` MY_VIDEO_IMPORT_ERROR
5376 - `9` NEW_USER_REGISTRATION
5380 - `11` COMMENT_MENTION
5382 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
5384 - `13` NEW_INSTANCE_FOLLOWER
5386 - `14` AUTO_INSTANCE_FOLLOWING
5392 - $ref: '#/components/schemas/VideoInfo'
5396 $ref: '#/components/schemas/ActorInfo'
5405 $ref: '#/components/schemas/VideoInfo'
5426 $ref: '#/components/schemas/VideoInfo'
5428 $ref: '#/components/schemas/ActorInfo'
5437 - $ref: '#/components/schemas/VideoInfo'
5446 - $ref: '#/components/schemas/VideoInfo'
5450 - $ref: '#/components/schemas/ActorInfo'
5458 $ref: '#/components/schemas/ActorInfo'
5486 NotificationListResponse:
5495 $ref: '#/components/schemas/Notification'
5500 example: peertube-plugin-auth-ldap
5528 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
5531 additionalProperties: true
5547 $ref: '#/components/schemas/Plugin'
5560 description: RTMP stream key to use to stream into this live video
5566 'https://search.example.org/api/v1/search/videos':
5568 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
5571 description: successful operation
5575 $ref: '#/components/schemas/VideoListResponse'