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
15 The PeerTube API is built on HTTP(S) and is RESTful. You can use your favorite
16 HTTP/REST library for your programming language to use PeerTube. The spec API is fully compatible with
17 [openapi-generator](https://github.com/OpenAPITools/openapi-generator/wiki/API-client-generator-HOWTO)
18 which generates a client SDK in the language of your choice - we generate some client SDKs automatically:
20 - [Python](https://framagit.org/framasoft/peertube/clients/python)
21 - [Go](https://framagit.org/framasoft/peertube/clients/go)
22 - [Kotlin](https://framagit.org/framasoft/peertube/clients/kotlin)
24 See the [REST API quick start](https://docs.joinpeertube.org/api-rest-getting-started) for a few
25 examples of using the PeerTube API.
29 When you sign up for an account on a PeerTube instance, you are given the possibility
30 to generate sessions on it, and authenticate there using an access token. Only __one
31 access token can currently be used at a time__.
35 Accounts are given permissions based on their role. There are three roles on
36 PeerTube: Administrator, Moderator, and User. See the [roles guide](https://docs.joinpeertube.org/admin-managing-users?id=roles) for a detail of their permissions.
40 The API uses standard HTTP status codes to indicate the success or failure
41 of the API call, completed by a [RFC7807-compliant](https://tools.ietf.org/html/rfc7807) response body.
44 HTTP 1.1 404 Not Found
45 Content-Type: application/problem+json; charset=utf-8
48 "detail": "Video not found",
49 "docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
56 We provide error `type` values for [a growing number of cases](https://github.com/Chocobozzz/PeerTube/blob/develop/shared/models/server/server-error-code.enum.ts),
57 but it is still optional. Types are used to disambiguate errors that bear the same status code
61 HTTP 1.1 403 Forbidden
62 Content-Type: application/problem+json; charset=utf-8
65 "detail": "Cannot get this video regarding follow constraints",
66 "docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
69 "type": "https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/does_not_respect_follow_constraints"
73 Here a 403 error could otherwise mean that the video is private or blocklisted.
77 Each parameter is evaluated on its own against a set of rules before the route validator
78 proceeds with potential testing involving parameter combinations. Errors coming from validation
79 errors appear earlier and benefit from a more detailed error description:
82 HTTP 1.1 400 Bad Request
83 Content-Type: application/problem+json; charset=utf-8
86 "detail": "Incorrect request parameters: id",
87 "docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
88 "instance": "/api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180",
92 "msg": "Invalid value",
94 "value": "9c9de5e8-0a1e-484a-b099-e80766180"
98 "title": "Bad Request",
103 Where `id` is the name of the field concerned by the error, within the route definition.
104 `invalid-params.<field>.location` can be either 'params', 'body', 'header', 'query' or 'cookies', and
105 `invalid-params.<field>.value` reports the value that didn't pass validation whose `invalid-params.<field>.msg`
108 ### Deprecated error fields
110 Some fields could be included with previous versions. They are still included but their use is deprecated:
111 - `error`: superseded by `detail`
112 - `code`: superseded by `type` (which is now an URI)
116 We are rate-limiting all endpoints of PeerTube's API. Custom values can be set by administrators:
118 | Endpoint (prefix: `/api/v1`) | Calls | Time frame |
119 |------------------------------|---------------|--------------|
120 | `/*` | 50 | 10 seconds |
121 | `POST /users/token` | 15 | 5 minutes |
122 | `POST /users/register` | 2<sup>*</sup> | 5 minutes |
123 | `POST /users/ask-send-verify-email` | 3 | 5 minutes |
125 Depending on the endpoint, <sup>*</sup>failed requests are not taken into account. A service
126 limit is announced by a `429 Too Many Requests` status code.
128 You can get details about the current state of your rate limit by reading the
131 | Header | Description |
132 |-------------------------|------------------------------------------------------------|
133 | `X-RateLimit-Limit` | Number of max requests allowed in the current time period |
134 | `X-RateLimit-Remaining` | Number of remaining requests in the current time period |
135 | `X-RateLimit-Reset` | Timestamp of end of current time period as UNIX timestamp |
136 | `Retry-After` | Seconds to delay after the first `429` is received |
140 This API features [Cross-Origin Resource Sharing (CORS)](https://fetch.spec.whatwg.org/),
141 allowing cross-domain communication from the browser for some routes:
144 |------------------------- ---|
148 | `/live/segments-sha256/*` |
149 | `/.well-known/webfinger` |
151 In addition, all routes serving ActivityPub are CORS-enabled for all origins.
153 url: https://docs.joinpeertube.org/api-rest-reference.html
157 As a visitor, you can use this API to open an account (if registrations are open on
158 that PeerTube instance). As an admin, you should use the dedicated [User creation
159 API](#operation/addUser) instead.
161 x-displayName: Login/Logout
163 Sessions deal with access tokens over time. Only __one session token can currently be used at a time__.
166 Accounts encompass remote accounts discovered across the federation,
167 and correspond to the main Actor, along with video channels a user can create, which
170 When a comment is posted, it is done with your Account's Actor.
173 Using some features of PeerTube require authentication, for which User
174 provide different levels of permission as well as associated user
175 information. Each user has a corresponding local Account for federation.
178 Operations related to your own User, when logged-in.
179 - name: My Subscriptions
181 Operations related to your subscriptions to video channels, their
182 new videos, and how to keep up to date with their latest publications!
185 Operations related to your watch history.
186 - name: My Notifications
188 Notifications following new videos, follows or reports. They allow you
189 to keep track of the interactions and overall important information that
190 concerns you. You MAY set per-notification type delivery preference, to
191 receive the info either by mail, by in-browser notification or both.
194 Each server exposes public information regarding supported videos and
198 Jobs are long-running tasks enqueued and processed by the instance
199 itself. No additional worker registration is currently available.
200 - name: Instance Follows
202 Managing servers which the instance interacts with is crucial to the
203 concept of federation in PeerTube and external video indexation. The PeerTube
204 server then deals with inter-server ActivityPub operations and propagates
205 information across its social graph by posting activities to actors' inbox
208 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-follows
209 - name: Instance Redundancy
211 Redundancy is part of the inter-server solidarity that PeerTube fosters.
212 Manage the list of instances you wish to help by seeding their videos according
213 to the policy of video selection of your choice. Note that you have a similar functionality
214 to mirror individual videos, see [video mirroring](#tag/Video-Mirroring).
216 url: https://docs.joinpeertube.org/admin-following-instances?id=instances-redundancy
219 Managing plugins installed from a local path or from NPM, or search for new ones.
221 url: https://docs.joinpeertube.org/api-plugins
224 Abuses deal with reports of local or remote videos/comments/accounts alike.
227 Operations dealing with listing, uploading, fetching or modifying videos.
230 Operations dealing with adding video or audio. PeerTube supports two upload modes, and three import modes.
234 - [_legacy_](#operation/uploadLegacy), where the video file is sent in a single request
235 - [_resumable_](#operation/uploadResumableInit), where the video file is sent in chunks
237 You can upload videos more reliably by using the resumable variant. Its protocol lets
238 you resume an upload operation after a network interruption or other transmission failure,
239 saving time and bandwidth in the event of network failures.
241 Favor using resumable uploads in any of the following cases:
242 - You are transferring large files
243 - The likelihood of a network interruption is high
244 - Uploads are originating from a device with a low-bandwidth or unstable Internet connection,
245 such as a mobile device
249 - _URL_-based: where the URL points to any service supported by [youtube-dl](https://ytdl-org.github.io/youtube-dl/)
250 - _magnet_-based: where the URI resolves to a BitTorrent resource containing a single supported video file
251 - _torrent_-based: where the metainfo file resolves to a BitTorrent resource containing a single supported video file
253 The import function is practical when the desired video/audio is available online. It makes PeerTube
254 download it for you, saving you as much bandwidth and avoiding any instability or limitation your network might have.
255 - name: Video Imports
256 description: Operations dealing with listing, adding and removing video imports.
257 - name: Video Captions
258 description: Operations dealing with listing, adding and removing closed captions of a video.
259 - name: Video Channels
260 description: Operations dealing with the creation, modification and listing of videos within a channel.
261 - name: Video Comments
263 Operations dealing with comments to a video. Comments are organized in threads: adding a
264 comment in response to the video starts a thread, adding a reply to a comment adds it to
265 its root comment thread.
267 description: Operations dealing with blocking videos (removing them from view and preventing interactions).
269 description: Like/dislike a video.
270 - name: Video Playlists
271 description: Operations dealing with playlists of videos. Playlists are bound to users and/or channels.
273 description: Operations on video files
274 - name: Video Transcoding
275 description: Video transcoding related operations
277 description: Video statistics
279 description: Server syndication feeds
282 The search helps to find _videos_ or _channels_ from within the instance and beyond.
283 Videos from other instances federated by the instance (that is, instances
284 followed by the instance) can be found via keywords and other criteria of
287 Administrators can also enable the use of a remote search system, indexing
288 videos and channels not could be not federated by the instance.
290 description: Get and update the custom homepage
291 - name: Video Mirroring
293 PeerTube instances can mirror videos from one another, and help distribute some videos.
295 For importing videos as your own, refer to [video imports](#operation/importVideo).
324 - Video Ownership Change
344 - Instance Redundancy
354 summary: Get an account
355 operationId: getAccount
357 - $ref: '#/components/parameters/name'
360 description: successful operation
364 $ref: '#/components/schemas/Account'
366 description: account not found
368 '/accounts/{name}/videos':
373 summary: 'List videos of an account'
374 operationId: getAccountVideos
376 - $ref: '#/components/parameters/name'
377 - $ref: '#/components/parameters/categoryOneOf'
378 - $ref: '#/components/parameters/isLive'
379 - $ref: '#/components/parameters/tagsOneOf'
380 - $ref: '#/components/parameters/tagsAllOf'
381 - $ref: '#/components/parameters/licenceOneOf'
382 - $ref: '#/components/parameters/languageOneOf'
383 - $ref: '#/components/parameters/nsfw'
384 - $ref: '#/components/parameters/isLocal'
385 - $ref: '#/components/parameters/include'
386 - $ref: '#/components/parameters/privacyOneOf'
387 - $ref: '#/components/parameters/hasHLSFiles'
388 - $ref: '#/components/parameters/hasWebtorrentFiles'
389 - $ref: '#/components/parameters/skipCount'
390 - $ref: '#/components/parameters/start'
391 - $ref: '#/components/parameters/count'
392 - $ref: '#/components/parameters/videosSort'
395 description: successful operation
399 $ref: '#/components/schemas/VideoListResponse'
403 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
404 .then(function(response) {
405 return response.json()
406 }).then(function(data) {
412 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
418 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
420 http = Net::HTTP.new(uri.host, uri.port)
423 response = http.get(uri.request_uri)
425 puts JSON.parse(response.read_body)
430 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
435 '/accounts/{name}/followers':
439 summary: 'List followers of an account'
442 operationId: getAccountFollowers
444 - $ref: '#/components/parameters/name'
445 - $ref: '#/components/parameters/start'
446 - $ref: '#/components/parameters/count'
447 - $ref: '#/components/parameters/followersSort'
448 - $ref: '#/components/parameters/search'
451 description: successful operation
463 $ref: '#/components/schemas/Follow'
469 summary: List accounts
470 operationId: getAccounts
472 - $ref: '#/components/parameters/start'
473 - $ref: '#/components/parameters/count'
474 - $ref: '#/components/parameters/sort'
477 description: successful operation
483 $ref: '#/components/schemas/Account'
489 summary: Get instance public configuration
490 operationId: getConfig
493 description: successful operation
497 $ref: '#/components/schemas/ServerConfig'
500 externalValue: https://peertube2.cpy.re/api/v1/config
504 summary: Get instance "About" information
505 operationId: getAbout
510 description: successful operation
514 $ref: '#/components/schemas/ServerConfigAbout'
517 externalValue: https://peertube2.cpy.re/api/v1/config/about
521 summary: Get instance runtime configuration
522 operationId: getCustomConfig
530 description: successful operation
534 $ref: '#/components/schemas/ServerConfigCustom'
536 summary: Set instance runtime configuration
537 operationId: putCustomConfig
545 description: successful operation
547 x-summary: field inconsistencies
550 - the emailer is disabled and the instance is open to registrations
551 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
553 summary: Delete instance runtime configuration
554 operationId: delCustomConfig
562 description: successful operation
564 /custom-pages/homepage/instance:
566 summary: Get instance custom homepage
571 description: No homepage set
573 description: successful operation
577 $ref: '#/components/schemas/CustomHomepage'
579 summary: Set instance custom homepage
593 description: content of the homepage, that will be injected in the client
596 description: successful operation
600 summary: Pause job queue
608 description: successful operation
612 summary: Resume job queue
620 description: successful operation
624 summary: List instance jobs
635 description: The state of the job ('' for for no filter)
645 - $ref: '#/components/parameters/jobType'
646 - $ref: '#/components/parameters/start'
647 - $ref: '#/components/parameters/count'
648 - $ref: '#/components/parameters/sort'
651 description: successful operation
664 $ref: '#/components/schemas/Job'
670 summary: List instances following the server
672 - $ref: '#/components/parameters/followState'
673 - $ref: '#/components/parameters/actorType'
674 - $ref: '#/components/parameters/start'
675 - $ref: '#/components/parameters/count'
676 - $ref: '#/components/parameters/sort'
679 description: successful operation
691 $ref: '#/components/schemas/Follow'
693 '/server/followers/{nameWithHost}':
695 summary: Remove or reject a follower to your server
705 description: The remote actor handle to remove from your followers
711 description: successful operation
713 description: follower not found
715 '/server/followers/{nameWithHost}/reject':
717 summary: Reject a pending follower to your server
727 description: The remote actor handle to remove from your followers
733 description: successful operation
735 description: follower not found
737 '/server/followers/{nameWithHost}/accept':
739 summary: Accept a pending follower to your server
749 description: The remote actor handle to remove from your followers
755 description: successful operation
757 description: follower not found
763 summary: List instances followed by the server
765 - $ref: '#/components/parameters/followState'
766 - $ref: '#/components/parameters/actorType'
767 - $ref: '#/components/parameters/start'
768 - $ref: '#/components/parameters/count'
769 - $ref: '#/components/parameters/sort'
772 description: successful operation
784 $ref: '#/components/schemas/Follow'
791 summary: Follow a list of actors (PeerTube instance, channel or account)
794 description: successful operation
796 description: cannot follow a non-HTTPS server
815 '/server/following/{hostOrHandle}':
817 summary: Unfollow an actor (PeerTube instance, channel or account)
827 description: The hostOrHandle to unfollow
832 description: successful operation
834 description: host or handle not found
838 summary: Create a user
847 description: user created
851 $ref: '#/components/schemas/AddUserResponse'
857 id: '$response.body#/user/id'
862 id: '$response.body#/user/id'
867 id: '$response.body#/user/id'
869 description: insufficient authority to create an admin or moderator
874 $ref: '#/components/schemas/AddUser'
876 If the smtp server is configured, you can leave the password empty and an email will be sent
877 asking the user to set it first.
881 operationId: getUsers
888 - $ref: '#/components/parameters/usersSearch'
889 - $ref: '#/components/parameters/usersBlocked'
890 - $ref: '#/components/parameters/start'
891 - $ref: '#/components/parameters/count'
892 - $ref: '#/components/parameters/usersSort'
895 description: successful operation
901 $ref: '#/components/schemas/User'
905 - $ref: '#/components/parameters/id'
907 summary: Delete a user
916 description: successful operation
927 description: include statistics about the user (only available as a moderator/admin)
932 x-summary: successful operation
934 As an admin/moderator, you can request a response augmented with statistics about the user's
935 moderation relations and videos usage, by using the `withStats` parameter.
940 - $ref: '#/components/schemas/User'
941 - $ref: '#/components/schemas/UserWithStats'
943 summary: Update a user
951 description: successful operation
956 $ref: '#/components/schemas/UpdateUser'
959 /oauth-clients/local:
961 summary: Login prerequisite
962 description: You need to retrieve a client id and secret before [logging in](#operation/getOAuthToken).
963 operationId: getOAuthClient
968 description: successful operation
972 $ref: '#/components/schemas/OAuthClient'
974 UseOAuthClientToLogin:
975 operationId: getOAuthToken
977 client_id: '$response.body#/client_id'
978 client_secret: '$response.body#/client_secret'
982 API="https://peertube2.cpy.re/api/v1"
985 curl -s "$API/oauth-clients/local"
990 operationId: getOAuthToken
991 description: With your [client id and secret](#operation/getOAuthClient), you can retrieve an access and refresh tokens.
996 application/x-www-form-urlencoded:
999 - $ref: '#/components/schemas/OAuthToken-password'
1000 - $ref: '#/components/schemas/OAuthToken-refresh_token'
1002 propertyName: grant_type
1004 password: '#/components/schemas/OAuthToken-password'
1005 refresh_token: '#/components/schemas/OAuthToken-refresh_token'
1008 description: successful operation
1019 example: 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0
1020 description: valid for 1 day
1023 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
1024 description: valid for 2 weeks
1029 refresh_token_expires_in:
1034 x-summary: client or credentials are invalid
1036 Disambiguate via `type`:
1037 - `invalid_client` for an unmatched `client_id`
1038 - `invalid_grant` for unmatched credentials
1040 x-summary: token expired
1042 Disambiguate via `type`:
1043 - default value for a regular authentication failure
1044 - `invalid_token` for an expired token
1049 API="https://peertube2.cpy.re/api/v1"
1050 USERNAME="<your_username>"
1051 PASSWORD="<your_password>"
1054 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
1055 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
1056 curl -s "$API/users/token" \
1057 --data client_id="$client_id" \
1058 --data client_secret="$client_secret" \
1059 --data grant_type=password \
1060 --data username="$USERNAME" \
1061 --data password="$PASSWORD" \
1062 | jq -r ".access_token"
1064 /users/revoke-token:
1067 description: Revokes your access token and its associated refresh token, destroying your current session.
1068 operationId: revokeOAuthToken
1075 description: successful operation
1079 summary: Register a user
1080 operationId: registerUser
1086 description: successful operation
1091 $ref: '#/components/schemas/RegisterUser'
1094 /users/{id}/verify-email:
1096 summary: Verify a user
1097 operationId: verifyUser
1099 Following a user registration, the new user will receive an email asking to click a link
1100 containing a secret.
1105 - $ref: '#/components/parameters/id'
1118 - verificationString
1121 description: successful operation
1123 description: invalid verification string
1125 description: user not found
1127 /users/ask-send-verify-email:
1129 summary: Resend user verification link
1130 operationId: resendEmailToVerifyUser
1136 description: successful operation
1140 summary: Get my user information
1141 operationId: getUserInfo
1149 description: successful operation
1155 $ref: '#/components/schemas/User'
1157 summary: Update my user information
1158 operationId: putUserInfo
1166 description: successful operation
1171 $ref: '#/components/schemas/UpdateMe'
1174 /users/me/videos/imports:
1176 summary: Get video imports of my user
1184 - $ref: '#/components/parameters/start'
1185 - $ref: '#/components/parameters/count'
1186 - $ref: '#/components/parameters/sort'
1189 description: successful operation
1193 $ref: '#/components/schemas/VideoImportsList'
1195 /users/me/video-quota-used:
1197 summary: Get my user used quota
1205 description: successful operation
1213 description: The user video quota used so far in bytes
1214 example: 16810141515
1215 videoQuotaUsedDaily:
1217 description: The user video quota used today in bytes
1220 '/users/me/videos/{videoId}/rating':
1222 summary: Get rate of my user for a video
1232 description: The video id
1234 $ref: '#/components/schemas/Video/properties/id'
1237 description: successful operation
1241 $ref: '#/components/schemas/GetMeVideoRating'
1245 summary: Get videos of my user
1253 - $ref: '#/components/parameters/start'
1254 - $ref: '#/components/parameters/count'
1255 - $ref: '#/components/parameters/sort'
1258 description: successful operation
1262 $ref: '#/components/schemas/VideoListResponse'
1264 /users/me/subscriptions:
1266 summary: Get my user subscriptions
1273 - $ref: '#/components/parameters/start'
1274 - $ref: '#/components/parameters/count'
1275 - $ref: '#/components/parameters/sort'
1278 description: successful operation
1282 $ref: '#/components/schemas/VideoChannelList'
1286 summary: Add subscription to my user
1299 description: uri of the video channels to subscribe to
1305 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
1308 description: successful operation
1310 /users/me/subscriptions/exist:
1312 summary: Get if subscriptions exist for my user
1319 - $ref: '#/components/parameters/subscriptionsUris'
1322 description: successful operation
1328 /users/me/subscriptions/videos:
1330 summary: List videos of subscriptions of my user
1338 - $ref: '#/components/parameters/categoryOneOf'
1339 - $ref: '#/components/parameters/isLive'
1340 - $ref: '#/components/parameters/tagsOneOf'
1341 - $ref: '#/components/parameters/tagsAllOf'
1342 - $ref: '#/components/parameters/licenceOneOf'
1343 - $ref: '#/components/parameters/languageOneOf'
1344 - $ref: '#/components/parameters/nsfw'
1345 - $ref: '#/components/parameters/isLocal'
1346 - $ref: '#/components/parameters/include'
1347 - $ref: '#/components/parameters/privacyOneOf'
1348 - $ref: '#/components/parameters/hasHLSFiles'
1349 - $ref: '#/components/parameters/hasWebtorrentFiles'
1350 - $ref: '#/components/parameters/skipCount'
1351 - $ref: '#/components/parameters/start'
1352 - $ref: '#/components/parameters/count'
1353 - $ref: '#/components/parameters/videosSort'
1356 description: successful operation
1360 $ref: '#/components/schemas/VideoListResponse'
1362 '/users/me/subscriptions/{subscriptionHandle}':
1364 summary: Get subscription of my user
1371 - $ref: '#/components/parameters/subscriptionHandle'
1374 description: successful operation
1378 $ref: '#/components/schemas/VideoChannel'
1380 summary: Delete subscription of my user
1387 - $ref: '#/components/parameters/subscriptionHandle'
1390 description: successful operation
1392 /users/me/notifications:
1394 summary: List my notifications
1402 description: only list unread notifications
1405 - $ref: '#/components/parameters/start'
1406 - $ref: '#/components/parameters/count'
1407 - $ref: '#/components/parameters/sort'
1410 description: successful operation
1414 $ref: '#/components/schemas/NotificationListResponse'
1416 /users/me/notifications/read:
1418 summary: Mark notifications as read by their id
1431 description: ids of the notifications to mark as read
1438 description: successful operation
1440 /users/me/notifications/read-all:
1442 summary: Mark all my notification as read
1449 description: successful operation
1451 /users/me/notification-settings:
1453 summary: Update my notification settings
1464 newVideoFromSubscription:
1465 $ref: '#/components/schemas/NotificationSettingValue'
1466 newCommentOnMyVideo:
1467 $ref: '#/components/schemas/NotificationSettingValue'
1469 $ref: '#/components/schemas/NotificationSettingValue'
1470 videoAutoBlacklistAsModerator:
1471 $ref: '#/components/schemas/NotificationSettingValue'
1473 $ref: '#/components/schemas/NotificationSettingValue'
1475 $ref: '#/components/schemas/NotificationSettingValue'
1476 myVideoImportFinished:
1477 $ref: '#/components/schemas/NotificationSettingValue'
1479 $ref: '#/components/schemas/NotificationSettingValue'
1480 newUserRegistration:
1481 $ref: '#/components/schemas/NotificationSettingValue'
1483 $ref: '#/components/schemas/NotificationSettingValue'
1484 newInstanceFollower:
1485 $ref: '#/components/schemas/NotificationSettingValue'
1486 autoInstanceFollowing:
1487 $ref: '#/components/schemas/NotificationSettingValue'
1490 description: successful operation
1492 /users/me/history/videos:
1494 summary: List watched videos history
1500 - $ref: '#/components/parameters/start'
1501 - $ref: '#/components/parameters/count'
1502 - $ref: '#/components/parameters/search'
1505 description: successful operation
1509 $ref: '#/components/schemas/VideoListResponse'
1511 /users/me/history/videos/{videoId}:
1513 summary: Delete history element
1523 $ref: '#/components/schemas/Video/properties/id'
1526 description: successful operation
1528 /users/me/history/videos/remove:
1530 summary: Clear video history
1537 multipart/form-data:
1542 description: history before this date will be deleted
1547 description: successful operation
1549 /users/me/avatar/pick:
1551 summary: Update my user avatar
1558 description: successful operation
1567 $ref: '#/components/schemas/ActorImage'
1569 description: image file too large
1571 X-File-Maximum-Size:
1575 description: Maximum file size for the avatar
1578 multipart/form-data:
1583 description: The file to upload
1588 contentType: image/png, image/jpeg
1592 summary: Delete my avatar
1599 description: successful operation
1603 summary: List video ownership changes
1605 - Video Ownership Change
1610 description: successful operation
1612 '/videos/ownership/{id}/accept':
1614 summary: Accept ownership change request
1616 - Video Ownership Change
1620 - $ref: '#/components/parameters/idOrUUID'
1623 description: successful operation
1625 description: cannot terminate an ownership change of another user
1627 description: video ownership change not found
1629 '/videos/ownership/{id}/refuse':
1631 summary: Refuse ownership change request
1633 - Video Ownership Change
1637 - $ref: '#/components/parameters/idOrUUID'
1640 description: successful operation
1642 description: cannot terminate an ownership change of another user
1644 description: video ownership change not found
1646 '/videos/{id}/give-ownership':
1648 summary: Request ownership change
1650 - Video Ownership Change
1654 - $ref: '#/components/parameters/idOrUUID'
1658 application/x-www-form-urlencoded:
1668 description: successful operation
1670 description: changing video ownership to a remote account is not supported yet
1672 description: video not found
1674 /videos/{id}/studio/edit:
1676 summary: Create a studio task
1680 description: Create a task to edit a video (cut, add intro/outro etc)
1684 - $ref: '#/components/parameters/idOrUUID'
1688 application/x-www-form-urlencoded:
1690 $ref: '#/components/schemas/VideoStudioCreateTask'
1693 description: successful operation
1695 description: incorrect parameters
1697 description: video not found
1701 summary: List videos
1702 operationId: getVideos
1706 - $ref: '#/components/parameters/categoryOneOf'
1707 - $ref: '#/components/parameters/isLive'
1708 - $ref: '#/components/parameters/tagsOneOf'
1709 - $ref: '#/components/parameters/tagsAllOf'
1710 - $ref: '#/components/parameters/licenceOneOf'
1711 - $ref: '#/components/parameters/languageOneOf'
1712 - $ref: '#/components/parameters/nsfw'
1713 - $ref: '#/components/parameters/isLocal'
1714 - $ref: '#/components/parameters/include'
1715 - $ref: '#/components/parameters/privacyOneOf'
1716 - $ref: '#/components/parameters/hasHLSFiles'
1717 - $ref: '#/components/parameters/hasWebtorrentFiles'
1718 - $ref: '#/components/parameters/skipCount'
1719 - $ref: '#/components/parameters/start'
1720 - $ref: '#/components/parameters/count'
1721 - $ref: '#/components/parameters/videosSort'
1724 description: successful operation
1728 $ref: '#/components/schemas/VideoListResponse'
1732 summary: List available video categories
1733 operationId: getCategories
1738 description: successful operation
1747 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1751 summary: List available video licences
1752 operationId: getLicences
1757 description: successful operation
1766 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1770 summary: List available video languages
1771 operationId: getLanguages
1776 description: successful operation
1785 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1789 summary: List available video privacy policies
1790 operationId: getPrivacyPolicies
1795 description: successful operation
1804 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1808 summary: Update a video
1809 operationId: putVideo
1815 - $ref: '#/components/parameters/idOrUUID'
1818 description: successful operation
1821 multipart/form-data:
1826 description: Video thumbnail file
1830 description: Video preview file
1834 $ref: '#/components/schemas/VideoCategorySet'
1836 $ref: '#/components/schemas/VideoLicenceSet'
1838 $ref: '#/components/schemas/VideoLanguageSet'
1840 $ref: '#/components/schemas/VideoPrivacySet'
1842 description: Video description
1845 description: Whether or not we wait transcoding before publish the video
1848 description: A text tell the audience how to support the video creator
1849 example: Please support our work on https://soutenir.framasoft.org/en/ <3
1852 description: Whether or not this video contains sensitive content
1855 description: Video name
1860 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1869 description: Enable or disable comments for this video
1872 description: Enable or disable downloading for this video
1874 originallyPublishedAt:
1875 description: Date when the content was originally published
1879 $ref: '#/components/schemas/VideoScheduledUpdate'
1882 contentType: image/jpeg
1884 contentType: image/jpeg
1886 summary: Get a video
1887 operationId: getVideo
1891 - $ref: '#/components/parameters/idOrUUID'
1894 description: successful operation
1898 $ref: '#/components/schemas/VideoDetails'
1900 summary: Delete a video
1901 operationId: delVideo
1907 - $ref: '#/components/parameters/idOrUUID'
1910 description: successful operation
1912 '/videos/{id}/description':
1914 summary: Get complete video description
1915 operationId: getVideoDesc
1919 - $ref: '#/components/parameters/idOrUUID'
1922 description: successful operation
1931 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**
1933 '/videos/{id}/source':
1935 summary: Get video source file metadata
1936 operationId: getVideoSource
1940 - $ref: '#/components/parameters/idOrUUID'
1943 description: successful operation
1947 $ref: '#/components/schemas/VideoSource'
1949 '/videos/{id}/views':
1951 summary: Notify user is watching a video
1952 description: Call this endpoint regularly (every 5-10 seconds for example) to notify the server the user is watching the video. After a while, PeerTube will increase video's viewers counter. If the user is authenticated, PeerTube will also store the current player time.
1953 operationId: addView
1957 - $ref: '#/components/parameters/idOrUUID'
1962 $ref: '#/components/schemas/UserViewingVideo'
1966 description: successful operation
1968 '/videos/{id}/watching':
1970 summary: Set watching progress of a video
1972 description: This endpoint has been deprecated. Use `/videos/{id}/views` instead
1978 - $ref: '#/components/parameters/idOrUUID'
1983 $ref: '#/components/schemas/UserViewingVideo'
1987 description: successful operation
1989 '/videos/{id}/stats/overall':
1991 summary: Get overall stats of a video
1997 - $ref: '#/components/parameters/idOrUUID'
2000 description: Filter stats by start date
2006 description: Filter stats by end date
2012 description: successful operation
2016 $ref: '#/components/schemas/VideoStatsOverall'
2018 '/videos/{id}/stats/retention':
2020 summary: Get retention stats of a video
2026 - $ref: '#/components/parameters/idOrUUID'
2029 description: successful operation
2033 $ref: '#/components/schemas/VideoStatsRetention'
2035 '/videos/{id}/stats/timeseries/{metric}':
2037 summary: Get timeserie stats of a video
2043 - $ref: '#/components/parameters/idOrUUID'
2048 description: The metric to get
2053 - 'aggregateWatchTime'
2056 description: Filter stats by start date
2062 description: Filter stats by end date
2068 description: successful operation
2072 $ref: '#/components/schemas/VideoStatsTimeserie'
2076 summary: Upload a video
2077 description: Uses a single request to upload a video.
2078 operationId: uploadLegacy
2086 description: successful operation
2090 $ref: '#/components/schemas/VideoUploadResponse'
2092 description: video didn't pass upload filter
2094 description: upload has timed out
2096 x-summary: video file too large, due to quota or max body size limit set by the reverse-proxy
2098 If the response has no body, it means the reverse-proxy didn't let it through. Otherwise disambiguate via `type`:
2099 - `quota_reached` for quota limits whether daily or global
2101 X-File-Maximum-Size:
2105 description: Maximum file size for the video
2107 description: video type unsupported
2109 description: video unreadable
2112 multipart/form-data:
2114 $ref: '#/components/schemas/VideoUploadRequestLegacy'
2117 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
2119 contentType: image/jpeg
2121 contentType: image/jpeg
2126 USERNAME="<your_username>"
2127 PASSWORD="<your_password>"
2128 FILE_PATH="<your_file_path>"
2129 CHANNEL_ID="<your_channel_id>"
2131 API="https://peertube2.cpy.re/api/v1"
2134 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
2135 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
2136 token=$(curl -s "$API/users/token" \
2137 --data client_id="$client_id" \
2138 --data client_secret="$client_secret" \
2139 --data grant_type=password \
2140 --data username="$USERNAME" \
2141 --data password="$PASSWORD" \
2142 | jq -r ".access_token")
2145 curl -s "$API/videos/upload" \
2146 -H "Authorization: Bearer $token" \
2148 --form videofile=@"$FILE_PATH" \
2149 --form channelId=$CHANNEL_ID \
2152 /videos/upload-resumable:
2154 summary: Initialize the resumable upload of a video
2155 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to initialize the upload of a video
2156 operationId: uploadResumableInit
2163 - name: X-Upload-Content-Length
2169 description: Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
2170 - name: X-Upload-Content-Type
2177 description: MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
2182 $ref: '#/components/schemas/VideoUploadRequestResumable'
2185 description: file already exists, send a [`resume`](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) request instead
2187 description: created
2193 example: /api/v1/videos/upload-resumable?upload_id=471e97554f21dec3b8bb5d4602939c51
2199 x-summary: video file too large, due to quota, absolute max file size or concurrent partial upload limit
2201 Disambiguate via `type`:
2202 - `max_file_size_reached` for the absolute file size limit
2203 - `quota_reached` for quota limits whether daily or global
2205 description: video type unsupported
2207 summary: Send chunk for the resumable upload of a video
2208 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to continue, pause or resume the upload of a video
2209 operationId: uploadResumable
2220 Created session id to proceed with. If you didn't send chunks in the last hour, it is
2221 not valid anymore and you need to initialize a new upload.
2224 - name: Content-Range
2228 example: bytes 0-262143/2469036
2231 Specifies the bytes in the file that the request is uploading.
2233 For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first
2234 262144 bytes (256 x 1024) in a 2,469,036 byte file.
2235 - name: Content-Length
2242 Size of the chunk that the request is sending.
2244 Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from
2245 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
2248 application/octet-stream:
2254 description: last chunk received
2262 $ref: '#/components/schemas/VideoUploadResponse'
2264 description: resume incomplete
2269 example: bytes=0-262143
2275 description: video didn't pass upload filter
2277 description: upload not found
2279 description: chunk doesn't match range
2281 description: video unreadable
2283 description: too many concurrent requests
2285 description: upload is already being processed
2292 summary: Cancel the resumable upload of a video, deleting any data uploaded so far
2293 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to cancel the upload of a video
2294 operationId: uploadResumableCancel
2305 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
2306 not valid anymore and the upload session has already been deleted with its data ;-)
2309 - name: Content-Length
2317 description: upload cancelled
2324 description: upload not found
2328 summary: Import a video
2329 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
2330 operationId: importVideo
2338 multipart/form-data:
2340 $ref: '#/components/schemas/VideoCreateImport'
2343 contentType: application/x-bittorrent
2345 contentType: image/jpeg
2347 contentType: image/jpeg
2350 description: successful operation
2354 $ref: '#/components/schemas/VideoUploadResponse'
2356 description: '`magnetUri` or `targetUrl` or a torrent file missing'
2358 description: video didn't pass pre-import filter
2360 description: HTTP or Torrent/magnetURI import not enabled
2362 /videos/imports/{id}/cancel:
2364 summary: Cancel video import
2365 description: Cancel a pending video import
2371 - $ref: '#/components/parameters/id'
2374 description: successful operation
2376 /videos/imports/{id}:
2378 summary: Delete video import
2379 description: Delete ended video import
2385 - $ref: '#/components/parameters/id'
2388 description: successful operation
2392 summary: Create a live
2393 operationId: addLive
2401 description: successful operation
2405 $ref: '#/components/schemas/VideoUploadResponse'
2407 x-summary: validation error, or conflicting `saveReplay` and `permanentLive` parameter set
2409 Disambiguate via `type`:
2410 - default type for a validation error
2411 - `live_conflicting_permanent_and_save_replay` for conflicting parameters set
2413 x-summary: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
2415 Disambiguate via `type`:
2416 - `live_not_enabled` for a disabled live feature
2417 - `live_not_allowing_replay` for a disabled replay feature
2418 - `max_instance_lives_limit_reached` for the absolute concurrent live limit
2419 - `max_user_lives_limit_reached` for the user concurrent live limit
2422 multipart/form-data:
2427 description: Channel id that will contain this live video
2432 description: User can stream multiple times in a permanent live
2435 description: User can select live latency mode if enabled by the instance
2436 $ref: '#/components/schemas/LiveVideoLatencyMode'
2438 description: Live video/replay thumbnail file
2442 description: Live video/replay preview file
2446 $ref: '#/components/schemas/VideoPrivacySet'
2448 $ref: '#/components/schemas/VideoCategorySet'
2450 $ref: '#/components/schemas/VideoLicenceSet'
2452 $ref: '#/components/schemas/VideoLanguageSet'
2454 description: Live video/replay description
2457 description: A text tell the audience how to support the creator
2458 example: Please support our work on https://soutenir.framasoft.org/en/ <3
2461 description: Whether or not this live video/replay contains sensitive content
2464 description: Live video/replay name
2469 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
2478 description: Enable or disable comments for this live video/replay
2481 description: Enable or disable downloading for the replay of this live video
2488 contentType: image/jpeg
2490 contentType: image/jpeg
2494 summary: Get information about a live
2495 operationId: getLiveId
2502 - $ref: '#/components/parameters/idOrUUID'
2505 description: successful operation
2509 $ref: '#/components/schemas/LiveVideoResponse'
2511 summary: Update information about a live
2512 operationId: updateLiveId
2519 - $ref: '#/components/parameters/idOrUUID'
2524 $ref: '#/components/schemas/LiveVideoUpdate'
2527 description: successful operation
2529 description: bad parameters or trying to update a live that has already started
2531 description: trying to save replay of the live but saving replay is not enabled on the instance
2532 /videos/live/{id}/sessions:
2534 summary: List live sessions
2535 description: List all sessions created in a particular live
2541 - $ref: '#/components/parameters/idOrUUID'
2544 description: successful operation
2556 $ref: '#/components/schemas/LiveVideoSessionResponse'
2557 /videos/{id}/live-session:
2559 summary: Get live session of a replay
2560 description: If the video is a replay of a live, you can find the associated live session using this endpoint
2566 - $ref: '#/components/parameters/idOrUUID'
2569 description: successful operation
2573 $ref: '#/components/schemas/LiveVideoSessionResponse'
2577 summary: List my abuses
2578 operationId: getMyAbuses
2587 description: only list the report with this id
2593 $ref: '#/components/schemas/AbuseStateSet'
2594 - $ref: '#/components/parameters/abusesSort'
2595 - $ref: '#/components/parameters/start'
2596 - $ref: '#/components/parameters/count'
2599 description: successful operation
2611 $ref: '#/components/schemas/Abuse'
2615 summary: List abuses
2616 operationId: getAbuses
2626 description: only list the report with this id
2629 - name: predefinedReason
2631 description: predefined reason the listed reports should contain
2633 $ref: '#/components/schemas/PredefinedAbuseReasons'
2636 description: plain search that will match with video titles, reporter names and more
2642 $ref: '#/components/schemas/AbuseStateSet'
2643 - name: searchReporter
2645 description: only list reports of a specific reporter
2648 - name: searchReportee
2649 description: only list reports of a specific reportee
2655 description: only list reports of a specific video
2658 - name: searchVideoChannel
2660 description: only list reports of a specific video channel
2665 description: only list deleted or blocklisted videos
2673 description: only list account, comment or video reports
2680 - $ref: '#/components/parameters/start'
2681 - $ref: '#/components/parameters/count'
2682 - $ref: '#/components/parameters/abusesSort'
2685 description: successful operation
2697 $ref: '#/components/schemas/Abuse'
2699 summary: Report an abuse
2712 description: Reason why the user reports this video
2717 $ref: '#/components/schemas/PredefinedAbuseReasons'
2722 description: Video id to report
2724 - $ref: '#/components/schemas/Video/properties/id'
2728 description: Timestamp in the video that marks the beginning of the report
2733 description: Timestamp in the video that marks the ending of the report
2739 description: Comment id to report
2741 - $ref: '#/components/schemas/VideoComment/properties/id'
2746 description: Account id to report
2752 description: successful operation
2762 $ref: '#/components/schemas/id'
2764 description: incorrect request parameters
2766 '/abuses/{abuseId}':
2768 summary: Update an abuse
2776 - $ref: '#/components/parameters/abuseId'
2784 $ref: '#/components/schemas/AbuseStateSet'
2787 description: Update the report comment visible only to the moderation team
2792 description: successful operation
2794 description: abuse not found
2798 summary: Delete an abuse
2804 - $ref: '#/components/parameters/abuseId'
2807 description: successful operation
2809 description: block not found
2811 '/abuses/{abuseId}/messages':
2813 summary: List messages of an abuse
2819 - $ref: '#/components/parameters/abuseId'
2822 description: successful operation
2834 $ref: '#/components/schemas/AbuseMessage'
2836 summary: Add message to an abuse
2842 - $ref: '#/components/parameters/abuseId'
2851 description: Message to send
2859 description: successful operation
2861 description: incorrect request parameters
2863 '/abuses/{abuseId}/messages/{abuseMessageId}':
2865 summary: Delete an abuse message
2871 - $ref: '#/components/parameters/abuseId'
2872 - $ref: '#/components/parameters/abuseMessageId'
2875 description: successful operation
2877 '/videos/{id}/blacklist':
2879 summary: Block a video
2880 operationId: addVideoBlock
2888 - $ref: '#/components/parameters/idOrUUID'
2891 description: successful operation
2893 summary: Unblock a video by its id
2894 operationId: delVideoBlock
2902 - $ref: '#/components/parameters/idOrUUID'
2905 description: successful operation
2907 description: block not found
2913 summary: List video blocks
2914 operationId: getVideoBlocks
2923 list only blocks that match this type:
2927 - `2`: automatic block that needs review
2935 description: plain search that will match with video titles, and more
2938 - $ref: '#/components/parameters/start'
2939 - $ref: '#/components/parameters/count'
2940 - $ref: '#/components/parameters/blacklistsSort'
2943 description: successful operation
2955 $ref: '#/components/schemas/VideoBlacklist'
2957 /videos/{id}/captions:
2959 summary: List captions of a video
2960 operationId: getVideoCaptions
2964 - $ref: '#/components/parameters/idOrUUID'
2967 description: successful operation
2979 $ref: '#/components/schemas/VideoCaption'
2981 /videos/{id}/captions/{captionLanguage}:
2983 summary: Add or replace a video caption
2984 operationId: addVideoCaption
2991 - $ref: '#/components/parameters/idOrUUID'
2992 - $ref: '#/components/parameters/captionLanguage'
2995 multipart/form-data:
3000 description: The file to upload.
3005 contentType: text/vtt, application/x-subrip, text/plain
3008 description: successful operation
3010 description: video or language not found
3012 summary: Delete a video caption
3013 operationId: delVideoCaption
3020 - $ref: '#/components/parameters/idOrUUID'
3021 - $ref: '#/components/parameters/captionLanguage'
3024 description: successful operation
3026 description: video or language or caption for that language not found
3030 summary: List video channels
3031 operationId: getVideoChannels
3035 - $ref: '#/components/parameters/start'
3036 - $ref: '#/components/parameters/count'
3037 - $ref: '#/components/parameters/sort'
3040 description: successful operation
3044 $ref: '#/components/schemas/VideoChannelList'
3046 summary: Create a video channel
3047 operationId: addVideoChannel
3054 description: successful operation
3064 $ref: '#/components/schemas/id'
3069 $ref: '#/components/schemas/VideoChannelCreate'
3071 '/video-channels/{channelHandle}':
3073 summary: Get a video channel
3074 operationId: getVideoChannel
3078 - $ref: '#/components/parameters/channelHandle'
3081 description: successful operation
3085 $ref: '#/components/schemas/VideoChannel'
3087 summary: Update a video channel
3088 operationId: putVideoChannel
3094 - $ref: '#/components/parameters/channelHandle'
3097 description: successful operation
3102 $ref: '#/components/schemas/VideoChannelUpdate'
3104 summary: Delete a video channel
3105 operationId: delVideoChannel
3111 - $ref: '#/components/parameters/channelHandle'
3114 description: successful operation
3116 '/video-channels/{channelHandle}/videos':
3118 summary: List videos of a video channel
3119 operationId: getVideoChannelVideos
3124 - $ref: '#/components/parameters/channelHandle'
3125 - $ref: '#/components/parameters/categoryOneOf'
3126 - $ref: '#/components/parameters/isLive'
3127 - $ref: '#/components/parameters/tagsOneOf'
3128 - $ref: '#/components/parameters/tagsAllOf'
3129 - $ref: '#/components/parameters/licenceOneOf'
3130 - $ref: '#/components/parameters/languageOneOf'
3131 - $ref: '#/components/parameters/nsfw'
3132 - $ref: '#/components/parameters/isLocal'
3133 - $ref: '#/components/parameters/include'
3134 - $ref: '#/components/parameters/privacyOneOf'
3135 - $ref: '#/components/parameters/hasHLSFiles'
3136 - $ref: '#/components/parameters/hasWebtorrentFiles'
3137 - $ref: '#/components/parameters/skipCount'
3138 - $ref: '#/components/parameters/start'
3139 - $ref: '#/components/parameters/count'
3140 - $ref: '#/components/parameters/videosSort'
3143 description: successful operation
3147 $ref: '#/components/schemas/VideoListResponse'
3149 '/video-channels/{channelHandle}/followers':
3153 summary: 'List followers of a video channel'
3156 operationId: getVideoChannelFollowers
3158 - $ref: '#/components/parameters/channelHandle'
3159 - $ref: '#/components/parameters/start'
3160 - $ref: '#/components/parameters/count'
3161 - $ref: '#/components/parameters/followersSort'
3162 - $ref: '#/components/parameters/search'
3165 description: successful operation
3177 $ref: '#/components/schemas/Follow'
3179 '/video-channels/{channelHandle}/avatar/pick':
3181 summary: Update channel avatar
3187 - $ref: '#/components/parameters/channelHandle'
3190 description: successful operation
3199 $ref: '#/components/schemas/ActorImage'
3201 description: image file too large
3203 X-File-Maximum-Size:
3207 description: Maximum file size for the avatar
3210 multipart/form-data:
3215 description: The file to upload.
3220 contentType: image/png, image/jpeg
3222 '/video-channels/{channelHandle}/avatar':
3224 summary: Delete channel avatar
3230 - $ref: '#/components/parameters/channelHandle'
3233 description: successful operation
3235 '/video-channels/{channelHandle}/banner/pick':
3237 summary: Update channel banner
3243 - $ref: '#/components/parameters/channelHandle'
3246 description: successful operation
3255 $ref: '#/components/schemas/ActorImage'
3257 description: image file too large
3259 X-File-Maximum-Size:
3263 description: Maximum file size for the banner
3266 multipart/form-data:
3271 description: The file to upload.
3276 contentType: image/png, image/jpeg
3278 '/video-channels/{channelHandle}/banner':
3280 summary: Delete channel banner
3286 - $ref: '#/components/parameters/channelHandle'
3289 description: successful operation
3291 /video-playlists/privacies:
3293 summary: List available playlist privacy policies
3294 operationId: getPlaylistPrivacyPolicies
3299 description: successful operation
3308 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
3312 summary: List video playlists
3313 operationId: getPlaylists
3317 - $ref: '#/components/parameters/start'
3318 - $ref: '#/components/parameters/count'
3319 - $ref: '#/components/parameters/sort'
3322 description: successful operation
3334 $ref: '#/components/schemas/VideoPlaylist'
3336 summary: Create a video playlist
3337 description: If the video playlist is set as public, `videoChannelId` is mandatory.
3338 operationId: addPlaylist
3345 description: successful operation
3355 $ref: '#/components/schemas/VideoPlaylist/properties/id'
3357 $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
3359 $ref: '#/components/schemas/VideoPlaylist/properties/shortUUID'
3362 multipart/form-data:
3367 description: Video playlist display name
3372 description: Video playlist thumbnail file
3376 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3378 description: Video playlist description
3384 - $ref: '#/components/schemas/id'
3385 description: Video channel in which the playlist will be published
3390 contentType: image/jpeg
3392 /video-playlists/{playlistId}:
3394 summary: Get a video playlist
3398 - $ref: '#/components/parameters/playlistId'
3401 description: successful operation
3405 $ref: '#/components/schemas/VideoPlaylist'
3407 summary: Update a video playlist
3408 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
3415 description: successful operation
3417 - $ref: '#/components/parameters/playlistId'
3420 multipart/form-data:
3425 description: Video playlist display name
3430 description: Video playlist thumbnail file
3434 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3436 description: Video playlist description
3440 - $ref: '#/components/schemas/id'
3441 description: Video channel in which the playlist will be published
3444 contentType: image/jpeg
3446 summary: Delete a video playlist
3452 - $ref: '#/components/parameters/playlistId'
3455 description: successful operation
3457 /video-playlists/{playlistId}/videos:
3459 summary: 'List videos of a playlist'
3460 operationId: getVideoPlaylistVideos
3465 - $ref: '#/components/parameters/playlistId'
3466 - $ref: '#/components/parameters/start'
3467 - $ref: '#/components/parameters/count'
3470 description: successful operation
3474 $ref: '#/components/schemas/VideoListResponse'
3476 summary: Add a video in a playlist
3477 operationId: addVideoPlaylistVideo
3484 - $ref: '#/components/parameters/playlistId'
3487 description: successful operation
3493 videoPlaylistElement:
3507 - $ref: '#/components/schemas/Video/properties/uuid'
3508 - $ref: '#/components/schemas/Video/properties/id'
3509 description: Video to add in the playlist
3513 description: Start the video at this specific timestamp
3517 description: Stop the video at this specific timestamp
3521 /video-playlists/{playlistId}/videos/reorder:
3523 summary: 'Reorder a playlist'
3524 operationId: reorderVideoPlaylist
3530 - $ref: '#/components/parameters/playlistId'
3533 description: successful operation
3542 description: 'Start position of the element to reorder'
3544 insertAfterPosition:
3546 description: 'New position for the block to reorder, to add the block before the first element'
3550 description: 'How many element from `startPosition` to reorder'
3554 - insertAfterPosition
3556 /video-playlists/{playlistId}/videos/{playlistElementId}:
3558 summary: Update a playlist element
3559 operationId: putVideoPlaylistVideo
3565 - $ref: '#/components/parameters/playlistId'
3566 - $ref: '#/components/parameters/playlistElementId'
3569 description: successful operation
3579 description: Start the video at this specific timestamp
3583 description: Stop the video at this specific timestamp
3585 summary: Delete an element from a playlist
3586 operationId: delVideoPlaylistVideo
3592 - $ref: '#/components/parameters/playlistId'
3593 - $ref: '#/components/parameters/playlistElementId'
3596 description: successful operation
3598 '/users/me/video-playlists/videos-exist':
3600 summary: Check video exists in my playlists
3609 description: The video ids to check
3613 $ref: '#/components/schemas/Video/properties/id'
3616 description: successful operation
3638 '/accounts/{name}/video-channels':
3640 summary: List video channels of an account
3645 - $ref: '#/components/parameters/name'
3648 description: include daily view statistics for the last 30 days and total views (only if authentified as the account user)
3651 - $ref: '#/components/parameters/start'
3652 - $ref: '#/components/parameters/count'
3653 - $ref: '#/components/parameters/sort'
3656 description: successful operation
3660 $ref: '#/components/schemas/VideoChannelList'
3662 '/accounts/{name}/ratings':
3664 summary: List ratings of an account
3670 - $ref: '#/components/parameters/name'
3671 - $ref: '#/components/parameters/start'
3672 - $ref: '#/components/parameters/count'
3673 - $ref: '#/components/parameters/sort'
3677 description: Optionally filter which ratings to retrieve
3685 description: successful operation
3691 $ref: '#/components/schemas/VideoRating'
3693 '/videos/{id}/comment-threads':
3695 summary: List threads of a video
3699 - $ref: '#/components/parameters/idOrUUID'
3700 - $ref: '#/components/parameters/start'
3701 - $ref: '#/components/parameters/count'
3702 - $ref: '#/components/parameters/commentsSort'
3705 description: successful operation
3709 $ref: '#/components/schemas/CommentThreadResponse'
3711 summary: Create a thread
3717 - $ref: '#/components/parameters/idOrUUID'
3720 description: successful operation
3724 $ref: '#/components/schemas/CommentThreadPostResponse'
3726 description: video does not exist
3735 - $ref: '#/components/schemas/VideoComment/properties/text'
3741 '/videos/{id}/comment-threads/{threadId}':
3743 summary: Get a thread
3747 - $ref: '#/components/parameters/idOrUUID'
3748 - $ref: '#/components/parameters/threadId'
3751 description: successful operation
3755 $ref: '#/components/schemas/VideoCommentThreadTree'
3757 '/videos/{id}/comments/{commentId}':
3759 summary: Reply to a thread of a video
3765 - $ref: '#/components/parameters/idOrUUID'
3766 - $ref: '#/components/parameters/commentId'
3769 description: successful operation
3773 $ref: '#/components/schemas/CommentThreadPostResponse'
3775 description: thread or video does not exist
3784 - $ref: '#/components/schemas/VideoComment/properties/text'
3790 summary: Delete a comment or a reply
3796 - $ref: '#/components/parameters/idOrUUID'
3797 - $ref: '#/components/parameters/commentId'
3800 description: successful operation
3802 description: cannot remove comment of another user
3804 description: comment or video does not exist
3806 description: comment is already deleted
3808 '/videos/{id}/rate':
3810 summary: Like/dislike a video
3816 - $ref: '#/components/parameters/idOrUUID'
3832 description: successful operation
3834 description: video does not exist
3838 summary: Delete video HLS files
3844 operationId: delVideoHLS
3846 - $ref: '#/components/parameters/idOrUUID'
3849 description: successful operation
3851 description: video does not exist
3852 '/videos/{id}/webtorrent':
3854 summary: Delete video WebTorrent files
3860 operationId: delVideoWebTorrent
3862 - $ref: '#/components/parameters/idOrUUID'
3865 description: successful operation
3867 description: video does not exist
3869 '/videos/{id}/transcoding':
3871 summary: Create a transcoding job
3877 operationId: createVideoTranscoding
3879 - $ref: '#/components/parameters/idOrUUID'
3895 description: successful operation
3897 description: video does not exist
3903 summary: Search videos
3904 operationId: searchVideos
3909 allowEmptyValue: false
3911 String to search. If the user can make a remote URI search, and the string is an URI then the
3912 PeerTube instance will fetch the remote object and add it to its database. Then,
3913 you can use the REST API to fetch the complete video information and interact with it.
3916 - $ref: '#/components/parameters/categoryOneOf'
3917 - $ref: '#/components/parameters/isLive'
3918 - $ref: '#/components/parameters/tagsOneOf'
3919 - $ref: '#/components/parameters/tagsAllOf'
3920 - $ref: '#/components/parameters/licenceOneOf'
3921 - $ref: '#/components/parameters/languageOneOf'
3922 - $ref: '#/components/parameters/nsfw'
3923 - $ref: '#/components/parameters/isLocal'
3924 - $ref: '#/components/parameters/include'
3925 - $ref: '#/components/parameters/privacyOneOf'
3926 - $ref: '#/components/parameters/hasHLSFiles'
3927 - $ref: '#/components/parameters/hasWebtorrentFiles'
3928 - $ref: '#/components/parameters/skipCount'
3929 - $ref: '#/components/parameters/start'
3930 - $ref: '#/components/parameters/count'
3931 - $ref: '#/components/parameters/searchTarget'
3932 - $ref: '#/components/parameters/videosSearchSort'
3935 description: Get videos that are published after this date
3941 description: Get videos that are published before this date
3945 - name: originallyPublishedStartDate
3947 description: Get videos that are originally published after this date
3951 - name: originallyPublishedEndDate
3953 description: Get videos that are originally published before this date
3959 description: Get videos that have this minimum duration
3964 description: Get videos that have this maximum duration
3968 'searchTarget === search-index':
3969 $ref: '#/components/callbacks/searchIndex'
3972 description: successful operation
3976 $ref: '#/components/schemas/VideoListResponse'
3978 description: search index unavailable
3980 /search/video-channels:
3984 summary: Search channels
3985 operationId: searchChannels
3991 String to search. If the user can make a remote URI search, and the string is an URI then the
3992 PeerTube instance will fetch the remote object and add it to its database. Then,
3993 you can use the REST API to fetch the complete channel information and interact with it.
3996 - $ref: '#/components/parameters/start'
3997 - $ref: '#/components/parameters/count'
3998 - $ref: '#/components/parameters/searchTarget'
3999 - $ref: '#/components/parameters/sort'
4001 'searchTarget === search-index':
4002 $ref: '#/components/callbacks/searchIndex'
4005 description: successful operation
4009 $ref: '#/components/schemas/VideoChannelList'
4011 description: search index unavailable
4013 /search/video-playlists:
4017 summary: Search playlists
4018 operationId: searchPlaylists
4024 String to search. If the user can make a remote URI search, and the string is an URI then the
4025 PeerTube instance will fetch the remote object and add it to its database. Then,
4026 you can use the REST API to fetch the complete playlist information and interact with it.
4029 - $ref: '#/components/parameters/start'
4030 - $ref: '#/components/parameters/count'
4031 - $ref: '#/components/parameters/searchTarget'
4032 - $ref: '#/components/parameters/sort'
4034 'searchTarget === search-index':
4035 $ref: '#/components/callbacks/searchIndex'
4038 description: successful operation
4050 $ref: '#/components/schemas/VideoPlaylist'
4052 description: search index unavailable
4059 summary: Get block status of accounts/hosts
4064 description: 'Check if these accounts are blocked'
4065 example: [ 'goofy@example.com', 'donald@example.com' ]
4073 description: 'Check if these hosts are blocked'
4074 example: [ 'example.com' ]
4081 description: successful operation
4085 $ref: '#/components/schemas/BlockStatus'
4087 /server/blocklist/accounts:
4091 summary: List account blocks
4096 - $ref: '#/components/parameters/start'
4097 - $ref: '#/components/parameters/count'
4098 - $ref: '#/components/parameters/sort'
4101 description: successful operation
4105 summary: Block an account
4117 example: chocobozzz@example.org
4118 description: account to block, in the form `username@domain`
4123 description: successful operation
4125 description: self-blocking forbidden
4127 '/server/blocklist/accounts/{accountName}':
4131 summary: Unblock an account by its handle
4139 description: account to unblock, in the form `username@domain`
4144 description: successful operation
4146 description: account or account block does not exist
4148 /server/blocklist/servers:
4152 summary: List server blocks
4157 - $ref: '#/components/parameters/start'
4158 - $ref: '#/components/parameters/count'
4159 - $ref: '#/components/parameters/sort'
4162 description: successful operation
4166 summary: Block a server
4179 description: server domain to block
4184 description: successful operation
4186 description: self-blocking forbidden
4188 '/server/blocklist/servers/{host}':
4192 summary: Unblock a server by its domain
4200 description: server domain to unblock
4206 description: successful operation
4208 description: account block does not exist
4210 /server/redundancy/{host}:
4213 - Instance Redundancy
4214 summary: Update a server redundancy policy
4222 description: server domain to mirror
4234 description: allow mirroring of the host's local videos
4239 description: successful operation
4241 description: server is not already known
4243 /server/redundancy/videos:
4247 summary: List videos being mirrored
4248 operationId: getMirroredVideos
4256 description: direction of the mirror
4262 - $ref: '#/components/parameters/start'
4263 - $ref: '#/components/parameters/count'
4264 - $ref: '#/components/parameters/videoRedundanciesSort'
4267 description: successful operation
4273 $ref: '#/components/schemas/VideoRedundancy'
4277 summary: Mirror a video
4278 operationId: putMirroredVideo
4289 $ref: '#/components/schemas/Video/properties/id'
4294 description: successful operation
4296 description: cannot mirror a local video
4298 description: video does not exist
4300 description: video is already mirrored
4302 /server/redundancy/videos/{redundancyId}:
4306 summary: Delete a mirror done on a video
4307 operationId: delMirroredVideo
4312 - name: redundancyId
4315 description: id of an existing redundancy on a video
4320 description: successful operation
4322 description: video redundancy not found
4328 summary: Get instance stats
4329 description: Get instance public statistics. This endpoint is cached.
4330 operationId: getInstanceStats
4333 description: successful operation
4337 $ref: '#/components/schemas/ServerStats'
4339 /server/logs/client:
4343 summary: Send client log
4344 operationId: sendClientLog
4349 $ref: '#/components/schemas/SendClientLog'
4352 description: successful operation
4358 summary: Get instance logs
4359 operationId: getInstanceLogs
4365 description: successful operation
4377 summary: Get instance audit logs
4378 operationId: getInstanceAuditLogs
4384 description: successful operation
4392 '/feeds/video-comments.{format}':
4396 summary: List comments on videos
4397 operationId: getSyndicatedComments
4402 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4415 description: 'limit listing to a specific video'
4420 description: 'limit listing to a specific account'
4425 description: 'limit listing to a specific account'
4428 - name: videoChannelId
4430 description: 'limit listing to a specific video channel'
4433 - name: videoChannelName
4435 description: 'limit listing to a specific video channel'
4440 description: successful operation
4445 default: 'max-age=900' # 15 min cache
4449 $ref: '#/components/schemas/VideoCommentsForXML'
4452 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4453 application/rss+xml:
4455 $ref: '#/components/schemas/VideoCommentsForXML'
4458 externalValue: https://peertube2.cpy.re/feeds/video-comments.rss?filter=local
4461 $ref: '#/components/schemas/VideoCommentsForXML'
4464 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4465 application/atom+xml:
4467 $ref: '#/components/schemas/VideoCommentsForXML'
4470 externalValue: https://peertube2.cpy.re/feeds/video-comments.atom?filter=local
4476 externalValue: https://peertube2.cpy.re/feeds/video-comments.json?filter=local
4478 x-summary: field inconsistencies
4481 - videoId filter is mixed with a channel filter
4483 description: video, video channel or account not found
4485 description: accept header unsupported
4487 '/feeds/videos.{format}':
4491 summary: List videos
4492 operationId: getSyndicatedVideos
4497 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4510 description: 'limit listing to a specific account'
4515 description: 'limit listing to a specific account'
4518 - name: videoChannelId
4520 description: 'limit listing to a specific video channel'
4523 - name: videoChannelName
4525 description: 'limit listing to a specific video channel'
4528 - $ref: '#/components/parameters/sort'
4529 - $ref: '#/components/parameters/nsfw'
4530 - $ref: '#/components/parameters/isLocal'
4531 - $ref: '#/components/parameters/include'
4532 - $ref: '#/components/parameters/privacyOneOf'
4533 - $ref: '#/components/parameters/hasHLSFiles'
4534 - $ref: '#/components/parameters/hasWebtorrentFiles'
4537 description: successful operation
4542 default: 'max-age=900' # 15 min cache
4546 $ref: '#/components/schemas/VideosForXML'
4549 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4550 application/rss+xml:
4552 $ref: '#/components/schemas/VideosForXML'
4555 externalValue: https://peertube2.cpy.re/feeds/videos.rss?filter=local
4558 $ref: '#/components/schemas/VideosForXML'
4561 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4562 application/atom+xml:
4564 $ref: '#/components/schemas/VideosForXML'
4567 externalValue: https://peertube2.cpy.re/feeds/videos.atom?filter=local
4573 externalValue: https://peertube2.cpy.re/feeds/videos.json?filter=local
4575 description: video channel or account not found
4577 description: accept header unsupported
4579 '/feeds/subscriptions.{format}':
4584 summary: List videos of subscriptions tied to a token
4585 operationId: getSyndicatedSubscriptionVideos
4590 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4603 description: limit listing to a specific account
4609 description: private token allowing access
4613 - $ref: '#/components/parameters/sort'
4614 - $ref: '#/components/parameters/nsfw'
4615 - $ref: '#/components/parameters/isLocal'
4616 - $ref: '#/components/parameters/include'
4617 - $ref: '#/components/parameters/privacyOneOf'
4618 - $ref: '#/components/parameters/hasHLSFiles'
4619 - $ref: '#/components/parameters/hasWebtorrentFiles'
4622 description: successful operation
4627 default: 'max-age=900' # 15 min cache
4631 $ref: '#/components/schemas/VideosForXML'
4632 application/rss+xml:
4634 $ref: '#/components/schemas/VideosForXML'
4637 $ref: '#/components/schemas/VideosForXML'
4638 application/atom+xml:
4640 $ref: '#/components/schemas/VideosForXML'
4645 description: accept header unsupported
4651 summary: List plugins
4652 operationId: getPlugins
4665 - $ref: '#/components/parameters/start'
4666 - $ref: '#/components/parameters/count'
4667 - $ref: '#/components/parameters/sort'
4670 description: successful operation
4674 $ref: '#/components/schemas/PluginResponse'
4680 summary: List available plugins
4681 operationId: getAvailablePlugins
4694 - name: currentPeerTubeEngine
4698 - $ref: '#/components/parameters/start'
4699 - $ref: '#/components/parameters/count'
4700 - $ref: '#/components/parameters/sort'
4703 description: successful operation
4707 $ref: '#/components/schemas/PluginResponse'
4709 description: plugin index unavailable
4715 summary: Install a plugin
4716 operationId: addPlugin
4729 example: peertube-plugin-auth-ldap
4732 additionalProperties: false
4739 additionalProperties: false
4742 description: successful operation
4744 description: should have either `npmName` or `path` set
4750 summary: Update a plugin
4751 operationId: updatePlugin
4764 example: peertube-plugin-auth-ldap
4767 additionalProperties: false
4774 additionalProperties: false
4777 description: successful operation
4779 description: should have either `npmName` or `path` set
4781 description: existing plugin not found
4787 summary: Uninstall a plugin
4788 operationId: uninstallPlugin
4800 description: name of the plugin/theme in its package.json
4801 example: peertube-plugin-auth-ldap
4806 description: successful operation
4808 description: existing plugin not found
4814 summary: Get a plugin
4815 operationId: getPlugin
4820 - $ref: '#/components/parameters/npmName'
4823 description: successful operation
4827 $ref: '#/components/schemas/Plugin'
4829 description: plugin not found
4831 /plugins/{npmName}/settings:
4835 summary: Set a plugin's settings
4840 - $ref: '#/components/parameters/npmName'
4849 additionalProperties: true
4852 description: successful operation
4854 description: plugin not found
4856 /plugins/{npmName}/public-settings:
4860 summary: Get a plugin's public settings
4862 - $ref: '#/components/parameters/npmName'
4865 description: successful operation
4870 additionalProperties: true
4872 description: plugin not found
4874 /plugins/{npmName}/registered-settings:
4878 summary: Get a plugin's registered settings
4883 - $ref: '#/components/parameters/npmName'
4886 description: successful operation
4891 additionalProperties: true
4893 description: plugin not found
4896 - url: 'https://peertube2.cpy.re/api/v1'
4897 description: Live Test Server (live data - latest nightly version)
4898 - url: 'https://peertube3.cpy.re/api/v1'
4899 description: Live Test Server (live data - latest RC version)
4900 - url: 'https://peertube.cpy.re/api/v1'
4901 description: Live Test Server (live data - stable version)
4908 description: Offset used to paginate results
4916 description: "Number of items to return"
4926 description: Sort column
4934 description: Plain text search, applied to various parts of the model depending on endpoint
4942 If the administrator enabled search index support, you can override the default search target.
4945 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
4946 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
4947 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
4948 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
4949 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
4950 * 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
4951 the data from the origin instance API
4974 Sort videos by criteria (prefixing with `-` means `DESC` order):
4975 * `hot` - Adaptation of Reddit "hot" algorithm taking into account video views, likes, dislikes and comments and publication date
4976 * `best` - Same than `hot`, but also takes into account user video history
4977 * `trending` - Sort videos by recent views ("recent" is defined by the admin)
4978 * `views` - Sort videos using their `views` counter
4979 * `publishedAt` - Sort by video publication date (when it became publicly available)
4985 Sort videos by criteria (prefixing with `-` means `DESC` order):
5000 description: Sort comments by criteria
5010 description: Sort blocklists by criteria
5026 description: Plain text search that will match with user usernames or emails
5033 description: Filter results down to (un)banned users
5040 description: Sort users by criteria
5051 description: Sort abuses by criteria
5058 videoRedundanciesSort:
5062 description: Sort abuses by criteria
5071 description: Sort followers by criteria
5080 description: The username or handle of the account
5083 example: chocobozzz | chocobozzz@example.org
5088 description: Entity id
5090 $ref: '#/components/schemas/id'
5095 description: The object id, uuid or short uuid
5098 - $ref: '#/components/schemas/id'
5099 - $ref: '#/components/schemas/UUIDv4'
5100 - $ref: '#/components/schemas/shortUUID'
5105 description: Playlist id
5107 $ref: '#/components/schemas/VideoPlaylist/properties/id'
5109 name: playlistElementId
5112 description: Playlist element id
5114 $ref: '#/components/schemas/id'
5119 description: Abuse id
5121 $ref: '#/components/schemas/Abuse/properties/id'
5123 name: abuseMessageId
5126 description: Abuse message id
5128 $ref: '#/components/schemas/AbuseMessage/properties/id'
5130 name: captionLanguage
5133 description: The caption language
5135 $ref: '#/components/schemas/VideoLanguageSet'
5140 description: The video channel handle
5143 example: my_username | my_username@example.com
5145 name: subscriptionHandle
5148 description: The subscription handle
5151 example: my_username | my_username@example.com
5156 description: The thread id (root comment id)
5163 description: The comment id
5165 $ref: '#/components/schemas/VideoComment/properties/id'
5170 description: whether or not the video is a live
5177 description: category id of the video (see [/videos/categories](#operation/getCategories))
5180 - $ref: '#/components/schemas/VideoCategorySet'
5183 $ref: '#/components/schemas/VideoCategorySet'
5190 description: tag(s) of the video
5204 description: tag(s) of the video, where all should be present in the video
5217 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
5220 - $ref: '#/components/schemas/VideoLanguageSet'
5223 $ref: '#/components/schemas/VideoLanguageSet'
5230 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5233 - $ref: '#/components/schemas/VideoLicenceSet'
5236 $ref: '#/components/schemas/VideoLicenceSet'
5243 description: if you don't need the `total` in the response
5254 description: whether to include nsfw videos, if any
5266 description: '**PeerTube >= 4.0** Display only local or remote videos'
5273 description: '**PeerTube >= 4.0** Display only videos that have HLS files'
5275 name: hasWebtorrentFiles
5280 description: '**PeerTube >= 4.0** Display only videos that have WebTorrent files'
5286 $ref: '#/components/schemas/VideoPrivacySet'
5287 description: '**PeerTube >= 4.0** Display only videos in this specific privacy/privacies'
5301 **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator)
5305 - `1` NOT_PUBLISHED_STATE
5316 description: list of uris to check if each is part of the user subscriptions
5326 description: name of the plugin/theme on npmjs.com or in its package.json
5329 example: peertube-plugin-auth-ldap
5334 description: job type
5338 - activitypub-follow
5339 - activitypub-http-broadcast
5340 - activitypub-http-fetcher
5341 - activitypub-http-unicast
5346 - videos-views-stats
5347 - activitypub-refresher
5372 Authenticating via OAuth requires the following steps:
5373 - Have an activated account
5374 - [Generate] an access token for that account at `/api/v1/users/token`.
5375 - Make requests with the *Authorization: Bearer <token\>* header
5376 - Profit, depending on the role assigned to the account
5378 Note that the __access token is valid for 1 day__ and is given
5379 along with a __refresh token valid for 2 weeks__.
5381 [Generate]: https://docs.joinpeertube.org/api-rest-getting-started
5385 tokenUrl: /api/v1/users/token
5388 moderator: Moderator scope
5391 # Reusable core properties
5399 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
5400 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
5405 description: translation of a uuid v4 with a bigger alphabet to have a shorter uuid
5406 example: 2y84q2MQUMWPbiEcxNXMgC
5409 description: immutable name of the user, used to find or mention its actor
5411 pattern: '/^[a-z0-9._]+$/'
5416 description: immutable name of the channel, used to interact with its actor
5417 example: framasoft_videos
5418 pattern: '/^[a-zA-Z0-9\\-_.:]+$/'
5429 description: category id of the video (see [/videos/categories](#operation/getCategories))
5431 VideoConstantNumber-Category:
5434 $ref: '#/components/schemas/VideoCategorySet'
5437 example: Science & Technology
5441 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5443 VideoConstantNumber-Licence:
5446 $ref: '#/components/schemas/VideoLicenceSet'
5449 example: Attribution - Share Alike
5453 description: language id of the video (see [/videos/languages](#operation/getLanguages))
5455 VideoConstantString-Language:
5458 $ref: '#/components/schemas/VideoLanguageSet'
5463 VideoPlaylistPrivacySet:
5469 description: Video playlist privacy policy (see [/video-playlists/privacies])
5470 VideoPlaylistPrivacyConstant:
5473 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
5477 VideoPlaylistTypeSet:
5482 description: The video playlist type (Regular = `1`, Watch Later = `2`)
5483 VideoPlaylistTypeConstant:
5486 $ref: '#/components/schemas/VideoPlaylistTypeSet'
5497 description: privacy id of the video (see [/videos/privacies](#operation/getPrivacyPolicies))
5498 VideoPrivacyConstant:
5501 $ref: '#/components/schemas/VideoPrivacySet'
5509 additionalProperties:
5510 x-additionalPropertiesName: account
5519 additionalProperties:
5520 x-additionalPropertiesName: host
5541 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
5548 description: 'Admin flags for the user (None = `0`, Bypass video blocklist = `1`)'
5551 LiveVideoLatencyMode:
5557 description: 'The live latency mode (Default = `1`, High latency = `2`, Small Latency = `3`)'
5578 - `4`: Waiting for live stream
5580 - `6`: To move to an external storage (object storage...)
5581 - `7`: Transcoding failed
5582 - `8`: Moving to an external storage failed
5583 - `9`: To edit using studio edition feature
5593 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
5597 $ref: '#/components/schemas/AbuseStateSet'
5600 AbusePredefinedReasons:
5613 example: [spamOrMisleading]
5618 Video resolution (`0`, `240`, `360`, `720`, `1080`, `1440` or `2160`)
5620 `0` is used as a special value for stillimage videos dedicated to audio, a.k.a. audio-only videos.
5622 VideoResolutionConstant:
5623 description: resolutions and their labels for the video
5626 $ref: '#/components/schemas/VideoResolutionSet'
5630 VideoScheduledUpdate:
5633 $ref: '#/components/schemas/VideoPrivacySet'
5637 description: When to update the video
5657 $ref: '#/components/schemas/ActorImage'
5658 VideoChannelSummary:
5661 $ref: '#/components/schemas/id'
5675 $ref: '#/components/schemas/ActorImage'
5689 - $ref: '#/components/schemas/Video'
5694 $ref: '#/components/schemas/id'
5698 description: magnet URI allowing to resolve the video via BitTorrent without a metainfo file
5699 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
5701 $ref: '#/components/schemas/VideoResolutionConstant'
5704 description: Video file size in bytes
5707 description: Direct URL of the torrent file
5711 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
5715 description: Direct URL of the video
5719 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
5723 description: Frames per second of the video file
5727 description: URL dereferencing the output of ffprobe on the file
5728 VideoStreamingPlaylists:
5733 $ref: '#/components/schemas/id'
5741 - $ref: '#/components/schemas/VideoStreamingPlaylists-HLS'
5742 VideoStreamingPlaylists-HLS:
5753 Video files associated to this playlist.
5755 The difference with the root `files` property is that these files are fragmented, so they can be used in this streaming playlist (HLS, etc.)
5757 $ref: '#/components/schemas/VideoFile'
5769 $ref: '#/components/schemas/Video/properties/id'
5771 $ref: '#/components/schemas/Video/properties/uuid'
5773 $ref: '#/components/schemas/Video/properties/name'
5777 description: object id for the video
5779 - $ref: '#/components/schemas/id'
5781 description: universal identifier for the video, that can be used across instances
5783 - $ref: '#/components/schemas/UUIDv4'
5786 - $ref: '#/components/schemas/shortUUID'
5792 example: 2017-10-01T10:52:46.396Z
5793 description: time at which the video object was first drafted
5797 example: 2018-10-01T10:52:46.396Z
5798 description: time at which the video was marked as ready for playback (with restrictions depending on `privacy`). Usually set after a `state` evolution.
5802 example: 2021-05-04T08:01:01.502Z
5803 description: last time the video's metadata was modified
5804 originallyPublishedAt:
5807 example: 2010-10-01T10:52:46.396Z
5808 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
5811 - $ref: '#/components/schemas/VideoConstantNumber-Category'
5812 description: category in which the video is classified
5815 - $ref: '#/components/schemas/VideoConstantNumber-Licence'
5816 description: licence under which the video is distributed
5819 - $ref: '#/components/schemas/VideoConstantString-Language'
5820 description: main language used in the video
5823 - $ref: '#/components/schemas/VideoPrivacyConstant'
5824 description: privacy policy used to distribute the video
5828 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n
5829 **Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\r\n*A decentralized video hosting network, based on fr...
5833 truncated description of the video, written in Markdown.
5834 Resolve `descriptionPath` to get the full description of maximum `10000` characters.
5839 description: duration of the video in seconds
5844 description: title of the video
5845 example: What is PeerTube?
5850 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
5853 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
5856 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
5873 - $ref: '#/components/schemas/VideoStateConstant'
5874 description: represents the internal state of the video processing within the PeerTube instance
5878 - $ref: '#/components/schemas/VideoScheduledUpdate'
5886 $ref: '#/components/schemas/AccountSummary'
5888 $ref: '#/components/schemas/VideoChannelSummary'
5897 - $ref: '#/components/schemas/Video'
5902 description: If the video is a live, you have the amount of current viewers
5905 example: /api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/description
5906 description: path at which to get the full description of maximum `10000` characters
5909 description: A text tell the audience how to support the video creator
5910 example: Please support our work on https://soutenir.framasoft.org/en/ <3
5914 $ref: '#/components/schemas/VideoChannel'
5916 $ref: '#/components/schemas/Account'
5918 example: [flowers, gardening]
5936 - https://peertube2.cpy.re/tracker/announce
5937 - wss://peertube2.cpy.re/tracker/socket
5941 $ref: '#/components/schemas/VideoFile'
5943 WebTorrent/raw video files. If WebTorrent is disabled on the server:
5945 - field will be empty
5946 - video files will be found in `streamingPlaylists[].files` field
5950 $ref: '#/components/schemas/VideoStreamingPlaylists'
5952 HLS playlists/manifest files. If HLS is disabled on the server:
5954 - field will be empty
5955 - video files will be found in `files` field
5956 FileRedundancyInformation:
5959 $ref: '#/components/schemas/id'
5984 $ref: '#/components/schemas/id'
5991 $ref: '#/components/schemas/UUIDv4'
5998 $ref: '#/components/schemas/FileRedundancyInformation'
6002 $ref: '#/components/schemas/FileRedundancyInformation'
6003 VideoImportStateConstant:
6011 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
6018 additionalProperties: false
6022 $ref: '#/components/schemas/VideoImport/properties/targetUrl'
6023 required: [targetUrl]
6026 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
6027 required: [magnetUri]
6030 $ref: '#/components/schemas/VideoImport/properties/torrentfile'
6031 required: [torrentfile]
6032 - $ref: '#/components/schemas/VideoUploadRequestCommon'
6041 - $ref: '#/components/schemas/id'
6045 description: remote URL where to find the import's source video
6046 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
6050 description: magnet URI allowing to resolve the import's source video
6051 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
6056 description: Torrent file containing only the video file
6063 - $ref: '#/components/schemas/VideoImportStateConstant'
6079 - $ref: '#/components/schemas/Video'
6089 $ref: '#/components/schemas/VideoImport'
6093 $ref: '#/components/schemas/id'
6096 example: The video is a spam
6100 $ref: '#/components/schemas/AbusePredefinedReasons'
6102 $ref: '#/components/schemas/Account'
6104 $ref: '#/components/schemas/AbuseStateConstant'
6107 example: Decided to ban the server since it spams us regularly
6111 $ref: '#/components/schemas/VideoInfo'
6118 $ref: '#/components/schemas/id'
6129 $ref: '#/components/schemas/AccountSummary'
6133 $ref: '#/components/schemas/id'
6135 $ref: '#/components/schemas/Video/properties/id'
6147 $ref: '#/components/schemas/UUIDv4'
6165 $ref: '#/components/schemas/id'
6167 $ref: '#/components/schemas/UUIDv4'
6170 - $ref: '#/components/schemas/shortUUID'
6193 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
6195 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
6197 $ref: '#/components/schemas/AccountSummary'
6199 $ref: '#/components/schemas/VideoChannelSummary'
6203 $ref: '#/components/schemas/id'
6210 description: Text of the comment
6212 example: This video is wonderful!
6214 $ref: '#/components/schemas/id'
6218 - $ref: '#/components/schemas/id'
6220 $ref: '#/components/schemas/Video/properties/id'
6235 totalRepliesFromVideoAuthor:
6242 $ref: '#/components/schemas/Account'
6243 VideoCommentThreadTree:
6246 $ref: '#/components/schemas/VideoComment'
6250 $ref: '#/components/schemas/VideoCommentThreadTree'
6254 $ref: '#/components/schemas/VideoConstantString-Language'
6276 $ref: '#/components/schemas/id'
6287 $ref: '#/components/schemas/ActorImage'
6291 $ref: '#/components/schemas/id'
6296 description: immutable name of the actor, used to find or mention it
6298 - $ref: '#/components/schemas/username'
6302 description: server on which the actor is resident
6303 hostRedundancyAllowed:
6305 description: whether this actor's host allows redundancy of its videos
6309 description: number of actors subscribed to by this actor, as seen by this instance
6313 description: number of followers of this actor, as seen by this instance
6322 - $ref: '#/components/schemas/Actor'
6325 description: object id for the user tied to this account
6327 - $ref: '#/components/schemas/User/properties/id'
6330 description: editable name of the account, displayed in its representations
6335 description: text or bio displayed on the account's profile
6343 description: timestamp within the video, in seconds
6350 Event since last viewing call:
6351 * `seek` - If the user seeked the video
6374 VideoStatsRetention:
6386 VideoStatsTimeserie:
6463 allowedForCurrentIP:
6465 requiresEmailVerification:
6483 $ref: '#/components/schemas/VideoResolutionSet'
6568 example: 16810141515
6609 description: URL of the current user page
6616 description: Stack trace of the error if there is one
6619 description: User agent of the web browser that sends the message
6622 description: Additional information regarding this log
6632 totalDailyActiveUsers:
6634 totalWeeklyActiveUsers:
6636 totalMonthlyActiveUsers:
6640 totalLocalVideoViews:
6642 description: Total video views made on the instance
6643 totalLocalVideoComments:
6645 description: Total comments made by local users
6646 totalLocalVideoFilesSize:
6652 totalLocalVideoChannels:
6654 totalLocalDailyActiveVideoChannels:
6656 totalLocalWeeklyActiveVideoChannels:
6658 totalLocalMonthlyActiveVideoChannels:
6660 totalLocalPlaylists:
6662 totalInstanceFollowers:
6664 totalInstanceFollowing:
6681 totalActivityPubMessagesProcessed:
6683 totalActivityPubMessagesSuccesses:
6685 totalActivityPubMessagesErrors:
6688 activityPubMessagesProcessedPerSecond:
6690 totalActivityPubMessagesWaiting:
6767 requiresEmailVerification:
6782 description: Settings that apply to new users, if registration is enabled
6786 example: 16810141515
6792 description: Settings pertaining to transcoding jobs
6796 allowAdditionalExtensions:
6798 description: Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
6801 description: If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
6804 description: Amount of threads used by ffmpeg for 1 transcoding job
6807 description: Amount of transcoding jobs to execute in parallel
6813 New profiles can be added by plugins ; available in core PeerTube: 'default'.
6816 description: Resolutions to transcode _new videos_ to
6838 description: WebTorrent-specific settings
6844 description: HLS-specific settings
6894 $ref: '#/components/schemas/id'
6896 $ref: '#/components/schemas/Actor'
6898 $ref: '#/components/schemas/Actor'
6901 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
6914 PredefinedAbuseReasons:
6915 description: Reason categories that help triage reports
6933 $ref: '#/components/schemas/id'
6945 - activitypub-http-unicast
6946 - activitypub-http-broadcast
6947 - activitypub-http-fetcher
6948 - activitypub-follow
6953 - videos-views-stats
6954 - activitypub-refresher
6958 additionalProperties: true
6961 additionalProperties: true
6977 $ref: '#/components/schemas/id'
6982 $ref: '#/components/schemas/id'
6983 VideoUploadRequestCommon:
6986 description: Video name
6988 example: What is PeerTube?
6992 description: Channel id that will contain this video
6997 $ref: '#/components/schemas/VideoPrivacySet'
6999 $ref: '#/components/schemas/VideoCategorySet'
7001 $ref: '#/components/schemas/VideoLicenceSet'
7003 $ref: '#/components/schemas/VideoLanguageSet'
7005 description: Video description
7008 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**
7010 description: Whether or not we wait transcoding before publish the video
7013 description: A text tell the audience how to support the video creator
7014 example: Please support our work on https://soutenir.framasoft.org/en/ <3
7017 description: Whether or not this video contains sensitive content
7020 description: Video tags (maximum 5 tags each between 2 and 30 characters)
7033 description: Enable or disable comments for this video
7036 description: Enable or disable downloading for this video
7038 originallyPublishedAt:
7039 description: Date when the content was originally published
7043 $ref: '#/components/schemas/VideoScheduledUpdate'
7045 description: Video thumbnail file
7049 description: Video preview file
7055 VideoUploadRequestLegacy:
7057 - $ref: '#/components/schemas/VideoUploadRequestCommon'
7063 description: Video file
7066 VideoUploadRequestResumable:
7068 - $ref: '#/components/schemas/VideoUploadRequestCommon'
7074 description: Video filename including extension
7077 example: what_is_peertube.mp4
7079 description: Video thumbnail file
7083 description: Video preview file
7086 VideoUploadResponse:
7092 $ref: '#/components/schemas/Video/properties/id'
7094 $ref: '#/components/schemas/Video/properties/uuid'
7096 $ref: '#/components/schemas/Video/properties/shortUUID'
7097 CommentThreadResponse:
7106 $ref: '#/components/schemas/VideoComment'
7107 CommentThreadPostResponse:
7110 $ref: '#/components/schemas/VideoComment'
7120 $ref: '#/components/schemas/Video'
7124 $ref: '#/components/schemas/Account'
7127 description: Automatically start playing the upcoming video after the currently playing video
7128 autoPlayNextVideoPlaylist:
7130 description: Automatically start playing the video on the playlist after the currently playing video
7133 description: Automatically start playing the video on the watch page
7143 description: The user email
7146 description: Has the user confirmed their email address?
7149 - $ref: '#/components/schemas/id'
7153 description: Auth plugin to use to authenticate the user
7157 noInstanceConfigWarningModal:
7159 noAccountSetupWarningModal:
7164 $ref: '#/components/schemas/NSFWPolicy'
7166 $ref: '#/components/schemas/UserRole'
7175 description: Theme enabled by this user
7177 $ref: '#/components/schemas/username'
7181 $ref: '#/components/schemas/VideoChannel'
7184 description: The user video quota in bytes
7188 description: The user daily video quota in bytes
7192 description: Enable P2P in the player
7195 - $ref: '#/components/schemas/User'
7197 # optionally present fields: they require WITH_STATS scope
7200 description: Count of videos published
7203 description: Count of reports/abuses of which the user is a target
7204 abusesAcceptedCount:
7206 description: Count of reports/abuses created by the user and accepted/acted upon by the moderation team
7209 description: Count of reports/abuses created by the user
7212 description: Count of comments published
7216 $ref: '#/components/schemas/username'
7218 $ref: '#/components/schemas/password'
7222 description: The user email
7225 description: The user video quota in bytes
7229 description: The user daily video quota in bytes
7232 $ref: '#/components/schemas/usernameChannel'
7234 $ref: '#/components/schemas/UserRole'
7236 $ref: '#/components/schemas/UserAdminFlags'
7247 description: The updated email of the user
7249 - $ref: '#/components/schemas/User/properties/email'
7252 description: Set the email as verified
7255 description: The updated video quota of the user in bytes
7258 description: The updated daily video quota of the user in bytes
7262 description: The auth plugin to use to authenticate the user
7263 example: 'peertube-plugin-auth-saml2'
7265 $ref: '#/components/schemas/UserRole'
7267 $ref: '#/components/schemas/UserAdminFlags'
7269 $ref: '#/components/schemas/password'
7271 # see shared/models/users/user-update-me.model.ts:
7274 $ref: '#/components/schemas/password'
7276 $ref: '#/components/schemas/password'
7278 description: new email used for login and service communications
7280 - $ref: '#/components/schemas/User/properties/email'
7283 description: new name of the user in its representations
7288 description: new NSFW display policy
7295 description: whether to enable P2P in the player or not
7298 description: new preference regarding playing videos automatically
7301 description: new preference regarding playing following videos automatically
7302 autoPlayNextVideoPlaylist:
7304 description: new preference regarding playing following playlist videos automatically
7305 videosHistoryEnabled:
7307 description: whether to keep track of watched history or not
7312 description: list of languages to filter videos down to
7315 noInstanceConfigWarningModal:
7317 noAccountSetupWarningModal:
7324 $ref: '#/components/schemas/id'
7331 description: Rating of the video
7338 $ref: '#/components/schemas/Video'
7345 description: Rating of the video
7352 description: immutable name of the user, used to find or mention its actor
7354 - $ref: '#/components/schemas/username'
7356 $ref: '#/components/schemas/password'
7360 description: email of the user, used for login or service communications
7363 description: editable name of the user, displayed in its representations
7368 description: channel base information used to create the first channel of the user
7371 $ref: '#/components/schemas/usernameChannel'
7383 pattern: /^[a-z0-9]$/
7386 example: v1ikx5hnfop4mdpnci8nsqh93c45rldf
7389 pattern: /^[a-zA-Z0-9]$/
7392 example: AjWiOapPltI6EnsWQwlFarRtLh4u8tDt
7393 OAuthToken-password:
7395 - $ref: '#/components/schemas/OAuthClient'
7405 $ref: '#/components/schemas/User/properties/username'
7407 $ref: '#/components/schemas/password'
7414 OAuthToken-refresh_token:
7416 - $ref: '#/components/schemas/OAuthClient'
7427 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
7436 - $ref: '#/components/schemas/Actor'
7441 description: editable name of the channel, displayed in its representations
7442 example: Videos of Framasoft
7447 example: Videos made with <3 by Framasoft
7452 description: text shown by default on all videos of this channel, to tell the audience how to support it
7453 example: Please support our work on https://soutenir.framasoft.org/en/ <3
7466 $ref: '#/components/schemas/ActorImage'
7475 $ref: '#/components/schemas/UUIDv4'
7478 - $ref: '#/components/schemas/VideoChannel'
7481 description: username of the channel to create
7483 - $ref: '#/components/schemas/usernameChannel'
7489 - $ref: '#/components/schemas/VideoChannel'
7491 bulkVideosSupportUpdate:
7493 description: Update the support field for all videos of this channel
7503 - $ref: '#/components/schemas/VideoChannel'
7504 - $ref: '#/components/schemas/Actor'
7509 name: 'media:peerLink'
7518 - application/x-bittorrent
7524 name: 'media:content'
7555 VideoCommentsForXML:
7590 description: video watch page URL
7593 description: video canonical URL
7597 description: video publication date
7600 description: video description
7603 description: video description
7606 description: publisher user name
7609 description: video category (MRSS)
7612 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
7627 description: video embed path, relative to the canonical URL domain (MRSS)
7636 description: video watch path, relative to the canonical URL domain (MRSS)
7657 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
7658 'media:description':
7665 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
7668 description: main streamable file for the video
7678 - application/x-bittorrent
7687 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)
7690 - $ref: '#/components/schemas/MRSSPeerLink'
7691 - $ref: '#/components/schemas/MRSSGroupContent'
7692 NotificationSettingValue:
7709 $ref: '#/components/schemas/id'
7713 Notification type, following the `UserNotificationType` enum:
7715 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
7717 - `2` NEW_COMMENT_ON_MY_VIDEO
7719 - `3` NEW_ABUSE_FOR_MODERATORS
7721 - `4` BLACKLIST_ON_MY_VIDEO
7723 - `5` UNBLACKLIST_ON_MY_VIDEO
7725 - `6` MY_VIDEO_PUBLISHED
7727 - `7` MY_VIDEO_IMPORT_SUCCESS
7729 - `8` MY_VIDEO_IMPORT_ERROR
7731 - `9` NEW_USER_REGISTRATION
7735 - `11` COMMENT_MENTION
7737 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
7739 - `13` NEW_INSTANCE_FOLLOWER
7741 - `14` AUTO_INSTANCE_FOLLOWING
7743 - `15` ABUSE_STATE_CHANGE
7745 - `16` ABUSE_NEW_MESSAGE
7747 - `17` NEW_PLUGIN_VERSION
7749 - `18` NEW_PEERTUBE_VERSION
7755 - $ref: '#/components/schemas/VideoInfo'
7759 $ref: '#/components/schemas/ActorInfo'
7765 $ref: '#/components/schemas/id'
7768 $ref: '#/components/schemas/VideoInfo'
7773 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
7783 $ref: '#/components/schemas/id'
7787 $ref: '#/components/schemas/VideoInfo'
7789 $ref: '#/components/schemas/ActorInfo'
7795 $ref: '#/components/schemas/id'
7798 - $ref: '#/components/schemas/VideoInfo'
7804 $ref: '#/components/schemas/id'
7807 - $ref: '#/components/schemas/VideoInfo'
7811 - $ref: '#/components/schemas/ActorInfo'
7817 $ref: '#/components/schemas/id'
7819 $ref: '#/components/schemas/ActorInfo'
7847 NotificationListResponse:
7856 $ref: '#/components/schemas/Notification'
7861 example: peertube-plugin-auth-ldap
7889 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
7892 additionalProperties: true
7908 $ref: '#/components/schemas/Plugin'
7915 description: User can stream multiple times in a permanent live
7918 description: User can select live latency mode if enabled by the instance
7919 $ref: '#/components/schemas/LiveVideoLatencyMode'
7925 description: Included in the response if an appropriate token is provided
7928 description: Included in the response if an appropriate token is provided
7931 description: RTMP stream key to use to stream into this live video. Included in the response if an appropriate token is provided
7935 description: User can stream multiple times in a permanent live
7938 description: User can select live latency mode if enabled by the instance
7939 $ref: '#/components/schemas/LiveVideoLatencyMode'
7941 VideoStudioCreateTask:
7989 title: add-watermark
8003 LiveVideoSessionResponse:
8010 description: Start date of the live session
8015 description: End date of the live session
8026 Error type if an error occurred during the live session:
8027 - `1`: Bad socket health (transcoding is too slow)
8028 - `2`: Max duration exceeded
8029 - `3`: Quota exceeded
8030 - `4`: Quota FFmpeg error
8031 - `5`: Video has been blacklisted during the live
8034 description: Video replay information
8039 $ref: '#/components/schemas/UUIDv4'
8041 $ref: '#/components/schemas/shortUUID'
8045 'https://search.example.org/api/v1/search/videos':
8047 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
8050 description: successful operation
8054 $ref: '#/components/schemas/VideoListResponse'