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: Channels Sync
258 description: Operations dealing with synchronizing PeerTube user's channel with channels of other platforms
259 - name: Video Captions
260 description: Operations dealing with listing, adding and removing closed captions of a video.
261 - name: Video Channels
262 description: Operations dealing with the creation, modification and listing of videos within a channel.
263 - name: Video Comments
265 Operations dealing with comments to a video. Comments are organized in threads: adding a
266 comment in response to the video starts a thread, adding a reply to a comment adds it to
267 its root comment thread.
269 description: Operations dealing with blocking videos (removing them from view and preventing interactions).
271 description: Like/dislike a video.
272 - name: Video Playlists
273 description: Operations dealing with playlists of videos. Playlists are bound to users and/or channels.
275 description: Operations on video files
276 - name: Video Transcoding
277 description: Video transcoding related operations
279 description: Video statistics
281 description: Server syndication feeds
284 The search helps to find _videos_ or _channels_ from within the instance and beyond.
285 Videos from other instances federated by the instance (that is, instances
286 followed by the instance) can be found via keywords and other criteria of
289 Administrators can also enable the use of a remote search system, indexing
290 videos and channels not could be not federated by the instance.
292 description: Get and update the custom homepage
293 - name: Video Mirroring
295 PeerTube instances can mirror videos from one another, and help distribute some videos.
297 For importing videos as your own, refer to [video imports](#operation/importVideo).
326 - Video Ownership Change
347 - Instance Redundancy
357 summary: Get an account
358 operationId: getAccount
360 - $ref: '#/components/parameters/name'
363 description: successful operation
367 $ref: '#/components/schemas/Account'
369 description: account not found
371 '/accounts/{name}/videos':
376 summary: 'List videos of an account'
377 operationId: getAccountVideos
379 - $ref: '#/components/parameters/name'
380 - $ref: '#/components/parameters/categoryOneOf'
381 - $ref: '#/components/parameters/isLive'
382 - $ref: '#/components/parameters/tagsOneOf'
383 - $ref: '#/components/parameters/tagsAllOf'
384 - $ref: '#/components/parameters/licenceOneOf'
385 - $ref: '#/components/parameters/languageOneOf'
386 - $ref: '#/components/parameters/nsfw'
387 - $ref: '#/components/parameters/isLocal'
388 - $ref: '#/components/parameters/include'
389 - $ref: '#/components/parameters/privacyOneOf'
390 - $ref: '#/components/parameters/hasHLSFiles'
391 - $ref: '#/components/parameters/hasWebtorrentFiles'
392 - $ref: '#/components/parameters/skipCount'
393 - $ref: '#/components/parameters/start'
394 - $ref: '#/components/parameters/count'
395 - $ref: '#/components/parameters/videosSort'
398 description: successful operation
402 $ref: '#/components/schemas/VideoListResponse'
406 fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
407 .then(function(response) {
408 return response.json()
409 }).then(function(data) {
415 curl -s https://peertube2.cpy.re/api/v1/accounts/{name}/videos | jq
421 uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
423 http = Net::HTTP.new(uri.host, uri.port)
426 response = http.get(uri.request_uri)
428 puts JSON.parse(response.read_body)
433 r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
438 '/accounts/{name}/followers':
442 summary: 'List followers of an account'
445 operationId: getAccountFollowers
447 - $ref: '#/components/parameters/name'
448 - $ref: '#/components/parameters/start'
449 - $ref: '#/components/parameters/count'
450 - $ref: '#/components/parameters/followersSort'
451 - $ref: '#/components/parameters/search'
454 description: successful operation
466 $ref: '#/components/schemas/Follow'
472 summary: List accounts
473 operationId: getAccounts
475 - $ref: '#/components/parameters/start'
476 - $ref: '#/components/parameters/count'
477 - $ref: '#/components/parameters/sort'
480 description: successful operation
486 $ref: '#/components/schemas/Account'
492 summary: Get instance public configuration
493 operationId: getConfig
496 description: successful operation
500 $ref: '#/components/schemas/ServerConfig'
503 externalValue: https://peertube2.cpy.re/api/v1/config
507 summary: Get instance "About" information
508 operationId: getAbout
513 description: successful operation
517 $ref: '#/components/schemas/ServerConfigAbout'
520 externalValue: https://peertube2.cpy.re/api/v1/config/about
524 summary: Get instance runtime configuration
525 operationId: getCustomConfig
533 description: successful operation
537 $ref: '#/components/schemas/ServerConfigCustom'
539 summary: Set instance runtime configuration
540 operationId: putCustomConfig
548 description: successful operation
550 x-summary: field inconsistencies
553 - the emailer is disabled and the instance is open to registrations
554 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
556 summary: Delete instance runtime configuration
557 operationId: delCustomConfig
565 description: successful operation
567 /custom-pages/homepage/instance:
569 summary: Get instance custom homepage
574 description: No homepage set
576 description: successful operation
580 $ref: '#/components/schemas/CustomHomepage'
582 summary: Set instance custom homepage
596 description: content of the homepage, that will be injected in the client
599 description: successful operation
603 summary: Pause job queue
611 description: successful operation
615 summary: Resume job queue
623 description: successful operation
627 summary: List instance jobs
638 description: The state of the job ('' for for no filter)
648 - $ref: '#/components/parameters/jobType'
649 - $ref: '#/components/parameters/start'
650 - $ref: '#/components/parameters/count'
651 - $ref: '#/components/parameters/sort'
654 description: successful operation
667 $ref: '#/components/schemas/Job'
673 summary: List instances following the server
675 - $ref: '#/components/parameters/followState'
676 - $ref: '#/components/parameters/actorType'
677 - $ref: '#/components/parameters/start'
678 - $ref: '#/components/parameters/count'
679 - $ref: '#/components/parameters/sort'
682 description: successful operation
694 $ref: '#/components/schemas/Follow'
696 '/server/followers/{nameWithHost}':
698 summary: Remove or reject a follower to your server
708 description: The remote actor handle to remove from your followers
714 description: successful operation
716 description: follower not found
718 '/server/followers/{nameWithHost}/reject':
720 summary: Reject a pending follower to your server
730 description: The remote actor handle to remove from your followers
736 description: successful operation
738 description: follower not found
740 '/server/followers/{nameWithHost}/accept':
742 summary: Accept a pending follower to your server
752 description: The remote actor handle to remove from your followers
758 description: successful operation
760 description: follower not found
766 summary: List instances followed by the server
768 - $ref: '#/components/parameters/followState'
769 - $ref: '#/components/parameters/actorType'
770 - $ref: '#/components/parameters/start'
771 - $ref: '#/components/parameters/count'
772 - $ref: '#/components/parameters/sort'
775 description: successful operation
787 $ref: '#/components/schemas/Follow'
794 summary: Follow a list of actors (PeerTube instance, channel or account)
797 description: successful operation
799 description: cannot follow a non-HTTPS server
818 '/server/following/{hostOrHandle}':
820 summary: Unfollow an actor (PeerTube instance, channel or account)
830 description: The hostOrHandle to unfollow
835 description: successful operation
837 description: host or handle not found
841 summary: Create a user
850 description: user created
854 $ref: '#/components/schemas/AddUserResponse'
860 id: '$response.body#/user/id'
865 id: '$response.body#/user/id'
870 id: '$response.body#/user/id'
872 description: insufficient authority to create an admin or moderator
877 $ref: '#/components/schemas/AddUser'
879 If the smtp server is configured, you can leave the password empty and an email will be sent
880 asking the user to set it first.
884 operationId: getUsers
891 - $ref: '#/components/parameters/usersSearch'
892 - $ref: '#/components/parameters/usersBlocked'
893 - $ref: '#/components/parameters/start'
894 - $ref: '#/components/parameters/count'
895 - $ref: '#/components/parameters/usersSort'
898 description: successful operation
904 $ref: '#/components/schemas/User'
908 - $ref: '#/components/parameters/id'
910 summary: Delete a user
919 description: successful operation
930 description: include statistics about the user (only available as a moderator/admin)
935 x-summary: successful operation
937 As an admin/moderator, you can request a response augmented with statistics about the user's
938 moderation relations and videos usage, by using the `withStats` parameter.
943 - $ref: '#/components/schemas/User'
944 - $ref: '#/components/schemas/UserWithStats'
946 summary: Update a user
954 description: successful operation
959 $ref: '#/components/schemas/UpdateUser'
962 /oauth-clients/local:
964 summary: Login prerequisite
965 description: You need to retrieve a client id and secret before [logging in](#operation/getOAuthToken).
966 operationId: getOAuthClient
971 description: successful operation
975 $ref: '#/components/schemas/OAuthClient'
977 UseOAuthClientToLogin:
978 operationId: getOAuthToken
980 client_id: '$response.body#/client_id'
981 client_secret: '$response.body#/client_secret'
985 API="https://peertube2.cpy.re/api/v1"
988 curl -s "$API/oauth-clients/local"
993 operationId: getOAuthToken
994 description: With your [client id and secret](#operation/getOAuthClient), you can retrieve an access and refresh tokens.
999 application/x-www-form-urlencoded:
1002 - $ref: '#/components/schemas/OAuthToken-password'
1003 - $ref: '#/components/schemas/OAuthToken-refresh_token'
1005 propertyName: grant_type
1007 password: '#/components/schemas/OAuthToken-password'
1008 refresh_token: '#/components/schemas/OAuthToken-refresh_token'
1011 description: successful operation
1022 example: 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0
1023 description: valid for 1 day
1026 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
1027 description: valid for 2 weeks
1032 refresh_token_expires_in:
1037 x-summary: client or credentials are invalid
1039 Disambiguate via `type`:
1040 - `invalid_client` for an unmatched `client_id`
1041 - `invalid_grant` for unmatched credentials
1043 x-summary: token expired
1045 Disambiguate via `type`:
1046 - default value for a regular authentication failure
1047 - `invalid_token` for an expired token
1052 API="https://peertube2.cpy.re/api/v1"
1053 USERNAME="<your_username>"
1054 PASSWORD="<your_password>"
1057 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
1058 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
1059 curl -s "$API/users/token" \
1060 --data client_id="$client_id" \
1061 --data client_secret="$client_secret" \
1062 --data grant_type=password \
1063 --data username="$USERNAME" \
1064 --data password="$PASSWORD" \
1065 | jq -r ".access_token"
1067 /users/revoke-token:
1070 description: Revokes your access token and its associated refresh token, destroying your current session.
1071 operationId: revokeOAuthToken
1078 description: successful operation
1082 summary: Register a user
1083 operationId: registerUser
1089 description: successful operation
1094 $ref: '#/components/schemas/RegisterUser'
1097 /users/{id}/verify-email:
1099 summary: Verify a user
1100 operationId: verifyUser
1102 Following a user registration, the new user will receive an email asking to click a link
1103 containing a secret.
1108 - $ref: '#/components/parameters/id'
1121 - verificationString
1124 description: successful operation
1126 description: invalid verification string
1128 description: user not found
1130 /users/ask-send-verify-email:
1132 summary: Resend user verification link
1133 operationId: resendEmailToVerifyUser
1139 description: successful operation
1143 summary: Get my user information
1144 operationId: getUserInfo
1152 description: successful operation
1158 $ref: '#/components/schemas/User'
1160 summary: Update my user information
1161 operationId: putUserInfo
1169 description: successful operation
1174 $ref: '#/components/schemas/UpdateMe'
1177 /users/me/videos/imports:
1179 summary: Get video imports of my user
1187 - $ref: '#/components/parameters/start'
1188 - $ref: '#/components/parameters/count'
1189 - $ref: '#/components/parameters/sort'
1194 description: Filter on import target URL
1198 name: videoChannelSyncId
1201 description: Filter on imports created by a specific channel synchronization
1208 description: Search in video names
1213 description: successful operation
1217 $ref: '#/components/schemas/VideoImportsList'
1219 /users/me/video-quota-used:
1221 summary: Get my user used quota
1229 description: successful operation
1237 description: The user video quota used so far in bytes
1238 example: 16810141515
1239 videoQuotaUsedDaily:
1241 description: The user video quota used today in bytes
1244 '/users/me/videos/{videoId}/rating':
1246 summary: Get rate of my user for a video
1256 description: The video id
1258 $ref: '#/components/schemas/Video/properties/id'
1261 description: successful operation
1265 $ref: '#/components/schemas/GetMeVideoRating'
1269 summary: Get videos of my user
1277 - $ref: '#/components/parameters/start'
1278 - $ref: '#/components/parameters/count'
1279 - $ref: '#/components/parameters/sort'
1282 description: successful operation
1286 $ref: '#/components/schemas/VideoListResponse'
1288 /users/me/subscriptions:
1290 summary: Get my user subscriptions
1297 - $ref: '#/components/parameters/start'
1298 - $ref: '#/components/parameters/count'
1299 - $ref: '#/components/parameters/sort'
1302 description: successful operation
1306 $ref: '#/components/schemas/VideoChannelList'
1310 summary: Add subscription to my user
1323 description: uri of the video channels to subscribe to
1329 uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
1332 description: successful operation
1334 /users/me/subscriptions/exist:
1336 summary: Get if subscriptions exist for my user
1343 - $ref: '#/components/parameters/subscriptionsUris'
1346 description: successful operation
1352 /users/me/subscriptions/videos:
1354 summary: List videos of subscriptions of my user
1362 - $ref: '#/components/parameters/categoryOneOf'
1363 - $ref: '#/components/parameters/isLive'
1364 - $ref: '#/components/parameters/tagsOneOf'
1365 - $ref: '#/components/parameters/tagsAllOf'
1366 - $ref: '#/components/parameters/licenceOneOf'
1367 - $ref: '#/components/parameters/languageOneOf'
1368 - $ref: '#/components/parameters/nsfw'
1369 - $ref: '#/components/parameters/isLocal'
1370 - $ref: '#/components/parameters/include'
1371 - $ref: '#/components/parameters/privacyOneOf'
1372 - $ref: '#/components/parameters/hasHLSFiles'
1373 - $ref: '#/components/parameters/hasWebtorrentFiles'
1374 - $ref: '#/components/parameters/skipCount'
1375 - $ref: '#/components/parameters/start'
1376 - $ref: '#/components/parameters/count'
1377 - $ref: '#/components/parameters/videosSort'
1380 description: successful operation
1384 $ref: '#/components/schemas/VideoListResponse'
1386 '/users/me/subscriptions/{subscriptionHandle}':
1388 summary: Get subscription of my user
1395 - $ref: '#/components/parameters/subscriptionHandle'
1398 description: successful operation
1402 $ref: '#/components/schemas/VideoChannel'
1404 summary: Delete subscription of my user
1411 - $ref: '#/components/parameters/subscriptionHandle'
1414 description: successful operation
1416 /users/me/notifications:
1418 summary: List my notifications
1426 description: only list unread notifications
1429 - $ref: '#/components/parameters/start'
1430 - $ref: '#/components/parameters/count'
1431 - $ref: '#/components/parameters/sort'
1434 description: successful operation
1438 $ref: '#/components/schemas/NotificationListResponse'
1440 /users/me/notifications/read:
1442 summary: Mark notifications as read by their id
1455 description: ids of the notifications to mark as read
1462 description: successful operation
1464 /users/me/notifications/read-all:
1466 summary: Mark all my notification as read
1473 description: successful operation
1475 /users/me/notification-settings:
1477 summary: Update my notification settings
1488 newVideoFromSubscription:
1489 $ref: '#/components/schemas/NotificationSettingValue'
1490 newCommentOnMyVideo:
1491 $ref: '#/components/schemas/NotificationSettingValue'
1493 $ref: '#/components/schemas/NotificationSettingValue'
1494 videoAutoBlacklistAsModerator:
1495 $ref: '#/components/schemas/NotificationSettingValue'
1497 $ref: '#/components/schemas/NotificationSettingValue'
1499 $ref: '#/components/schemas/NotificationSettingValue'
1500 myVideoImportFinished:
1501 $ref: '#/components/schemas/NotificationSettingValue'
1503 $ref: '#/components/schemas/NotificationSettingValue'
1504 newUserRegistration:
1505 $ref: '#/components/schemas/NotificationSettingValue'
1507 $ref: '#/components/schemas/NotificationSettingValue'
1508 newInstanceFollower:
1509 $ref: '#/components/schemas/NotificationSettingValue'
1510 autoInstanceFollowing:
1511 $ref: '#/components/schemas/NotificationSettingValue'
1514 description: successful operation
1516 /users/me/history/videos:
1518 summary: List watched videos history
1524 - $ref: '#/components/parameters/start'
1525 - $ref: '#/components/parameters/count'
1526 - $ref: '#/components/parameters/search'
1529 description: successful operation
1533 $ref: '#/components/schemas/VideoListResponse'
1535 /users/me/history/videos/{videoId}:
1537 summary: Delete history element
1547 $ref: '#/components/schemas/Video/properties/id'
1550 description: successful operation
1552 /users/me/history/videos/remove:
1554 summary: Clear video history
1561 multipart/form-data:
1566 description: history before this date will be deleted
1571 description: successful operation
1573 /users/me/avatar/pick:
1575 summary: Update my user avatar
1582 description: successful operation
1591 $ref: '#/components/schemas/ActorImage'
1593 description: image file too large
1595 X-File-Maximum-Size:
1599 description: Maximum file size for the avatar
1602 multipart/form-data:
1607 description: The file to upload
1612 contentType: image/png, image/jpeg
1616 summary: Delete my avatar
1623 description: successful operation
1627 summary: List video ownership changes
1629 - Video Ownership Change
1634 description: successful operation
1636 '/videos/ownership/{id}/accept':
1638 summary: Accept ownership change request
1640 - Video Ownership Change
1644 - $ref: '#/components/parameters/idOrUUID'
1647 description: successful operation
1649 description: cannot terminate an ownership change of another user
1651 description: video ownership change not found
1653 '/videos/ownership/{id}/refuse':
1655 summary: Refuse ownership change request
1657 - Video Ownership Change
1661 - $ref: '#/components/parameters/idOrUUID'
1664 description: successful operation
1666 description: cannot terminate an ownership change of another user
1668 description: video ownership change not found
1670 '/videos/{id}/give-ownership':
1672 summary: Request ownership change
1674 - Video Ownership Change
1678 - $ref: '#/components/parameters/idOrUUID'
1682 application/x-www-form-urlencoded:
1692 description: successful operation
1694 description: changing video ownership to a remote account is not supported yet
1696 description: video not found
1698 /videos/{id}/studio/edit:
1700 summary: Create a studio task
1704 description: Create a task to edit a video (cut, add intro/outro etc)
1708 - $ref: '#/components/parameters/idOrUUID'
1712 application/x-www-form-urlencoded:
1714 $ref: '#/components/schemas/VideoStudioCreateTask'
1717 description: successful operation
1719 description: incorrect parameters
1721 description: video not found
1725 summary: List videos
1726 operationId: getVideos
1730 - $ref: '#/components/parameters/categoryOneOf'
1731 - $ref: '#/components/parameters/isLive'
1732 - $ref: '#/components/parameters/tagsOneOf'
1733 - $ref: '#/components/parameters/tagsAllOf'
1734 - $ref: '#/components/parameters/licenceOneOf'
1735 - $ref: '#/components/parameters/languageOneOf'
1736 - $ref: '#/components/parameters/nsfw'
1737 - $ref: '#/components/parameters/isLocal'
1738 - $ref: '#/components/parameters/include'
1739 - $ref: '#/components/parameters/privacyOneOf'
1740 - $ref: '#/components/parameters/hasHLSFiles'
1741 - $ref: '#/components/parameters/hasWebtorrentFiles'
1742 - $ref: '#/components/parameters/skipCount'
1743 - $ref: '#/components/parameters/start'
1744 - $ref: '#/components/parameters/count'
1745 - $ref: '#/components/parameters/videosSort'
1748 description: successful operation
1752 $ref: '#/components/schemas/VideoListResponse'
1756 summary: List available video categories
1757 operationId: getCategories
1762 description: successful operation
1771 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
1775 summary: List available video licences
1776 operationId: getLicences
1781 description: successful operation
1790 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
1794 summary: List available video languages
1795 operationId: getLanguages
1800 description: successful operation
1809 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
1813 summary: List available video privacy policies
1814 operationId: getPrivacyPolicies
1819 description: successful operation
1828 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1832 summary: Update a video
1833 operationId: putVideo
1839 - $ref: '#/components/parameters/idOrUUID'
1842 description: successful operation
1845 multipart/form-data:
1850 description: Video thumbnail file
1854 description: Video preview file
1858 $ref: '#/components/schemas/VideoCategorySet'
1860 $ref: '#/components/schemas/VideoLicenceSet'
1862 $ref: '#/components/schemas/VideoLanguageSet'
1864 $ref: '#/components/schemas/VideoPrivacySet'
1866 description: Video description
1869 description: Whether or not we wait transcoding before publish the video
1872 description: A text tell the audience how to support the video creator
1873 example: Please support our work on https://soutenir.framasoft.org/en/ <3
1876 description: Whether or not this video contains sensitive content
1879 description: Video name
1884 description: Video tags (maximum 5 tags each between 2 and 30 characters)
1893 description: Enable or disable comments for this video
1896 description: Enable or disable downloading for this video
1898 originallyPublishedAt:
1899 description: Date when the content was originally published
1903 $ref: '#/components/schemas/VideoScheduledUpdate'
1906 contentType: image/jpeg
1908 contentType: image/jpeg
1910 summary: Get a video
1911 operationId: getVideo
1915 - $ref: '#/components/parameters/idOrUUID'
1918 description: successful operation
1922 $ref: '#/components/schemas/VideoDetails'
1924 summary: Delete a video
1925 operationId: delVideo
1931 - $ref: '#/components/parameters/idOrUUID'
1934 description: successful operation
1936 '/videos/{id}/description':
1938 summary: Get complete video description
1939 operationId: getVideoDesc
1943 - $ref: '#/components/parameters/idOrUUID'
1946 description: successful operation
1955 **[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)**
1957 '/videos/{id}/source':
1959 summary: Get video source file metadata
1960 operationId: getVideoSource
1964 - $ref: '#/components/parameters/idOrUUID'
1967 description: successful operation
1971 $ref: '#/components/schemas/VideoSource'
1973 '/videos/{id}/views':
1975 summary: Notify user is watching a video
1976 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.
1977 operationId: addView
1981 - $ref: '#/components/parameters/idOrUUID'
1986 $ref: '#/components/schemas/UserViewingVideo'
1990 description: successful operation
1992 '/videos/{id}/watching':
1994 summary: Set watching progress of a video
1996 description: This endpoint has been deprecated. Use `/videos/{id}/views` instead
2002 - $ref: '#/components/parameters/idOrUUID'
2007 $ref: '#/components/schemas/UserViewingVideo'
2011 description: successful operation
2013 '/videos/{id}/stats/overall':
2015 summary: Get overall stats of a video
2021 - $ref: '#/components/parameters/idOrUUID'
2024 description: Filter stats by start date
2030 description: Filter stats by end date
2036 description: successful operation
2040 $ref: '#/components/schemas/VideoStatsOverall'
2042 '/videos/{id}/stats/retention':
2044 summary: Get retention stats of a video
2050 - $ref: '#/components/parameters/idOrUUID'
2053 description: successful operation
2057 $ref: '#/components/schemas/VideoStatsRetention'
2059 '/videos/{id}/stats/timeseries/{metric}':
2061 summary: Get timeserie stats of a video
2067 - $ref: '#/components/parameters/idOrUUID'
2072 description: The metric to get
2077 - 'aggregateWatchTime'
2080 description: Filter stats by start date
2086 description: Filter stats by end date
2092 description: successful operation
2096 $ref: '#/components/schemas/VideoStatsTimeserie'
2100 summary: Upload a video
2101 description: Uses a single request to upload a video.
2102 operationId: uploadLegacy
2110 description: successful operation
2114 $ref: '#/components/schemas/VideoUploadResponse'
2116 description: video didn't pass upload filter
2118 description: upload has timed out
2120 x-summary: video file too large, due to quota or max body size limit set by the reverse-proxy
2122 If the response has no body, it means the reverse-proxy didn't let it through. Otherwise disambiguate via `type`:
2123 - `quota_reached` for quota limits whether daily or global
2125 X-File-Maximum-Size:
2129 description: Maximum file size for the video
2131 description: video type unsupported
2133 description: video unreadable
2136 multipart/form-data:
2138 $ref: '#/components/schemas/VideoUploadRequestLegacy'
2141 contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
2143 contentType: image/jpeg
2145 contentType: image/jpeg
2150 USERNAME="<your_username>"
2151 PASSWORD="<your_password>"
2152 FILE_PATH="<your_file_path>"
2153 CHANNEL_ID="<your_channel_id>"
2155 API="https://peertube2.cpy.re/api/v1"
2158 client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id")
2159 client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret")
2160 token=$(curl -s "$API/users/token" \
2161 --data client_id="$client_id" \
2162 --data client_secret="$client_secret" \
2163 --data grant_type=password \
2164 --data username="$USERNAME" \
2165 --data password="$PASSWORD" \
2166 | jq -r ".access_token")
2169 curl -s "$API/videos/upload" \
2170 -H "Authorization: Bearer $token" \
2172 --form videofile=@"$FILE_PATH" \
2173 --form channelId=$CHANNEL_ID \
2176 /videos/upload-resumable:
2178 summary: Initialize the resumable upload of a video
2179 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to initialize the upload of a video
2180 operationId: uploadResumableInit
2187 - name: X-Upload-Content-Length
2193 description: Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading.
2194 - name: X-Upload-Content-Type
2201 description: MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary.
2206 $ref: '#/components/schemas/VideoUploadRequestResumable'
2209 description: file already exists, send a [`resume`](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) request instead
2211 description: created
2217 example: /api/v1/videos/upload-resumable?upload_id=471e97554f21dec3b8bb5d4602939c51
2223 x-summary: video file too large, due to quota, absolute max file size or concurrent partial upload limit
2225 Disambiguate via `type`:
2226 - `max_file_size_reached` for the absolute file size limit
2227 - `quota_reached` for quota limits whether daily or global
2229 description: video type unsupported
2231 summary: Send chunk for the resumable upload of a video
2232 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
2233 operationId: uploadResumable
2244 Created session id to proceed with. If you didn't send chunks in the last hour, it is
2245 not valid anymore and you need to initialize a new upload.
2248 - name: Content-Range
2252 example: bytes 0-262143/2469036
2255 Specifies the bytes in the file that the request is uploading.
2257 For example, a value of `bytes 0-262143/1000000` shows that the request is sending the first
2258 262144 bytes (256 x 1024) in a 2,469,036 byte file.
2259 - name: Content-Length
2266 Size of the chunk that the request is sending.
2268 Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from
2269 1048576 bytes (~1MB) and increases or reduces size depending on connection health.
2272 application/octet-stream:
2278 description: last chunk received
2286 $ref: '#/components/schemas/VideoUploadResponse'
2288 description: resume incomplete
2293 example: bytes=0-262143
2299 description: video didn't pass upload filter
2301 description: upload not found
2303 description: chunk doesn't match range
2305 description: video unreadable
2307 description: too many concurrent requests
2309 description: upload is already being processed
2316 summary: Cancel the resumable upload of a video, deleting any data uploaded so far
2317 description: Uses [a resumable protocol](https://github.com/kukhariev/node-uploadx/blob/master/proto.md) to cancel the upload of a video
2318 operationId: uploadResumableCancel
2329 Created session id to proceed with. If you didn't send chunks in the last 12 hours, it is
2330 not valid anymore and the upload session has already been deleted with its data ;-)
2333 - name: Content-Length
2341 description: upload cancelled
2348 description: upload not found
2352 summary: Import a video
2353 description: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
2354 operationId: importVideo
2362 multipart/form-data:
2364 $ref: '#/components/schemas/VideoCreateImport'
2367 contentType: application/x-bittorrent
2369 contentType: image/jpeg
2371 contentType: image/jpeg
2374 description: successful operation
2378 $ref: '#/components/schemas/VideoUploadResponse'
2380 description: '`magnetUri` or `targetUrl` or a torrent file missing'
2382 description: video didn't pass pre-import filter
2384 description: HTTP or Torrent/magnetURI import not enabled
2386 /videos/imports/{id}/cancel:
2388 summary: Cancel video import
2389 description: Cancel a pending video import
2395 - $ref: '#/components/parameters/id'
2398 description: successful operation
2400 /videos/imports/{id}:
2402 summary: Delete video import
2403 description: Delete ended video import
2409 - $ref: '#/components/parameters/id'
2412 description: successful operation
2416 summary: Create a live
2417 operationId: addLive
2425 description: successful operation
2429 $ref: '#/components/schemas/VideoUploadResponse'
2431 x-summary: validation error, or conflicting `saveReplay` and `permanentLive` parameter set
2433 Disambiguate via `type`:
2434 - default type for a validation error
2435 - `live_conflicting_permanent_and_save_replay` for conflicting parameters set
2437 x-summary: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
2439 Disambiguate via `type`:
2440 - `live_not_enabled` for a disabled live feature
2441 - `live_not_allowing_replay` for a disabled replay feature
2442 - `max_instance_lives_limit_reached` for the absolute concurrent live limit
2443 - `max_user_lives_limit_reached` for the user concurrent live limit
2446 multipart/form-data:
2451 description: Channel id that will contain this live video
2456 description: User can stream multiple times in a permanent live
2459 description: User can select live latency mode if enabled by the instance
2460 $ref: '#/components/schemas/LiveVideoLatencyMode'
2462 description: Live video/replay thumbnail file
2466 description: Live video/replay preview file
2470 $ref: '#/components/schemas/VideoPrivacySet'
2472 $ref: '#/components/schemas/VideoCategorySet'
2474 $ref: '#/components/schemas/VideoLicenceSet'
2476 $ref: '#/components/schemas/VideoLanguageSet'
2478 description: Live video/replay description
2481 description: A text tell the audience how to support the creator
2482 example: Please support our work on https://soutenir.framasoft.org/en/ <3
2485 description: Whether or not this live video/replay contains sensitive content
2488 description: Live video/replay name
2493 description: Live video/replay tags (maximum 5 tags each between 2 and 30 characters)
2502 description: Enable or disable comments for this live video/replay
2505 description: Enable or disable downloading for the replay of this live video
2512 contentType: image/jpeg
2514 contentType: image/jpeg
2518 summary: Get information about a live
2519 operationId: getLiveId
2526 - $ref: '#/components/parameters/idOrUUID'
2529 description: successful operation
2533 $ref: '#/components/schemas/LiveVideoResponse'
2535 summary: Update information about a live
2536 operationId: updateLiveId
2543 - $ref: '#/components/parameters/idOrUUID'
2548 $ref: '#/components/schemas/LiveVideoUpdate'
2551 description: successful operation
2553 description: bad parameters or trying to update a live that has already started
2555 description: trying to save replay of the live but saving replay is not enabled on the instance
2556 /videos/live/{id}/sessions:
2558 summary: List live sessions
2559 description: List all sessions created in a particular live
2565 - $ref: '#/components/parameters/idOrUUID'
2568 description: successful operation
2580 $ref: '#/components/schemas/LiveVideoSessionResponse'
2581 /videos/{id}/live-session:
2583 summary: Get live session of a replay
2584 description: If the video is a replay of a live, you can find the associated live session using this endpoint
2590 - $ref: '#/components/parameters/idOrUUID'
2593 description: successful operation
2597 $ref: '#/components/schemas/LiveVideoSessionResponse'
2601 summary: List my abuses
2602 operationId: getMyAbuses
2611 description: only list the report with this id
2617 $ref: '#/components/schemas/AbuseStateSet'
2618 - $ref: '#/components/parameters/abusesSort'
2619 - $ref: '#/components/parameters/start'
2620 - $ref: '#/components/parameters/count'
2623 description: successful operation
2635 $ref: '#/components/schemas/Abuse'
2639 summary: List abuses
2640 operationId: getAbuses
2650 description: only list the report with this id
2653 - name: predefinedReason
2655 description: predefined reason the listed reports should contain
2657 $ref: '#/components/schemas/PredefinedAbuseReasons'
2660 description: plain search that will match with video titles, reporter names and more
2666 $ref: '#/components/schemas/AbuseStateSet'
2667 - name: searchReporter
2669 description: only list reports of a specific reporter
2672 - name: searchReportee
2673 description: only list reports of a specific reportee
2679 description: only list reports of a specific video
2682 - name: searchVideoChannel
2684 description: only list reports of a specific video channel
2689 description: only list deleted or blocklisted videos
2697 description: only list account, comment or video reports
2704 - $ref: '#/components/parameters/start'
2705 - $ref: '#/components/parameters/count'
2706 - $ref: '#/components/parameters/abusesSort'
2709 description: successful operation
2721 $ref: '#/components/schemas/Abuse'
2723 summary: Report an abuse
2736 description: Reason why the user reports this video
2741 $ref: '#/components/schemas/PredefinedAbuseReasons'
2746 description: Video id to report
2748 - $ref: '#/components/schemas/Video/properties/id'
2752 description: Timestamp in the video that marks the beginning of the report
2757 description: Timestamp in the video that marks the ending of the report
2763 description: Comment id to report
2765 - $ref: '#/components/schemas/VideoComment/properties/id'
2770 description: Account id to report
2776 description: successful operation
2786 $ref: '#/components/schemas/id'
2788 description: incorrect request parameters
2790 '/abuses/{abuseId}':
2792 summary: Update an abuse
2800 - $ref: '#/components/parameters/abuseId'
2808 $ref: '#/components/schemas/AbuseStateSet'
2811 description: Update the report comment visible only to the moderation team
2816 description: successful operation
2818 description: abuse not found
2822 summary: Delete an abuse
2828 - $ref: '#/components/parameters/abuseId'
2831 description: successful operation
2833 description: block not found
2835 '/abuses/{abuseId}/messages':
2837 summary: List messages of an abuse
2843 - $ref: '#/components/parameters/abuseId'
2846 description: successful operation
2858 $ref: '#/components/schemas/AbuseMessage'
2860 summary: Add message to an abuse
2866 - $ref: '#/components/parameters/abuseId'
2875 description: Message to send
2883 description: successful operation
2885 description: incorrect request parameters
2887 '/abuses/{abuseId}/messages/{abuseMessageId}':
2889 summary: Delete an abuse message
2895 - $ref: '#/components/parameters/abuseId'
2896 - $ref: '#/components/parameters/abuseMessageId'
2899 description: successful operation
2901 '/videos/{id}/blacklist':
2903 summary: Block a video
2904 operationId: addVideoBlock
2912 - $ref: '#/components/parameters/idOrUUID'
2915 description: successful operation
2917 summary: Unblock a video by its id
2918 operationId: delVideoBlock
2926 - $ref: '#/components/parameters/idOrUUID'
2929 description: successful operation
2931 description: block not found
2937 summary: List video blocks
2938 operationId: getVideoBlocks
2947 list only blocks that match this type:
2951 - `2`: automatic block that needs review
2959 description: plain search that will match with video titles, and more
2962 - $ref: '#/components/parameters/start'
2963 - $ref: '#/components/parameters/count'
2964 - $ref: '#/components/parameters/blacklistsSort'
2967 description: successful operation
2979 $ref: '#/components/schemas/VideoBlacklist'
2981 /videos/{id}/captions:
2983 summary: List captions of a video
2984 operationId: getVideoCaptions
2988 - $ref: '#/components/parameters/idOrUUID'
2991 description: successful operation
3003 $ref: '#/components/schemas/VideoCaption'
3005 /videos/{id}/captions/{captionLanguage}:
3007 summary: Add or replace a video caption
3008 operationId: addVideoCaption
3015 - $ref: '#/components/parameters/idOrUUID'
3016 - $ref: '#/components/parameters/captionLanguage'
3019 multipart/form-data:
3024 description: The file to upload.
3029 contentType: text/vtt, application/x-subrip, text/plain
3032 description: successful operation
3034 description: video or language not found
3036 summary: Delete a video caption
3037 operationId: delVideoCaption
3044 - $ref: '#/components/parameters/idOrUUID'
3045 - $ref: '#/components/parameters/captionLanguage'
3048 description: successful operation
3050 description: video or language or caption for that language not found
3054 summary: List video channels
3055 operationId: getVideoChannels
3059 - $ref: '#/components/parameters/start'
3060 - $ref: '#/components/parameters/count'
3061 - $ref: '#/components/parameters/sort'
3064 description: successful operation
3068 $ref: '#/components/schemas/VideoChannelList'
3070 summary: Create a video channel
3071 operationId: addVideoChannel
3078 description: successful operation
3088 $ref: '#/components/schemas/id'
3093 $ref: '#/components/schemas/VideoChannelCreate'
3095 '/video-channels/{channelHandle}':
3097 summary: Get a video channel
3098 operationId: getVideoChannel
3102 - $ref: '#/components/parameters/channelHandle'
3105 description: successful operation
3109 $ref: '#/components/schemas/VideoChannel'
3111 summary: Update a video channel
3112 operationId: putVideoChannel
3118 - $ref: '#/components/parameters/channelHandle'
3121 description: successful operation
3126 $ref: '#/components/schemas/VideoChannelUpdate'
3128 summary: Delete a video channel
3129 operationId: delVideoChannel
3135 - $ref: '#/components/parameters/channelHandle'
3138 description: successful operation
3140 '/video-channels/{channelHandle}/videos':
3142 summary: List videos of a video channel
3143 operationId: getVideoChannelVideos
3148 - $ref: '#/components/parameters/channelHandle'
3149 - $ref: '#/components/parameters/categoryOneOf'
3150 - $ref: '#/components/parameters/isLive'
3151 - $ref: '#/components/parameters/tagsOneOf'
3152 - $ref: '#/components/parameters/tagsAllOf'
3153 - $ref: '#/components/parameters/licenceOneOf'
3154 - $ref: '#/components/parameters/languageOneOf'
3155 - $ref: '#/components/parameters/nsfw'
3156 - $ref: '#/components/parameters/isLocal'
3157 - $ref: '#/components/parameters/include'
3158 - $ref: '#/components/parameters/privacyOneOf'
3159 - $ref: '#/components/parameters/hasHLSFiles'
3160 - $ref: '#/components/parameters/hasWebtorrentFiles'
3161 - $ref: '#/components/parameters/skipCount'
3162 - $ref: '#/components/parameters/start'
3163 - $ref: '#/components/parameters/count'
3164 - $ref: '#/components/parameters/videosSort'
3167 description: successful operation
3171 $ref: '#/components/schemas/VideoListResponse'
3173 '/video-channels/{channelHandle}/followers':
3177 summary: 'List followers of a video channel'
3180 operationId: getVideoChannelFollowers
3182 - $ref: '#/components/parameters/channelHandle'
3183 - $ref: '#/components/parameters/start'
3184 - $ref: '#/components/parameters/count'
3185 - $ref: '#/components/parameters/followersSort'
3186 - $ref: '#/components/parameters/search'
3189 description: successful operation
3201 $ref: '#/components/schemas/Follow'
3203 '/video-channels/{channelHandle}/avatar/pick':
3205 summary: Update channel avatar
3211 - $ref: '#/components/parameters/channelHandle'
3214 description: successful operation
3223 $ref: '#/components/schemas/ActorImage'
3225 description: image file too large
3227 X-File-Maximum-Size:
3231 description: Maximum file size for the avatar
3234 multipart/form-data:
3239 description: The file to upload.
3244 contentType: image/png, image/jpeg
3246 '/video-channels/{channelHandle}/avatar':
3248 summary: Delete channel avatar
3254 - $ref: '#/components/parameters/channelHandle'
3257 description: successful operation
3259 '/video-channels/{channelHandle}/banner/pick':
3261 summary: Update channel banner
3267 - $ref: '#/components/parameters/channelHandle'
3270 description: successful operation
3279 $ref: '#/components/schemas/ActorImage'
3281 description: image file too large
3283 X-File-Maximum-Size:
3287 description: Maximum file size for the banner
3290 multipart/form-data:
3295 description: The file to upload.
3300 contentType: image/png, image/jpeg
3302 '/video-channels/{channelHandle}/banner':
3304 summary: Delete channel banner
3310 - $ref: '#/components/parameters/channelHandle'
3313 description: successful operation
3315 '/video-channels/{channelHandle}/import-videos':
3317 summary: Import videos in channel
3318 description: Import a remote channel/playlist videos into a channel
3325 - $ref: '#/components/parameters/channelHandle'
3330 $ref: '#/components/schemas/ImportVideosInChannelCreate'
3333 description: successful operation
3335 '/video-channel-syncs':
3337 summary: Create a synchronization for a video channel
3338 operationId: addVideoChannelSync
3347 $ref: '#/components/schemas/VideoChannelSyncCreate'
3350 description: successful operation
3357 $ref: "#/components/schemas/VideoChannelSync"
3359 '/video-channel-syncs/{channelSyncId}':
3361 summary: Delete a video channel synchronization
3362 operationId: delVideoChannelSync
3368 - $ref: '#/components/parameters/channelSyncId'
3371 description: successful operation
3373 '/video-channel-syncs/{channelSyncId}/sync':
3375 summary: Triggers the channel synchronization job, fetching all the videos from the remote channel
3376 operationId: triggerVideoChannelSync
3382 - $ref: '#/components/parameters/channelSyncId'
3385 description: successful operation
3388 /video-playlists/privacies:
3390 summary: List available playlist privacy policies
3391 operationId: getPlaylistPrivacyPolicies
3396 description: successful operation
3405 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
3409 summary: List video playlists
3410 operationId: getPlaylists
3414 - $ref: '#/components/parameters/start'
3415 - $ref: '#/components/parameters/count'
3416 - $ref: '#/components/parameters/sort'
3419 description: successful operation
3431 $ref: '#/components/schemas/VideoPlaylist'
3433 summary: Create a video playlist
3434 description: If the video playlist is set as public, `videoChannelId` is mandatory.
3435 operationId: addPlaylist
3442 description: successful operation
3452 $ref: '#/components/schemas/VideoPlaylist/properties/id'
3454 $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
3456 $ref: '#/components/schemas/VideoPlaylist/properties/shortUUID'
3459 multipart/form-data:
3464 description: Video playlist display name
3469 description: Video playlist thumbnail file
3473 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3475 description: Video playlist description
3481 - $ref: '#/components/schemas/id'
3482 description: Video channel in which the playlist will be published
3487 contentType: image/jpeg
3489 /video-playlists/{playlistId}:
3491 summary: Get a video playlist
3495 - $ref: '#/components/parameters/playlistId'
3498 description: successful operation
3502 $ref: '#/components/schemas/VideoPlaylist'
3504 summary: Update a video playlist
3505 description: 'If the video playlist is set as public, the playlist must have a assigned channel.'
3512 description: successful operation
3514 - $ref: '#/components/parameters/playlistId'
3517 multipart/form-data:
3522 description: Video playlist display name
3527 description: Video playlist thumbnail file
3531 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
3533 description: Video playlist description
3537 - $ref: '#/components/schemas/id'
3538 description: Video channel in which the playlist will be published
3541 contentType: image/jpeg
3543 summary: Delete a video playlist
3549 - $ref: '#/components/parameters/playlistId'
3552 description: successful operation
3554 /video-playlists/{playlistId}/videos:
3556 summary: 'List videos of a playlist'
3557 operationId: getVideoPlaylistVideos
3562 - $ref: '#/components/parameters/playlistId'
3563 - $ref: '#/components/parameters/start'
3564 - $ref: '#/components/parameters/count'
3567 description: successful operation
3571 $ref: '#/components/schemas/VideoListResponse'
3573 summary: Add a video in a playlist
3574 operationId: addVideoPlaylistVideo
3581 - $ref: '#/components/parameters/playlistId'
3584 description: successful operation
3590 videoPlaylistElement:
3604 - $ref: '#/components/schemas/Video/properties/uuid'
3605 - $ref: '#/components/schemas/Video/properties/id'
3606 description: Video to add in the playlist
3610 description: Start the video at this specific timestamp
3614 description: Stop the video at this specific timestamp
3618 /video-playlists/{playlistId}/videos/reorder:
3620 summary: 'Reorder a playlist'
3621 operationId: reorderVideoPlaylist
3627 - $ref: '#/components/parameters/playlistId'
3630 description: successful operation
3639 description: 'Start position of the element to reorder'
3641 insertAfterPosition:
3643 description: 'New position for the block to reorder, to add the block before the first element'
3647 description: 'How many element from `startPosition` to reorder'
3651 - insertAfterPosition
3653 /video-playlists/{playlistId}/videos/{playlistElementId}:
3655 summary: Update a playlist element
3656 operationId: putVideoPlaylistVideo
3662 - $ref: '#/components/parameters/playlistId'
3663 - $ref: '#/components/parameters/playlistElementId'
3666 description: successful operation
3676 description: Start the video at this specific timestamp
3680 description: Stop the video at this specific timestamp
3682 summary: Delete an element from a playlist
3683 operationId: delVideoPlaylistVideo
3689 - $ref: '#/components/parameters/playlistId'
3690 - $ref: '#/components/parameters/playlistElementId'
3693 description: successful operation
3695 '/users/me/video-playlists/videos-exist':
3697 summary: Check video exists in my playlists
3706 description: The video ids to check
3710 $ref: '#/components/schemas/Video/properties/id'
3713 description: successful operation
3735 '/accounts/{name}/video-channels':
3737 summary: List video channels of an account
3742 - $ref: '#/components/parameters/name'
3745 description: include daily view statistics for the last 30 days and total views (only if authentified as the account user)
3748 - $ref: '#/components/parameters/start'
3749 - $ref: '#/components/parameters/count'
3750 - $ref: '#/components/parameters/sort'
3753 description: successful operation
3757 $ref: '#/components/schemas/VideoChannelList'
3759 '/accounts/{name}/video-channel-syncs':
3761 summary: List the synchronizations of video channels of an account
3767 - $ref: '#/components/parameters/name'
3768 - $ref: '#/components/parameters/start'
3769 - $ref: '#/components/parameters/count'
3770 - $ref: '#/components/parameters/sort'
3773 description: successful operation
3777 $ref: '#/components/schemas/VideoChannelSyncList'
3779 '/accounts/{name}/ratings':
3781 summary: List ratings of an account
3787 - $ref: '#/components/parameters/name'
3788 - $ref: '#/components/parameters/start'
3789 - $ref: '#/components/parameters/count'
3790 - $ref: '#/components/parameters/sort'
3794 description: Optionally filter which ratings to retrieve
3802 description: successful operation
3808 $ref: '#/components/schemas/VideoRating'
3810 '/videos/{id}/comment-threads':
3812 summary: List threads of a video
3816 - $ref: '#/components/parameters/idOrUUID'
3817 - $ref: '#/components/parameters/start'
3818 - $ref: '#/components/parameters/count'
3819 - $ref: '#/components/parameters/commentsSort'
3822 description: successful operation
3826 $ref: '#/components/schemas/CommentThreadResponse'
3828 summary: Create a thread
3834 - $ref: '#/components/parameters/idOrUUID'
3837 description: successful operation
3841 $ref: '#/components/schemas/CommentThreadPostResponse'
3843 description: video does not exist
3852 - $ref: '#/components/schemas/VideoComment/properties/text'
3858 '/videos/{id}/comment-threads/{threadId}':
3860 summary: Get a thread
3864 - $ref: '#/components/parameters/idOrUUID'
3865 - $ref: '#/components/parameters/threadId'
3868 description: successful operation
3872 $ref: '#/components/schemas/VideoCommentThreadTree'
3874 '/videos/{id}/comments/{commentId}':
3876 summary: Reply to a thread of a video
3882 - $ref: '#/components/parameters/idOrUUID'
3883 - $ref: '#/components/parameters/commentId'
3886 description: successful operation
3890 $ref: '#/components/schemas/CommentThreadPostResponse'
3892 description: thread or video does not exist
3901 - $ref: '#/components/schemas/VideoComment/properties/text'
3907 summary: Delete a comment or a reply
3913 - $ref: '#/components/parameters/idOrUUID'
3914 - $ref: '#/components/parameters/commentId'
3917 description: successful operation
3919 description: cannot remove comment of another user
3921 description: comment or video does not exist
3923 description: comment is already deleted
3925 '/videos/{id}/rate':
3927 summary: Like/dislike a video
3933 - $ref: '#/components/parameters/idOrUUID'
3949 description: successful operation
3951 description: video does not exist
3955 summary: Delete video HLS files
3961 operationId: delVideoHLS
3963 - $ref: '#/components/parameters/idOrUUID'
3966 description: successful operation
3968 description: video does not exist
3969 '/videos/{id}/webtorrent':
3971 summary: Delete video WebTorrent files
3977 operationId: delVideoWebTorrent
3979 - $ref: '#/components/parameters/idOrUUID'
3982 description: successful operation
3984 description: video does not exist
3986 '/videos/{id}/transcoding':
3988 summary: Create a transcoding job
3994 operationId: createVideoTranscoding
3996 - $ref: '#/components/parameters/idOrUUID'
4012 description: successful operation
4014 description: video does not exist
4020 summary: Search videos
4021 operationId: searchVideos
4026 allowEmptyValue: false
4028 String to search. If the user can make a remote URI search, and the string is an URI then the
4029 PeerTube instance will fetch the remote object and add it to its database. Then,
4030 you can use the REST API to fetch the complete video information and interact with it.
4033 - $ref: '#/components/parameters/categoryOneOf'
4034 - $ref: '#/components/parameters/isLive'
4035 - $ref: '#/components/parameters/tagsOneOf'
4036 - $ref: '#/components/parameters/tagsAllOf'
4037 - $ref: '#/components/parameters/licenceOneOf'
4038 - $ref: '#/components/parameters/languageOneOf'
4039 - $ref: '#/components/parameters/nsfw'
4040 - $ref: '#/components/parameters/isLocal'
4041 - $ref: '#/components/parameters/include'
4042 - $ref: '#/components/parameters/privacyOneOf'
4043 - $ref: '#/components/parameters/hasHLSFiles'
4044 - $ref: '#/components/parameters/hasWebtorrentFiles'
4045 - $ref: '#/components/parameters/skipCount'
4046 - $ref: '#/components/parameters/start'
4047 - $ref: '#/components/parameters/count'
4048 - $ref: '#/components/parameters/searchTarget'
4049 - $ref: '#/components/parameters/videosSearchSort'
4052 description: Get videos that are published after this date
4058 description: Get videos that are published before this date
4062 - name: originallyPublishedStartDate
4064 description: Get videos that are originally published after this date
4068 - name: originallyPublishedEndDate
4070 description: Get videos that are originally published before this date
4076 description: Get videos that have this minimum duration
4081 description: Get videos that have this maximum duration
4085 'searchTarget === search-index':
4086 $ref: '#/components/callbacks/searchIndex'
4089 description: successful operation
4093 $ref: '#/components/schemas/VideoListResponse'
4095 description: search index unavailable
4097 /search/video-channels:
4101 summary: Search channels
4102 operationId: searchChannels
4108 String to search. If the user can make a remote URI search, and the string is an URI then the
4109 PeerTube instance will fetch the remote object and add it to its database. Then,
4110 you can use the REST API to fetch the complete channel information and interact with it.
4113 - $ref: '#/components/parameters/start'
4114 - $ref: '#/components/parameters/count'
4115 - $ref: '#/components/parameters/searchTarget'
4116 - $ref: '#/components/parameters/sort'
4118 'searchTarget === search-index':
4119 $ref: '#/components/callbacks/searchIndex'
4122 description: successful operation
4126 $ref: '#/components/schemas/VideoChannelList'
4128 description: search index unavailable
4130 /search/video-playlists:
4134 summary: Search playlists
4135 operationId: searchPlaylists
4141 String to search. If the user can make a remote URI search, and the string is an URI then the
4142 PeerTube instance will fetch the remote object and add it to its database. Then,
4143 you can use the REST API to fetch the complete playlist information and interact with it.
4146 - $ref: '#/components/parameters/start'
4147 - $ref: '#/components/parameters/count'
4148 - $ref: '#/components/parameters/searchTarget'
4149 - $ref: '#/components/parameters/sort'
4151 'searchTarget === search-index':
4152 $ref: '#/components/callbacks/searchIndex'
4155 description: successful operation
4167 $ref: '#/components/schemas/VideoPlaylist'
4169 description: search index unavailable
4176 summary: Get block status of accounts/hosts
4181 description: 'Check if these accounts are blocked'
4182 example: [ 'goofy@example.com', 'donald@example.com' ]
4190 description: 'Check if these hosts are blocked'
4191 example: [ 'example.com' ]
4198 description: successful operation
4202 $ref: '#/components/schemas/BlockStatus'
4204 /server/blocklist/accounts:
4208 summary: List account blocks
4213 - $ref: '#/components/parameters/start'
4214 - $ref: '#/components/parameters/count'
4215 - $ref: '#/components/parameters/sort'
4218 description: successful operation
4222 summary: Block an account
4234 example: chocobozzz@example.org
4235 description: account to block, in the form `username@domain`
4240 description: successful operation
4242 description: self-blocking forbidden
4244 '/server/blocklist/accounts/{accountName}':
4248 summary: Unblock an account by its handle
4256 description: account to unblock, in the form `username@domain`
4261 description: successful operation
4263 description: account or account block does not exist
4265 /server/blocklist/servers:
4269 summary: List server blocks
4274 - $ref: '#/components/parameters/start'
4275 - $ref: '#/components/parameters/count'
4276 - $ref: '#/components/parameters/sort'
4279 description: successful operation
4283 summary: Block a server
4296 description: server domain to block
4301 description: successful operation
4303 description: self-blocking forbidden
4305 '/server/blocklist/servers/{host}':
4309 summary: Unblock a server by its domain
4317 description: server domain to unblock
4323 description: successful operation
4325 description: account block does not exist
4327 /server/redundancy/{host}:
4330 - Instance Redundancy
4331 summary: Update a server redundancy policy
4339 description: server domain to mirror
4351 description: allow mirroring of the host's local videos
4356 description: successful operation
4358 description: server is not already known
4360 /server/redundancy/videos:
4364 summary: List videos being mirrored
4365 operationId: getMirroredVideos
4373 description: direction of the mirror
4379 - $ref: '#/components/parameters/start'
4380 - $ref: '#/components/parameters/count'
4381 - $ref: '#/components/parameters/videoRedundanciesSort'
4384 description: successful operation
4390 $ref: '#/components/schemas/VideoRedundancy'
4394 summary: Mirror a video
4395 operationId: putMirroredVideo
4406 $ref: '#/components/schemas/Video/properties/id'
4411 description: successful operation
4413 description: cannot mirror a local video
4415 description: video does not exist
4417 description: video is already mirrored
4419 /server/redundancy/videos/{redundancyId}:
4423 summary: Delete a mirror done on a video
4424 operationId: delMirroredVideo
4429 - name: redundancyId
4432 description: id of an existing redundancy on a video
4437 description: successful operation
4439 description: video redundancy not found
4445 summary: Get instance stats
4446 description: Get instance public statistics. This endpoint is cached.
4447 operationId: getInstanceStats
4450 description: successful operation
4454 $ref: '#/components/schemas/ServerStats'
4456 /server/logs/client:
4460 summary: Send client log
4461 operationId: sendClientLog
4466 $ref: '#/components/schemas/SendClientLog'
4469 description: successful operation
4475 summary: Get instance logs
4476 operationId: getInstanceLogs
4482 description: successful operation
4494 summary: Get instance audit logs
4495 operationId: getInstanceAuditLogs
4501 description: successful operation
4509 '/feeds/video-comments.{format}':
4513 summary: List comments on videos
4514 operationId: getSyndicatedComments
4519 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4532 description: 'limit listing to a specific video'
4537 description: 'limit listing to a specific account'
4542 description: 'limit listing to a specific account'
4545 - name: videoChannelId
4547 description: 'limit listing to a specific video channel'
4550 - name: videoChannelName
4552 description: 'limit listing to a specific video channel'
4557 description: successful operation
4562 default: 'max-age=900' # 15 min cache
4566 $ref: '#/components/schemas/VideoCommentsForXML'
4569 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4570 application/rss+xml:
4572 $ref: '#/components/schemas/VideoCommentsForXML'
4575 externalValue: https://peertube2.cpy.re/feeds/video-comments.rss?filter=local
4578 $ref: '#/components/schemas/VideoCommentsForXML'
4581 externalValue: https://peertube2.cpy.re/feeds/video-comments.xml?filter=local
4582 application/atom+xml:
4584 $ref: '#/components/schemas/VideoCommentsForXML'
4587 externalValue: https://peertube2.cpy.re/feeds/video-comments.atom?filter=local
4593 externalValue: https://peertube2.cpy.re/feeds/video-comments.json?filter=local
4595 x-summary: field inconsistencies
4598 - videoId filter is mixed with a channel filter
4600 description: video, video channel or account not found
4602 description: accept header unsupported
4604 '/feeds/videos.{format}':
4608 summary: List videos
4609 operationId: getSyndicatedVideos
4614 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4627 description: 'limit listing to a specific account'
4632 description: 'limit listing to a specific account'
4635 - name: videoChannelId
4637 description: 'limit listing to a specific video channel'
4640 - name: videoChannelName
4642 description: 'limit listing to a specific video channel'
4645 - $ref: '#/components/parameters/sort'
4646 - $ref: '#/components/parameters/nsfw'
4647 - $ref: '#/components/parameters/isLocal'
4648 - $ref: '#/components/parameters/include'
4649 - $ref: '#/components/parameters/privacyOneOf'
4650 - $ref: '#/components/parameters/hasHLSFiles'
4651 - $ref: '#/components/parameters/hasWebtorrentFiles'
4654 description: successful operation
4659 default: 'max-age=900' # 15 min cache
4663 $ref: '#/components/schemas/VideosForXML'
4666 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4667 application/rss+xml:
4669 $ref: '#/components/schemas/VideosForXML'
4672 externalValue: https://peertube2.cpy.re/feeds/videos.rss?filter=local
4675 $ref: '#/components/schemas/VideosForXML'
4678 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
4679 application/atom+xml:
4681 $ref: '#/components/schemas/VideosForXML'
4684 externalValue: https://peertube2.cpy.re/feeds/videos.atom?filter=local
4690 externalValue: https://peertube2.cpy.re/feeds/videos.json?filter=local
4692 description: video channel or account not found
4694 description: accept header unsupported
4696 '/feeds/subscriptions.{format}':
4701 summary: List videos of subscriptions tied to a token
4702 operationId: getSyndicatedSubscriptionVideos
4707 description: 'format expected (we focus on making `rss` the most featureful ; it serves [Media RSS](https://www.rssboard.org/media-rss))'
4720 description: limit listing to a specific account
4726 description: private token allowing access
4730 - $ref: '#/components/parameters/sort'
4731 - $ref: '#/components/parameters/nsfw'
4732 - $ref: '#/components/parameters/isLocal'
4733 - $ref: '#/components/parameters/include'
4734 - $ref: '#/components/parameters/privacyOneOf'
4735 - $ref: '#/components/parameters/hasHLSFiles'
4736 - $ref: '#/components/parameters/hasWebtorrentFiles'
4739 description: successful operation
4744 default: 'max-age=900' # 15 min cache
4748 $ref: '#/components/schemas/VideosForXML'
4749 application/rss+xml:
4751 $ref: '#/components/schemas/VideosForXML'
4754 $ref: '#/components/schemas/VideosForXML'
4755 application/atom+xml:
4757 $ref: '#/components/schemas/VideosForXML'
4762 description: accept header unsupported
4768 summary: List plugins
4769 operationId: getPlugins
4782 - $ref: '#/components/parameters/start'
4783 - $ref: '#/components/parameters/count'
4784 - $ref: '#/components/parameters/sort'
4787 description: successful operation
4791 $ref: '#/components/schemas/PluginResponse'
4797 summary: List available plugins
4798 operationId: getAvailablePlugins
4811 - name: currentPeerTubeEngine
4815 - $ref: '#/components/parameters/start'
4816 - $ref: '#/components/parameters/count'
4817 - $ref: '#/components/parameters/sort'
4820 description: successful operation
4824 $ref: '#/components/schemas/PluginResponse'
4826 description: plugin index unavailable
4832 summary: Install a plugin
4833 operationId: addPlugin
4846 example: peertube-plugin-auth-ldap
4849 additionalProperties: false
4856 additionalProperties: false
4859 description: successful operation
4861 description: should have either `npmName` or `path` set
4867 summary: Update a plugin
4868 operationId: updatePlugin
4881 example: peertube-plugin-auth-ldap
4884 additionalProperties: false
4891 additionalProperties: false
4894 description: successful operation
4896 description: should have either `npmName` or `path` set
4898 description: existing plugin not found
4904 summary: Uninstall a plugin
4905 operationId: uninstallPlugin
4917 description: name of the plugin/theme in its package.json
4918 example: peertube-plugin-auth-ldap
4923 description: successful operation
4925 description: existing plugin not found
4931 summary: Get a plugin
4932 operationId: getPlugin
4937 - $ref: '#/components/parameters/npmName'
4940 description: successful operation
4944 $ref: '#/components/schemas/Plugin'
4946 description: plugin not found
4948 /plugins/{npmName}/settings:
4952 summary: Set a plugin's settings
4957 - $ref: '#/components/parameters/npmName'
4966 additionalProperties: true
4969 description: successful operation
4971 description: plugin not found
4973 /plugins/{npmName}/public-settings:
4977 summary: Get a plugin's public settings
4979 - $ref: '#/components/parameters/npmName'
4982 description: successful operation
4987 additionalProperties: true
4989 description: plugin not found
4991 /plugins/{npmName}/registered-settings:
4995 summary: Get a plugin's registered settings
5000 - $ref: '#/components/parameters/npmName'
5003 description: successful operation
5008 additionalProperties: true
5010 description: plugin not found
5013 - url: 'https://peertube2.cpy.re/api/v1'
5014 description: Live Test Server (live data - latest nightly version)
5015 - url: 'https://peertube3.cpy.re/api/v1'
5016 description: Live Test Server (live data - latest RC version)
5017 - url: 'https://peertube.cpy.re/api/v1'
5018 description: Live Test Server (live data - stable version)
5025 description: Offset used to paginate results
5033 description: "Number of items to return"
5043 description: Sort column
5051 description: Plain text search, applied to various parts of the model depending on endpoint
5059 If the administrator enabled search index support, you can override the default search target.
5062 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
5063 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
5064 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
5065 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
5066 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
5067 * 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
5068 the data from the origin instance API
5091 Sort videos by criteria (prefixing with `-` means `DESC` order):
5092 * `hot` - Adaptation of Reddit "hot" algorithm taking into account video views, likes, dislikes and comments and publication date
5093 * `best` - Same than `hot`, but also takes into account user video history
5094 * `trending` - Sort videos by recent views ("recent" is defined by the admin)
5095 * `views` - Sort videos using their `views` counter
5096 * `publishedAt` - Sort by video publication date (when it became publicly available)
5102 Sort videos by criteria (prefixing with `-` means `DESC` order):
5117 description: Sort comments by criteria
5127 description: Sort blocklists by criteria
5143 description: Plain text search that will match with user usernames or emails
5150 description: Filter results down to (un)banned users
5157 description: Sort users by criteria
5168 description: Sort abuses by criteria
5175 videoRedundanciesSort:
5179 description: Sort abuses by criteria
5188 description: Sort followers by criteria
5197 description: The username or handle of the account
5200 example: chocobozzz | chocobozzz@example.org
5205 description: Entity id
5207 $ref: '#/components/schemas/id'
5212 description: The object id, uuid or short uuid
5215 - $ref: '#/components/schemas/id'
5216 - $ref: '#/components/schemas/UUIDv4'
5217 - $ref: '#/components/schemas/shortUUID'
5222 description: Playlist id
5224 $ref: '#/components/schemas/VideoPlaylist/properties/id'
5226 name: playlistElementId
5229 description: Playlist element id
5231 $ref: '#/components/schemas/id'
5236 description: Abuse id
5238 $ref: '#/components/schemas/Abuse/properties/id'
5240 name: abuseMessageId
5243 description: Abuse message id
5245 $ref: '#/components/schemas/AbuseMessage/properties/id'
5247 name: captionLanguage
5250 description: The caption language
5252 $ref: '#/components/schemas/VideoLanguageSet'
5257 description: The video channel handle
5260 example: my_username | my_username@example.com
5265 description: Channel Sync id
5267 $ref: '#/components/schemas/Abuse/properties/id'
5269 name: subscriptionHandle
5272 description: The subscription handle
5275 example: my_username | my_username@example.com
5280 description: The thread id (root comment id)
5287 description: The comment id
5289 $ref: '#/components/schemas/VideoComment/properties/id'
5294 description: whether or not the video is a live
5301 description: category id of the video (see [/videos/categories](#operation/getCategories))
5304 - $ref: '#/components/schemas/VideoCategorySet'
5307 $ref: '#/components/schemas/VideoCategorySet'
5314 description: tag(s) of the video
5328 description: tag(s) of the video, where all should be present in the video
5341 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
5344 - $ref: '#/components/schemas/VideoLanguageSet'
5347 $ref: '#/components/schemas/VideoLanguageSet'
5354 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5357 - $ref: '#/components/schemas/VideoLicenceSet'
5360 $ref: '#/components/schemas/VideoLicenceSet'
5367 description: if you don't need the `total` in the response
5378 description: whether to include nsfw videos, if any
5390 description: '**PeerTube >= 4.0** Display only local or remote videos'
5397 description: '**PeerTube >= 4.0** Display only videos that have HLS files'
5399 name: hasWebtorrentFiles
5404 description: '**PeerTube >= 4.0** Display only videos that have WebTorrent files'
5410 $ref: '#/components/schemas/VideoPrivacySet'
5411 description: '**PeerTube >= 4.0** Display only videos in this specific privacy/privacies'
5425 **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator)
5429 - `1` NOT_PUBLISHED_STATE
5440 description: list of uris to check if each is part of the user subscriptions
5450 description: name of the plugin/theme on npmjs.com or in its package.json
5453 example: peertube-plugin-auth-ldap
5458 description: job type
5462 - activitypub-follow
5463 - activitypub-http-broadcast
5464 - activitypub-http-fetcher
5465 - activitypub-http-unicast
5470 - videos-views-stats
5471 - activitypub-refresher
5474 - video-channel-import
5497 Authenticating via OAuth requires the following steps:
5498 - Have an activated account
5499 - [Generate] an access token for that account at `/api/v1/users/token`.
5500 - Make requests with the *Authorization: Bearer <token\>* header
5501 - Profit, depending on the role assigned to the account
5503 Note that the __access token is valid for 1 day__ and is given
5504 along with a __refresh token valid for 2 weeks__.
5506 [Generate]: https://docs.joinpeertube.org/api-rest-getting-started
5510 tokenUrl: /api/v1/users/token
5513 moderator: Moderator scope
5516 # Reusable core properties
5524 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
5525 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
5530 description: translation of a uuid v4 with a bigger alphabet to have a shorter uuid
5531 example: 2y84q2MQUMWPbiEcxNXMgC
5534 description: immutable name of the user, used to find or mention its actor
5536 pattern: '/^[a-z0-9._]+$/'
5541 description: immutable name of the channel, used to interact with its actor
5542 example: framasoft_videos
5543 pattern: '/^[a-zA-Z0-9\\-_.:]+$/'
5554 description: category id of the video (see [/videos/categories](#operation/getCategories))
5556 VideoConstantNumber-Category:
5559 $ref: '#/components/schemas/VideoCategorySet'
5562 example: Science & Technology
5566 description: licence id of the video (see [/videos/licences](#operation/getLicences))
5568 VideoConstantNumber-Licence:
5571 $ref: '#/components/schemas/VideoLicenceSet'
5574 example: Attribution - Share Alike
5578 description: language id of the video (see [/videos/languages](#operation/getLanguages))
5580 VideoConstantString-Language:
5583 $ref: '#/components/schemas/VideoLanguageSet'
5588 VideoPlaylistPrivacySet:
5594 description: Video playlist privacy policy (see [/video-playlists/privacies])
5595 VideoPlaylistPrivacyConstant:
5598 $ref: '#/components/schemas/VideoPlaylistPrivacySet'
5602 VideoPlaylistTypeSet:
5607 description: The video playlist type (Regular = `1`, Watch Later = `2`)
5608 VideoPlaylistTypeConstant:
5611 $ref: '#/components/schemas/VideoPlaylistTypeSet'
5622 description: privacy id of the video (see [/videos/privacies](#operation/getPrivacyPolicies))
5623 VideoPrivacyConstant:
5626 $ref: '#/components/schemas/VideoPrivacySet'
5634 additionalProperties:
5635 x-additionalPropertiesName: account
5644 additionalProperties:
5645 x-additionalPropertiesName: host
5666 description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
5673 description: 'Admin flags for the user (None = `0`, Bypass video blocklist = `1`)'
5676 LiveVideoLatencyMode:
5682 description: 'The live latency mode (Default = `1`, High latency = `2`, Small Latency = `3`)'
5703 - `4`: Waiting for live stream
5705 - `6`: To move to an external storage (object storage...)
5706 - `7`: Transcoding failed
5707 - `8`: Moving to an external storage failed
5708 - `9`: To edit using studio edition feature
5718 description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
5722 $ref: '#/components/schemas/AbuseStateSet'
5725 AbusePredefinedReasons:
5738 example: [spamOrMisleading]
5743 Video resolution (`0`, `240`, `360`, `720`, `1080`, `1440` or `2160`)
5745 `0` is used as a special value for stillimage videos dedicated to audio, a.k.a. audio-only videos.
5747 VideoResolutionConstant:
5748 description: resolutions and their labels for the video
5751 $ref: '#/components/schemas/VideoResolutionSet'
5755 VideoScheduledUpdate:
5758 $ref: '#/components/schemas/VideoPrivacySet'
5762 description: When to update the video
5782 $ref: '#/components/schemas/ActorImage'
5783 VideoChannelSummary:
5786 $ref: '#/components/schemas/id'
5800 $ref: '#/components/schemas/ActorImage'
5814 - $ref: '#/components/schemas/Video'
5819 $ref: '#/components/schemas/id'
5823 description: magnet URI allowing to resolve the video via BitTorrent without a metainfo file
5824 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
5826 $ref: '#/components/schemas/VideoResolutionConstant'
5829 description: Video file size in bytes
5832 description: Direct URL of the torrent file
5836 description: URL endpoint that transfers the torrent file as an attachment (so that the browser opens a download dialog)
5840 description: Direct URL of the video
5844 description: URL endpoint that transfers the video file as an attachment (so that the browser opens a download dialog)
5848 description: Frames per second of the video file
5852 description: URL dereferencing the output of ffprobe on the file
5853 VideoStreamingPlaylists:
5858 $ref: '#/components/schemas/id'
5866 - $ref: '#/components/schemas/VideoStreamingPlaylists-HLS'
5867 VideoStreamingPlaylists-HLS:
5878 Video files associated to this playlist.
5880 The difference with the root `files` property is that these files are fragmented, so they can be used in this streaming playlist (HLS, etc.)
5882 $ref: '#/components/schemas/VideoFile'
5894 $ref: '#/components/schemas/Video/properties/id'
5896 $ref: '#/components/schemas/Video/properties/uuid'
5898 $ref: '#/components/schemas/Video/properties/name'
5902 description: object id for the video
5904 - $ref: '#/components/schemas/id'
5906 description: universal identifier for the video, that can be used across instances
5908 - $ref: '#/components/schemas/UUIDv4'
5911 - $ref: '#/components/schemas/shortUUID'
5917 example: 2017-10-01T10:52:46.396Z
5918 description: time at which the video object was first drafted
5922 example: 2018-10-01T10:52:46.396Z
5923 description: time at which the video was marked as ready for playback (with restrictions depending on `privacy`). Usually set after a `state` evolution.
5927 example: 2021-05-04T08:01:01.502Z
5928 description: last time the video's metadata was modified
5929 originallyPublishedAt:
5932 example: 2010-10-01T10:52:46.396Z
5933 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
5936 - $ref: '#/components/schemas/VideoConstantNumber-Category'
5937 description: category in which the video is classified
5940 - $ref: '#/components/schemas/VideoConstantNumber-Licence'
5941 description: licence under which the video is distributed
5944 - $ref: '#/components/schemas/VideoConstantString-Language'
5945 description: main language used in the video
5948 - $ref: '#/components/schemas/VideoPrivacyConstant'
5949 description: privacy policy used to distribute the video
5953 **[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n
5954 **Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\r\n*A decentralized video hosting network, based on fr...
5958 truncated description of the video, written in Markdown.
5959 Resolve `descriptionPath` to get the full description of maximum `10000` characters.
5964 description: duration of the video in seconds
5969 description: title of the video
5970 example: What is PeerTube?
5975 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
5978 example: /lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
5981 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
5998 - $ref: '#/components/schemas/VideoStateConstant'
5999 description: represents the internal state of the video processing within the PeerTube instance
6003 - $ref: '#/components/schemas/VideoScheduledUpdate'
6011 $ref: '#/components/schemas/AccountSummary'
6013 $ref: '#/components/schemas/VideoChannelSummary'
6022 - $ref: '#/components/schemas/Video'
6027 description: If the video is a live, you have the amount of current viewers
6030 example: /api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/description
6031 description: path at which to get the full description of maximum `10000` characters
6034 description: A text tell the audience how to support the video creator
6035 example: Please support our work on https://soutenir.framasoft.org/en/ <3
6039 $ref: '#/components/schemas/VideoChannel'
6041 $ref: '#/components/schemas/Account'
6043 example: [flowers, gardening]
6061 - https://peertube2.cpy.re/tracker/announce
6062 - wss://peertube2.cpy.re/tracker/socket
6066 $ref: '#/components/schemas/VideoFile'
6068 WebTorrent/raw video files. If WebTorrent is disabled on the server:
6070 - field will be empty
6071 - video files will be found in `streamingPlaylists[].files` field
6075 $ref: '#/components/schemas/VideoStreamingPlaylists'
6077 HLS playlists/manifest files. If HLS is disabled on the server:
6079 - field will be empty
6080 - video files will be found in `files` field
6081 FileRedundancyInformation:
6084 $ref: '#/components/schemas/id'
6109 $ref: '#/components/schemas/id'
6116 $ref: '#/components/schemas/UUIDv4'
6123 $ref: '#/components/schemas/FileRedundancyInformation'
6127 $ref: '#/components/schemas/FileRedundancyInformation'
6128 VideoImportStateConstant:
6136 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
6143 additionalProperties: false
6147 $ref: '#/components/schemas/VideoImport/properties/targetUrl'
6148 required: [targetUrl]
6151 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
6152 required: [magnetUri]
6155 $ref: '#/components/schemas/VideoImport/properties/torrentfile'
6156 required: [torrentfile]
6157 - $ref: '#/components/schemas/VideoUploadRequestCommon'
6166 - $ref: '#/components/schemas/id'
6170 description: remote URL where to find the import's source video
6171 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
6175 description: magnet URI allowing to resolve the import's source video
6176 pattern: /magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i
6181 description: Torrent file containing only the video file
6188 - $ref: '#/components/schemas/VideoImportStateConstant'
6204 - $ref: '#/components/schemas/Video'
6214 $ref: '#/components/schemas/VideoImport'
6218 $ref: '#/components/schemas/id'
6221 example: The video is a spam
6225 $ref: '#/components/schemas/AbusePredefinedReasons'
6227 $ref: '#/components/schemas/Account'
6229 $ref: '#/components/schemas/AbuseStateConstant'
6232 example: Decided to ban the server since it spams us regularly
6236 $ref: '#/components/schemas/VideoInfo'
6243 $ref: '#/components/schemas/id'
6254 $ref: '#/components/schemas/AccountSummary'
6258 $ref: '#/components/schemas/id'
6260 $ref: '#/components/schemas/Video/properties/id'
6272 $ref: '#/components/schemas/UUIDv4'
6290 $ref: '#/components/schemas/id'
6292 $ref: '#/components/schemas/UUIDv4'
6295 - $ref: '#/components/schemas/shortUUID'
6318 $ref: '#/components/schemas/VideoPlaylistPrivacyConstant'
6320 $ref: '#/components/schemas/VideoPlaylistTypeConstant'
6322 $ref: '#/components/schemas/AccountSummary'
6324 $ref: '#/components/schemas/VideoChannelSummary'
6328 $ref: '#/components/schemas/id'
6335 description: Text of the comment
6337 example: This video is wonderful!
6339 $ref: '#/components/schemas/id'
6343 - $ref: '#/components/schemas/id'
6345 $ref: '#/components/schemas/Video/properties/id'
6360 totalRepliesFromVideoAuthor:
6367 $ref: '#/components/schemas/Account'
6368 VideoCommentThreadTree:
6371 $ref: '#/components/schemas/VideoComment'
6375 $ref: '#/components/schemas/VideoCommentThreadTree'
6379 $ref: '#/components/schemas/VideoConstantString-Language'
6401 $ref: '#/components/schemas/id'
6412 $ref: '#/components/schemas/ActorImage'
6416 $ref: '#/components/schemas/id'
6421 description: immutable name of the actor, used to find or mention it
6423 - $ref: '#/components/schemas/username'
6427 description: server on which the actor is resident
6428 hostRedundancyAllowed:
6430 description: whether this actor's host allows redundancy of its videos
6434 description: number of actors subscribed to by this actor, as seen by this instance
6438 description: number of followers of this actor, as seen by this instance
6447 - $ref: '#/components/schemas/Actor'
6450 description: object id for the user tied to this account
6452 - $ref: '#/components/schemas/User/properties/id'
6455 description: editable name of the account, displayed in its representations
6460 description: text or bio displayed on the account's profile
6468 description: timestamp within the video, in seconds
6475 Event since last viewing call:
6476 * `seek` - If the user seeked the video
6499 VideoStatsRetention:
6511 VideoStatsTimeserie:
6588 allowedForCurrentIP:
6590 requiresEmailVerification:
6608 $ref: '#/components/schemas/VideoResolutionSet'
6625 videoChannelSynchronization:
6698 example: 16810141515
6739 description: URL of the current user page
6746 description: Stack trace of the error if there is one
6749 description: User agent of the web browser that sends the message
6752 description: Additional information regarding this log
6762 totalDailyActiveUsers:
6764 totalWeeklyActiveUsers:
6766 totalMonthlyActiveUsers:
6770 totalLocalVideoViews:
6772 description: Total video views made on the instance
6773 totalLocalVideoComments:
6775 description: Total comments made by local users
6776 totalLocalVideoFilesSize:
6782 totalLocalVideoChannels:
6784 totalLocalDailyActiveVideoChannels:
6786 totalLocalWeeklyActiveVideoChannels:
6788 totalLocalMonthlyActiveVideoChannels:
6790 totalLocalPlaylists:
6792 totalInstanceFollowers:
6794 totalInstanceFollowing:
6811 totalActivityPubMessagesProcessed:
6813 totalActivityPubMessagesSuccesses:
6815 totalActivityPubMessagesErrors:
6818 activityPubMessagesProcessedPerSecond:
6820 totalActivityPubMessagesWaiting:
6897 requiresEmailVerification:
6912 description: Settings that apply to new users, if registration is enabled
6916 example: 16810141515
6922 description: Settings pertaining to transcoding jobs
6926 allowAdditionalExtensions:
6928 description: Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
6931 description: If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
6934 description: Amount of threads used by ffmpeg for 1 transcoding job
6937 description: Amount of transcoding jobs to execute in parallel
6943 New profiles can be added by plugins ; available in core PeerTube: 'default'.
6946 description: Resolutions to transcode _new videos_ to
6968 description: WebTorrent-specific settings
6974 description: HLS-specific settings
6994 video_channel_synchronization:
7029 $ref: '#/components/schemas/id'
7031 $ref: '#/components/schemas/Actor'
7033 $ref: '#/components/schemas/Actor'
7036 description: score reflecting the reachability of the actor, with steps of `10` and a base score of `1000`.
7049 PredefinedAbuseReasons:
7050 description: Reason categories that help triage reports
7068 $ref: '#/components/schemas/id'
7080 - activitypub-http-unicast
7081 - activitypub-http-broadcast
7082 - activitypub-http-fetcher
7083 - activitypub-follow
7088 - videos-views-stats
7089 - activitypub-refresher
7091 - video-channel-import
7094 additionalProperties: true
7097 additionalProperties: true
7113 $ref: '#/components/schemas/id'
7118 $ref: '#/components/schemas/id'
7119 VideoUploadRequestCommon:
7122 description: Video name
7124 example: What is PeerTube?
7128 description: Channel id that will contain this video
7133 $ref: '#/components/schemas/VideoPrivacySet'
7135 $ref: '#/components/schemas/VideoCategorySet'
7137 $ref: '#/components/schemas/VideoLicenceSet'
7139 $ref: '#/components/schemas/VideoLanguageSet'
7141 description: Video description
7144 **[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)**
7146 description: Whether or not we wait transcoding before publish the video
7149 description: A text tell the audience how to support the video creator
7150 example: Please support our work on https://soutenir.framasoft.org/en/ <3
7153 description: Whether or not this video contains sensitive content
7156 description: Video tags (maximum 5 tags each between 2 and 30 characters)
7169 description: Enable or disable comments for this video
7172 description: Enable or disable downloading for this video
7174 originallyPublishedAt:
7175 description: Date when the content was originally published
7179 $ref: '#/components/schemas/VideoScheduledUpdate'
7181 description: Video thumbnail file
7185 description: Video preview file
7191 VideoUploadRequestLegacy:
7193 - $ref: '#/components/schemas/VideoUploadRequestCommon'
7199 description: Video file
7202 VideoUploadRequestResumable:
7204 - $ref: '#/components/schemas/VideoUploadRequestCommon'
7210 description: Video filename including extension
7213 example: what_is_peertube.mp4
7215 description: Video thumbnail file
7219 description: Video preview file
7222 VideoUploadResponse:
7228 $ref: '#/components/schemas/Video/properties/id'
7230 $ref: '#/components/schemas/Video/properties/uuid'
7232 $ref: '#/components/schemas/Video/properties/shortUUID'
7233 CommentThreadResponse:
7242 $ref: '#/components/schemas/VideoComment'
7243 CommentThreadPostResponse:
7246 $ref: '#/components/schemas/VideoComment'
7256 $ref: '#/components/schemas/Video'
7260 $ref: '#/components/schemas/Account'
7263 description: Automatically start playing the upcoming video after the currently playing video
7264 autoPlayNextVideoPlaylist:
7266 description: Automatically start playing the video on the playlist after the currently playing video
7269 description: Automatically start playing the video on the watch page
7279 description: The user email
7282 description: Has the user confirmed their email address?
7285 - $ref: '#/components/schemas/id'
7289 description: Auth plugin to use to authenticate the user
7293 noInstanceConfigWarningModal:
7295 noAccountSetupWarningModal:
7300 $ref: '#/components/schemas/NSFWPolicy'
7302 $ref: '#/components/schemas/UserRole'
7311 description: Theme enabled by this user
7313 $ref: '#/components/schemas/username'
7317 $ref: '#/components/schemas/VideoChannel'
7320 description: The user video quota in bytes
7324 description: The user daily video quota in bytes
7328 description: Enable P2P in the player
7331 - $ref: '#/components/schemas/User'
7333 # optionally present fields: they require WITH_STATS scope
7336 description: Count of videos published
7339 description: Count of reports/abuses of which the user is a target
7340 abusesAcceptedCount:
7342 description: Count of reports/abuses created by the user and accepted/acted upon by the moderation team
7345 description: Count of reports/abuses created by the user
7348 description: Count of comments published
7352 $ref: '#/components/schemas/username'
7354 $ref: '#/components/schemas/password'
7358 description: The user email
7361 description: The user video quota in bytes
7365 description: The user daily video quota in bytes
7368 $ref: '#/components/schemas/usernameChannel'
7370 $ref: '#/components/schemas/UserRole'
7372 $ref: '#/components/schemas/UserAdminFlags'
7383 description: The updated email of the user
7385 - $ref: '#/components/schemas/User/properties/email'
7388 description: Set the email as verified
7391 description: The updated video quota of the user in bytes
7394 description: The updated daily video quota of the user in bytes
7398 description: The auth plugin to use to authenticate the user
7399 example: 'peertube-plugin-auth-saml2'
7401 $ref: '#/components/schemas/UserRole'
7403 $ref: '#/components/schemas/UserAdminFlags'
7405 $ref: '#/components/schemas/password'
7407 # see shared/models/users/user-update-me.model.ts:
7410 $ref: '#/components/schemas/password'
7412 $ref: '#/components/schemas/password'
7414 description: new email used for login and service communications
7416 - $ref: '#/components/schemas/User/properties/email'
7419 description: new name of the user in its representations
7424 description: new NSFW display policy
7431 description: whether to enable P2P in the player or not
7434 description: new preference regarding playing videos automatically
7437 description: new preference regarding playing following videos automatically
7438 autoPlayNextVideoPlaylist:
7440 description: new preference regarding playing following playlist videos automatically
7441 videosHistoryEnabled:
7443 description: whether to keep track of watched history or not
7448 description: list of languages to filter videos down to
7451 noInstanceConfigWarningModal:
7453 noAccountSetupWarningModal:
7460 $ref: '#/components/schemas/id'
7467 description: Rating of the video
7474 $ref: '#/components/schemas/Video'
7481 description: Rating of the video
7488 description: immutable name of the user, used to find or mention its actor
7490 - $ref: '#/components/schemas/username'
7492 $ref: '#/components/schemas/password'
7496 description: email of the user, used for login or service communications
7499 description: editable name of the user, displayed in its representations
7504 description: channel base information used to create the first channel of the user
7507 $ref: '#/components/schemas/usernameChannel'
7519 pattern: /^[a-z0-9]$/
7522 example: v1ikx5hnfop4mdpnci8nsqh93c45rldf
7525 pattern: /^[a-zA-Z0-9]$/
7528 example: AjWiOapPltI6EnsWQwlFarRtLh4u8tDt
7529 OAuthToken-password:
7531 - $ref: '#/components/schemas/OAuthClient'
7541 $ref: '#/components/schemas/User/properties/username'
7543 $ref: '#/components/schemas/password'
7550 OAuthToken-refresh_token:
7552 - $ref: '#/components/schemas/OAuthClient'
7563 example: 2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7
7572 - $ref: '#/components/schemas/Actor'
7577 description: editable name of the channel, displayed in its representations
7578 example: Videos of Framasoft
7583 example: Videos made with <3 by Framasoft
7588 description: text shown by default on all videos of this channel, to tell the audience how to support it
7589 example: Please support our work on https://soutenir.framasoft.org/en/ <3
7602 $ref: '#/components/schemas/ActorImage'
7611 $ref: '#/components/schemas/UUIDv4'
7615 - $ref: '#/components/schemas/VideoChannel'
7618 description: username of the channel to create
7620 - $ref: '#/components/schemas/usernameChannel'
7626 - $ref: '#/components/schemas/VideoChannel'
7628 bulkVideosSupportUpdate:
7630 description: Update the support field for all videos of this channel
7640 - $ref: '#/components/schemas/VideoChannel'
7641 - $ref: '#/components/schemas/Actor'
7643 ImportVideosInChannelCreate:
7648 example: https://youtube.com/c/UC_myfancychannel
7651 description: If part of a channel sync process, specify its id to assign video imports to this channel synchronization
7653 - 'externalChannelUrl'
7659 $ref: '#/components/schemas/id'
7671 example: 'https://youtube.com/c/UC_myfancychannel'
7680 $ref: '#/components/schemas/VideoChannel'
7681 VideoChannelSyncList:
7691 - $ref: '#/components/schemas/VideoChannelSync'
7692 VideoChannelSyncCreate:
7697 example: https://youtube.com/c/UC_myfancychannel
7699 $ref: '#/components/schemas/id'
7703 name: 'media:peerLink'
7712 - application/x-bittorrent
7718 name: 'media:content'
7749 VideoCommentsForXML:
7784 description: video watch page URL
7787 description: video canonical URL
7791 description: video publication date
7794 description: video description
7797 description: video description
7800 description: publisher user name
7803 description: video category (MRSS)
7806 description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
7821 description: video embed path, relative to the canonical URL domain (MRSS)
7830 description: video watch path, relative to the canonical URL domain (MRSS)
7851 description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
7852 'media:description':
7859 description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
7862 description: main streamable file for the video
7872 - application/x-bittorrent
7881 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)
7884 - $ref: '#/components/schemas/MRSSPeerLink'
7885 - $ref: '#/components/schemas/MRSSGroupContent'
7886 NotificationSettingValue:
7903 $ref: '#/components/schemas/id'
7907 Notification type, following the `UserNotificationType` enum:
7909 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
7911 - `2` NEW_COMMENT_ON_MY_VIDEO
7913 - `3` NEW_ABUSE_FOR_MODERATORS
7915 - `4` BLACKLIST_ON_MY_VIDEO
7917 - `5` UNBLACKLIST_ON_MY_VIDEO
7919 - `6` MY_VIDEO_PUBLISHED
7921 - `7` MY_VIDEO_IMPORT_SUCCESS
7923 - `8` MY_VIDEO_IMPORT_ERROR
7925 - `9` NEW_USER_REGISTRATION
7929 - `11` COMMENT_MENTION
7931 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
7933 - `13` NEW_INSTANCE_FOLLOWER
7935 - `14` AUTO_INSTANCE_FOLLOWING
7937 - `15` ABUSE_STATE_CHANGE
7939 - `16` ABUSE_NEW_MESSAGE
7941 - `17` NEW_PLUGIN_VERSION
7943 - `18` NEW_PEERTUBE_VERSION
7949 - $ref: '#/components/schemas/VideoInfo'
7953 $ref: '#/components/schemas/ActorInfo'
7959 $ref: '#/components/schemas/id'
7962 $ref: '#/components/schemas/VideoInfo'
7967 $ref: '#/components/schemas/VideoImport/properties/magnetUri'
7977 $ref: '#/components/schemas/id'
7981 $ref: '#/components/schemas/VideoInfo'
7983 $ref: '#/components/schemas/ActorInfo'
7989 $ref: '#/components/schemas/id'
7992 - $ref: '#/components/schemas/VideoInfo'
7998 $ref: '#/components/schemas/id'
8001 - $ref: '#/components/schemas/VideoInfo'
8005 - $ref: '#/components/schemas/ActorInfo'
8011 $ref: '#/components/schemas/id'
8013 $ref: '#/components/schemas/ActorInfo'
8041 NotificationListResponse:
8050 $ref: '#/components/schemas/Notification'
8055 example: peertube-plugin-auth-ldap
8083 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
8086 additionalProperties: true
8102 $ref: '#/components/schemas/Plugin'
8109 description: User can stream multiple times in a permanent live
8112 description: User can select live latency mode if enabled by the instance
8113 $ref: '#/components/schemas/LiveVideoLatencyMode'
8119 description: Included in the response if an appropriate token is provided
8122 description: Included in the response if an appropriate token is provided
8125 description: RTMP stream key to use to stream into this live video. Included in the response if an appropriate token is provided
8129 description: User can stream multiple times in a permanent live
8132 description: User can select live latency mode if enabled by the instance
8133 $ref: '#/components/schemas/LiveVideoLatencyMode'
8135 VideoStudioCreateTask:
8183 title: add-watermark
8197 LiveVideoSessionResponse:
8204 description: Start date of the live session
8209 description: End date of the live session
8220 Error type if an error occurred during the live session:
8221 - `1`: Bad socket health (transcoding is too slow)
8222 - `2`: Max duration exceeded
8223 - `3`: Quota exceeded
8224 - `4`: Quota FFmpeg error
8225 - `5`: Video has been blacklisted during the live
8228 description: Video replay information
8233 $ref: '#/components/schemas/UUIDv4'
8235 $ref: '#/components/schemas/shortUUID'
8239 'https://search.example.org/api/v1/search/videos':
8241 summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
8244 description: successful operation
8248 $ref: '#/components/schemas/VideoListResponse'