Download OpenAPI specification:Download
The PeerTube API is built on HTTP(S) and is RESTful. You can use your favorite HTTP/REST library for your programming language to use PeerTube.
See the REST API quick start for a few examples of using the PeerTube API.
When you sign up for an account on a PeerTube instance, you are given the possibility to generate sessions on it, and authenticate there using an access token. Only one access token can currently be used at a time.
Accounts are given permissions based on their role. There are three roles on PeerTube: Administrator, Moderator, and User. See the roles guide for a detail of their permissions.
The API uses standard HTTP status codes to indicate the success or failure of the API call, completed by a RFC7807-compliant response body.
HTTP 1.1 404 Not Found
Content-Type: application/problem+json; charset=utf-8
{
"detail": "Video not found",
"docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
"status": 404,
"title": "Not Found",
"type": "about:blank"
}
We provide error type
(following RFC7807) and code
(internal PeerTube code) values for a growing number of cases,
but it is still optional. Types are used to disambiguate errors that bear the same status code
and are non-obvious:
HTTP 1.1 403 Forbidden
Content-Type: application/problem+json; charset=utf-8
{
"detail": "Cannot get this video regarding follow constraints",
"docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
"status": 403,
"title": "Forbidden",
"type": "https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/does_not_respect_follow_constraints"
}
Here a 403 error could otherwise mean that the video is private or blocklisted.
Each parameter is evaluated on its own against a set of rules before the route validator proceeds with potential testing involving parameter combinations. Errors coming from validation errors appear earlier and benefit from a more detailed error description:
HTTP 1.1 400 Bad Request
Content-Type: application/problem+json; charset=utf-8
{
"detail": "Incorrect request parameters: id",
"docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
"instance": "/api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180",
"invalid-params": {
"id": {
"location": "params",
"msg": "Invalid value",
"param": "id",
"value": "9c9de5e8-0a1e-484a-b099-e80766180"
}
},
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}
Where id
is the name of the field concerned by the error, within the route definition.
invalid-params.<field>.location
can be either 'params', 'body', 'header', 'query' or 'cookies', and
invalid-params.<field>.value
reports the value that didn't pass validation whose invalid-params.<field>.msg
is about.
Some fields could be included with previous versions. They are still included but their use is deprecated:
error
: superseded by detail
We are rate-limiting all endpoints of PeerTube's API. Custom values can be set by administrators:
Endpoint (prefix: /api/v1 ) |
Calls | Time frame |
---|---|---|
/* |
50 | 10 seconds |
POST /users/token |
15 | 5 minutes |
POST /users/register |
2* | 5 minutes |
POST /users/ask-send-verify-email |
3 | 5 minutes |
Depending on the endpoint, *failed requests are not taken into account. A service
limit is announced by a 429 Too Many Requests
status code.
You can get details about the current state of your rate limit by reading the following headers:
Header | Description |
---|---|
X-RateLimit-Limit |
Number of max requests allowed in the current time period |
X-RateLimit-Remaining |
Number of remaining requests in the current time period |
X-RateLimit-Reset |
Timestamp of end of current time period as UNIX timestamp |
Retry-After |
Seconds to delay after the first 429 is received |
This API features Cross-Origin Resource Sharing (CORS), allowing cross-domain communication from the browser for some routes:
| Endpoint |
|------------------------- ---|
| /api/*
|
| /download/*
|
| /lazy-static/*
|
| /.well-known/webfinger
|
In addition, all routes serving ActivityPub are CORS-enabled for all origins.
PeerTube >= 6.0
filename required | string Filename |
videoFileToken | string Video file token generated by PeerTube so you don't need to provide an OAuth token in the request header. |
filename required | string Filename |
reinjectVideoFileToken | boolean Ask the server to reinject videoFileToken in URLs in m3u8 playlist |
videoFileToken | string Video file token generated by PeerTube so you don't need to provide an OAuth token in the request header. |
Generate a mp4 container that contains at most 1 video stream and at most 1 audio stream. Mainly used to merge the HLS audio only video file and the HLS video only resolution file.
videoId required | integer >= 1 Example: 42 The video id |
videoFileIds required | Array of integers streams of video files to mux in the output |
videoFileToken | string Video file token generated by PeerTube so you don't need to provide an OAuth token in the request header. |
format required | string Enum: "xml" "rss" "rss2" "atom" "atom1" "json" "json1" format expected (we focus on making |
accountId | string limit listing comments to videos of a specific account |
accountName | string limit listing comments to videos of a specific account |
videoChannelId | string limit listing comments to videos of a specific video channel |
videoChannelName | string limit listing comments to videos of a specific video channel |
videoId | string limit listing comments to a specific video |
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title>PeerTube Nightly</title> <link>https://peertube2.cpy.re</link> <description>This instance is a test instance of the PeerTube project. It is updated to the latest commit in the develop branch every business day, 8pm CET.</description> <lastBuildDate>Fri, 12 Sep 2025 08:49:51 GMT</lastBuildDate> <docs>https://validator.w3.org/feed/docs/rss2.html</docs> <generator>PeerTube - https://peertube2.cpy.re</generator> <image> <title>PeerTube Nightly</title> <url>https://peertube2.cpy.re/lazy-static/avatars/177f70c4-ddef-4bb6-bc96-b00d5e2a0e05.png</url> <link>https://peertube2.cpy.re</link> </image> <copyright>All rights reserved, unless otherwise specified in the terms specified at https://peertube2.cpy.re/about and potential licenses granted by each content's rightholder.</copyright> <atom:link href="https://peertube2.cpy.re/feeds/video-comments.xml?scope=local" rel="self" type="application/rss+xml"/> <item> <title><![CDATA[20250911_GET_EP07_FLIC_LAUSANNE_V4 - tibo lalu]]></title> <link>https://peertube2.cpy.re/w/bfAbRyTxzGhUxnJT8nvC3Y;threadId=181997</link> <guid>https://peertube2.cpy.re/w/bfAbRyTxzGhUxnJT8nvC3Y;threadId=181997</guid> <pubDate>Thu, 11 Sep 2025 19:11:58 GMT</pubDate> <content:encoded><![CDATA[<p><span><a href="https://video.blast-info.fr/accounts/blast" class="u-url mention" target="_blank" rel="noopener noreferrer">@<span>blast</span></a></span> </p><p>toujours aussi bien</p>]]></content:encoded> <dc:creator>tibo lalu</dc:creator> </item> <item> <title><![CDATA[Testing KDE LINUX ALPHA on REAL hardware: Tuxedo Stellaris 16 Gen 7 ! - Edoardo Regni]]></title> <link>https://peertube2.cpy.re/w/eSYuduJSbZ9s7K4pFT3Ncd;threadId=181995</link> <guid>https://peertube2.cpy.re/w/eSYuduJSbZ9s7K4pFT3Ncd;threadId=181995</guid> <pubDate>Thu, 11 Sep 2025 18:10:17 GMT</pubDate> <content:encoded><![CDATA[<p>@fell@tube.tchncs.de I have no idea because I never needed that feature. Let me know the result</p> ]]></content:encoded> <dc:creator>Edoardo Regni</dc:creator> </item> <item> <title><![CDATA[Testing KDE LINUX ALPHA on REAL hardware: Tuxedo Stellaris 16 Gen 7 ! - Fell]]></title> <link>https://peertube2.cpy.re/w/eSYuduJSbZ9s7K4pFT3Ncd;threadId=181995</link> <guid>https://peertube2.cpy.re/w/eSYuduJSbZ9s7K4pFT3Ncd;threadId=181995</guid> <pubDate>Thu, 11 Sep 2025 13:12:50 GMT</pubDate> <content:encoded><![CDATA[<p>Does the keyboard backlight work when you set it to follow the accent colour in KDE?</p> ]]></content:encoded> <dc:creator>Fell</dc:creator> </item> <item> <title><![CDATA[Power up of a decsystem10's bays 1 & 2 of the CPU - smj]]></title> <link>https://peertube2.cpy.re/w/mZUSMmT9hGqWXXVWcSYptb;threadId=181989</link> <guid>https://peertube2.cpy.re/w/mZUSMmT9hGqWXXVWcSYptb;threadId=181989</guid> <pubDate>Wed, 10 Sep 2025 20:13:33 GMT</pubDate> <content:encoded><![CDATA[<p>@christianbeier@berlin.social please considering to support us and follow the progress on the blog at <a href="http://icm.museum" target="_blank" rel="noopener noreferrer">icm.museum</a></p> ]]></content:encoded> <dc:creator>smj</dc:creator> </item> <item> <title><![CDATA[10 septembre : une mobilisation sous haute répression - tif_inégalitéS.capitalisme.TTdroites.écocide.5g.pub.nuc.gafam-CRIMES]]></title> <link>https://peertube2.cpy.re/w/fJhFwPamAiD1jYUVGSSf3U;threadId=181991</link> <guid>https://peertube2.cpy.re/w/fJhFwPamAiD1jYUVGSSf3U;threadId=181991</guid> <pubDate>Wed, 10 Sep 2025 19:14:16 GMT</pubDate> <content:encoded><![CDATA[<p>.<br /> "butons le capitalisme avant qu'il n'ait tout buté !"</p> <p>.<br /> capitalisme-patriarchisme-fascisme-écocide-biocide-génocideGlobalTotalFinal-etc-etc..._de_son_nom_plus_complet</p> <p>.<br /> .</p> <p>" égalitarismeS-sobriété_de_vie-tous-azimuts " _ _ _ _ _ _ _ (oui, c'est possible !)<br /> .</p> ]]></content:encoded> <dc:creator>tif_inégalitéS.capitalisme.TTdroites.écocide.5g.pub.nuc.gafam-CRIMES</dc:creator> </item> <item> <title><![CDATA[Power up of a decsystem10's bays 1 & 2 of the CPU - Christian Beier]]></title> <link>https://peertube2.cpy.re/w/mZUSMmT9hGqWXXVWcSYptb;threadId=181989</link> <guid>https://peertube2.cpy.re/w/mZUSMmT9hGqWXXVWcSYptb;threadId=181989</guid> <pubDate>Wed, 10 Sep 2025 17:04:33 GMT</pubDate> <content:encoded><![CDATA[<p><span><a href="https://toobnix.org/accounts/smj" class="u-url mention" target="_blank" rel="noopener noreferrer">@<span>smj</span></a></span> with the real in-datacenter sound would be nice!🙂</p>]]></content:encoded> <dc:creator>Christian Beier</dc:creator> </item> <item> <title><![CDATA[Power up of a decsystem10's bays 1 & 2 of the CPU - peron]]></title> <link>https://peertube2.cpy.re/w/mZUSMmT9hGqWXXVWcSYptb;threadId=181988</link> <guid>https://peertube2.cpy.re/w/mZUSMmT9hGqWXXVWcSYptb;threadId=181988</guid> <pubDate>Wed, 10 Sep 2025 16:47:32 GMT</pubDate> <content:encoded><![CDATA[<p>Those blinkenlights are insane! Which are the power requeriments on that DEC10 configuration?</p> ]]></content:encoded> <dc:creator>peron</dc:creator> </item> <item> <title><![CDATA[Google Search sucks, AI is everywhere: what should you use? - Nanook]]></title> <link>https://peertube2.cpy.re/w/3nfn5RgLU6b5J13rBS71HG;threadId=181985</link> <guid>https://peertube2.cpy.re/w/3nfn5RgLU6b5J13rBS71HG;threadId=181985</guid> <pubDate>Wed, 10 Sep 2025 13:11:30 GMT</pubDate> <content:encoded><![CDATA[<p><span><a href="https://tilvids.com/accounts/thelinuxexperiment" class="u-url mention" target="_blank" rel="noopener noreferrer">@<span>thelinuxexperiment</span></a></span> A trick that often works for getting around a paywall is <a href="http://internetarchive.org" target="_blank" rel="noopener noreferrer">internetarchive.org</a>, they manage somehow to get stuff that is paywalled and then you can get from them.</p> ]]></content:encoded> <dc:creator>Nanook</dc:creator> </item> <item> <title><![CDATA[Google Search sucks, AI is everywhere: what should you use? - Squid]]></title> <link>https://peertube2.cpy.re/w/3nfn5RgLU6b5J13rBS71HG;threadId=181982</link> <guid>https://peertube2.cpy.re/w/3nfn5RgLU6b5J13rBS71HG;threadId=181982</guid> <pubDate>Wed, 10 Sep 2025 10:46:53 GMT</pubDate> <content:encoded><![CDATA[<p>As much as I agree Google sucks and we should use alternatives, you new videos are always on YouTube first and paywalled so we can't even watch them on third party clients unfortunately. It's your decision but yeah I used to watch them and no longer do, a lot of content creators are doing the same thing too. Maybe if you had them here first it would encourage people to use alternatives. That's just how I feel about it though, you do what you want, it's your videos.</p> ]]></content:encoded> <dc:creator>Squid</dc:creator> </item> <item> <title><![CDATA[ELF Nightmares GOTs, PLTs, and Relocations Oh My by John Baldwin - Harald Eilertsen]]></title> <link>https://peertube2.cpy.re/w/udjSH6vkKV31ARfDESw9kv;threadId=181974</link> <guid>https://peertube2.cpy.re/w/udjSH6vkKV31ARfDESw9kv;threadId=181974</guid> <pubDate>Tue, 09 Sep 2025 18:47:05 GMT</pubDate> <content:encoded><![CDATA[<p>Good talk! It clears up some things I needed for one of my projects. Would be great to have this as a reference on a website or an epub or something, tbh. It's quite a few details to wrap my head around 😃</p> ]]></content:encoded> <dc:creator>Harald Eilertsen</dc:creator> </item> <item> <title><![CDATA[⚡☢️🗑️ De la centrale aux déchets radioactifs - DÉCHETS RADIOACTIFS #1 - PushTheBigRedButton]]></title> <link>https://peertube2.cpy.re/w/hn3wYTP6YLWQGzXVmiZpw7;threadId=181973</link> <guid>https://peertube2.cpy.re/w/hn3wYTP6YLWQGzXVmiZpw7;threadId=181973</guid> <pubDate>Tue, 09 Sep 2025 18:27:19 GMT</pubDate> <content:encoded><![CDATA[<p>La ref aux virus contenus dans les laboratoires a mal veillie ! 😅</p> ]]></content:encoded> <dc:creator>PushTheBigRedButton</dc:creator> </item> <item> <title><![CDATA[Linux Mint 22.2: still fixing the Linux desktop - Chriscos]]></title> <link>https://peertube2.cpy.re/w/x6zcE8gfYwPFHMYFr6vEwL;threadId=181972</link> <guid>https://peertube2.cpy.re/w/x6zcE8gfYwPFHMYFr6vEwL;threadId=181972</guid> <pubDate>Tue, 09 Sep 2025 16:36:49 GMT</pubDate> <content:encoded><![CDATA[<p>Mint is looking good!</p> <p>This may not be the best place to ask, but with linux getting more and more marketshare and Android/Google doing some questionable things regarding sideloading apps...Is there a decent linux phone anywhere? I have an awesome fairphone, but I would like to long term find a true linux phone replacement at some point.</p> ]]></content:encoded> <dc:creator>Chriscos</dc:creator> </item> <item> <title><![CDATA[RecalStick - Makoto]]></title> <link>https://peertube2.cpy.re/w/w9RP67F6KGtzc3KaQyJibS;threadId=181966</link> <guid>https://peertube2.cpy.re/w/w9RP67F6KGtzc3KaQyJibS;threadId=181966</guid> <pubDate>Mon, 08 Sep 2025 19:41:35 GMT</pubDate> <content:encoded><![CDATA[<p>@mac_call@mastodon.xyz Oui ^__^<br /> Billet attenant en cours de rédaction</p> ]]></content:encoded> <dc:creator>Makoto</dc:creator> </item> <item> <title><![CDATA[RecalStick - mac call]]></title> <link>https://peertube2.cpy.re/w/w9RP67F6KGtzc3KaQyJibS;threadId=181966</link> <guid>https://peertube2.cpy.re/w/w9RP67F6KGtzc3KaQyJibS;threadId=181966</guid> <pubDate>Mon, 08 Sep 2025 18:58:18 GMT</pubDate> <content:encoded><![CDATA[<p><span><a href="https://peertube.makotoworkshop.org/accounts/makoto" class="u-url mention" target="_blank" rel="noopener noreferrer">@<span>makoto</span></a></span> La satisfaisance :)</p>]]></content:encoded> <dc:creator>mac call</dc:creator> </item> <item> <title><![CDATA["Fake News : un danger pour nos démocraties" ? Avec Mathieu Burgalassi - Emmanuel Florac]]></title> <link>https://peertube2.cpy.re/w/rfq5iGphc2dyDDiYbRxHDm;threadId=181965</link> <guid>https://peertube2.cpy.re/w/rfq5iGphc2dyDDiYbRxHDm;threadId=181965</guid> <pubDate>Mon, 08 Sep 2025 11:46:55 GMT</pubDate> <content:encoded><![CDATA[<p>Vous savez que les fact-checkeurs sont totalement ridiculisés, hein ? Vous allez vérifier les fake news gênantes sur les vaccins Covid et Ursula par exemple?</p> ]]></content:encoded> <dc:creator>Emmanuel Florac</dc:creator> </item> <item> <title><![CDATA[10 septembre on bloque tout et c'est Nicolas qui paie - Jice]]></title> <link>https://peertube2.cpy.re/w/7TZWAimu3eqzz7KZgo2Evc;threadId=181950</link> <guid>https://peertube2.cpy.re/w/7TZWAimu3eqzz7KZgo2Evc;threadId=181950</guid> <pubDate>Sun, 07 Sep 2025 17:46:35 GMT</pubDate> <content:encoded><![CDATA[<p><span><a href="https://video.blast-info.fr/accounts/blast" class="u-url mention" target="_blank" rel="noopener noreferrer">@<span>blast</span></a></span> Merci Nicolas 😁</p>]]></content:encoded> <dc:creator>Jice</dc:creator> </item> <item> <title><![CDATA[Mystery shower head holder doohickey [SOLVED] - ExtremeDullard]]></title> <link>https://peertube2.cpy.re/w/wHw9yHmvwy3UiA5bBGJqRn;threadId=181949</link> <guid>https://peertube2.cpy.re/w/wHw9yHmvwy3UiA5bBGJqRn;threadId=181949</guid> <pubDate>Sun, 07 Sep 2025 17:26:06 GMT</pubDate> <content:encoded><![CDATA[<p>Mystery solved! It's a pull tab for children to lower the shower head if whoever took a shower before them put it too high.</p> <p>See <a href="https://piefed.social/post/1238298" target="_blank" rel="noopener noreferrer">here</a>.</p> ]]></content:encoded> <dc:creator>ExtremeDullard</dc:creator> </item> <item> <title><![CDATA[10 septembre on bloque tout et c'est Nicolas qui paie - InternetDev-Anti-Communicant🍉]]></title> <link>https://peertube2.cpy.re/w/7TZWAimu3eqzz7KZgo2Evc;threadId=181948</link> <guid>https://peertube2.cpy.re/w/7TZWAimu3eqzz7KZgo2Evc;threadId=181948</guid> <pubDate>Sun, 07 Sep 2025 16:49:20 GMT</pubDate> <content:encoded><![CDATA[<p><span><a href="https://video.blast-info.fr/accounts/blast" class="u-url mention" target="_blank" rel="noopener noreferrer">@<span>blast</span></a></span> </p><p>non c'est Macron qui paie son pot de départ.</p>]]></content:encoded> <dc:creator>InternetDev-Anti-Communicant🍉</dc:creator> </item> <item> <title><![CDATA[Cosmic Desktop BETA, more SteamOS devices, GNOME keeps X11 after all - Linux Weekly News - sexy_peach]]></title> <link>https://peertube2.cpy.re/w/2hhAz1Ao1g5413jCngN383;threadId=181947</link> <guid>https://peertube2.cpy.re/w/2hhAz1Ao1g5413jCngN383;threadId=181947</guid> <pubDate>Sat, 06 Sep 2025 19:34:02 GMT</pubDate> <content:encoded><![CDATA[<p>sad to see bcachefs go</p> ]]></content:encoded> <dc:creator>sexy_peach</dc:creator> </item> <item> <title><![CDATA[Bayrou : le mépris, la nullité et la perversion - InternetDev-Anti-Communicant🍉]]></title> <link>https://peertube2.cpy.re/w/tFqBprygFia1ZJBqsXvLZh;threadId=181946</link> <guid>https://peertube2.cpy.re/w/tFqBprygFia1ZJBqsXvLZh;threadId=181946</guid> <pubDate>Sat, 06 Sep 2025 17:53:44 GMT</pubDate> <content:encoded><![CDATA[<p><span><a href="https://video.blast-info.fr/accounts/blast" class="u-url mention" target="_blank" rel="noopener noreferrer">@<span>blast</span></a></span> </p><p>Ce type a toujours été un faux derche de première.</p><p>Jamais je n'ai cru, une seconde, qu'il était même mentalement équilibré.</p><p>Ce connard sait très bien comment Sarkozy et Hollande se sont entendu, et la seule fois où a fait mine de les dénoncer il l'a fait lâchement en glissant une allusion.</p><p>Son débat pour 2012 avec Valls où il léchait le cul de Valls était édifiant.</p>]]></content:encoded> <dc:creator>InternetDev-Anti-Communicant🍉</dc:creator> </item> </channel> </rss>
format required | string Enum: "xml" "rss" "rss2" "atom" "atom1" "json" "json1" format expected (we focus on making |
accountId | string limit listing to a specific account |
accountName | string limit listing to a specific account |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
sort | string Example: sort=-createdAt Sort column |
videoChannelId | string limit listing to a specific video channel |
videoChannelName | string limit listing to a specific video channel |
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:podcast="https://podcastindex.org/namespace/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title>PeerTube Nightly</title> <link>https://peertube2.cpy.re</link> <description>This instance is a test instance of the PeerTube project. It is updated to the latest commit in the develop branch every business day, 8pm CET.</description> <lastBuildDate>Fri, 12 Sep 2025 08:49:52 GMT</lastBuildDate> <docs>https://validator.w3.org/feed/docs/rss2.html</docs> <generator>PeerTube - https://peertube2.cpy.re</generator> <image> <title>PeerTube Nightly</title> <url>https://peertube2.cpy.re/lazy-static/avatars/177f70c4-ddef-4bb6-bc96-b00d5e2a0e05.png</url> <link>https://peertube2.cpy.re</link> </image> <copyright>All rights reserved, unless otherwise specified in the terms specified at https://peertube2.cpy.re/about and potential licenses granted by each content's rightholder.</copyright> <atom:link href="https://peertube2.cpy.re/feeds/videos.xml?scope=local" rel="self" type="application/rss+xml"/> <item> <title><![CDATA[10 septembre : pourquoi ce mouvement fait trembler le pouvoir]]></title> <link>https://peertube2.cpy.re/w/x34ETVswTYbccDKZfb5uGc</link> <guid>https://peertube2.cpy.re/w/x34ETVswTYbccDKZfb5uGc</guid> <pubDate>Thu, 11 Sep 2025 18:26:28 GMT</pubDate> <description><![CDATA[Soutenez Blast, nouveau média indépendant : https://www.blast-info.fr/soutenir Le 10 septembre 2025 était une journée particulièrement attendue par certains, redoutée par d’autres. « Flop » ou au contraire « réussite », on a entendu beaucoup d...]]></description> <content:encoded><![CDATA[<p>Soutenez Blast, nouveau média indépendant : <a href="https://www.blast-info.fr/soutenir" target="_blank" rel="noopener noreferrer">https://www.blast-info.fr/soutenir</a></p> <p>Le 10 septembre 2025 était une journée particulièrement attendue par certains, redoutée par d’autres.<br /> « Flop » ou au contraire « réussite », on a entendu beaucoup d’interprétations des événements qui se sont déroulés ce mercredi.</p> <p>Tandis que François Bayrou quittait Matignon et que Sébastien Lecornu prononçait son premier discours en tant que Premier ministre, le mouvement « Bloquons tout » prenait de l’ampleur. Dès l’aube, des centaines d’actions ont éclaté partout sur le territoire, du périphérique parisien aux lycées en passant par les ronds-points, réunissant plusieurs centaines de milliers de personnes. 175 000 selon le ministère de l’intérieur, 250 000 selon la CGT.</p> <p>La mobilisation, tantôt festive, tantôt tendue, a été marquée par des scènes de blocages créatifs, mais aussi par une répression policière et des affrontements parfois violents. Dans les médias et dans la classe politique, les interprétations se sont multipliées, oscillant entre accusations « d’ultra-gauche », dénonciations de casse et témoignages d’une colère populaire authentique. Alors que s’est il passé exactement, comment un mouvement né en dehors des cadres syndicaux et partisans s’est-il mobilisé au point de faire trembler le gouvernement ? Blast a suivi cette journée heure par heure, et on vous la raconte dans cette nouvelle émission.</p> <p>Journaliste : Salomé Saqué<br /> Montage : Émilie Fortun<br /> Son : Baptiste Veilhan, Théo Duchesne<br /> Graphisme : Morgane Sabouret, Margaux Simon<br /> Production : Hicham Tragha<br /> Directeur du développement des collaborations extérieures : Mathias Enthoven<br /> Co-directrice de la rédaction : Soumaya Benaïssa<br /> Directeur de la publication : Denis Robert</p> <p>Le site : <a href="https://www.blast-info.fr/" target="_blank" rel="noopener noreferrer">https://www.blast-info.fr/</a><br /> Facebook : <a href="https://www.facebook.com/blastofficiel" target="_blank" rel="noopener noreferrer">https://www.facebook.com/blastofficiel</a><br /> Twitter : <a href="https://twitter.com/blast_france" target="_blank" rel="noopener noreferrer">https://twitter.com/blast_france</a><br /> Instagram : <a href="https://www.instagram.com/blastofficiel/" target="_blank" rel="noopener noreferrer">https://www.instagram.com/blastofficiel/</a><br /> Mastodon : <a href="https://mamot.fr/web/@blast_info" target="_blank" rel="noopener noreferrer">https://mamot.fr/web/@blast_info</a><br /> Peertube : <a href="https://video.blast-info.fr/" target="_blank" rel="noopener noreferrer">https://video.blast-info.fr/</a><br /> Twitch : <a href="https://www.twitch.tv/blastinfo" target="_blank" rel="noopener noreferrer">https://www.twitch.tv/blastinfo</a><br /> Bluesky : <a href="https://bsky.app/profile/blast-info.fr" target="_blank" rel="noopener noreferrer">https://bsky.app/profile/blast-info.fr</a></p> <p>#10septembre<br /> #France<br /> #Macron</p> ]]></content:encoded> <dc:creator>blast, le souffle de l’info</dc:creator> <enclosure length="471046723" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/fb550c4f-ba62-49a3-9a3b-059d79e439cb?videoFileIds=5498600&videoFileIds=5498604"/> <media:community> <media:statistics views="136"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/x34ETVswTYbccDKZfb5uGc"/> <media:player url="https://peertube2.cpy.re/w/x34ETVswTYbccDKZfb5uGc"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/b2c4c2de-5d15-419c-9529-00d87b7eda18-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/25cf727c-8d70-4da3-845b-160f08129bd4-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/b2d298ad-3af6-4aac-8e3d-25435a50418b-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/8224885f-87c1-4270-b275-999901795211-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/ab3be357-26a1-40a2-9f72-50707f548d6b-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="443180435" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/fb550c4f-ba62-49a3-9a3b-059d79e439cb/aa1b45ef-fb0d-4fa6-9a6a-8b28fe129dae-1080-fragmented.mp4" framerate="25" duration="1709" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="240313046" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/fb550c4f-ba62-49a3-9a3b-059d79e439cb/8bc3e5a1-520b-4f6b-8ac3-823c98e8b591-720-fragmented.mp4" framerate="25" duration="1709" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="127841218" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/fb550c4f-ba62-49a3-9a3b-059d79e439cb/c2158daf-786f-445d-b1a1-3490c8d2797c-480-fragmented.mp4" framerate="25" duration="1709" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="42830503" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/fb550c4f-ba62-49a3-9a3b-059d79e439cb/365e13b3-8594-45e2-9c27-904bde1f0d4f-240-fragmented.mp4" framerate="25" duration="1709" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="27866288" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/fb550c4f-ba62-49a3-9a3b-059d79e439cb/6c83556d-4287-4c59-8c9a-bdc54fc03584-0-fragmented.mp4" framerate="0" duration="1709" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/4c68194a-a828-45ab-b3bc-b44ff0e4c6c2.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/825fd359-5fb5-4eed-b715-dc106b2d808f.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">10 septembre : pourquoi ce mouvement fait trembler le pouvoir</media:title> <media:description type="plain">Soutenez Blast, nouveau média indépendant : https://www.blast-info.fr/soutenir Le 10 septembre 2025 était une journée particulièrement attendue par certains, redoutée par d’autres. « Flop » ou au contraire « réussite », on a entendu beaucoup d...</media:description> </item> <item> <title><![CDATA[20250911_GET_EP07_FLIC_LAUSANNE_V4]]></title> <link>https://peertube2.cpy.re/w/bfAbRyTxzGhUxnJT8nvC3Y</link> <guid>https://peertube2.cpy.re/w/bfAbRyTxzGhUxnJT8nvC3Y</guid> <pubDate>Thu, 11 Sep 2025 18:13:51 GMT</pubDate> <dc:creator>blast, le souffle de l’info</dc:creator> <enclosure length="306408417" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/5304de32-8996-4400-9890-206a397b9cb4?videoFileIds=5498593&videoFileIds=5498597"/> <media:community> <media:statistics views="97"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/bfAbRyTxzGhUxnJT8nvC3Y"/> <media:player url="https://peertube2.cpy.re/w/bfAbRyTxzGhUxnJT8nvC3Y"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/aabb71fa-cd05-4d43-8f64-6cdb077ed392-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/2b6fb7fb-dde2-4349-906f-7cd5b12850b8-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/4a2ce5e3-aedd-44ce-b864-82daacab81d0-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/0b022342-4e5b-423c-acb9-5dc298b7d807-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5b86fb79-3275-40b3-9daf-39d32b7d2ed6-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="293212756" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/5304de32-8996-4400-9890-206a397b9cb4/878d20e1-b150-4458-ab10-1d6cd6622901-1080-fragmented.mp4" framerate="25" duration="806" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="142314393" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/5304de32-8996-4400-9890-206a397b9cb4/421d4ec4-272c-4159-add3-fd2cdf701f7d-720-fragmented.mp4" framerate="25" duration="806" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="71282219" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/5304de32-8996-4400-9890-206a397b9cb4/725a8003-7c58-42d6-9dfe-7d9e5edbc928-480-fragmented.mp4" framerate="25" duration="806" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="22763378" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/5304de32-8996-4400-9890-206a397b9cb4/b5cb1c97-e005-4998-989d-2feb7e59dfd4-240-fragmented.mp4" framerate="25" duration="806" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="13195661" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/5304de32-8996-4400-9890-206a397b9cb4/6009d271-1ae8-452d-9c5d-b37f8351d852-0-fragmented.mp4" framerate="0" duration="806" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/273d1d63-cc11-4e33-8ebb-8a990ac2be2f.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/52512cb4-3cbc-4847-8012-47252363a888.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">20250911_GET_EP07_FLIC_LAUSANNE_V4</media:title> </item> <item> <title><![CDATA[✧ pσѕт-sυммєя 𝐸тнєяєαℓ 𝑉ι∂єσ 𝑀ιχ ✧ avec un 𝐛𝐨𝐧 𝑜ιηʝ à la ℳαιѕση ○°(≧◡≦)]]></title> <link>https://peertube2.cpy.re/w/rKVPh5fg225NntTruKGHDp</link> <guid>https://peertube2.cpy.re/w/rKVPh5fg225NntTruKGHDp</guid> <pubDate>Wed, 10 Sep 2025 19:19:12 GMT</pubDate> <description><![CDATA[Warning: Contains strong flashing/stroboscopic visual effects and images of bad taste or unusual mixed-media content.]]></description> <content:encoded><![CDATA[<p>Warning: Contains strong flashing/stroboscopic visual effects and images of bad taste or unusual mixed-media content.</p> ]]></content:encoded> <dc:creator>STVP!D</dc:creator> <enclosure length="1445673591" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/d0969d04-ffcf-493a-bfe2-5b6c0b0a616d?videoFileIds=5498448"/> <media:community> <media:statistics views="16"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/rKVPh5fg225NntTruKGHDp"/> <media:player url="https://peertube2.cpy.re/w/rKVPh5fg225NntTruKGHDp"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/383287d0-481a-413d-8b9c-13f36b7b765b-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/b214e615-59c8-4c26-acc0-bb4fc9da2a58-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/6d90d532-0501-4796-96a0-f6203b548359-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/1cb0d265-d532-4a38-bab1-4a9e821f0bc4-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/4ab6ff45-ae6e-4c12-ae7e-82a9b104d18f-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="1445673591" url="https://www.yiny.org/static/streaming-playlists/hls/d0969d04-ffcf-493a-bfe2-5b6c0b0a616d/42710f22-89c3-474f-a0b4-81797c1619fe-1080-fragmented.mp4" framerate="25" duration="3822" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="759685028" url="https://www.yiny.org/static/streaming-playlists/hls/d0969d04-ffcf-493a-bfe2-5b6c0b0a616d/3a56eb16-2828-4065-ba85-205421139b44-720-fragmented.mp4" framerate="25" duration="3822" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="429440190" url="https://www.yiny.org/static/streaming-playlists/hls/d0969d04-ffcf-493a-bfe2-5b6c0b0a616d/d666bac5-fbfb-48a3-9e38-f9e8a91b4bc5-480-fragmented.mp4" framerate="25" duration="3822" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="197830125" url="https://www.yiny.org/static/streaming-playlists/hls/d0969d04-ffcf-493a-bfe2-5b6c0b0a616d/5758fc70-3158-47b3-b6db-f93e8c6ef009-240-fragmented.mp4" framerate="25" duration="3822" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="62845367" url="https://www.yiny.org/static/streaming-playlists/hls/d0969d04-ffcf-493a-bfe2-5b6c0b0a616d/6586b8b0-788e-41f2-8f2d-22f1e08140ea-0-fragmented.mp4" framerate="0" duration="3822" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/3a1c865f-8440-444e-a2c3-01326db42065.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/15703ceb-44e0-4393-946b-77d388346b37.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">✧ pσѕт-sυммєя 𝐸тнєяєαℓ 𝑉ι∂єσ 𝑀ιχ ✧ avec un 𝐛𝐨𝐧 𝑜ιηʝ à la ℳαιѕση ○°(≧◡≦)</media:title> <media:description type="plain">Warning: Contains strong flashing/stroboscopic visual effects and images of bad taste or unusual mixed-media content.</media:description> </item> <item> <title><![CDATA[10 septembre : une mobilisation sous haute répression]]></title> <link>https://peertube2.cpy.re/w/fJhFwPamAiD1jYUVGSSf3U</link> <guid>https://peertube2.cpy.re/w/fJhFwPamAiD1jYUVGSSf3U</guid> <pubDate>Wed, 10 Sep 2025 19:00:30 GMT</pubDate> <description><![CDATA[Soutenez Blast, nouveau média indépendant : https://www.blast-info.fr/soutenir Le 10 septembre 2025, des rassemblements et blocages ont eu lieu dès l’aube dans plusieurs villes françaises, avec de fortes mobilisations en Île-de-France. Des affr...]]></description> <content:encoded><![CDATA[<p>Soutenez Blast, nouveau média indépendant : <a href="https://www.blast-info.fr/soutenir" target="_blank" rel="noopener noreferrer">https://www.blast-info.fr/soutenir</a></p> <p>Le 10 septembre 2025, des rassemblements et blocages ont eu lieu dès l’aube dans plusieurs villes françaises, avec de fortes mobilisations en Île-de-France. Des affrontements avec les forces de l’ordre ont éclaté près du lycée Hélène Boucher, à la gare du Nord et surtout à Châtelet-les-Halles, épicentre de la journée. Malgré la mobilisation de 80 000 policiers et gendarmes, les cortèges ont exprimé un mot d’ordre commun : s’unir face à la politique austère du gouvernement. Beaucoup voient dans cette journée le point de départ d’un mouvement appelé à durer.</p> <p>Journaliste : Hamza Chennaf<br /> Images : Jose Rexach, Thibault Izoret, Clara Menais<br /> Montage : Thibault Lauras<br /> Son : Baptiste Veilhan, Théo Duchesne<br /> Graphisme : Morgane Sabouret, Margaux Simon<br /> Production : Hicham Tragha<br /> Directeur du développement des collaborations extérieures : Mathias Enthoven<br /> Co-directrice de la rédaction : Soumaya Benaïssa<br /> Directeur de la publication : Denis Robert</p> <p>Le site : <a href="https://www.blast-info.fr/" target="_blank" rel="noopener noreferrer">https://www.blast-info.fr/</a><br /> Facebook : <a href="https://www.facebook.com/blastofficiel" target="_blank" rel="noopener noreferrer">https://www.facebook.com/blastofficiel</a><br /> Twitter : <a href="https://twitter.com/blast_france" target="_blank" rel="noopener noreferrer">https://twitter.com/blast_france</a><br /> Instagram : <a href="https://www.instagram.com/blastofficiel/" target="_blank" rel="noopener noreferrer">https://www.instagram.com/blastofficiel/</a><br /> Mastodon : <a href="https://mamot.fr/web/@blast_info" target="_blank" rel="noopener noreferrer">https://mamot.fr/web/@blast_info</a><br /> Peertube : <a href="https://video.blast-info.fr/" target="_blank" rel="noopener noreferrer">https://video.blast-info.fr/</a><br /> Twitch : <a href="https://www.twitch.tv/blastinfo" target="_blank" rel="noopener noreferrer">https://www.twitch.tv/blastinfo</a><br /> Bluesky : <a href="https://bsky.app/profile/blast-info.fr" target="_blank" rel="noopener noreferrer">https://bsky.app/profile/blast-info.fr</a></p> <p>#10Septembre<br /> #Macron<br /> #OnBloqueTout</p> ]]></content:encoded> <dc:creator>blast, le souffle de l’info</dc:creator> <enclosure length="220291544" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/774775c0-4010-4762-ad05-17ec4ee6b3d0?videoFileIds=5498442&videoFileIds=5498446"/> <media:community> <media:statistics views="1138"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/fJhFwPamAiD1jYUVGSSf3U"/> <media:player url="https://peertube2.cpy.re/w/fJhFwPamAiD1jYUVGSSf3U"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/823f025c-13ba-44ff-9ea9-c647255a77cf-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/6a9f3d3d-0922-4df7-bab7-0e4c02a889b3-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/15e27198-c02a-4c64-976a-863af1ef0fdc-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/cdee8928-b25a-4415-bf30-786fe1ef8bac-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/abe6375a-bdb0-4fa5-afce-79335419aa4c-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="212909214" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/774775c0-4010-4762-ad05-17ec4ee6b3d0/6baaaf72-9e0f-42ff-8dc7-13cca311e4c1-1080-fragmented.mp4" framerate="25" duration="451" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="110441054" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/774775c0-4010-4762-ad05-17ec4ee6b3d0/8cdad619-7677-4b42-acbe-8081c11c98ac-720-fragmented.mp4" framerate="25" duration="451" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="57537703" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/774775c0-4010-4762-ad05-17ec4ee6b3d0/70d1f613-57da-4ce3-93fb-ea3818703951-480-fragmented.mp4" framerate="25" duration="451" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="20674696" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/774775c0-4010-4762-ad05-17ec4ee6b3d0/eacdad46-ce81-41f6-8d97-094f8525055a-240-fragmented.mp4" framerate="25" duration="451" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="7382330" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/774775c0-4010-4762-ad05-17ec4ee6b3d0/09b347d3-6bf8-4945-9836-4a582e6dd5d6-0-fragmented.mp4" framerate="0" duration="451" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/18284612-a30a-459c-aae8-0741b0cde12e.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/fe046f46-ac12-46c1-a282-79374dd88fbd.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">10 septembre : une mobilisation sous haute répression</media:title> <media:description type="plain">Soutenez Blast, nouveau média indépendant : https://www.blast-info.fr/soutenir Le 10 septembre 2025, des rassemblements et blocages ont eu lieu dès l’aube dans plusieurs villes françaises, avec de fortes mobilisations en Île-de-France. Des affr...</media:description> </item> <item> <title><![CDATA[Power up of a decsystem10's bays 1 & 2 of the CPU]]></title> <link>https://peertube2.cpy.re/w/mZUSMmT9hGqWXXVWcSYptb</link> <guid>https://peertube2.cpy.re/w/mZUSMmT9hGqWXXVWcSYptb</guid> <pubDate>Wed, 10 Sep 2025 16:19:45 GMT</pubDate> <description><![CDATA[we’re restoring a 1971 decsystem10 (KI10) and powered up bays 1 & 2 of the CPU today. Check out our blog for stories along the journey and find out how to support our efforts and visit! https://icm.museum]]></description> <content:encoded><![CDATA[<p>we’re restoring a 1971 decsystem10 (KI10) and powered up bays 1 & 2 of the CPU today. Check out our blog for stories along the journey and find out how to support our efforts and visit!</p> <p><a href="https://icm.museum" target="_blank" rel="noopener noreferrer">https://icm.museum</a></p> ]]></content:encoded> <dc:creator>random</dc:creator> <category>Science & Technology</category> <enclosure length="6289723" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/aa0cc0f9-7fc5-4f88-832f-53dbd1478b24?videoFileIds=5498402"/> <media:community> <media:statistics views="141"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/mZUSMmT9hGqWXXVWcSYptb"/> <media:player url="https://peertube2.cpy.re/w/mZUSMmT9hGqWXXVWcSYptb"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/fb12d83f-277f-4752-bd7d-efec24bca263-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/f3976325-de52-4274-aa65-ca4e76b6ea1a-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/31b66c13-58a2-4c83-ba91-95f03fb9661e-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/3f8c252b-ea44-4d9d-b4c2-485dd96c1413-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/f3dc510e-ec35-4f20-85d0-211282df4f5d-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/a5d02e24-b38c-49a5-b8a5-e1c30d039bf5-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/b4993edb-3c29-4d6c-986a-e854a047ff76-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/4d5dd486-d766-40e5-ba98-59cc37bab8bf-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/9828ced7-c398-4094-a2a0-99c3fda634a2-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/014ec65a-d99e-4560-a577-e19e67215d20-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/e5f91649-fa00-46ba-9729-c14138c6650e-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/83327f35-e9e0-4d30-b913-011cef0778d0-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="6289723" url="https://toobnix.org/static/web-videos/5f8fbdf4-69fe-4eee-bdb2-1e88b85f9615-1080.mp4" framerate="30" duration="38" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="3206254" url="https://toobnix.org/static/web-videos/bba05648-46e3-47b5-8a3a-dbf226e7021b-720.mp4" framerate="30" duration="38" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="2024838" url="https://toobnix.org/static/web-videos/7715c8d1-9c0c-421a-b231-bb9d12e61c07-480.mp4" framerate="30" duration="38" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="1541591" url="https://toobnix.org/static/web-videos/73dddd99-daa4-4a52-abf4-296b809889b3-360.mp4" framerate="30" duration="38" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="1094834" url="https://toobnix.org/static/web-videos/a3ece0e8-eb03-450f-ad13-ec9bbc1229db-240.mp4" framerate="30" duration="38" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="625206" url="https://toobnix.org/static/web-videos/5c6cfd05-1bc3-4752-b4ff-d570a6fc9d38-0.mp4" framerate="0" duration="38" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="6276269" url="https://toobnix.org/static/streaming-playlists/hls/aa0cc0f9-7fc5-4f88-832f-53dbd1478b24/0f1a7b3c-5245-4bfa-a4c7-0dc246b9b91c-1080-fragmented.mp4" framerate="30" duration="38" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="3192584" url="https://toobnix.org/static/streaming-playlists/hls/aa0cc0f9-7fc5-4f88-832f-53dbd1478b24/1db79543-823a-4147-bef1-90cbc2e3ddc7-720-fragmented.mp4" framerate="30" duration="38" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="2011088" url="https://toobnix.org/static/streaming-playlists/hls/aa0cc0f9-7fc5-4f88-832f-53dbd1478b24/b7958552-c535-433a-9474-cde4be4aed35-480-fragmented.mp4" framerate="30" duration="38" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="1527697" url="https://toobnix.org/static/streaming-playlists/hls/aa0cc0f9-7fc5-4f88-832f-53dbd1478b24/dfc11bfc-5e3f-4b39-b609-185aece1cbc4-360-fragmented.mp4" framerate="30" duration="38" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="1080536" url="https://toobnix.org/static/streaming-playlists/hls/aa0cc0f9-7fc5-4f88-832f-53dbd1478b24/191dd86e-08d6-4c9f-ba48-b814971109f9-240-fragmented.mp4" framerate="30" duration="38" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="627172" url="https://toobnix.org/static/streaming-playlists/hls/aa0cc0f9-7fc5-4f88-832f-53dbd1478b24/d08b4a13-3bd1-4d33-9088-0d074bc0cfe0-0-fragmented.mp4" framerate="0" duration="38" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/b3191423-b494-40eb-9ac5-76de0116f46d.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/9ab2c42c-13ef-48c3-9400-e7072f8581d0.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Power up of a decsystem10's bays 1 & 2 of the CPU</media:title> <media:description type="plain">we’re restoring a 1971 decsystem10 (KI10) and powered up bays 1 & 2 of the CPU today. Check out our blog for stories along the journey and find out how to support our efforts and visit! https://icm.museum</media:description> </item> <item> <title><![CDATA[Die Toten Hosen - Halbstark + You'll Never Walk Alone - Paris - 09/09/2025]]></title> <link>https://peertube2.cpy.re/w/4WK5GrzS71FuShECudmJnp</link> <guid>https://peertube2.cpy.re/w/4WK5GrzS71FuShECudmJnp</guid> <pubDate>Wed, 10 Sep 2025 10:13:34 GMT</pubDate> <description><![CDATA[Die Toten Hosen - Halbstark (The Yankees) + You'll Never Walk Alone (Rodgers & Hammerstein) - L'Élysée Montmartre, Paris - 9 septembre 2025]]></description> <content:encoded><![CDATA[<p>Die Toten Hosen - Halbstark (The Yankees) + You'll Never Walk Alone (Rodgers & Hammerstein) - L'Élysée Montmartre, Paris - 9 septembre 2025</p> ]]></content:encoded> <dc:creator>flo200</dc:creator> <category>Music</category> <enclosure length="233483523" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/1ff02110-bd4d-409c-81ac-8261040f0e21?videoFileIds=5498354"/> <media:community> <media:statistics views="13"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/4WK5GrzS71FuShECudmJnp"/> <media:player url="https://peertube2.cpy.re/w/4WK5GrzS71FuShECudmJnp"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/1c0fc58e-7be8-4446-8f25-6e17899e7ee9-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/d3965b34-8663-4523-bd55-f5b41cfe55c7-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/6958e4ff-cbde-4819-8b29-8025efe9e2cc-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/51b0cad7-b47c-4a71-b6ca-0ebecfcf7b18-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/52328ca7-6d1f-4c9c-8ff5-4ecc60ca65cc-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="233483523" url="https://www.yiny.org/static/streaming-playlists/hls/1ff02110-bd4d-409c-81ac-8261040f0e21/7c3f8752-1314-465a-944d-a7dcbecf8272-1080-fragmented.mp4" framerate="30" duration="376" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="123542168" url="https://www.yiny.org/static/streaming-playlists/hls/1ff02110-bd4d-409c-81ac-8261040f0e21/49b7a49d-154f-4f04-9942-9aff0172b8f9-720-fragmented.mp4" framerate="30" duration="376" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="69171408" url="https://www.yiny.org/static/streaming-playlists/hls/1ff02110-bd4d-409c-81ac-8261040f0e21/1e7a693d-b62d-45cf-9130-dcf9ff263ba1-480-fragmented.mp4" framerate="30" duration="376" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="29298564" url="https://www.yiny.org/static/streaming-playlists/hls/1ff02110-bd4d-409c-81ac-8261040f0e21/ff8dfd62-7232-4262-b7c0-111a149e4fd7-240-fragmented.mp4" framerate="30" duration="376" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="6138429" url="https://www.yiny.org/static/streaming-playlists/hls/1ff02110-bd4d-409c-81ac-8261040f0e21/c06cf61b-8b17-4710-9832-943433275361-0-fragmented.mp4" framerate="0" duration="376" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/91456558-6888-447e-bc19-2963cb1259e7.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/07f3430f-c1e9-4b75-a00b-346fd1f860bb.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Die Toten Hosen - Halbstark + You'll Never Walk Alone - Paris - 09/09/2025</media:title> <media:description type="plain">Die Toten Hosen - Halbstark (The Yankees) + You'll Never Walk Alone (Rodgers & Hammerstein) - L'Élysée Montmartre, Paris - 9 septembre 2025</media:description> </item> <item> <title><![CDATA[Démission de Bayrou : une faillite inédite, un grand saut dans l’inconnu]]></title> <link>https://peertube2.cpy.re/w/gBntZoJkp1u673QjjNf2kB</link> <guid>https://peertube2.cpy.re/w/gBntZoJkp1u673QjjNf2kB</guid> <pubDate>Tue, 09 Sep 2025 16:05:29 GMT</pubDate> <description><![CDATA[Soutenez Blast, nouveau média indépendant : https://www.blast-info.fr/soutenir C’est un coup de tonnerre politique. Le 8 septembre 2025, pour la seconde fois en 9 mois, le gouvernement nommé par Emmanuel Macron a perdu la confiance de l’Assembl...]]></description> <content:encoded><![CDATA[<p>Soutenez Blast, nouveau média indépendant : <a href="https://www.blast-info.fr/soutenir" target="_blank" rel="noopener noreferrer">https://www.blast-info.fr/soutenir</a></p> <p>C’est un coup de tonnerre politique. Le 8 septembre 2025, pour la seconde fois en 9 mois, le gouvernement nommé par Emmanuel Macron a perdu la confiance de l’Assemblée nationale. Les résultats sont sans appel et le président de la République a rapidement réagi : il a annoncé qu’il nommerait quelqu’un dans les tout prochains jours. La séquence politique est une fois de plus difficile à comprendre, depuis qu’Emmanuel Macron a dissous l’Assemblée nationale, il y a plus d’un an. L’incertitude politique et institutionnelle a rarement été aussi importante ! Alors que s’est-il passé exactement ce 8 septembre, qu’est-ce que ça veut dire pour notre pays, et surtout, qu’est-ce qui nous attend dans les prochaines semaines ? Aujourd’hui on vous propose de comprendre la situation politique de la France, dans cette émission spéciale pour Blast !</p> <p>Une vidéo de Salomé Saqué, Camille Chastrusse et Victor-Ulysse Sultra, Doctorant en droit public<br /> Réalisation et montage : Guillaume Cage<br /> Son : Baptiste Veilhan, Théo Duchesne<br /> Graphisme : Morgane Sabouret, Margaux Simon<br /> Production : Hicham Tragha<br /> Directeur du développement des collaborations extérieures : Mathias Enthoven<br /> Co-directrice de la rédaction : Soumaya Benaïssa<br /> Directeur de la publication : Denis Robert</p> <p>Le site : <a href="https://www.blast-info.fr/" target="_blank" rel="noopener noreferrer">https://www.blast-info.fr/</a><br /> Facebook : <a href="https://www.facebook.com/blastofficiel" target="_blank" rel="noopener noreferrer">https://www.facebook.com/blastofficiel</a><br /> Twitter : <a href="https://twitter.com/blast_france" target="_blank" rel="noopener noreferrer">https://twitter.com/blast_france</a><br /> Instagram : <a href="https://www.instagram.com/blastofficiel/" target="_blank" rel="noopener noreferrer">https://www.instagram.com/blastofficiel/</a><br /> Mastodon : <a href="https://mamot.fr/web/@blast_info" target="_blank" rel="noopener noreferrer">https://mamot.fr/web/@blast_info</a><br /> Peertube : <a href="https://video.blast-info.fr/" target="_blank" rel="noopener noreferrer">https://video.blast-info.fr/</a><br /> Twitch : <a href="https://www.twitch.tv/blastinfo" target="_blank" rel="noopener noreferrer">https://www.twitch.tv/blastinfo</a><br /> Bluesky : <a href="https://bsky.app/profile/blast-info.fr" target="_blank" rel="noopener noreferrer">https://bsky.app/profile/blast-info.fr</a></p> <p>#Bayrou<br /> #Macron<br /> #AssembléeNationale</p> ]]></content:encoded> <dc:creator>blast, le souffle de l’info</dc:creator> <enclosure length="330791032" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/7e6959d8-700e-4af4-ba01-1c2222251865?videoFileIds=5498234&videoFileIds=5498238"/> <media:community> <media:statistics views="2407"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/gBntZoJkp1u673QjjNf2kB"/> <media:player url="https://peertube2.cpy.re/w/gBntZoJkp1u673QjjNf2kB"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/1fc04e53-a04f-4ed3-9997-e7807359ee97-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5ca22255-3b32-48ba-ba44-5d6263dba773-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/3ccd9c78-261e-4b93-849b-6100b1972e12-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/913dfbe3-11aa-4cdb-a282-ba75e4d2f30c-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/905c9c7d-30bf-4d92-8479-4fdac2a9160a-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="308300844" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/7e6959d8-700e-4af4-ba01-1c2222251865/7236c081-a884-4de6-a1ff-60868e820013-1080-fragmented.mp4" framerate="25" duration="1374" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="149424525" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/7e6959d8-700e-4af4-ba01-1c2222251865/fbc346e3-a489-46ac-b19a-0d771c6746c0-720-fragmented.mp4" framerate="25" duration="1374" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="77710935" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/7e6959d8-700e-4af4-ba01-1c2222251865/ab083c92-e299-4f6a-9717-06daf4d5c646-480-fragmented.mp4" framerate="25" duration="1374" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="26999884" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/7e6959d8-700e-4af4-ba01-1c2222251865/2871e3d3-c553-4b0f-849c-b654f0a06e81-240-fragmented.mp4" framerate="25" duration="1374" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="22490188" url="https://cdn.octos3.fr/peertube-blast/streaming-playlists/hls/7e6959d8-700e-4af4-ba01-1c2222251865/dfd588a5-c9a5-4e44-a825-578aa8d15a78-0-fragmented.mp4" framerate="0" duration="1374" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/1ee2a69a-5675-4a6b-99d6-6af9e5893588.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/955ad586-50af-4491-8be3-3b01d4d7c97f.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Démission de Bayrou : une faillite inédite, un grand saut dans l’inconnu</media:title> <media:description type="plain">Soutenez Blast, nouveau média indépendant : https://www.blast-info.fr/soutenir C’est un coup de tonnerre politique. Le 8 septembre 2025, pour la seconde fois en 9 mois, le gouvernement nommé par Emmanuel Macron a perdu la confiance de l’Assembl...</media:description> </item> <item> <title><![CDATA[Poutine contrôle Trump? Théorie du complot mainstream ? Debunk de @leximperii]]></title> <link>https://peertube2.cpy.re/w/tgYb59kxEgkRN7ALQ5jrJW</link> <guid>https://peertube2.cpy.re/w/tgYb59kxEgkRN7ALQ5jrJW</guid> <pubDate>Tue, 09 Sep 2025 12:14:14 GMT</pubDate> <description><![CDATA[https://youtu.be/BoTODOoSVEA?si=12rehvghxhSf6hb9]]></description> <content:encoded><![CDATA[<p><a href="https://youtu.be/BoTODOoSVEA?si=12rehvghxhSf6hb9" target="_blank" rel="noopener noreferrer">https://youtu.be/BoTODOoSVEA?si=12rehvghxhSf6hb9</a></p> ]]></content:encoded> <dc:creator>a_gauche</dc:creator> <enclosure length="40483344" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/dce184c3-8bf3-4e86-82c6-e7d46905e14e?videoFileIds=5498194"/> <media:community> <media:statistics views="7"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/tgYb59kxEgkRN7ALQ5jrJW"/> <media:player url="https://peertube2.cpy.re/w/tgYb59kxEgkRN7ALQ5jrJW"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/a054ade2-4532-42f3-970f-732a70296e47-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5c4b258f-55f9-4cf0-8d50-59a83c1c33cb-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/c4167e47-7f23-4c5d-9cb5-7845e92d9b9e-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/a131f68c-56d1-4a20-aace-3ed170d652a6-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/9a3bfa34-55b9-4f14-a494-c716f027bef2-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="40483344" url="https://static.indymotion.fr/streaming-playlists/hls/dce184c3-8bf3-4e86-82c6-e7d46905e14e/eccbc92a-04aa-4f7b-99f9-51e2a050a3c8-1080-fragmented.mp4" framerate="25" duration="208" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="24641591" url="https://static.indymotion.fr/streaming-playlists/hls/dce184c3-8bf3-4e86-82c6-e7d46905e14e/4ba130b9-314c-4a58-b919-117319a00f1c-720-fragmented.mp4" framerate="25" duration="208" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="15000336" url="https://static.indymotion.fr/streaming-playlists/hls/dce184c3-8bf3-4e86-82c6-e7d46905e14e/f100b611-3d78-4120-b987-9797b6b224e3-480-fragmented.mp4" framerate="25" duration="208" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="7655332" url="https://static.indymotion.fr/streaming-playlists/hls/dce184c3-8bf3-4e86-82c6-e7d46905e14e/d06f5819-585c-4471-a2cf-831ad2df2d46-240-fragmented.mp4" framerate="25" duration="208" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="3481745" url="https://static.indymotion.fr/streaming-playlists/hls/dce184c3-8bf3-4e86-82c6-e7d46905e14e/24bbe0f4-7b32-4d4c-9d0c-dec8e3fb5056-0-fragmented.mp4" framerate="0" duration="208" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/52f10eb4-4dd3-49e3-b246-5a594cd6d194.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/1875b9c9-8194-4a68-afb0-7a09a37d3a0e.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Poutine contrôle Trump? Théorie du complot mainstream ? Debunk de @leximperii</media:title> <media:description type="plain">https://youtu.be/BoTODOoSVEA?si=12rehvghxhSf6hb9</media:description> </item> <item> <title><![CDATA[David Guiraud explose la Macronie en direct ! Les 3 moments forts]]></title> <link>https://peertube2.cpy.re/w/gR2kzSpNDPBkTDzZ9sXoPP</link> <guid>https://peertube2.cpy.re/w/gR2kzSpNDPBkTDzZ9sXoPP</guid> <pubDate>Tue, 09 Sep 2025 10:17:50 GMT</pubDate> <description><![CDATA[Le député David Guiraud (La France Insoumise) livre ses analyses dans les 3 meilleurs passages de son intervention sur le de franceinfo. Il revient sur la réforme des retraites, le projet de loi de finances, la redistribution des richesses et dén...]]></description> <content:encoded><![CDATA[<p>Le député David Guiraud (La France Insoumise) livre ses analyses dans les 3 meilleurs passages de son intervention sur le de franceinfo.<br /> Il revient sur la réforme des retraites, le projet de loi de finances, la redistribution des richesses et dénonce la politique d’Emmanuel Macron.<br /> Guiraud met en lumière les effets de la TVA sociale, les cadeaux fiscaux aux multinationales, la crise de la Sécurité sociale, la situation critique des hôpitaux publics, et la pauvreté à Roubaix et Wattrelos.<br /> Un condensé fort de l’actualité politique française, diffusé par la chaîne franceinfo.</p> <p>#économie #Guiraud #Retraites #lfi #macron</p> <p>Pour soutenir la chaîne de David Guiraud:<br /> <a href="https://www.youtube.com/@davidguiraud3214" target="_blank" rel="noopener noreferrer">https://www.youtube.com/@davidguiraud3214</a></p> <p>Pensez à réduire la qualité de la vidéo.</p> <p>Pour changer le système :<br /> Réclamer le RIC constituant : <a href="https://convergence.ric-france.fr/" target="_blank" rel="noopener noreferrer">https://convergence.ric-france.fr/</a><br /> Changer de banque: <a href="https://www.lanef.com/" target="_blank" rel="noopener noreferrer">https://www.lanef.com/</a> <a href="https://change-de-banque.org/particulier/" target="_blank" rel="noopener noreferrer">https://change-de-banque.org/particulier/</a><br /> Passer à l'action militante: <a href="https://extinctionrebellion.fr/" target="_blank" rel="noopener noreferrer">https://extinctionrebellion.fr/</a> <a href="https://ripostealimentaire.fr/" target="_blank" rel="noopener noreferrer">https://ripostealimentaire.fr/</a><br /> Changer de travail : <a href="https://jobs.makesense.org/fr" target="_blank" rel="noopener noreferrer">https://jobs.makesense.org/fr</a></p> <p>Sources:<br /> <a href="https://www.youtube.com/watch?v=MAD4Uyt-tM8" target="_blank" rel="noopener noreferrer">https://www.youtube.com/watch?v=MAD4Uyt-tM8</a></p> <p>Musique: Invisible Beauty - Aakash Gandhi</p> <p>Montage: lakl42</p> <p>Réponses au quiz de fin :</p> <p>/!\ Description à ne pas lire avant d'avoir vu la vidéo entièrement<br /> /!\</p> <p>/!\</p> <p>/!\ <br /> /!\</p> <p>Quelle taxe LFI a défendue sur le patrimoine des ultra-riches ?<br /> ➡ 2 % au-dessus de 1 milliard d’euros.</p> <p>Quel taux de pauvreté Guiraud évoque-t-il à Roubaix ?<br /> ➡ 46 %.</p> <p>Combien de milliards seraient payés directement par la TVA des Français ?<br /> ➡ Plus de 60 milliards.</p> ]]></content:encoded> <dc:creator>ethique_et_tac</dc:creator> <enclosure length="148568587" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/80515957-510f-40d8-9ab4-ec489766f0e5?videoFileIds=5498184"/> <media:community> <media:statistics views="9"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/gR2kzSpNDPBkTDzZ9sXoPP"/> <media:player url="https://peertube2.cpy.re/w/gR2kzSpNDPBkTDzZ9sXoPP"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/6cf815a1-3e41-448e-b0f2-bfff39c38043-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/14d9e2cc-75fa-45cd-acb1-326509c0c42c-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/28e84171-6f9f-4a47-84f9-214175b3a20f-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/aa58b494-8247-4357-9710-0ccf034cfec0-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/3460899d-d1a8-490f-b541-d55b266fd5d1-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="148568587" url="https://static.indymotion.fr/streaming-playlists/hls/80515957-510f-40d8-9ab4-ec489766f0e5/7e3afd93-ece7-446b-85e0-70c9d68d8f30-1080-fragmented.mp4" framerate="25" duration="743" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="88803420" url="https://static.indymotion.fr/streaming-playlists/hls/80515957-510f-40d8-9ab4-ec489766f0e5/5245624d-9915-4781-af2d-1f002c2f5c07-720-fragmented.mp4" framerate="25" duration="743" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="55883278" url="https://static.indymotion.fr/streaming-playlists/hls/80515957-510f-40d8-9ab4-ec489766f0e5/ef4b898a-2ed7-4d2d-a5d5-bc623c814969-480-fragmented.mp4" framerate="25" duration="743" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="29310324" url="https://static.indymotion.fr/streaming-playlists/hls/80515957-510f-40d8-9ab4-ec489766f0e5/fa0b3b77-55a3-4de6-b560-325a745b7420-240-fragmented.mp4" framerate="25" duration="743" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="12075035" url="https://static.indymotion.fr/streaming-playlists/hls/80515957-510f-40d8-9ab4-ec489766f0e5/de098bfb-7ce2-4ca5-915b-993696024922-0-fragmented.mp4" framerate="0" duration="743" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/5966efcc-8f7f-46ec-b562-39435744db9b.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/3547b4da-e94e-4361-aaa4-9efeede8701b.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">David Guiraud explose la Macronie en direct ! Les 3 moments forts</media:title> <media:description type="plain">Le député David Guiraud (La France Insoumise) livre ses analyses dans les 3 meilleurs passages de son intervention sur le de franceinfo. Il revient sur la réforme des retraites, le projet de loi de finances, la redistribution des richesses et dén...</media:description> </item> <item> <title><![CDATA[Transformer le temps en or]]></title> <link>https://peertube2.cpy.re/w/aHFLLZm1sFw12iDXg5Gozz</link> <guid>https://peertube2.cpy.re/w/aHFLLZm1sFw12iDXg5Gozz</guid> <pubDate>Tue, 09 Sep 2025 06:03:46 GMT</pubDate> <description><![CDATA[Avec l'Autre voie, au Remue-Méninges.]]></description> <content:encoded><![CDATA[<p>Avec l'Autre voie, au Remue-Méninges.</p> ]]></content:encoded> <dc:creator>Extraits sociaux</dc:creator> <category>Entertainment</category> <enclosure length="177552455" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/4eb440bc-3c07-4991-a5ee-4204533a7ed3?videoFileIds=5498140"/> <media:community> <media:statistics views="4"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/aHFLLZm1sFw12iDXg5Gozz"/> <media:player url="https://peertube2.cpy.re/w/aHFLLZm1sFw12iDXg5Gozz"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/20b06585-b5cc-46b2-b07f-fa2398bf5874-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/cbcdcc80-688a-4c74-bcce-8c1486b394c3-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/97a5ebc6-91f6-4ab9-b72b-954dd4f9aea1-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/7b99b25d-624e-4a90-956a-383783b5744f-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5ab754e6-3393-4451-9ed6-7aa4c281269c-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="177552455" url="https://static.indymotion.fr/streaming-playlists/hls/4eb440bc-3c07-4991-a5ee-4204533a7ed3/2646f26b-a765-47da-b22a-a21878f06352-1080-fragmented.mp4" framerate="50" duration="253" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="85572268" url="https://static.indymotion.fr/streaming-playlists/hls/4eb440bc-3c07-4991-a5ee-4204533a7ed3/f87e0d64-ec11-44ba-a8ec-e1a085147c85-720-fragmented.mp4" framerate="50" duration="253" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="41950908" url="https://static.indymotion.fr/streaming-playlists/hls/4eb440bc-3c07-4991-a5ee-4204533a7ed3/35287f46-4884-4fac-9de9-5464a83801b4-480-fragmented.mp4" framerate="25" duration="253" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="17551780" url="https://static.indymotion.fr/streaming-playlists/hls/4eb440bc-3c07-4991-a5ee-4204533a7ed3/ad1008b7-c7ba-42dc-9c78-6f5b106c6bfc-240-fragmented.mp4" framerate="25" duration="253" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="4147930" url="https://static.indymotion.fr/streaming-playlists/hls/4eb440bc-3c07-4991-a5ee-4204533a7ed3/f7cca83e-9bfe-438d-878e-4d9db5f5025c-0-fragmented.mp4" framerate="0" duration="253" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/d1539d49-0b9d-4293-9288-68f4662592b5.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/0da2bdc4-23da-46e4-8e63-6a5ce7ac80db.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Transformer le temps en or</media:title> <media:description type="plain">Avec l'Autre voie, au Remue-Méninges.</media:description> </item> <item> <title><![CDATA[Adventures in porting a Wayland Compositor to NetBSD and OpenBSD by Jeff Frasca]]></title> <link>https://peertube2.cpy.re/w/kSPoDCGAYdE1woLRXio5Cw</link> <guid>https://peertube2.cpy.re/w/kSPoDCGAYdE1woLRXio5Cw</guid> <pubDate>Tue, 09 Sep 2025 05:30:32 GMT</pubDate> <description><![CDATA[Adventures in porting a Wayland Compositor to NetBSD and OpenBSD by Jeff Frasca I'm typing this in my Xuake Wayland Compositor on OpenBSD. I started this journey on the NetBSD 9.99.x branch and ended up having to dig into the guts of wscons,...]]></description> <content:encoded><![CDATA[<p>Adventures in porting a Wayland Compositor to NetBSD and OpenBSD by Jeff Frasca</p> <p>I'm typing this in my Xuake Wayland Compositor on OpenBSD.</p> <p>I started this journey on the NetBSD 9.99.x branch and ended up having to dig into the guts of wscons, mesa, libdrm, the kernel drm subsystem, the AMDGPU driver and more. I have a couple of very small, but hard fought patches in the NetBSD kernel. It's not over yet, either. I still have a few bugs around the compositor shutdown process and a lot of integration work to be able to hope to have other people try this out.</p> <p>Topics to cover in the talk include (but are not limited to):</p> History of Wayland and other background info How your graphics stack and driver is organized and actually works The actual porting journey on both NetBSD and OpenBSD A Demo! I should be able to show it running Current status, future work <p>For more information, please visit:<br /> <a href="https://www.bsdcan.org/2025/" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/</a></p> <ul> <li>and -<br /> <a href="https://www.bsdcan.org/2025/timetable/timetable-Adventures-in-porting.html" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/timetable/timetable-Adventures-in-porting.html</a><br /> #wayland #runbbsd #openbsd #netbsd</li> </ul> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="300168605" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/a0f60749-e6ef-4134-8ac9-0c80528ab1f6?videoFileIds=5498113"/> <media:community> <media:statistics views="6"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/kSPoDCGAYdE1woLRXio5Cw"/> <media:player url="https://peertube2.cpy.re/w/kSPoDCGAYdE1woLRXio5Cw"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/1f9b5fb6-3121-4e31-85f6-dd17f85e1058-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/d0c50017-e1c9-4f3c-84dd-d9894d318411-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/cd113444-929a-4b5b-b61f-45e8b9191698-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5d8baf4a-9fd6-4738-a969-9e1a7cafb036-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/7a6a90d5-d2d4-4dc8-9afe-3c1accf4f56c-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/fc482a01-479d-4218-bd54-25ef9e0765a3-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/bc2c57a3-4116-40a2-8bec-cabd77c960de-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/7a7f4ad0-006e-4fff-a04a-e8c101249187-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5a5d6ef0-edde-4ffa-8fa9-b28ef5ea5d9e-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/0b08ae41-13ff-4a08-8761-e2ce0610b0fa-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/e29a3a6b-8379-4f8d-b95a-064cbb025d0b-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/59c2459b-9948-4260-8910-38aa7ea837b6-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="300168605" url="https://toobnix.org/static/web-videos/f867faee-ca60-451e-aa23-b9de24a68734-1080.mp4" framerate="30" duration="3728" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="194613785" url="https://toobnix.org/static/web-videos/b1f27a78-0df2-4d9b-8138-674454796c80-720.mp4" framerate="30" duration="3728" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="138972065" url="https://toobnix.org/static/web-videos/e93c4ef7-b09e-4d61-8f4b-e139c3cb527e-480.mp4" framerate="30" duration="3728" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="114464276" url="https://toobnix.org/static/web-videos/14d84a83-900a-4ede-bef3-5f528906c6e7-360.mp4" framerate="30" duration="3728" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="91960030" url="https://toobnix.org/static/web-videos/43f53a4d-08b1-471b-8e22-61ce2ab8c3b0-240.mp4" framerate="30" duration="3728" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="59725376" url="https://toobnix.org/static/web-videos/5e557e1d-2c05-4766-8747-86a460ed2523-0.mp4" framerate="0" duration="3728" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="298873947" url="https://toobnix.org/static/streaming-playlists/hls/a0f60749-e6ef-4134-8ac9-0c80528ab1f6/e6b918db-b32c-4178-928a-ca0521dbfb40-1080-fragmented.mp4" framerate="30" duration="3728" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="193284439" url="https://toobnix.org/static/streaming-playlists/hls/a0f60749-e6ef-4134-8ac9-0c80528ab1f6/9eeb1e80-3fbb-4cf7-a85b-db3a4112c54e-720-fragmented.mp4" framerate="30" duration="3728" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="137622235" url="https://toobnix.org/static/streaming-playlists/hls/a0f60749-e6ef-4134-8ac9-0c80528ab1f6/68ecab7c-72e9-4d3b-8a80-af396ee9570d-480-fragmented.mp4" framerate="30" duration="3728" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="113093122" url="https://toobnix.org/static/streaming-playlists/hls/a0f60749-e6ef-4134-8ac9-0c80528ab1f6/f058c2b3-844b-43c1-ac89-01e9e4a52b37-360-fragmented.mp4" framerate="30" duration="3728" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="90564020" url="https://toobnix.org/static/streaming-playlists/hls/a0f60749-e6ef-4134-8ac9-0c80528ab1f6/a885fd68-6d0c-4a9c-8589-64546a9e35f1-240-fragmented.mp4" framerate="30" duration="3728" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="59874222" url="https://toobnix.org/static/streaming-playlists/hls/a0f60749-e6ef-4134-8ac9-0c80528ab1f6/f094b370-6cee-4051-8405-78c87703bddc-0-fragmented.mp4" framerate="0" duration="3728" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/ee9ed299-f502-45ba-9916-3cf378247743.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/1945ecc1-6e79-484c-94ac-db91de3b4e70.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Adventures in porting a Wayland Compositor to NetBSD and OpenBSD by Jeff Frasca</media:title> <media:description type="plain">Adventures in porting a Wayland Compositor to NetBSD and OpenBSD by Jeff Frasca I'm typing this in my Xuake Wayland Compositor on OpenBSD. I started this journey on the NetBSD 9.99.x branch and ended up having to dig into the guts of wscons,...</media:description> </item> <item> <title><![CDATA[Automating My FreeBSD Lab From Setup to Daily Use with Ansible & Salt by Roller Angel]]></title> <link>https://peertube2.cpy.re/w/2PFfRip84BVCWZHZNXjqbG</link> <guid>https://peertube2.cpy.re/w/2PFfRip84BVCWZHZNXjqbG</guid> <pubDate>Tue, 09 Sep 2025 05:17:51 GMT</pubDate> <description><![CDATA[Automating My FreeBSD Lab: From Setup to Daily Use with Ansible & Salt by Roller Angel Automating My FreeBSD Lab: From Setup to Daily Use with Ansible & Salt Abstract Managing multiple FreeBSD machines can be time-consuming, but automation ma...]]></description> <content:encoded><![CDATA[<p>Automating My FreeBSD Lab: From Setup to Daily Use with Ansible & Salt by Roller Angel<br /> Automating My FreeBSD Lab: From Setup to Daily Use with Ansible & Salt<br /> Abstract</p> <p>Managing multiple FreeBSD machines can be time-consuming, but automation makes it effortless. In this talk, I will demonstrate how I use Ansible to set up my FreeBSD lab and Salt to maintain and scale it across multiple machines—including how I configured a second FreeBSD laptop with just SSH access.</p> <p>Attendees will see how automation enables:</p> Seamless FreeBSD system setup using Ansible. Automated configuration management with Salt. Effortless scaling to new machines, reducing manual setup to a few commands. <p>By the end of the talk, attendees will understand how to leverage Ansible and Salt to build a reproducible and maintainable FreeBSD infrastructure.<br /> Intended Audience</p> FreeBSD users interested in automating system setup and maintenance. System administrators managing multiple FreeBSD machines. Anyone curious about Ansible and Salt for FreeBSD automation. <p>Attendees should have basic FreeBSD knowledge, but no prior experience with automation tools is required.<br /> Outline</p> <ol> <li> <p>Introduction (5 min)</p> <p>Why automate?</p> <p>My FreeBSD lab & laptop setup overview.</p> </li> <li> <p>Building My FreeBSD Lab with Ansible (15 min)</p> <p>Bootstrapping a new system.</p> <p>Automating system installation & package setup.</p> <p>Adding a second laptop with just SSH access.</p> </li> <li> <p>Maintaining & Scaling with Salt (15 min)</p> <p>Managing configs, packages, and updates.</p> <p>Enforcing system state across multiple machines.</p> <p>How I maintain consistency between multiple devices.</p> </li> <li> <p>Lessons Learned & Challenges (5 min)</p> <p>Why this method works well for FreeBSD.</p> <p>Troubleshooting automation quirks.</p> </li> <li> <p>Q&A (5 min)<br /> What Attendees Will Learn</p> <p>How to use Ansible to set up FreeBSD machines quickly.</p> <p>How Salt makes long-term configuration management effortless.</p> <p>How to automate multiple FreeBSD machines with minimal manual work.</p> </li> </ol> <p>For more information, please visit:<br /> <a href="https://www.bsdcan.org/2025/" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/</a></p> <ul> <li>and -<br /> <a href="https://www.bsdcan.org/2025/timetable/timetable-Automating-My-FreeBSD.html" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/timetable/timetable-Automating-My-FreeBSD.html</a></li> </ul> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="220195838" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/0ec149ca-2620-4633-858d-c5dbc527b58c?videoFileIds=5498103"/> <media:community> <media:statistics views="2"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/2PFfRip84BVCWZHZNXjqbG"/> <media:player url="https://peertube2.cpy.re/w/2PFfRip84BVCWZHZNXjqbG"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/855d0d61-0acc-471d-bc24-2d419d695ee1-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/25078fc6-8bab-42fd-979c-df600166471a-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/fde4ab9b-4df6-4529-9b19-78a30ff60b4c-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/90a4b966-5338-4130-945e-0c21c01db88f-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/ac8126e4-1cff-4097-b07e-3adc7d8c37b1-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/4a2e1ebe-95ba-4da9-91ca-624ef56dd0b1-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/6a32e7c9-dcfd-4d28-9d35-5f064dc5cbea-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/391528dd-6953-4080-9f76-f085e44489a1-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/b7ea5a0b-4479-4ea6-beef-e20804fd55e7-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/f06959ef-7466-49df-bbaf-523e88ee17b8-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/0cb8bd32-a15c-4a2c-937f-2deb9d6a3f36-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/f9c7a729-b937-4eb8-98ed-1fb2d2a7b32c-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="220195838" url="https://toobnix.org/static/web-videos/39c01add-ec6b-404f-830c-93efed001e91-1080.mp4" framerate="30" duration="2778" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="147126451" url="https://toobnix.org/static/web-videos/2c6acc7d-7d56-45e7-a6d5-d8cc716a8442-720.mp4" framerate="30" duration="2778" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="106714368" url="https://toobnix.org/static/web-videos/455c93c3-b91b-4ebe-a655-fd6331db952e-480.mp4" framerate="30" duration="2778" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="86900139" url="https://toobnix.org/static/web-videos/277083e5-2854-4b65-bed4-ee101d0dca89-360.mp4" framerate="30" duration="2778" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="70122928" url="https://toobnix.org/static/web-videos/aa468e5c-1c2a-42ac-a218-56d966134862-240.mp4" framerate="30" duration="2778" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="44659015" url="https://toobnix.org/static/web-videos/ae5ff500-e1b1-4862-802c-a30096f51716-0.mp4" framerate="0" duration="2778" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="219228656" url="https://toobnix.org/static/streaming-playlists/hls/0ec149ca-2620-4633-858d-c5dbc527b58c/31ec83aa-ecc2-4823-b803-1aeccd3e5360-1080-fragmented.mp4" framerate="30" duration="2778" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="146119549" url="https://toobnix.org/static/streaming-playlists/hls/0ec149ca-2620-4633-858d-c5dbc527b58c/f570cb35-d5af-4caa-973b-498c5ef4d439-720-fragmented.mp4" framerate="30" duration="2778" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="105675138" url="https://toobnix.org/static/streaming-playlists/hls/0ec149ca-2620-4633-858d-c5dbc527b58c/672c721e-127f-4628-a636-e0fba2f50c64-480-fragmented.mp4" framerate="30" duration="2778" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="85831893" url="https://toobnix.org/static/streaming-playlists/hls/0ec149ca-2620-4633-858d-c5dbc527b58c/bde223af-00af-4b7c-8e8c-dc44f4891965-360-fragmented.mp4" framerate="30" duration="2778" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="69000658" url="https://toobnix.org/static/streaming-playlists/hls/0ec149ca-2620-4633-858d-c5dbc527b58c/7cef7a32-e3ae-4b77-85cd-3a49a1aafdfa-240-fragmented.mp4" framerate="30" duration="2778" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="44770241" url="https://toobnix.org/static/streaming-playlists/hls/0ec149ca-2620-4633-858d-c5dbc527b58c/9c2ce99b-dfe2-421d-a7d9-417a025cc8f0-0-fragmented.mp4" framerate="0" duration="2778" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/b15e36f3-d75a-4cfd-8ee0-510e9173e890.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/322fda50-a3f4-4159-9792-302088fec3ac.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Automating My FreeBSD Lab From Setup to Daily Use with Ansible & Salt by Roller Angel</media:title> <media:description type="plain">Automating My FreeBSD Lab: From Setup to Daily Use with Ansible & Salt by Roller Angel Automating My FreeBSD Lab: From Setup to Daily Use with Ansible & Salt Abstract Managing multiple FreeBSD machines can be time-consuming, but automation ma...</media:description> </item> <item> <title><![CDATA[ZFS Direct IO Benchmarking Pitfalls by Mateusz Piotrowski]]></title> <link>https://peertube2.cpy.re/w/oVFD3aDydW1iqTVPPod7Co</link> <guid>https://peertube2.cpy.re/w/oVFD3aDydW1iqTVPPod7Co</guid> <pubDate>Tue, 09 Sep 2025 04:58:34 GMT</pubDate> <description><![CDATA[ZFS Direct IO Benchmarking Pitfalls by Mateusz Piotrowski Not too long ago, support for direct IO landed in OpenZFS after years of discussions and reviews. We truly live in the future where we can finally reject complicated caching and fully em...]]></description> <content:encoded><![CDATA[<p>ZFS Direct IO Benchmarking Pitfalls by Mateusz Piotrowski</p> <p>Not too long ago, support for direct IO landed in OpenZFS after years of discussions and reviews. We truly live in the future where we can finally reject complicated caching and fully embrace the unbuffered conversations with our disks. Or can we really?</p> <p>Those of you who know a bit about ZFS know that the ARC is actually pretty important (without one ZFS would historically stand for zzz 😴 instead of Zetta). How could it be then that skipping the ARC might improve performance?</p> <p>During the presentation we will discuss what workloads and setups benefit from direct IO, what its limitations are, and what pitfalls to avoid during benchmarking. We will also look at the implementation to understand how all the promises of stability and compatibility were kept.</p> <p>Direct IO is reported to deliver amazing performance boosts in some deployments. Understanding how not to hold it wrong is a great first step to potentially unlocking that speed-up on your systems too!</p> <p>For more information, please visit:<br /> <a href="https://www.bsdcan.org/2025/" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/</a></p> <ul> <li>and -<br /> <a href="https://www.bsdcan.org/2025/timetable/timetable-ZFS-Direct-IO.html" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/timetable/timetable-ZFS-Direct-IO.html</a></li> </ul> <p>#zfs #benchmarking #freebsd</p> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="198632820" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/b9a7e602-19bb-4fb3-a6b9-8169421be1f6?videoFileIds=5498026"/> <media:community> <media:statistics views="0"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/oVFD3aDydW1iqTVPPod7Co"/> <media:player url="https://peertube2.cpy.re/w/oVFD3aDydW1iqTVPPod7Co"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/ccb82a4b-0d35-419a-9960-071a7e485bfb-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/7ac37c21-963f-4836-bd0e-75135807596a-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/77e21d58-5f7a-4826-a329-74ad9d4cb0d5-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/774d1e08-45af-4784-8c68-5855a137cd52-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/3370aed4-0f5e-46ec-b893-6e6f977c7613-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/f324bc2f-6709-43c0-928c-f4f1ebbb48ed-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/6bdbda09-683a-4d6c-ac24-de1f610f0cef-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/4df4b4a8-0323-404c-a688-5da2c7ec4dc1-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/555e8334-f9bc-4f32-b307-067912741674-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/c2051a4f-3a63-47bf-b5f8-b2b059c9cb1c-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/ea5e6a1f-de2d-428d-9ae2-8895d293dac0-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/203db19b-c74b-4ee2-88b1-24030b075fe7-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="198632820" url="https://toobnix.org/static/web-videos/409fed8d-9275-40c6-acce-e5102b47aed1-1080.mp4" framerate="30" duration="2775" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="126862204" url="https://toobnix.org/static/web-videos/725096f5-ec35-4f77-9f5d-63b0c46d68b2-720.mp4" framerate="30" duration="2775" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="90418992" url="https://toobnix.org/static/web-videos/7d530a11-2abf-4e7d-8b13-12aab1e27cda-480.mp4" framerate="30" duration="2775" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="76014046" url="https://toobnix.org/static/web-videos/f97b5234-edd7-4664-b8c3-2fbe0cf3de54-360.mp4" framerate="30" duration="2775" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="62731328" url="https://toobnix.org/static/web-videos/349a1f4e-2c02-4b1c-b9c2-a2f429d51fd1-240.mp4" framerate="30" duration="2775" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="44428246" url="https://toobnix.org/static/web-videos/f07e0d21-bb9a-41ed-9e34-9e31fda901a4-0.mp4" framerate="0" duration="2775" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="197628502" url="https://toobnix.org/static/streaming-playlists/hls/b9a7e602-19bb-4fb3-a6b9-8169421be1f6/3ef91330-cbf5-4647-97c9-2ad444ba0b74-1080-fragmented.mp4" framerate="30" duration="2775" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="125868998" url="https://toobnix.org/static/streaming-playlists/hls/b9a7e602-19bb-4fb3-a6b9-8169421be1f6/528b133d-1f2a-4ac2-9445-5ba10fbfe9a7-720-fragmented.mp4" framerate="30" duration="2775" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="89419202" url="https://toobnix.org/static/streaming-playlists/hls/b9a7e602-19bb-4fb3-a6b9-8169421be1f6/c86f0297-32a2-4ed7-bdd8-715b70da2bf9-480-fragmented.mp4" framerate="30" duration="2775" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="75009584" url="https://toobnix.org/static/streaming-playlists/hls/b9a7e602-19bb-4fb3-a6b9-8169421be1f6/b59254ba-1a56-4139-88f2-f499123b5058-360-fragmented.mp4" framerate="30" duration="2775" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="61688546" url="https://toobnix.org/static/streaming-playlists/hls/b9a7e602-19bb-4fb3-a6b9-8169421be1f6/66d0a6cd-dc51-47c3-96a4-dd3065473321-240-fragmented.mp4" framerate="30" duration="2775" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="44539988" url="https://toobnix.org/static/streaming-playlists/hls/b9a7e602-19bb-4fb3-a6b9-8169421be1f6/a60c26f2-f292-40db-aac8-4a3008daaa2b-0-fragmented.mp4" framerate="0" duration="2775" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/59b41218-00bd-45fe-9d40-f08ead325037.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/10a4d647-039c-4931-bee1-2e1db2f804e2.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">ZFS Direct IO Benchmarking Pitfalls by Mateusz Piotrowski</media:title> <media:description type="plain">ZFS Direct IO Benchmarking Pitfalls by Mateusz Piotrowski Not too long ago, support for direct IO landed in OpenZFS after years of discussions and reviews. We truly live in the future where we can finally reject complicated caching and fully em...</media:description> </item> <item> <title><![CDATA[The NetBSD Packet FilterNPFby Emmanuel Nyarko]]></title> <link>https://peertube2.cpy.re/w/g7GLg3H1c6hN5bhDsQHKDx</link> <guid>https://peertube2.cpy.re/w/g7GLg3H1c6hN5bhDsQHKDx</guid> <pubDate>Tue, 09 Sep 2025 03:57:54 GMT</pubDate> <description><![CDATA[One of NetBSD's goal with network security is to upgrade NPF with lots of useful features and then be used as the primary packet filter. In this talk, As NetBSD's current primary maintainer of NPF, I will reveal the improvements I have added to Ne...]]></description> <content:encoded><![CDATA[<p>One of NetBSD's goal with network security is to upgrade NPF with lots of useful features and then be used as the primary packet filter. In this talk, As NetBSD's current primary maintainer of NPF, I will reveal the improvements I have added to NetBSD's NPF packet filter. I will also reveal Further improvements in relation to performance and the direction of the project to reaching completion.</p> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="209565069" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/7a68a9e6-32db-48da-b302-f9dec0543c75?videoFileIds=5498022"/> <media:community> <media:statistics views="0"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/g7GLg3H1c6hN5bhDsQHKDx"/> <media:player url="https://peertube2.cpy.re/w/g7GLg3H1c6hN5bhDsQHKDx"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/d9a5be3c-1c35-4562-92e9-54974de385fd-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/fe2e69c3-7b47-4b2b-a6ce-fd3052cd9985-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/a2ee22f9-901d-4481-9ebb-5f82e1aa230a-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/35361908-c706-463b-98ec-ab607d019532-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/f0d241fc-e7aa-4939-a01c-8633e4315a01-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5d09c3c0-c2fe-40ba-b355-67b91c850579-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/8965e0b8-28b7-4ce8-b12f-45c1075d10b9-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/4ea9794c-5004-4831-94d9-324e05c0c294-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/e9834f4c-55c2-4501-b76e-b4d854dc3121-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/ff97249e-700c-44f2-8efb-4e1f5042e97c-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5a37d424-1893-4b81-87fa-f5ae3ea3e12d-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/2e638cec-71f3-4eda-9595-27c24942b22c-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="209565069" url="https://toobnix.org/static/web-videos/ded60b77-d148-485d-b864-a0bc4c4b31dd-1080.mp4" framerate="30" duration="3418" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="145935459" url="https://toobnix.org/static/web-videos/211d9ca4-6853-47d5-9a4d-5dd19b486b70-720.mp4" framerate="30" duration="3418" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="109606143" url="https://toobnix.org/static/web-videos/567d3b44-91e6-4dcc-bf93-55c5d5de7c93-480.mp4" framerate="30" duration="3418" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="92579502" url="https://toobnix.org/static/web-videos/a2296fea-ad58-40d6-a0c2-39584f5f0d32-360.mp4" framerate="30" duration="3418" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="78078534" url="https://toobnix.org/static/web-videos/e86383e4-0153-4e78-8f65-c1cf2fbe3f25-240.mp4" framerate="30" duration="3418" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="54640910" url="https://toobnix.org/static/web-videos/69762fbb-7319-4dc5-b1c1-c67ddba28137-0.mp4" framerate="0" duration="3418" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="208415911" url="https://toobnix.org/static/streaming-playlists/hls/7a68a9e6-32db-48da-b302-f9dec0543c75/4dbf4f63-8776-48dd-971c-1374a9d93edf-1080-fragmented.mp4" framerate="30" duration="3418" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="144777829" url="https://toobnix.org/static/streaming-playlists/hls/7a68a9e6-32db-48da-b302-f9dec0543c75/f948a36a-4ea1-4b37-83b7-2f00b1a56a46-720-fragmented.mp4" framerate="30" duration="3418" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="108412281" url="https://toobnix.org/static/streaming-playlists/hls/7a68a9e6-32db-48da-b302-f9dec0543c75/dd475bd3-1882-4de7-b896-45284ba523b8-480-fragmented.mp4" framerate="30" duration="3418" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="91353920" url="https://toobnix.org/static/streaming-playlists/hls/7a68a9e6-32db-48da-b302-f9dec0543c75/1dab394c-68ab-42cb-ac00-5185de70b442-360-fragmented.mp4" framerate="30" duration="3418" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="76788768" url="https://toobnix.org/static/streaming-playlists/hls/7a68a9e6-32db-48da-b302-f9dec0543c75/6d98eaf4-9b92-4591-9f1f-ae36610c178f-240-fragmented.mp4" framerate="30" duration="3418" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="54776852" url="https://toobnix.org/static/streaming-playlists/hls/7a68a9e6-32db-48da-b302-f9dec0543c75/191cc741-db9f-4fce-aa50-a534bd2d2f62-0-fragmented.mp4" framerate="0" duration="3418" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/6c203e1e-0a3e-4c7d-b70c-e113e66315f6.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/144861b0-9918-4e8a-ba5f-7298a79cb916.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">The NetBSD Packet FilterNPFby Emmanuel Nyarko</media:title> <media:description type="plain">One of NetBSD's goal with network security is to upgrade NPF with lots of useful features and then be used as the primary packet filter. In this talk, As NetBSD's current primary maintainer of NPF, I will reveal the improvements I have added to Ne...</media:description> </item> <item> <title><![CDATA[Enhancing Unix Education through Chaos Engineering and Gamification using FreeBSD by Andreas Kirchne]]></title> <link>https://peertube2.cpy.re/w/7ukG6jokmvHKMHQzrsoJoQ</link> <guid>https://peertube2.cpy.re/w/7ukG6jokmvHKMHQzrsoJoQ</guid> <pubDate>Tue, 09 Sep 2025 03:42:43 GMT</pubDate> <description><![CDATA[A new BSDCan video has been posted: Enhancing Unix Education through Chaos Engineering and Gamification using FreeBSD by Andreas Kirchner, Benedict Reuschling The misuse of AI in education for cheating purposes has created challenges in assess...]]></description> <content:encoded><![CDATA[<p>A new BSDCan video has been posted:<br /> Enhancing Unix Education through Chaos Engineering and Gamification using FreeBSD by Andreas Kirchner, Benedict Reuschling</p> <p>The misuse of AI in education for cheating purposes has created challenges in assessing students' authentic contributions in the last couple of years. Another issue we identified is that University labs rarely teach problem-solving skills for a real-world scenario that students have to deal with in their post-academic working life (i.e. fixing production issues). Traditional assignments lacked real-world relevance (and were easily solved with the help of AI), leaving students unprepared for professional challenges in their later jobs. To address this, we developed as part of a master's thesis for University of Applied Sciences, Darmstadt, Germany a new teaching framework leveraging Chaos Engineering and Gamification elements to modernize Unix education on FreeBSD. With our new system, real-world problems can be simulated by instructors and allows students to use system administrator permissions to solve them. We also developed this system to make it difficult for participants to "cheat" using AI and evaluated the system towards that end with a group of students.</p> <p>This talk will introduce our new "Chaos education system" tested in the "Unix for Software Developers" course at the University. The name stems from the chaos monkey systems that intentionally "wreak havoc" on production systems to improve their resiliency and train the sysadmins managing them to find and fix them. Our approach lets instructors inject intentional faults (error scenarios) into student-managed FreeBSD jails. The students must then identify, resolve, and prevent these issues from occurring again using standard system administration tools, including root permissions. To increase student motivation to solve these scenarios quickly (and to create artificial "production system is at stake" pressure), a global highscore list is used as a gamification element: each time an issue is solved, points are awarded to that team based on the elapsed time and an instructor-defined difficulty bonus. A post-mortem group discussion with the instructor lets students talk through various ways of solving the issue, giving the group deeper insights on possible solutions each group had used. Using the system, the students gain practical skills like troubleshooting, system recovery, and proactive system management with real-world scenarios, something that traditional "one size fits all" assignments lack.</p> <p>We built the whole system using BSD-licensed open source components: FreeBSD, pf, VNET, bastille jails and templates. Shells scripts act as the glue to tie them together and implement the logic for the rest of the chaos monkey system. The prototype system has been tested with two student groups of 16 students each in January 2025. One group was allowed to use ChatGPT during the scenarios to see how AI-support helps them (if at all). Insights from this testing was used to enhance the system further.</p> <p>This talk will introduce the chaos education system idea, implementation, demonstrate its functionality, and discuss future work in this area. FreeBSD proved to be an excellent building platform for this system, due to its great modularity, open source, low resource overhead, and available documentation. The system can be enhanced further and used outside of an academic environment, like employee training or workshop-style challenges at events. It is easy for instructors to construct a custom scenario for participants and inject it into the training jails. The system can scale to a number of parallel users due to the lightweight nature that FreeBSD jails provide.</p> <p>Audience: Educators, trainers, and system administrators interested in modernizing Unix/Linux education through hands-on, interactive methods. Managers may find the system interesting for training their own employees by constructing scenarios mimicking their own environment.</p> <p>For more information, please visit:<br /> <a href="https://www.bsdcan.org/2025/" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/</a></p> <ul> <li>and -<br /> <a href="https://www.bsdcan.org/2025/timetable/timetable-Enhancing-Unix-Education.html" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/timetable/timetable-Enhancing-Unix-Education.html</a></li> </ul> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="248403389" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/348bcaec-c1a6-4883-a665-55217dc2a204?videoFileIds=5498024"/> <media:community> <media:statistics views="1"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/7ukG6jokmvHKMHQzrsoJoQ"/> <media:player url="https://peertube2.cpy.re/w/7ukG6jokmvHKMHQzrsoJoQ"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/9d99a980-c8a6-4ead-a2ee-871206f3c78a-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/17591a1c-9a22-4a1a-834a-a9eb0d504080-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/fa500744-0053-494c-a0fe-340502d30388-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/b0a47297-8f5d-477a-9db6-6dbae8e36e94-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/f0651d72-5639-4820-9493-f877783d16bb-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/0d6d4644-26bb-4d2e-a50d-5def78bf103f-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/e90c0305-d911-4de0-ae84-5c9719f6d71a-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/7a52895f-35fa-4a27-80de-2c2aafd71ec6-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/fe75404c-acd7-43db-93c1-7c694c78ca9a-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/0edacd63-cb90-49e8-bc8d-500c3757a2c0-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/cc454ac7-b9cb-4bfb-81f9-5fea38a4e974-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/da557121-7f67-498d-9691-177b41e6a466-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="248403389" url="https://toobnix.org/static/web-videos/2e5197eb-57e2-4e3c-9abc-2d143e324778-1080.mp4" framerate="30" duration="3542" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="173735849" url="https://toobnix.org/static/web-videos/df6345a4-3600-4bc0-a25e-c24a2ee2cbaf-720.mp4" framerate="30" duration="3542" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="128807159" url="https://toobnix.org/static/web-videos/a3ec2ea5-affc-436a-9200-36d9379b1364-480.mp4" framerate="30" duration="3542" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="105682217" url="https://toobnix.org/static/web-videos/4c8b0d0d-99a9-42a8-8c2e-aa23c09c69de-360.mp4" framerate="30" duration="3542" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="85641913" url="https://toobnix.org/static/web-videos/f2f68ad0-a506-496f-b6c3-94409b498435-240.mp4" framerate="30" duration="3542" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="56683831" url="https://toobnix.org/static/web-videos/4d20a0fc-76b6-4eb8-b3af-8be2df75cc84-0.mp4" framerate="0" duration="3542" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="247201055" url="https://toobnix.org/static/streaming-playlists/hls/348bcaec-c1a6-4883-a665-55217dc2a204/9f06bdd2-4f8a-43d5-a94d-1a80c80a4996-1080-fragmented.mp4" framerate="30" duration="3542" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="172519335" url="https://toobnix.org/static/streaming-playlists/hls/348bcaec-c1a6-4883-a665-55217dc2a204/efb11f8f-242a-4454-bb3c-1d432a6f2547-720-fragmented.mp4" framerate="30" duration="3542" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="127566661" url="https://toobnix.org/static/streaming-playlists/hls/348bcaec-c1a6-4883-a665-55217dc2a204/0e7c788e-90cb-4dd9-944e-e2799fc76228-480-fragmented.mp4" framerate="30" duration="3542" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="104422951" url="https://toobnix.org/static/streaming-playlists/hls/348bcaec-c1a6-4883-a665-55217dc2a204/aa377e89-7626-4fdf-8bc2-ac4143f11861-360-fragmented.mp4" framerate="30" duration="3542" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="84344295" url="https://toobnix.org/static/streaming-playlists/hls/348bcaec-c1a6-4883-a665-55217dc2a204/d0a184b2-339e-4ab0-9e34-ccc5f5e12ac9-240-fragmented.mp4" framerate="30" duration="3542" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="56824705" url="https://toobnix.org/static/streaming-playlists/hls/348bcaec-c1a6-4883-a665-55217dc2a204/11771d11-3970-45fe-9211-6c3b762dff21-0-fragmented.mp4" framerate="0" duration="3542" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/6f1baaaa-792a-49df-bd40-a8b3a9d07b8c.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/3ff7edd3-b69e-49ed-94c3-f18833909aca.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Enhancing Unix Education through Chaos Engineering and Gamification using FreeBSD by Andreas Kirchne</media:title> <media:description type="plain">A new BSDCan video has been posted: Enhancing Unix Education through Chaos Engineering and Gamification using FreeBSD by Andreas Kirchner, Benedict Reuschling The misuse of AI in education for cheating purposes has created challenges in assess...</media:description> </item> <item> <title><![CDATA[Effective Bug Reports, Code Change Requests, and Conference Proposals by Michael Dexter]]></title> <link>https://peertube2.cpy.re/w/kQKyuttv2fSVBznH8oKd6Q</link> <guid>https://peertube2.cpy.re/w/kQKyuttv2fSVBznH8oKd6Q</guid> <pubDate>Tue, 09 Sep 2025 03:42:33 GMT</pubDate> <description><![CDATA[Effective Bug Reports, Code Change Requests, and Conference Proposals by Michael Dexter Open Source is participatory and BSD Unix is no exception, with its own unique development workflows and events. Bug reporting, code proposing, and event...]]></description> <content:encoded><![CDATA[<p>Effective Bug Reports, Code Change Requests, and Conference Proposals by Michael Dexter</p> <p>Open Source is participatory and BSD Unix is no exception, with its own unique development workflows and events. Bug reporting, code proposing, and event participation are fundamental elements of the BSD Unix community and despite appearances, are open to anyone to participate.</p> <p>This talk will take a pragmatic tour of effective engagement on these topics with real-world examples and tips for:</p> Bug reports that are actionable and inspire attention Code change requests and reviews that are more likely to review and acceptance Conference proposals that stand out, accurately set expectations, and are more likely to be accepted <p>The secret is that all of that all of these are fundamentally indistinguishable: You are tasked with marketing your idea to others and must show your work, justify your points, demonstrate sincerity, and ultimately convince others of your initiative, regardless of its size.</p> <p>For more information, please visit:<br /> <a href="https://www.bsdcan.org/2025/" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/</a></p> <ul> <li>and -<br /> <a href="https://www.bsdcan.org/2025/timetable/timetable-Effective-Bug-Reports,.html" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/timetable/timetable-Effective-Bug-Reports,.html</a></li> </ul> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="243338553" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/a0ac2e2f-fc1b-4f35-904e-0504ddae8a3a?videoFileIds=5498071"/> <media:community> <media:statistics views="2"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/kQKyuttv2fSVBznH8oKd6Q"/> <media:player url="https://peertube2.cpy.re/w/kQKyuttv2fSVBznH8oKd6Q"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/9a8144b7-4337-44f7-9dc6-f54bb7cfc18e-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/b678b4e7-a12d-4d81-90ca-096072f1c552-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/8789efb8-49fa-408b-b95c-fac14cf7e03d-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/fc799cf3-9faf-42d8-9685-e6b44a0e142a-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/4e36fb78-b1dc-4a2a-a5e3-3e0ffd4f32ad-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/be3ce33c-13a2-4bd0-8f46-664c447b3b18-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/c49c6722-2135-46dd-8763-f63ffb254923-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/ddc61b89-df11-4ae6-9fb4-e6ec6be96a2f-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/27b4b2b1-4712-40fd-8fa6-6ed3a4582e8a-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/63202ea6-609f-47d8-b9da-52933b188d0e-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/8f7aae49-b8d6-4750-b381-a5eb0af37604-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/c99e3385-2111-4e80-b636-f829457221d0-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="243338553" url="https://toobnix.org/static/web-videos/a747109e-93fd-473a-88e3-7c3b0c07cf64-1080.mp4" framerate="30" duration="3443" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="166216401" url="https://toobnix.org/static/web-videos/d021218c-9314-445b-8bb7-03c275bf8227-720.mp4" framerate="30" duration="3443" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="122111530" url="https://toobnix.org/static/web-videos/94ca735d-f9c9-48b1-94ae-127db64b658e-480.mp4" framerate="30" duration="3443" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="101115063" url="https://toobnix.org/static/web-videos/8680e929-4cb1-4798-8986-670592bbf06d-360.mp4" framerate="30" duration="3443" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="83229148" url="https://toobnix.org/static/web-videos/c02c6d4f-0dae-49d3-9671-36cff1911a30-240.mp4" framerate="30" duration="3443" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="55214658" url="https://toobnix.org/static/web-videos/6dbd808f-63e6-4f07-9739-45b13652b704-0.mp4" framerate="0" duration="3443" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="242052051" url="https://toobnix.org/static/streaming-playlists/hls/a0ac2e2f-fc1b-4f35-904e-0504ddae8a3a/becdea25-b869-4255-bcb6-b5ba77a3a3c2-1080-fragmented.mp4" framerate="30" duration="3443" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="164905555" url="https://toobnix.org/static/streaming-playlists/hls/a0ac2e2f-fc1b-4f35-904e-0504ddae8a3a/15bce8d3-c746-4916-8634-80eb8c63e4cd-720-fragmented.mp4" framerate="30" duration="3443" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="120787732" url="https://toobnix.org/static/streaming-playlists/hls/a0ac2e2f-fc1b-4f35-904e-0504ddae8a3a/beaa88f8-a0e0-4e8d-8099-b0f3c044f70d-480-fragmented.mp4" framerate="30" duration="3443" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="99811217" url="https://toobnix.org/static/streaming-playlists/hls/a0ac2e2f-fc1b-4f35-904e-0504ddae8a3a/b4b207fa-c3c9-418e-9f5e-37395a8cb505-360-fragmented.mp4" framerate="30" duration="3443" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="81902142" url="https://toobnix.org/static/streaming-playlists/hls/a0ac2e2f-fc1b-4f35-904e-0504ddae8a3a/0fee6853-87a1-4927-b026-f56504ce3adb-240-fragmented.mp4" framerate="30" duration="3443" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="55352144" url="https://toobnix.org/static/streaming-playlists/hls/a0ac2e2f-fc1b-4f35-904e-0504ddae8a3a/e412ac47-2c8e-41b5-b339-5ebe64e71266-0-fragmented.mp4" framerate="0" duration="3443" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/875c044b-fcc1-4b59-9965-023a1d9a57d2.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/e31f1845-a2fb-43b4-a078-8487a72b0b9c.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Effective Bug Reports, Code Change Requests, and Conference Proposals by Michael Dexter</media:title> <media:description type="plain">Effective Bug Reports, Code Change Requests, and Conference Proposals by Michael Dexter Open Source is participatory and BSD Unix is no exception, with its own unique development workflows and events. Bug reporting, code proposing, and event...</media:description> </item> <item> <title><![CDATA[Vox FreeBSD How sound4 works by Christos Margiolis]]></title> <link>https://peertube2.cpy.re/w/c636X2QDCrUCsVvgZVfMZr</link> <guid>https://peertube2.cpy.re/w/c636X2QDCrUCsVvgZVfMZr</guid> <pubDate>Tue, 09 Sep 2025 03:33:34 GMT</pubDate> <description><![CDATA[FreeBSD's audio subsystem, sound(4), is one of the fastest out there, but is rather unknown and until recently was largely unmaintained. This talk will go through the various components of sound(4) that make sound possible on FreeBSD, that is: ...]]></description> <content:encoded><![CDATA[<p>FreeBSD's audio subsystem, sound(4), is one of the fastest out there, but is rather unknown and until recently was largely unmaintained. This talk will go through the various components of sound(4) that make sound possible on FreeBSD, that is:</p> The generic driver's structure, control flow and interaction with the device drivers. The audio processing chain. The user-facing interfaces for interacting with the sound system. <p>The talk will also mention some notable recent, ongoing and future work across the whole sound system, since my taking over of its development.</p> <p>I also intend to showcase examples of:</p> Audio driver and application develpoment on FreeBSD. FreeBSD being used for music production, and why a musician would consider it instead of other operating systems. <p>(I may have to leave one or both of these out to keep the talk to the desired duration)</p> <p>For more information, please visit:<br /> <a href="https://www.bsdcan.org/2025/" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/</a></p> <ul> <li>and -<br /> <a href="https://www.bsdcan.org/2025/timetable/timetable-Vox-FreeBSD-How.html" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/timetable/timetable-Vox-FreeBSD-How.html</a></li> </ul> <p>#runbsd #freebsd</p> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="323397136" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/59c88a34-6809-4ba8-96bb-1628764696b7?videoFileIds=5498048"/> <media:community> <media:statistics views="1"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/c636X2QDCrUCsVvgZVfMZr"/> <media:player url="https://peertube2.cpy.re/w/c636X2QDCrUCsVvgZVfMZr"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/66eb3397-9b7d-457f-999b-aa45eddaa8b1-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/e253f126-c891-4109-9492-c4767222ac7b-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/f14499f4-82d7-4bd7-a446-49d3045360d1-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5a0c32f7-952e-4fd3-b2a0-6c49c32610db-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/e2e507a5-4558-457e-9887-0fcf76f9df2e-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/688f3bcb-9827-4b04-98c0-ecbfab8d3cff-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/4afde2d1-8b9e-44ef-8b61-326cf6e52e0b-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/9ebeac90-8a3f-4904-ac86-0d4b5663c353-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/a1f420f9-638d-4ff0-b713-16b27ec327d4-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5b67e7d1-f855-4d6a-bfdf-ebce58aac76b-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/a5b2cf4c-30c3-4efc-9ce5-b18fb5f0c501-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/4f8a0691-cbfe-4c76-99bf-4c3dd40f0a78-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="323397136" url="https://toobnix.org/static/web-videos/a3a78b4d-2bda-4f74-ae7f-d78112d8ae14-1080.mp4" framerate="30" duration="2726" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="156424099" url="https://toobnix.org/static/web-videos/a3ad1aad-b229-491d-8e72-b50f6f5a96b7-720.mp4" framerate="30" duration="2726" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="99372705" url="https://toobnix.org/static/web-videos/1b8d60cf-a28d-4eca-b232-11c9c19e5cf8-480.mp4" framerate="30" duration="2726" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="78958748" url="https://toobnix.org/static/web-videos/02a5505a-f63a-4147-a7cf-419c8a49ed40-360.mp4" framerate="30" duration="2726" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="62657845" url="https://toobnix.org/static/web-videos/85b57c7c-8ca9-4bf0-a15a-4fc29977d3be-240.mp4" framerate="30" duration="2726" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="43511080" url="https://toobnix.org/static/web-videos/0c58ed70-e487-4223-bd6b-b9b76055a5a8-0.mp4" framerate="0" duration="2726" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="322364798" url="https://toobnix.org/static/streaming-playlists/hls/59c88a34-6809-4ba8-96bb-1628764696b7/acc1aeba-fa56-4616-9a9b-7c2ef89b289f-1080-fragmented.mp4" framerate="30" duration="2726" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="155396249" url="https://toobnix.org/static/streaming-playlists/hls/59c88a34-6809-4ba8-96bb-1628764696b7/62c69e46-11d4-4ffe-9d62-de074a9e82fc-720-fragmented.mp4" framerate="30" duration="2726" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="98305679" url="https://toobnix.org/static/streaming-playlists/hls/59c88a34-6809-4ba8-96bb-1628764696b7/81e500c2-9fb4-4779-9936-6d181589fff9-480-fragmented.mp4" framerate="30" duration="2726" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="77880226" url="https://toobnix.org/static/streaming-playlists/hls/59c88a34-6809-4ba8-96bb-1628764696b7/0f3d3531-6917-405e-bf88-8bb76bb1162a-360-fragmented.mp4" framerate="30" duration="2726" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="61516899" url="https://toobnix.org/static/streaming-playlists/hls/59c88a34-6809-4ba8-96bb-1628764696b7/66c8002a-e7d6-421f-b8c5-008f508f3600-240-fragmented.mp4" framerate="30" duration="2726" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="43619802" url="https://toobnix.org/static/streaming-playlists/hls/59c88a34-6809-4ba8-96bb-1628764696b7/a57abfcb-d41c-4693-b492-d22a27c4061e-0-fragmented.mp4" framerate="0" duration="2726" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/91f8daa2-36bd-4d3a-85aa-36e0f9724b00.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/77b66bfb-d983-44aa-8e5f-00550b1a83bf.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Vox FreeBSD How sound4 works by Christos Margiolis</media:title> <media:description type="plain">FreeBSD's audio subsystem, sound(4), is one of the fastest out there, but is rather unknown and until recently was largely unmaintained. This talk will go through the various components of sound(4) that make sound possible on FreeBSD, that is: ...</media:description> </item> <item> <title><![CDATA[Why and how we're migrating many of our servers from Linux to the BSDs by Stefano Marinelli]]></title> <link>https://peertube2.cpy.re/w/1HgxXNXMxEyGgzuiPrvYqR</link> <guid>https://peertube2.cpy.re/w/1HgxXNXMxEyGgzuiPrvYqR</guid> <pubDate>Tue, 09 Sep 2025 01:48:21 GMT</pubDate> <description><![CDATA[Why (and how) we're migrating many of our servers from Linux to the BSDs by Stefano Marinelli A few years ago, we decided to migrate many of our servers (and many of those of our clients) from Linux to the BSDs - FreeBSD, OpenBSD, NetBSD - depe...]]></description> <content:encoded><![CDATA[<p>Why (and how) we're migrating many of our servers from Linux to the BSDs by Stefano Marinelli</p> <p>A few years ago, we decided to migrate many of our servers (and many of those of our clients) from Linux to the BSDs - FreeBSD, OpenBSD, NetBSD - depending on the specific services. In this presentation, I will discuss the reasons behind our decision, the technical and organizational challenges we faced, the tangible benefits we have experienced, and why we believe this migration is successful. I will provide specific examples and real-life case studies. In an increasingly complex world, relying on simple, stable, and secure solutions is becoming more and more important, and the BSDs can make a significant contribution in this direction.</p> <p>For more information, please visit:<br /> <a href="https://www.bsdcan.org/2025/" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/</a></p> <ul> <li>and -<br /> <a href="https://www.bsdcan.org/2025/timetable/timetable-Why-and-how.html" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/timetable/timetable-Why-and-how.html</a></li> </ul> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="305068075" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/05c31408-cc95-4cc6-9288-53ce310a3239?videoFileIds=5498012"/> <media:community> <media:statistics views="3"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/1HgxXNXMxEyGgzuiPrvYqR"/> <media:player url="https://peertube2.cpy.re/w/1HgxXNXMxEyGgzuiPrvYqR"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/009c2feb-5465-42e7-b34d-b0fe3bfa42d5-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/bb5bb391-45b2-4247-8292-213f724d6928-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/8dff5145-2172-45f5-a595-8431c468f5e1-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/6c38995e-52fe-49f0-841f-755aa0050636-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/e08ce1b3-1fb3-4423-af14-0edbfc152be9-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/0c6ec5f2-4765-444f-a7d3-0749c69b59ae-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/ca48c9ba-38e9-40d5-8214-7f9bc836b557-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/60f8dc63-bf17-4078-b91d-b04dc84953dd-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5c6ee863-6278-4e8a-868b-112f51d83d3c-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/c948ad2f-045d-4deb-b8e1-bc20a7d59e26-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/91c811f1-c93a-481d-9bc8-caef64fd17d2-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/1379ba2d-5684-4c10-9e29-e90ed0077af3-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="305068075" url="https://toobnix.org/static/web-videos/4a27dcdc-67ad-495f-9027-8873ceddada6-1080.mp4" framerate="30" duration="3606" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="203402724" url="https://toobnix.org/static/web-videos/670fd423-76f9-4865-bbb4-1ae786270f02-720.mp4" framerate="30" duration="3606" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="145936239" url="https://toobnix.org/static/web-videos/c577b7cf-79d4-4826-87df-33edf5647df4-480.mp4" framerate="30" duration="3606" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="118363059" url="https://toobnix.org/static/web-videos/100bbb6a-9aed-41d4-8ce7-1c4a24e4e6a6-360.mp4" framerate="30" duration="3606" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="93547869" url="https://toobnix.org/static/web-videos/4c6a7993-deb0-4bb5-a12d-3e4405032832-240.mp4" framerate="30" duration="3606" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="57791607" url="https://toobnix.org/static/web-videos/7da0c8b6-077b-4b1a-a1cb-990dd81e121f-0.mp4" framerate="0" duration="3606" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="303742905" url="https://toobnix.org/static/streaming-playlists/hls/05c31408-cc95-4cc6-9288-53ce310a3239/929c1653-cd19-42ce-83b4-b381a8f819ef-1080-fragmented.mp4" framerate="30" duration="3606" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="202040930" url="https://toobnix.org/static/streaming-playlists/hls/05c31408-cc95-4cc6-9288-53ce310a3239/8758ca1b-e123-44cf-95c0-8507f86161b7-720-fragmented.mp4" framerate="30" duration="3606" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="144508973" url="https://toobnix.org/static/streaming-playlists/hls/05c31408-cc95-4cc6-9288-53ce310a3239/2a72aee8-c64b-4086-ad87-f650ad3d5103-480-fragmented.mp4" framerate="30" duration="3606" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="116881401" url="https://toobnix.org/static/streaming-playlists/hls/05c31408-cc95-4cc6-9288-53ce310a3239/bdfa1882-a7cf-4f25-8101-e2e603d39f85-360-fragmented.mp4" framerate="30" duration="3606" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="92025491" url="https://toobnix.org/static/streaming-playlists/hls/05c31408-cc95-4cc6-9288-53ce310a3239/7258032e-89bb-4346-ab97-043962bc8a3d-240-fragmented.mp4" framerate="30" duration="3606" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="57935453" url="https://toobnix.org/static/streaming-playlists/hls/05c31408-cc95-4cc6-9288-53ce310a3239/f536668b-bae0-408d-8d53-9cb9b77e97e6-0-fragmented.mp4" framerate="0" duration="3606" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/02d69f39-6368-44c2-ba52-2a657d51e2b6.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/14e11931-2987-416e-b6c9-2df1540c54f1.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Why and how we're migrating many of our servers from Linux to the BSDs by Stefano Marinelli</media:title> <media:description type="plain">Why (and how) we're migrating many of our servers from Linux to the BSDs by Stefano Marinelli A few years ago, we decided to migrate many of our servers (and many of those of our clients) from Linux to the BSDs - FreeBSD, OpenBSD, NetBSD - depe...</media:description> </item> <item> <title><![CDATA[ELF Nightmares GOTs, PLTs, and Relocations Oh My by John Baldwin]]></title> <link>https://peertube2.cpy.re/w/udjSH6vkKV31ARfDESw9kv</link> <guid>https://peertube2.cpy.re/w/udjSH6vkKV31ARfDESw9kv</guid> <pubDate>Tue, 09 Sep 2025 01:17:50 GMT</pubDate> <description><![CDATA[ELF Nightmares: GOTs, PLTs, and Relocations Oh My by John Baldwin Mapping abstract symbol names in source code to concrete addresses at runtime requires cooperation between the compiler, static linker, and runtime loader. This talk will talk ab...]]></description> <content:encoded><![CDATA[<p>ELF Nightmares: GOTs, PLTs, and Relocations Oh My by John Baldwin</p> <p>Mapping abstract symbol names in source code to concrete addresses at runtime requires cooperation between the compiler, static linker, and runtime loader. This talk will talk about some of the practices and data structures used for this task including ELF relocations, Global Offset Tables and Procedure Linkage Tables. Depending on time, it may also cover some more advanced topics such as initialization functions ("ifuncs").</p> <p>For more information, please visit:<br /> <a href="https://www.bsdcan.org/2025/" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/</a></p> <ul> <li>and -<br /> <a href="https://www.bsdcan.org/2025/timetable/timetable-ELF-Nightmares-GOTs,.html" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/timetable/timetable-ELF-Nightmares-GOTs,.html</a></li> </ul> <p>#runbsd #freebsd</p> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="232719664" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/e478707d-3faa-4d72-ad3d-3335e744205b?videoFileIds=5498002"/> <media:community> <media:statistics views="2"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/udjSH6vkKV31ARfDESw9kv"/> <media:player url="https://peertube2.cpy.re/w/udjSH6vkKV31ARfDESw9kv"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/d36ab2a2-71d0-493b-a512-0ab52e092012-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/8ed583a9-8fd0-43a6-aa27-462b774967c1-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/5f2ce38f-bea9-4191-a167-fe65f04781b3-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/f36b716b-0eae-427f-83ff-b5b66f38f6bd-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/535b9ed1-b9aa-4cce-bb5a-f0d3a7a027bd-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/aa3352de-9684-48a8-b2c3-55ada2772c24-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/00d68e3a-5056-42af-a03b-0ba56f684c31-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/18324651-f635-4d9c-bc46-d5b5c0fa1d68-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/a960e549-db09-40cd-8604-0821c52f19b3-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/a17b48bc-5bdb-4a2a-93e2-0d22c81b552b-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/b5fe56e2-aea1-4aa6-9e41-3ecab4f339b1-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/c21f2fa3-4b35-4a5f-b159-a73e97e9a93d-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="232719664" url="https://toobnix.org/static/web-videos/a4ed3fca-1b95-4874-b22e-576724720124-1080.mp4" framerate="30" duration="3465" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="162011975" url="https://toobnix.org/static/web-videos/d8d752d4-abc6-4c70-b5c3-dbe526c9fdfe-720.mp4" framerate="30" duration="3465" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="120795382" url="https://toobnix.org/static/web-videos/fa5a4cc0-fbb0-4912-b021-25eb8558d479-480.mp4" framerate="30" duration="3465" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="100562407" url="https://toobnix.org/static/web-videos/8fe0c4c8-3463-4d76-a465-99cede6c9120-360.mp4" framerate="30" duration="3465" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="82725056" url="https://toobnix.org/static/web-videos/1d0ac6fe-0ad7-4157-9fcc-588638f08daf-240.mp4" framerate="30" duration="3465" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="55472879" url="https://toobnix.org/static/web-videos/2e3872e4-1b53-4020-ab22-e89ac08e1336-0.mp4" framerate="0" duration="3465" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="231478478" url="https://toobnix.org/static/streaming-playlists/hls/e478707d-3faa-4d72-ad3d-3335e744205b/ec2573db-4729-4776-ae08-d706d37f0356-1080-fragmented.mp4" framerate="30" duration="3465" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="160739829" url="https://toobnix.org/static/streaming-playlists/hls/e478707d-3faa-4d72-ad3d-3335e744205b/15f0b056-c021-4d3e-97df-e71432b6cdb9-720-fragmented.mp4" framerate="30" duration="3465" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="119459156" url="https://toobnix.org/static/streaming-playlists/hls/e478707d-3faa-4d72-ad3d-3335e744205b/c4df1b5f-40d8-45ae-b245-a6844f07936f-480-fragmented.mp4" framerate="30" duration="3465" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="99180133" url="https://toobnix.org/static/streaming-playlists/hls/e478707d-3faa-4d72-ad3d-3335e744205b/020f436c-c236-49ff-86f9-d89bd936aad4-360-fragmented.mp4" framerate="30" duration="3465" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="81292678" url="https://toobnix.org/static/streaming-playlists/hls/e478707d-3faa-4d72-ad3d-3335e744205b/7a9c5f4f-4b4c-4833-b43f-e4e57d49801e-240-fragmented.mp4" framerate="30" duration="3465" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="55611501" url="https://toobnix.org/static/streaming-playlists/hls/e478707d-3faa-4d72-ad3d-3335e744205b/13c4c615-bb61-4855-86b5-45ddff914512-0-fragmented.mp4" framerate="0" duration="3465" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/8c907c51-027a-4bd6-972b-25bb2f26ab4a.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/d5464191-5f94-453d-b91f-97b674fe4d31.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">ELF Nightmares GOTs, PLTs, and Relocations Oh My by John Baldwin</media:title> <media:description type="plain">ELF Nightmares: GOTs, PLTs, and Relocations Oh My by John Baldwin Mapping abstract symbol names in source code to concrete addresses at runtime requires cooperation between the compiler, static linker, and runtime loader. This talk will talk ab...</media:description> </item> <item> <title><![CDATA[Running a root DNS server on FreeBSD from Alpha to Now by Daniel Mahoney]]></title> <link>https://peertube2.cpy.re/w/hL5BvuZsy5B3PSeW4YzeNa</link> <guid>https://peertube2.cpy.re/w/hL5BvuZsy5B3PSeW4YzeNa</guid> <pubDate>Tue, 09 Sep 2025 01:11:52 GMT</pubDate> <description><![CDATA[ISC has been proudly using FreeBSD in production for a long time, including to serve critical internet infrastructure with a global user base (including you!), from the DEC Alpha days up till now, mostly on bare-metal. In this talk I'll go over...]]></description> <content:encoded><![CDATA[<p>ISC has been proudly using FreeBSD in production for a long time, including to serve critical internet infrastructure with a global user base (including you!), from the DEC Alpha days up till now, mostly on bare-metal.</p> <p>In this talk I'll go over some of how we (and I) got here, how we've managed far-away installs and upgrades without remote hands during a global pandemic, and how we believe that in a Linux-centric world, BSD gives us an advantage, not only in diversity, but from the community, and touch on how a single FreeBSD box has replaced an install that used to consist of separate routers and switches.</p> <p>We'll cover some of our MacGyver moments, share some head-scratchers, and even cover some of the things we'd love to see in the future, both from the community as well as where we're hoping to go.</p> <p>If the conference leaders think it wise, this talk could also include a light touch on how BGP and Anycast work, both in general, as well as how the global routing table is affected by the less-and-more specific routes to F that we announce to keep local traffic local, and how ISC works with its CDN partner. (These are not BSD-specific topics, but the maturity of reasonable routing daemons in ports have meant that we can now do this without needing an upstream router).</p> <p>For more information, please visit:<br /> <a href="https://www.bsdcan.org/2025/" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/</a></p> <ul> <li>and -<br /> <a href="https://www.bsdcan.org/2025/timetable/timetable-Running-a-root.html" target="_blank" rel="noopener noreferrer">https://www.bsdcan.org/2025/timetable/timetable-Running-a-root.html</a></li> </ul> ]]></content:encoded> <dc:creator>BSDTV</dc:creator> <category>Science & Technology</category> <enclosure length="353146448" type="video/mp4" url="https://peertube2.cpy.re/download/videos/generate/87b9c96d-0704-432d-a210-2136cd5a02d1?videoFileIds=5497937"/> <media:community> <media:statistics views="24"/> </media:community> <media:embed url="https://peertube2.cpy.re/videos/embed/hL5BvuZsy5B3PSeW4YzeNa"/> <media:player url="https://peertube2.cpy.re/w/hL5BvuZsy5B3PSeW4YzeNa"/> <media:group> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/2fb00f16-801f-4c7c-a156-c2c5444a7111-1080.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/78c3473b-482a-4693-b8f0-3b4cfb617add-720.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/6250c759-4733-4f19-8916-cb02d4fa0d72-480.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/9570a590-c587-4b01-b724-6a75213d6822-360.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/2141bf84-9b94-4ae4-9658-abc398e93e0a-240.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/38ce054a-0899-4930-866f-2da77cb822ac-0.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/70d124ec-14e1-4065-91d2-45fd12d49aef-1080-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/876e52f2-f51f-408c-8602-689a81de0734-720-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/c920cf56-a369-4307-a6e9-7e3837ddfe8c-480-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/2a3115d4-2ebe-4d55-9a35-e22acddb32cf-360-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/3097068b-bc45-4dd8-86e1-009387339757-240-hls.torrent" isDefault="false"/> <media:peerLink type="application/x-bittorrent" href="https://peertube2.cpy.re/lazy-static/torrents/49be3941-2e97-43ce-bebc-ab0155851723-0-hls.torrent" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="353146448" url="https://toobnix.org/static/web-videos/40a91ad6-3f2f-4710-bf00-a37e5fe8aa1f-1080.mp4" framerate="30" duration="4301" isDefault="true"/> <media:content type="video/mp4" medium="video" height="720" fileSize="245943365" url="https://toobnix.org/static/web-videos/18fe885f-5f73-4e7b-9ad7-4efc2068ee6e-720.mp4" framerate="30" duration="4301" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="177741196" url="https://toobnix.org/static/web-videos/ff19832d-1f97-4450-86d1-fa0b8d33ab27-480.mp4" framerate="30" duration="4301" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="142609422" url="https://toobnix.org/static/web-videos/424b8917-b8a9-4b72-a4bb-8d0750526cc6-360.mp4" framerate="30" duration="4301" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="111205415" url="https://toobnix.org/static/web-videos/188c8251-29cc-4496-9f30-e550c898eb95-240.mp4" framerate="30" duration="4301" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="68897493" url="https://toobnix.org/static/web-videos/4f221e73-202e-41a6-b9cf-6bfe7bc7162d-0.mp4" framerate="0" duration="4301" isDefault="false"/> <media:content type="video/mp4" medium="video" height="1080" fileSize="351667814" url="https://toobnix.org/static/streaming-playlists/hls/87b9c96d-0704-432d-a210-2136cd5a02d1/a1918545-45d8-4ee1-ba99-69ceab00aa3b-1080-fragmented.mp4" framerate="30" duration="4301" isDefault="false"/> <media:content type="video/mp4" medium="video" height="720" fileSize="244415431" url="https://toobnix.org/static/streaming-playlists/hls/87b9c96d-0704-432d-a210-2136cd5a02d1/584c2b36-b0c0-4db6-936c-2e1da8a5f2d8-720-fragmented.mp4" framerate="30" duration="4301" isDefault="false"/> <media:content type="video/mp4" medium="video" height="480" fileSize="176164478" url="https://toobnix.org/static/streaming-playlists/hls/87b9c96d-0704-432d-a210-2136cd5a02d1/6391f1ca-35a0-4f66-81d9-5d52cb6f4713-480-fragmented.mp4" framerate="30" duration="4301" isDefault="false"/> <media:content type="video/mp4" medium="video" height="360" fileSize="141009468" url="https://toobnix.org/static/streaming-playlists/hls/87b9c96d-0704-432d-a210-2136cd5a02d1/de777226-eeef-48c2-be5d-7aad630cde93-360-fragmented.mp4" framerate="30" duration="4301" isDefault="false"/> <media:content type="video/mp4" medium="video" height="240" fileSize="109568533" url="https://toobnix.org/static/streaming-playlists/hls/87b9c96d-0704-432d-a210-2136cd5a02d1/c719b065-f946-4e8e-9d27-268d7f00724a-240-fragmented.mp4" framerate="30" duration="4301" isDefault="false"/> <media:content type="audio/mp4" medium="video" height="0" fileSize="69068599" url="https://toobnix.org/static/streaming-playlists/hls/87b9c96d-0704-432d-a210-2136cd5a02d1/c38faf75-6aca-49cc-ba54-062cbb2cb801-0-fragmented.mp4" framerate="0" duration="4301" isDefault="false"/> </media:group> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/previews/70c07df3-53d1-4018-809d-a1379c6f8a42.jpg"/> <media:thumbnail url="https://peertube2.cpy.re/lazy-static/thumbnails/83123af8-c24f-4186-a8ea-fa85f890a270.jpg"/> <media:rating>nonadult</media:rating> <media:title type="plain">Running a root DNS server on FreeBSD from Alpha to Now by Daniel Mahoney</media:title> <media:description type="plain">ISC has been proudly using FreeBSD in production for a long time, including to serve critical internet infrastructure with a global user base (including you!), from the DEC Alpha days up till now, mostly on bare-metal. In this talk I'll go over...</media:description> </item> </channel> </rss>
format required | string Enum: "xml" "rss" "rss2" "atom" "atom1" "json" "json1" format expected (we focus on making |
accountId required | string limit listing to a specific account |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
sort | string Example: sort=-createdAt Sort column |
token required | string private token allowing access |
As a visitor, you can use this API to open an account (if registrations are open on that PeerTube instance). As an admin, you should use the dedicated User creation API instead.
Following a user registration, the new user will receive an email asking to click a link containing a secret. This endpoint can also be used to verify a new email set in the user account.
id required | integer (id) >= 1 Example: 42 Entity id |
verificationString required | string <url> |
isPendingEmail | boolean |
{- "verificationString": "string",
- "isPendingEmail": true
}
Following a user registration request, the user will receive an email asking to click a link containing a secret.
registrationId required | integer (id) >= 1 Example: 42 Registration ID |
verificationString required | string <url> |
{- "verificationString": "string"
}
Signup has to be enabled and signup approval is not required
email required | string <email> email of the user, used for login or service communications |
password required | string <password> (password) [ 6 .. 255 ] characters |
username required | string [ 1 .. 50 ] characters /^[a-z0-9._]+$/ immutable name of the user, used to find or mention its actor |
object channel base information used to create the first channel of the user | |
displayName | string [ 1 .. 120 ] characters editable name of the user, displayed in its representations |
{- "username": "chocobozzz",
- "password": "pa$$word",
- "email": "user@example.com",
- "displayName": "string",
- "channel": {
- "name": "framasoft_videos",
- "displayName": "string"
}
}
Signup has to be enabled and require approval on the instance
email required | string <email> email of the user, used for login or service communications |
password required | string <password> (password) [ 6 .. 255 ] characters |
registrationReason required | string reason for the user to register on the instance |
username required | string [ 1 .. 50 ] characters /^[a-z0-9._]+$/ immutable name of the user, used to find or mention its actor |
object channel base information used to create the first channel of the user | |
displayName | string [ 1 .. 120 ] characters editable name of the user, displayed in its representations |
{- "username": "chocobozzz",
- "password": "pa$$word",
- "email": "user@example.com",
- "displayName": "string",
- "channel": {
- "name": "framasoft_videos",
- "displayName": "string"
}, - "registrationReason": "string"
}
{- "id": 42,
- "state": {
- "id": 1,
- "label": "string"
}, - "registrationReason": "string",
- "moderationResponse": "string",
- "username": "string",
- "email": "user@example.com",
- "emailVerified": true,
- "accountDisplayName": "string",
- "channelHandle": "string",
- "channelDisplayName": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "user": {
- "id": 42
}
}
registrationId required | integer (id) >= 1 Example: 42 Registration ID |
moderationResponse required | string Moderation response to send to the user |
preventEmailDelivery | boolean Set it to true if you don't want PeerTube to send an email to the user |
{- "moderationResponse": "string",
- "preventEmailDelivery": true
}
registrationId required | integer (id) >= 1 Example: 42 Registration ID |
moderationResponse required | string Moderation response to send to the user |
preventEmailDelivery | boolean Set it to true if you don't want PeerTube to send an email to the user |
{- "moderationResponse": "string",
- "preventEmailDelivery": true
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
search | string |
sort | string Enum: "-createdAt" "createdAt" "state" "-state" |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "state": {
- "id": 1,
- "label": "string"
}, - "registrationReason": "string",
- "moderationResponse": "string",
- "username": "string",
- "email": "user@example.com",
- "emailVerified": true,
- "accountDisplayName": "string",
- "channelHandle": "string",
- "channelDisplayName": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "user": {
- "id": 42
}
}
]
}
Sessions deal with access tokens over time. Only one session token can currently be used at a time.
API="https://peertube2.cpy.re/api/v1" ## AUTH curl -s "$API/oauth-clients/local"
{- "client_id": "v1ikx5hnfop4mdpnci8nsqh93c45rldf",
- "client_secret": "AjWiOapPltI6EnsWQwlFarRtLh4u8tDt"
}
With your client id and secret, you can retrieve an access and refresh tokens.
x-peertube-otp | string If the user enabled two factor authentication, you need to provide the OTP code in this header |
client_id required | string = 32 characters /^[a-z0-9]$/ |
client_secret required | string = 32 characters /^[a-zA-Z0-9]$/ |
grant_type required | string |
password required | string <password> (password) [ 6 .. 255 ] characters |
username required | string [ 1 .. 50 ] characters /^[a-z0-9._]+$/ immutable name of the user, used to find or mention its actor |
## DEPENDENCIES: jq API="https://peertube2.cpy.re/api/v1" USERNAME="<your_username>" PASSWORD="<your_password>" ## AUTH client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id") client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret") curl -s "$API/users/token" \ --data client_id="$client_id" \ --data client_secret="$client_secret" \ --data grant_type=password \ --data username="$USERNAME" \ --data-urlencode password="$PASSWORD" \ | jq -r ".access_token"
{- "token_type": "Bearer",
- "access_token": "90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0",
- "refresh_token": "2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7",
- "expires_in": 14399,
- "refresh_token_expires_in": 1209600
}
id required | integer (id) >= 1 Example: 42 Entity id |
{- "total": 1,
- "data": [
- {
- "id": 0,
- "currentSession": true,
- "loginDevice": "string",
- "loginIP": "192.168.0.1",
- "loginDate": "2019-08-24T14:15:22Z",
- "lastActivityDevice": "string",
- "lastActivityIP": "192.168.0.1",
- "lastActivityDate": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z"
}
]
}
Accounts encompass remote accounts discovered across the federation, and correspond to the main Actor, along with video channels a user can create, which are also Actors. When a comment is posted, it is done with your Account's Actor.
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
{- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
string or Array of strings PeerTube >= 6.2 Admins and moderators only filter on videos that contain one of these automatic tags | |
VideoCategorySet (integer) or Array of VideoCategorySet (integers) category id of the video (see /videos/categories) | |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
excludeAlreadyWatched | boolean Whether or not to exclude videos that are in the user's video history |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
host | string Find elements owned by this host |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
includeScheduledLive | boolean whether or not include live that are scheduled for later |
isLive | boolean whether or not the video is a live |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
VideoLanguageSet (string) or Array of VideoLanguageSet (strings) language id of the video (see /videos/languages). Use | |
VideoLicenceSet (integer) or Array of VideoLicenceSet (integers) licence id of the video (see /videos/licences) | |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
nsfwFlagsExcluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsIncluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
search | string Plain text search, applied to various parts of the model depending on endpoint |
skipCount | string Default: "false" Enum: "true" "false" if you don't need the |
sort | string Enum: "name" "-duration" "-createdAt" "-publishedAt" "-views" "-likes" "-comments" "-trending" "-hot" "-best" Sort videos by criteria (prefixing with
|
start | integer >= 0 Offset used to paginate results |
string or Array of strings tag(s) of the video, where all should be present in the video | |
string or Array of strings tag(s) of the video |
fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos') .then(function(response) { return response.json() }).then(function(data) { console.log(data) })
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
search | string Plain text search, applied to various parts of the model depending on endpoint |
sort | string Value: "createdAt" Sort followers by criteria |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "follower": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "following": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "score": 0,
- "state": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
]
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
playlistType | integer (VideoPlaylistTypeSet) Enum: 1 2 The video playlist type (Regular = |
search | string Plain text search, applied to various parts of the model depending on endpoint |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "description": "string",
- "displayName": "string",
- "isLocal": true,
- "videoLength": 0,
- "thumbnailPath": "string",
- "privacy": {
- "id": 1,
- "label": "string"
}, - "type": {
- "id": 1,
- "label": "string"
}, - "ownerAccount": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannelPosition": 1
}
]
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
withStats | boolean include daily view statistics for the last 30 days and total views (only if authentified as the account user) |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
]
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "state": {
- "id": 2,
- "label": "PROCESSING"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "lastSyncAt": "2019-08-24T14:15:22Z",
- "channel": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
}
]
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
rating | string Enum: "like" "dislike" Optionally filter which ratings to retrieve |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
[- {
- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}, - "rating": "like"
}
]
Using some features of PeerTube require authentication, for which User provide different levels of permission as well as associated user information. Each user has a corresponding local Account for federation.
If the smtp server is configured, you can leave the password empty and an email will be sent asking the user to set it first.
email required | string <email> The user email |
password required | string <password> (password) [ 6 .. 255 ] characters |
role required | integer (UserRole) Enum: 0 1 2 The user role (Admin = |
username required | string (username) [ 1 .. 50 ] characters /^[a-z0-9._]+$/ immutable name of the user, used to find or mention its actor |
adminFlags | integer (UserAdminFlags) Enum: 0 1 Admin flags for the user (None = |
channelName | string (usernameChannel) [ 1 .. 50 ] characters /^[a-zA-Z0-9\\-_.:]+$/ immutable name of the channel, used to interact with its actor |
videoQuota | integer The user video quota in bytes |
videoQuotaDaily | integer The user daily video quota in bytes |
{- "username": "chocobozzz",
- "password": "pa$$word",
- "email": "user@example.com",
- "videoQuota": -1,
- "videoQuotaDaily": -1,
- "channelName": "framasoft_videos",
- "role": 2,
- "adminFlags": 1
}
{- "user": {
- "id": 42,
- "account": {
- "id": 42
}
}
}
blocked | boolean Filter results down to (un)banned users |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
search | string Plain text search that will match with user usernames or emails |
sort | string Enum: "-id" "-username" "-createdAt" Sort users by criteria |
start | integer >= 0 Offset used to paginate results |
[- {
- "account": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}, - "autoPlayNextVideo": true,
- "autoPlayNextVideoPlaylist": true,
- "autoPlayVideo": true,
- "blocked": true,
- "blockedReason": "string",
- "createdAt": "string",
- "email": "user@example.com",
- "emailVerified": true,
- "id": 42,
- "pluginAuth": "string",
- "lastLoginDate": "2019-08-24T14:15:22Z",
- "noInstanceConfigWarningModal": true,
- "noAccountSetupWarningModal": true,
- "noWelcomeModal": true,
- "nsfwPolicy": "display",
- "nsfwFlagsDisplayed": 0,
- "nsfwFlagsHidden": 0,
- "nsfwFlagsWarned": 0,
- "nsfwFlagsBlurred": 0,
- "role": {
- "id": 2,
- "label": "User"
}, - "theme": "string",
- "username": "chocobozzz",
- "videoChannels": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
], - "videoQuota": -1,
- "videoQuotaDaily": -1,
- "p2pEnabled": true
}
]
id required | integer (id) >= 1 Example: 42 Entity id |
withStats | boolean include statistics about the user (only available as a moderator/admin) |
{- "account": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}, - "autoPlayNextVideo": true,
- "autoPlayNextVideoPlaylist": true,
- "autoPlayVideo": true,
- "blocked": true,
- "blockedReason": "string",
- "createdAt": "string",
- "email": "user@example.com",
- "emailVerified": true,
- "id": 42,
- "pluginAuth": "string",
- "lastLoginDate": "2019-08-24T14:15:22Z",
- "noInstanceConfigWarningModal": true,
- "noAccountSetupWarningModal": true,
- "noWelcomeModal": true,
- "nsfwPolicy": "display",
- "nsfwFlagsDisplayed": 0,
- "nsfwFlagsHidden": 0,
- "nsfwFlagsWarned": 0,
- "nsfwFlagsBlurred": 0,
- "role": {
- "id": 2,
- "label": "User"
}, - "theme": "string",
- "username": "chocobozzz",
- "videoChannels": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
], - "videoQuota": -1,
- "videoQuotaDaily": -1,
- "p2pEnabled": true
}
id required | integer (id) >= 1 Example: 42 Entity id |
adminFlags | integer (UserAdminFlags) Enum: 0 1 Admin flags for the user (None = |
string <email> The updated email of the user | |
emailVerified | boolean Set the email as verified |
password | string <password> (password) [ 6 .. 255 ] characters |
pluginAuth | string or null The auth plugin to use to authenticate the user |
role | integer (UserRole) Enum: 0 1 2 The user role (Admin = |
videoQuota | integer The updated video quota of the user in bytes |
videoQuotaDaily | integer The updated daily video quota of the user in bytes |
{- "email": "user@example.com",
- "emailVerified": true,
- "videoQuota": 0,
- "videoQuotaDaily": 0,
- "pluginAuth": "peertube-plugin-auth-saml2",
- "role": 2,
- "adminFlags": 1,
- "password": "pa$$word"
}
Following a user registration, the new user will receive an email asking to click a link containing a secret. This endpoint can also be used to verify a new email set in the user account.
id required | integer (id) >= 1 Example: 42 Entity id |
verificationString required | string <url> |
isPendingEmail | boolean |
{- "verificationString": "string",
- "isPendingEmail": true
}
Request two factor authentication for a user
id required | integer (id) >= 1 Example: 42 Entity id |
currentPassword | string Password of the currently authenticated user |
{- "currentPassword": "string"
}
[- {
- "otpRequest": {
- "requestToken": "string",
- "secret": "string",
- "uri": "string"
}
}
]
Confirm a two factor authentication request
id required | integer (id) >= 1 Example: 42 Entity id |
otpToken required | string OTP token generated by the app |
requestToken required | string Token to identify the two factor request |
{- "requestToken": "string",
- "otpToken": "string"
}
Disable two factor authentication of a user
id required | integer (id) >= 1 Example: 42 Entity id |
currentPassword | string Password of the currently authenticated user |
{- "currentPassword": "string"
}
Request an archive of user data. An email is sent when the archive is ready.
userId required | integer (id) >= 1 Example: 42 User id |
withVideoFiles | boolean Whether to include video files in the archive |
{- "withVideoFiles": true
}
{- "export": {
- "id": 0
}
}
PeerTube >= 6.1
userId required | integer (id) >= 1 Example: 42 User id |
{- "id": 0,
- "state": {
- "id": 1,
- "label": "string"
}, - "size": 0,
- "privateDownloadUrl": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "expiresOn": "2019-08-24T14:15:22Z"
}
PeerTube >= 6.1 Uses a resumable protocol to initialize the import of the archive
userId required | integer (id) >= 1 Example: 42 User id |
X-Upload-Content-Length required | number Example: 2469036 Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading. |
X-Upload-Content-Type required | string <mimetype> Example: video/mp4 MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary. |
filename | string <filename> Archive filename including extension |
{- "filename": "user-export-6-2024-02-09T10_12_11.682Z"
}
PeerTube >= 6.1 Uses a resumable protocol to continue, pause or resume the import of the archive
userId required | integer (id) >= 1 Example: 42 User id |
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 262144 Size of the chunk that the request is sending. Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from 1048576 bytes (~1MB) and increases or reduces size depending on connection health. |
Content-Range required | string Example: bytes 0-262143/2469036 Specifies the bytes in the file that the request is uploading. For example, a value of |
PeerTube >= 6.1 Uses a resumable protocol to cancel the resumable user import
userId required | integer (id) >= 1 Example: 42 User id |
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 0 |
[- {
- "account": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}, - "autoPlayNextVideo": true,
- "autoPlayNextVideoPlaylist": true,
- "autoPlayVideo": true,
- "blocked": true,
- "blockedReason": "string",
- "createdAt": "string",
- "email": "user@example.com",
- "emailVerified": true,
- "id": 42,
- "pluginAuth": "string",
- "lastLoginDate": "2019-08-24T14:15:22Z",
- "noInstanceConfigWarningModal": true,
- "noAccountSetupWarningModal": true,
- "noWelcomeModal": true,
- "nsfwPolicy": "display",
- "nsfwFlagsDisplayed": 0,
- "nsfwFlagsHidden": 0,
- "nsfwFlagsWarned": 0,
- "nsfwFlagsBlurred": 0,
- "role": {
- "id": 2,
- "label": "User"
}, - "theme": "string",
- "username": "chocobozzz",
- "videoChannels": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
], - "videoQuota": -1,
- "videoQuotaDaily": -1,
- "p2pEnabled": true
}
]
autoPlayNextVideo | boolean new preference regarding playing following videos automatically |
autoPlayNextVideoPlaylist | boolean new preference regarding playing following playlist videos automatically |
autoPlayVideo | boolean new preference regarding playing videos automatically |
currentPassword | string <password> (password) [ 6 .. 255 ] characters |
displayName | string [ 3 .. 120 ] characters new name of the user in its representations |
string <email> new email used for login and service communications | |
language | string default language for this user |
noAccountSetupWarningModal | boolean |
noInstanceConfigWarningModal | boolean |
noWelcomeModal | boolean |
nsfwFlagsBlurred | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsDisplayed | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsHidden | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsWarned | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwPolicy | string Enum: "true" "false" "both" new NSFW display policy |
p2pEnabled | boolean whether to enable P2P in the player or not |
password | string <password> (password) [ 6 .. 255 ] characters |
theme | string |
videoLanguages | Array of strings list of languages to filter videos down to |
videosHistoryEnabled | boolean whether to keep track of watched history or not |
{- "password": "pa$$word",
- "currentPassword": "pa$$word",
- "email": "user@example.com",
- "displayName": "string",
- "nsfwPolicy": "true",
- "nsfwFlagsDisplayed": 0,
- "nsfwFlagsHidden": 0,
- "nsfwFlagsWarned": 0,
- "nsfwFlagsBlurred": 0,
- "p2pEnabled": true,
- "autoPlayVideo": true,
- "autoPlayNextVideo": true,
- "autoPlayNextVideoPlaylist": true,
- "videosHistoryEnabled": true,
- "videoLanguages": [
- "string"
], - "language": "string",
- "theme": "string",
- "noInstanceConfigWarningModal": true,
- "noAccountSetupWarningModal": true,
- "noWelcomeModal": true
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
search | string Search in video names |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
targetUrl | string Filter on import target URL |
videoChannelSyncId | number Filter on imports created by a specific channel synchronization |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "torrentfile": "string",
- "torrentName": "string",
- "state": {
- "id": 1,
- "label": "Pending"
}, - "error": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
}
]
}
string or Array of strings PeerTube >= 6.2 Admins and moderators only filter on videos that contain one of these automatic tags | |
VideoCategorySet (integer) or Array of VideoCategorySet (integers) category id of the video (see /videos/categories) | |
string or Array of strings PeerTube >= 7.2 Filter on videos that are published by a channel with one of these names | |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
excludeAlreadyWatched | boolean Whether or not to exclude videos that are in the user's video history |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
host | string Find elements owned by this host |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
includeScheduledLive | boolean whether or not include live that are scheduled for later |
isLive | boolean whether or not the video is a live |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
VideoLanguageSet (string) or Array of VideoLanguageSet (strings) language id of the video (see /videos/languages). Use | |
VideoLicenceSet (integer) or Array of VideoLicenceSet (integers) licence id of the video (see /videos/licences) | |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
nsfwFlagsExcluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsIncluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
search | string Plain text search, applied to various parts of the model depending on endpoint |
skipCount | string Default: "false" Enum: "true" "false" if you don't need the |
sort | string Enum: "name" "-duration" "-createdAt" "-publishedAt" "-views" "-likes" "-comments" "-trending" "-hot" "-best" Sort videos by criteria (prefixing with
|
start | integer >= 0 Offset used to paginate results |
string or Array of strings tag(s) of the video, where all should be present in the video | |
string or Array of strings tag(s) of the video |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
avatarfile | string <binary> The file to upload |
{- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
id | integer only list the report with this id |
sort | string Enum: "-id" "-createdAt" "-state" Sort abuses by criteria |
start | integer >= 0 Offset used to paginate results |
state | integer (AbuseStateSet) Enum: 1 2 3 The abuse state (Pending = |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "reason": "The video is a spam",
- "predefinedReasons": [
- "spamOrMisleading"
], - "reporterAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}, - "state": {
- "id": 1,
- "label": "string"
}, - "moderationComment": "Decided to ban the server since it spams us regularly",
- "video": {
- "id": 0,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "name": "string",
- "nsfw": true,
- "startAt": "2019-08-24T14:15:22Z",
- "endAt": "2019-08-24T14:15:22Z",
- "deleted": true,
- "blacklisted": true,
- "thumbnailPath": "string",
- "channel": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
}, - "createdAt": "2019-08-24T14:15:22Z"
}
]
}
Operations related to your subscriptions to video channels, their new videos, and how to keep up to date with their latest publications!
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Enum: "-id" "-createdAt" "-channelUpdatedAt" |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
]
}
string or Array of strings PeerTube >= 6.2 Admins and moderators only filter on videos that contain one of these automatic tags | |
VideoCategorySet (integer) or Array of VideoCategorySet (integers) category id of the video (see /videos/categories) | |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
excludeAlreadyWatched | boolean Whether or not to exclude videos that are in the user's video history |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
host | string Find elements owned by this host |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
includeScheduledLive | boolean whether or not include live that are scheduled for later |
isLive | boolean whether or not the video is a live |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
VideoLanguageSet (string) or Array of VideoLanguageSet (strings) language id of the video (see /videos/languages). Use | |
VideoLicenceSet (integer) or Array of VideoLicenceSet (integers) licence id of the video (see /videos/licences) | |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
nsfwFlagsExcluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsIncluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
search | string Plain text search, applied to various parts of the model depending on endpoint |
skipCount | string Default: "false" Enum: "true" "false" if you don't need the |
sort | string Enum: "name" "-duration" "-createdAt" "-publishedAt" "-views" "-likes" "-comments" "-trending" "-hot" "-best" Sort videos by criteria (prefixing with
|
start | integer >= 0 Offset used to paginate results |
string or Array of strings tag(s) of the video, where all should be present in the video | |
string or Array of strings tag(s) of the video |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
subscriptionHandle required | string Example: my_username | my_username@example.com The subscription handle |
{- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
Notifications following new videos, follows or reports. They allow you to keep track of the interactions and overall important information that concerns you. You MAY set per-notification type delivery preference, to receive the info either by mail, by in-browser notification or both.
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
typeOneOf | Array of integers (NotificationType) Items Enum: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 only list notifications of these types |
unread | boolean only list unread notifications |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "type": 1,
- "read": true,
- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "name": "What is PeerTube?",
- "state": {
- "id": 1,
- "label": "string"
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
}, - "videoImport": {
- "id": 42,
- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "name": "What is PeerTube?",
- "state": {
- "id": 1,
- "label": "string"
}
}, - "torrentName": "string",
}, - "comment": {
- "id": 42,
- "threadId": 0,
- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "name": "What is PeerTube?",
- "state": {
- "id": 1,
- "label": "string"
}
}, - "account": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "heldForReview": true
}, - "videoAbuse": {
- "id": 42,
- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "name": "What is PeerTube?",
- "state": {
- "id": 1,
- "label": "string"
}
}
}, - "videoBlacklist": {
- "id": 42,
- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "name": "What is PeerTube?",
- "state": {
- "id": 1,
- "label": "string"
}
}
}, - "account": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "actorFollow": {
- "id": 42,
- "follower": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "state": "pending",
- "following": {
- "type": "account",
- "name": "string",
- "displayName": "string",
- "host": "example.com"
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
abuseAsModerator | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
abuseNewMessage | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
abuseStateChange | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
autoInstanceFollowing | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
blacklistOnMyVideo | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
commentMention | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
myVideoImportFinished | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
myVideoPublished | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
myVideoStudioEditionFinished | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
myVideoTranscriptionGenerated | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
newCommentOnMyVideo | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
newFollow | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
newInstanceFollower | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
newPeerTubeVersion | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
newPluginVersion | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
newUserRegistration | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
newVideoFromSubscription | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
videoAutoBlacklistAsModerator | integer (NotificationSettingValue) Notification type. One of the following values, or a sum of multiple values:
|
{- "abuseAsModerator": 0,
- "videoAutoBlacklistAsModerator": 0,
- "newUserRegistration": 0,
- "newVideoFromSubscription": 0,
- "blacklistOnMyVideo": 0,
- "myVideoPublished": 0,
- "myVideoImportFinished": 0,
- "commentMention": 0,
- "newCommentOnMyVideo": 0,
- "newFollow": 0,
- "newInstanceFollower": 0,
- "autoInstanceFollowing": 0,
- "abuseStateChange": 0,
- "abuseNewMessage": 0,
- "newPeerTubeVersion": 0,
- "newPluginVersion": 0,
- "myVideoStudioEditionFinished": 0,
- "myVideoTranscriptionGenerated": 0
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
search | string Plain text search, applied to various parts of the model depending on endpoint |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
string or Array of strings PeerTube >= 6.2 Admins and moderators only filter on videos that contain one of these automatic tags | |
VideoCategorySet (integer) or Array of VideoCategorySet (integers) category id of the video (see /videos/categories) | |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
excludeAlreadyWatched | boolean Whether or not to exclude videos that are in the user's video history |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
host | string Find elements owned by this host |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
includeScheduledLive | boolean whether or not include live that are scheduled for later |
isLive | boolean whether or not the video is a live |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
VideoLanguageSet (string) or Array of VideoLanguageSet (strings) language id of the video (see /videos/languages). Use | |
VideoLicenceSet (integer) or Array of VideoLicenceSet (integers) licence id of the video (see /videos/licences) | |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
nsfwFlagsExcluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsIncluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
search | string Plain text search, applied to various parts of the model depending on endpoint |
skipCount | string Default: "false" Enum: "true" "false" if you don't need the |
sort | string Enum: "name" "-duration" "-createdAt" "-publishedAt" "-views" "-likes" "-comments" "-trending" "-hot" "-best" Sort videos by criteria (prefixing with
|
start | integer >= 0 Offset used to paginate results |
string or Array of strings tag(s) of the video, where all should be present in the video | |
string or Array of strings tag(s) of the video |
fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos') .then(function(response) { return response.json() }).then(function(data) { console.log(data) })
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
Request special tokens that expire quickly to use them in some context (like accessing private static files)
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
x-peertube-video-password | string Required on password protected video |
{- "files": {
- "token": "string",
- "expires": "2019-08-24T14:15:22Z"
}
}
Create a task to edit a video (cut, add intro/outro etc)
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
name | string Value: "cut" |
object |
string or Array of strings PeerTube >= 6.2 Admins and moderators only filter on videos that contain one of these automatic tags | |
VideoCategorySet (integer) or Array of VideoCategorySet (integers) category id of the video (see /videos/categories) | |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
excludeAlreadyWatched | boolean Whether or not to exclude videos that are in the user's video history |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
host | string Find elements owned by this host |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
includeScheduledLive | boolean whether or not include live that are scheduled for later |
isLive | boolean whether or not the video is a live |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
VideoLanguageSet (string) or Array of VideoLanguageSet (strings) language id of the video (see /videos/languages). Use | |
VideoLicenceSet (integer) or Array of VideoLicenceSet (integers) licence id of the video (see /videos/licences) | |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
nsfwFlagsExcluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsIncluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
search | string Plain text search, applied to various parts of the model depending on endpoint |
skipCount | string Default: "false" Enum: "true" "false" if you don't need the |
sort | string Enum: "name" "-duration" "-createdAt" "-publishedAt" "-views" "-likes" "-comments" "-trending" "-hot" "-best" Sort videos by criteria (prefixing with
|
start | integer >= 0 Offset used to paginate results |
string or Array of strings tag(s) of the video, where all should be present in the video | |
string or Array of strings tag(s) of the video |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
{- "1": "Music",
- "2": "Films",
- "3": "Vehicles",
- "4": "Art",
- "5": "Sports",
- "6": "Travels",
- "7": "Gaming",
- "8": "People",
- "9": "Comedy",
- "10": "Entertainment",
- "11": "News & Politics",
- "12": "How To",
- "13": "Education",
- "14": "Activism",
- "15": "Science & Technology",
- "16": "Animals",
- "17": "Kids",
- "18": "Food"
}
{- "1": "Attribution",
- "2": "Attribution - Share Alike",
- "3": "Attribution - No Derivatives",
- "4": "Attribution - Non Commercial",
- "5": "Attribution - Non Commercial - Share Alike",
- "6": "Attribution - Non Commercial - No Derivatives",
- "7": "Public Domain Dedication",
- "8": "Free of known copyright restrictions",
- "9": "Copyrighted - All Rights Reserved"
}
{- "aa": "Afar",
- "ab": "Abkhazian",
- "af": "Afrikaans",
- "ak": "Akan",
- "am": "Amharic",
- "ar": "Arabic",
- "an": "Aragonese",
- "ase": "American Sign Language",
- "as": "Assamese",
- "asq": "Austrian Sign Language",
- "av": "Avaric",
- "avk": "Kotava",
- "ay": "Aymara",
- "az": "Azerbaijani",
- "ba": "Bashkir",
- "bm": "Bambara",
- "be": "Belarusian",
- "bn": "Bengali",
- "bfi": "British Sign Language",
- "bi": "Bislama",
- "bo": "Tibetan",
- "bs": "Bosnian",
- "br": "Breton",
- "bg": "Bulgarian",
- "bzs": "Brazilian Sign Language",
- "ca": "Catalan",
- "cs": "Czech",
- "ch": "Chamorro",
- "ce": "Chechen",
- "cv": "Chuvash",
- "kw": "Cornish",
- "co": "Corsican",
- "cr": "Cree",
- "cse": "Czech Sign Language",
- "csl": "Chinese Sign Language",
- "cy": "Welsh",
- "da": "Danish",
- "de": "German",
- "dv": "Dhivehi",
- "dsl": "Danish Sign Language",
- "dz": "Dzongkha",
- "el": "Greek",
- "en": "English",
- "eo": "Esperanto",
- "et": "Estonian",
- "eu": "Basque",
- "ee": "Ewe",
- "fo": "Faroese",
- "fa": "Persian",
- "fj": "Fijian",
- "fi": "Finnish",
- "fr": "French",
- "fy": "Western Frisian",
- "fse": "Finnish Sign Language",
- "fsl": "French Sign Language",
- "ff": "Fulah",
- "gcf": "Guadeloupean Creole French",
- "gd": "Scottish Gaelic",
- "ga": "Irish",
- "gl": "Galician",
- "gv": "Manx",
- "gn": "Guarani",
- "gsg": "German Sign Language",
- "gu": "Gujarati",
- "ht": "Haitian",
- "ha": "Hausa",
- "sh": "Serbo-Croatian",
- "he": "Hebrew",
- "hz": "Herero",
- "hi": "Hindi",
- "ho": "Hiri Motu",
- "hr": "Croatian",
- "hu": "Hungarian",
- "hy": "Armenian",
- "ig": "Igbo",
- "ii": "Sichuan Yi",
- "iu": "Inuktitut",
- "id": "Indonesian",
- "ik": "Inupiaq",
- "is": "Icelandic",
- "it": "Italian",
- "jv": "Javanese",
- "jbo": "Lojban",
- "ja": "Japanese",
- "jsl": "Japanese Sign Language",
- "kab": "Kabyle",
- "kl": "Kalaallisut",
- "kn": "Kannada",
- "ks": "Kashmiri",
- "ka": "Georgian",
- "kr": "Kanuri",
- "kk": "Kazakh",
- "km": "Khmer",
- "ki": "Kikuyu",
- "rw": "Kinyarwanda",
- "ky": "Kirghiz",
- "kv": "Komi",
- "kg": "Kongo",
- "ko": "Korean",
- "kj": "Kuanyama",
- "ku": "Kurdish",
- "lo": "Lao",
- "la": "Latin",
- "lv": "Latvian",
- "li": "Limburgan",
- "ln": "Lingala",
- "lt": "Lithuanian",
- "lb": "Luxembourgish",
- "lu": "Luba-Katanga",
- "lg": "Ganda",
- "mh": "Marshallese",
- "ml": "Malayalam",
- "mr": "Marathi",
- "mk": "Macedonian",
- "mg": "Malagasy",
- "mt": "Maltese",
- "mn": "Mongolian",
- "mi": "Maori",
- "ms": "Malay (macrolanguage)",
- "my": "Burmese",
- "na": "Nauru",
- "nv": "Navajo",
- "nr": "South Ndebele",
- "nd": "North Ndebele",
- "ng": "Ndonga",
- "ne": "Nepali (macrolanguage)",
- "nl": "Dutch",
- "nn": "Norwegian Nynorsk",
- "nb": "Norwegian Bokmål",
- "no": "Norwegian",
- "ny": "Nyanja",
- "oc": "Occitan",
- "oj": "Ojibwa",
- "or": "Oriya (macrolanguage)",
- "om": "Oromo",
- "os": "Ossetian",
- "pa": "Panjabi",
- "pks": "Pakistan Sign Language",
- "pl": "Polish",
- "pt": "Portuguese (Brazilian)",
- "ps": "Pushto",
- "qu": "Quechua",
- "rm": "Romansh",
- "ro": "Romanian",
- "rsl": "Russian Sign Language",
- "rn": "Rundi",
- "ru": "Russian",
- "sg": "Sango",
- "sdl": "Saudi Arabian Sign Language",
- "sfs": "South African Sign Language",
- "si": "Sinhala",
- "sk": "Slovak",
- "sl": "Slovenian",
- "se": "Northern Sami",
- "sm": "Samoan",
- "sn": "Shona",
- "sd": "Sindhi",
- "so": "Somali",
- "st": "Southern Sotho",
- "es": "Spanish (Spain)",
- "sq": "Albanian",
- "sc": "Sardinian",
- "sr": "Serbian",
- "ss": "Swati",
- "su": "Sundanese",
- "sw": "Swahili (macrolanguage)",
- "sv": "Swedish",
- "swl": "Swedish Sign Language",
- "ty": "Tahitian",
- "ta": "Tamil",
- "tt": "Tatar",
- "te": "Telugu",
- "tg": "Tajik",
- "tl": "Tagalog",
- "th": "Thai",
- "ti": "Tigrinya",
- "tlh": "Klingon",
- "to": "Tonga (Tonga Islands)",
- "tn": "Tswana",
- "ts": "Tsonga",
- "tk": "Turkmen",
- "tr": "Turkish",
- "tw": "Twi",
- "ug": "Uighur",
- "uk": "Ukrainian",
- "ur": "Urdu",
- "uz": "Uzbek",
- "ve": "Venda",
- "vi": "Vietnamese",
- "wa": "Walloon",
- "wo": "Wolof",
- "xh": "Xhosa",
- "yi": "Yiddish",
- "yo": "Yoruba",
- "za": "Zhuang",
- "zh": "Chinese",
- "zu": "Zulu",
- "zxx": "No linguistic content",
- "tok": "Toki Pona",
- "pt-PT": "Portuguese (Portugal)",
- "es-419": "Spanish (Latin America)",
- "zh-Hans": "Simplified Chinese",
- "zh-Hant": "Traditional Chinese",
- "ca-valencia": "Valencian",
- "rcf": "Réunion Creole French",
- "gcr": "Guianese Creole French"
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
category | integer (VideoCategorySet) category id of the video (see /videos/categories) |
channelId | integer New channel of the video. The channel must be owned by the same account as the previous one. Use the "change ownership" endpoints to give a video to a channel owned by another account on the local PeerTube instance. |
commentsEnabled | boolean Deprecated Deprecated in 6.2, use commentsPolicy instead |
commentsPolicy | integer (VideoCommentsPolicySet) Enum: 1 2 3 Comments policy of the video (Enabled = |
description | string Video description |
downloadEnabled | boolean Enable or disable downloading for this video |
language | string (VideoLanguageSet) language id of the video (see /videos/languages) |
licence | integer (VideoLicenceSet) licence id of the video (see /videos/licences) |
name | string [ 3 .. 120 ] characters Video name |
nsfw | boolean Whether or not this video contains sensitive content |
nsfwFlags | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwSummary | any More information about the sensitive content of the video |
originallyPublishedAt | string or null <date-time> Date when the content was originally published |
previewfile | string <binary> Video preview file |
privacy | |
object (VideoScheduledUpdate) | |
support | string A text tell the audience how to support the video creator |
tags | Array of strings [ 1 .. 5 ] items [ items [ 2 .. 30 ] characters ] Video tags (maximum 5 tags each between 2 and 30 characters) |
thumbnailfile | string <binary> Video thumbnail file |
videoPasswords | Array of strings (AddVideoPasswords) unique [ items >= 2 characters ] |
waitTranscoding | string Whether or not we wait transcoding before publish the video |
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
x-peertube-video-password | string Required on password protected video |
{- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 42,
- "name": "chocobozzz",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "description": "string"
}, - "channel": {
- "id": 42,
- "name": "chocobozzz",
- "displayName": "Videos of Framasoft",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}, - "userHistory": {
- "currentTime": 0
}, - "viewers": 0,
- "description": "\"**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network,\nbased on free/libre software!*\\r\\n\\r\\n**Animation Produced by:** [LILA](https://libreart.info) - [ZeMarmot Team](https://film.zemarmot.net)\\r\\n\n*Directed by* Aryeom\\r\\n*Assistant* Jehan\\r\\n**Licence**: [CC-By-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)\\r\\n\\r\\n\n**Sponsored by** [Framasoft](https://framasoft.org)\\r\\n\\r\\n**Music**: [Red Step Forward](http://play.dogmazic.net/song.php?song_id=52491) - CC-By Ken Bushima\\r\\n\\r\\n\n**Movie Clip**: [Caminades 3: Llamigos](http://www.caminandes.com/) CC-By Blender Institute\\r\\n\\r\\n**Video sources**: https://gitlab.gnome.org/Jehan/what-is-peertube/\"\n",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "tags": [
- "flowers",
- "gardening"
], - "commentsEnabled": true,
- "commentsPolicy": {
- "id": 1,
- "label": "string"
}, - "downloadEnabled": true,
- "inputFileUpdatedAt": "2019-08-24T14:15:22Z",
- "trackerUrls": [
- "wss://peertube2.cpy.re/tracker/socket"
], - "files": [
- {
- "id": 42,
- "resolution": {
- "id": 240,
- "label": "240p"
}, - "size": 0,
- "torrentUrl": "string",
- "torrentDownloadUrl": "string",
- "fileUrl": "string",
- "playlistUrl": "string",
- "fileDownloadUrl": "string",
- "fps": 0,
- "width": 0,
- "height": 0,
- "metadataUrl": "string",
- "hasAudio": true,
- "hasVideo": true,
- "storage": 0
}
], - "streamingPlaylists": [
- {
- "id": 42,
- "type": 1,
- "playlistUrl": "string",
- "segmentsSha256Url": "string",
- "files": [
- {
- "id": 42,
- "resolution": {
- "id": 240,
- "label": "240p"
}, - "size": 0,
- "torrentUrl": "string",
- "torrentDownloadUrl": "string",
- "fileUrl": "string",
- "playlistUrl": "string",
- "fileDownloadUrl": "string",
- "fps": 0,
- "width": 0,
- "height": 0,
- "metadataUrl": "string",
- "hasAudio": true,
- "hasVideo": true,
- "storage": 0
}
], - "redundancies": [
- {
- "baseUrl": "string"
}
]
}
]
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
x-peertube-video-password | string Required on password protected video |
"**[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)**\n"
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.
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
currentTime required | integer <seconds> timestamp within the video, in seconds |
client | string Client software used to watch the video. For example "Firefox", "PeerTube Approval Android", etc. |
device | any Enum: "console" "embedded" "mobile" "smarttv" "tablet" "wearable" "xr" "desktop" Device used to watch the video. For example "desktop", "mobile", "smarttv", etc. |
operatingSystem | string Operating system used to watch the video. For example "Windows", "Ubuntu", etc. |
sessionId | string Optional param to represent the current viewer session. Used by the backend to properly count one view per session per video. PeerTube admin can configure the server to not trust this |
viewEvent | string Value: "seek" Event since last viewing call:
|
{- "currentTime": 5,
- "viewEvent": "seek",
- "sessionId": "string",
- "client": "string",
- "device": "console",
- "operatingSystem": "string"
}
This endpoint has been deprecated. Use /videos/{id}/views
instead
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
currentTime required | integer <seconds> timestamp within the video, in seconds |
client | string Client software used to watch the video. For example "Firefox", "PeerTube Approval Android", etc. |
device | any Enum: "console" "embedded" "mobile" "smarttv" "tablet" "wearable" "xr" "desktop" Device used to watch the video. For example "desktop", "mobile", "smarttv", etc. |
operatingSystem | string Operating system used to watch the video. For example "Windows", "Ubuntu", etc. |
sessionId | string Optional param to represent the current viewer session. Used by the backend to properly count one view per session per video. PeerTube admin can configure the server to not trust this |
viewEvent | string Value: "seek" Event since last viewing call:
|
{- "currentTime": 5,
- "viewEvent": "seek",
- "sessionId": "string",
- "client": "string",
- "device": "console",
- "operatingSystem": "string"
}
Uses a single request to upload a video.
channelId required | integer >= 1 Channel id that will contain this video |
name required | string [ 3 .. 120 ] characters Video name |
videofile required | string <binary> Video file |
category | integer (VideoCategorySet) category id of the video (see /videos/categories) |
commentsEnabled | boolean Deprecated Deprecated in 6.2, use commentsPolicy instead |
commentsPolicy | integer (VideoCommentsPolicySet) Enum: 1 2 3 Comments policy of the video (Enabled = |
description | string Video description |
downloadEnabled | boolean Enable or disable downloading for this video |
generateTranscription | boolean PeerTube >= 6.2 If enabled by the admin, automatically generate a subtitle of the video |
language | string (VideoLanguageSet) language id of the video (see /videos/languages) |
licence | integer (VideoLicenceSet) licence id of the video (see /videos/licences) |
nsfw | boolean Whether or not this video contains sensitive content |
nsfwFlags | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwSummary | any More information about the sensitive content of the video |
originallyPublishedAt | string <date-time> Date when the content was originally published |
previewfile | string <binary> Video preview file |
privacy | |
object (VideoScheduledUpdate) | |
support | string A text tell the audience how to support the video creator |
tags | Array of strings [ 1 .. 5 ] items unique [ items [ 2 .. 30 ] characters ] Video tags (maximum 5 tags each between 2 and 30 characters) |
thumbnailfile | string <binary> Video thumbnail file |
videoPasswords | Array of strings (AddVideoPasswords) unique [ items >= 2 characters ] |
waitTranscoding | boolean Whether or not we wait transcoding before publish the video |
## DEPENDENCIES: jq USERNAME="<your_username>" PASSWORD="<your_password>" FILE_PATH="<your_file_path>" CHANNEL_ID="<your_channel_id>" NAME="<video_name>" API="https://peertube2.cpy.re/api/v1" ## AUTH client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id") client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret") token=$(curl -s "$API/users/token" \ --data client_id="$client_id" \ --data client_secret="$client_secret" \ --data grant_type=password \ --data username="$USERNAME" \ --data password="$PASSWORD" \ | jq -r ".access_token") ## VIDEO UPLOAD curl -s "$API/videos/upload" \ -H "Authorization: Bearer $token" \ --max-time 600 \ --form videofile=@"$FILE_PATH" \ --form channelId=$CHANNEL_ID \ --form name="$NAME"
{- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
Uses a resumable protocol to initialize the upload of a video
X-Upload-Content-Length required | number Example: 2469036 Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading. |
X-Upload-Content-Type required | string <mimetype> Example: video/mp4 MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary. |
channelId required | integer >= 1 Channel id that will contain this video |
filename required | string <filename> Video filename including extension |
name required | string [ 3 .. 120 ] characters Video name |
category | integer (VideoCategorySet) category id of the video (see /videos/categories) |
commentsEnabled | boolean Deprecated Deprecated in 6.2, use commentsPolicy instead |
commentsPolicy | integer (VideoCommentsPolicySet) Enum: 1 2 3 Comments policy of the video (Enabled = |
description | string Video description |
downloadEnabled | boolean Enable or disable downloading for this video |
generateTranscription | boolean PeerTube >= 6.2 If enabled by the admin, automatically generate a subtitle of the video |
language | string (VideoLanguageSet) language id of the video (see /videos/languages) |
licence | integer (VideoLicenceSet) licence id of the video (see /videos/licences) |
nsfw | boolean Whether or not this video contains sensitive content |
nsfwFlags | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwSummary | any More information about the sensitive content of the video |
originallyPublishedAt | string <date-time> Date when the content was originally published |
previewfile | string <binary> Video preview file |
privacy | |
object (VideoScheduledUpdate) | |
support | string A text tell the audience how to support the video creator |
tags | Array of strings [ 1 .. 5 ] items unique [ items [ 2 .. 30 ] characters ] Video tags (maximum 5 tags each between 2 and 30 characters) |
thumbnailfile | string <binary> Video thumbnail file |
videoPasswords | Array of strings (AddVideoPasswords) unique [ items >= 2 characters ] |
waitTranscoding | boolean Whether or not we wait transcoding before publish the video |
{- "name": "What is PeerTube?",
- "channelId": 3,
- "privacy": 1,
- "category": 15,
- "licence": 2,
- "language": "en",
- "description": "**[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)**\n",
- "waitTranscoding": true,
- "generateTranscription": true,
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "nsfw": true,
- "nsfwSummary": null,
- "nsfwFlags": 0,
- "tags": [
- "framasoft",
- "peertube"
], - "commentsEnabled": true,
- "commentsPolicy": 1,
- "downloadEnabled": true,
- "originallyPublishedAt": "2019-08-24T14:15:22Z",
- "scheduleUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "thumbnailfile": "string",
- "previewfile": "string",
- "videoPasswords": [
- "string"
], - "filename": "what_is_peertube.mp4"
}
Uses a resumable protocol to continue, pause or resume the upload of a video
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 262144 Size of the chunk that the request is sending. Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from 1048576 bytes (~1MB) and increases or reduces size depending on connection health. |
Content-Range required | string Example: bytes 0-262143/2469036 Specifies the bytes in the file that the request is uploading. For example, a value of |
{- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
Uses a resumable protocol to cancel the upload of a video
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 0 |
channelId required | integer Channel id that will contain this live video |
name required | string [ 3 .. 120 ] characters Live video/replay name |
category | integer (VideoCategorySet) category id of the video (see /videos/categories) |
commentsEnabled | boolean Deprecated Deprecated in 6.2, use commentsPolicy instead |
commentsPolicy | integer (VideoCommentsPolicySet) Enum: 1 2 3 Comments policy of the video (Enabled = |
description | string Live video/replay description |
downloadEnabled | boolean Enable or disable downloading for the replay of this live video |
language | string (VideoLanguageSet) language id of the video (see /videos/languages) |
latencyMode | integer Enum: 1 2 3 User can select live latency mode if enabled by the instance |
licence | integer (VideoLicenceSet) licence id of the video (see /videos/licences) |
nsfw | boolean Whether or not this live video/replay contains sensitive content |
nsfwFlags | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwSummary | any More information about the sensitive content of the video |
permanentLive | boolean User can stream multiple times in a permanent live |
previewfile | string <binary> Live video/replay preview file |
privacy | |
object (LiveVideoReplaySettings) | |
saveReplay | boolean |
Array of objects (LiveSchedule) | |
support | string A text tell the audience how to support the creator |
tags | Array of strings [ 1 .. 5 ] items [ items [ 2 .. 30 ] characters ] Live video/replay tags (maximum 5 tags each between 2 and 30 characters) |
thumbnailfile | string <binary> Live video/replay thumbnail file |
{- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
{- "rtmpUrl": "string",
- "rtmpsUrl": "string",
- "streamKey": "string",
- "saveReplay": true,
- "replaySettings": {
- "privacy": 1
}, - "permanentLive": true,
- "latencyMode": 1,
- "schedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
]
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
latencyMode | integer Enum: 1 2 3 User can select live latency mode if enabled by the instance |
permanentLive | boolean User can stream multiple times in a permanent live |
object (LiveVideoReplaySettings) | |
saveReplay | boolean |
Array of objects (LiveSchedule) |
{- "saveReplay": true,
- "replaySettings": {
- "privacy": 1
}, - "permanentLive": true,
- "latencyMode": 1,
- "schedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
]
}
Get metadata and download link of original video file
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
{- "filename": "string",
- "inputFilename": "string",
- "fileDownloadUrl": "string",
- "resolution": {
- "id": 240,
- "label": "240p"
}, - "size": 0,
- "fps": 0,
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z"
}
PeerTube >= 6.0 Uses a resumable protocol to initialize the replacement of a video
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
X-Upload-Content-Length required | number Example: 2469036 Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading. |
X-Upload-Content-Type required | string <mimetype> Example: video/mp4 MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary. |
filename | string <filename> Video filename including extension |
{- "filename": "what_is_peertube.mp4"
}
PeerTube >= 6.0 Uses a resumable protocol to continue, pause or resume the replacement of a video
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 262144 Size of the chunk that the request is sending. Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from 1048576 bytes (~1MB) and increases or reduces size depending on connection health. |
Content-Range required | string Example: bytes 0-262143/2469036 Specifies the bytes in the file that the request is uploading. For example, a value of |
PeerTube >= 6.0 Uses a resumable protocol to cancel the replacement of a video
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 0 |
PeerTube >= 6.0
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
{- "storyboards": [
- {
- "storyboardPath": "string",
- "totalHeight": 0,
- "totalWidth": 0,
- "spriteHeight": 0,
- "spriteWidth": 0,
- "spriteDuration": 0
}
]
}
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
string or Array of strings PeerTube >= 6.2 Admins and moderators only filter on videos that contain one of these automatic tags | |
VideoCategorySet (integer) or Array of VideoCategorySet (integers) category id of the video (see /videos/categories) | |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
excludeAlreadyWatched | boolean Whether or not to exclude videos that are in the user's video history |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
host | string Find elements owned by this host |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
includeScheduledLive | boolean whether or not include live that are scheduled for later |
isLive | boolean whether or not the video is a live |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
VideoLanguageSet (string) or Array of VideoLanguageSet (strings) language id of the video (see /videos/languages). Use | |
VideoLicenceSet (integer) or Array of VideoLicenceSet (integers) licence id of the video (see /videos/licences) | |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
nsfwFlagsExcluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsIncluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
search | string Plain text search, applied to various parts of the model depending on endpoint |
skipCount | string Default: "false" Enum: "true" "false" if you don't need the |
sort | string Enum: "name" "-duration" "-createdAt" "-publishedAt" "-views" "-likes" "-comments" "-trending" "-hot" "-best" Sort videos by criteria (prefixing with
|
start | integer >= 0 Offset used to paginate results |
string or Array of strings tag(s) of the video, where all should be present in the video | |
string or Array of strings tag(s) of the video |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
string or Array of strings PeerTube >= 6.2 Admins and moderators only filter on videos that contain one of these automatic tags | |
VideoCategorySet (integer) or Array of VideoCategorySet (integers) category id of the video (see /videos/categories) | |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
durationMax | integer Get videos that have this maximum duration |
durationMin | integer Get videos that have this minimum duration |
endDate | string <date-time> Get videos that are published before this date |
excludeAlreadyWatched | boolean Whether or not to exclude videos that are in the user's video history |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
host | string Find elements owned by this host |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
includeScheduledLive | boolean whether or not include live that are scheduled for later |
isLive | boolean whether or not the video is a live |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
VideoLanguageSet (string) or Array of VideoLanguageSet (strings) language id of the video (see /videos/languages). Use | |
VideoLicenceSet (integer) or Array of VideoLicenceSet (integers) licence id of the video (see /videos/licences) | |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
nsfwFlagsExcluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsIncluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
originallyPublishedEndDate | string <date-time> Get videos that are originally published before this date |
originallyPublishedStartDate | string <date-time> Get videos that are originally published after this date |
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
search required | string String to search. If the user can make a remote URI search, and the string is an URI then the PeerTube instance will fetch the remote object and add it to its database. Then, you can use the REST API to fetch the complete video information and interact with it. |
searchTarget | string Enum: "local" "search-index" If the administrator enabled search index support, you can override the default search target. Warning: If you choose to make an index search, PeerTube will get results from a third party service. It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
|
skipCount | string Default: "false" Enum: "true" "false" if you don't need the |
sort | string Enum: "name" "-duration" "-createdAt" "-publishedAt" "-views" "-likes" "-comments" "-trending" "-hot" "-best" Sort videos by criteria (prefixing with
|
start | integer >= 0 Offset used to paginate results |
startDate | string <date-time> Get videos that are published after this date |
string or Array of strings tag(s) of the video, where all should be present in the video | |
string or Array of strings tag(s) of the video | |
uuids | Array of strings Find elements with specific UUIDs |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
Operations dealing with adding video or audio. PeerTube supports two upload modes, and three import modes.
You can upload videos more reliably by using the resumable variant. Its protocol lets you resume an upload operation after a network interruption or other transmission failure, saving time and bandwidth in the event of network failures.
Favor using resumable uploads in any of the following cases:
The import function is practical when the desired video/audio is available online. It makes PeerTube download it for you, saving you as much bandwidth and avoiding any instability or limitation your network might have.
Uses a single request to upload a video.
channelId required | integer >= 1 Channel id that will contain this video |
name required | string [ 3 .. 120 ] characters Video name |
videofile required | string <binary> Video file |
category | integer (VideoCategorySet) category id of the video (see /videos/categories) |
commentsEnabled | boolean Deprecated Deprecated in 6.2, use commentsPolicy instead |
commentsPolicy | integer (VideoCommentsPolicySet) Enum: 1 2 3 Comments policy of the video (Enabled = |
description | string Video description |
downloadEnabled | boolean Enable or disable downloading for this video |
generateTranscription | boolean PeerTube >= 6.2 If enabled by the admin, automatically generate a subtitle of the video |
language | string (VideoLanguageSet) language id of the video (see /videos/languages) |
licence | integer (VideoLicenceSet) licence id of the video (see /videos/licences) |
nsfw | boolean Whether or not this video contains sensitive content |
nsfwFlags | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwSummary | any More information about the sensitive content of the video |
originallyPublishedAt | string <date-time> Date when the content was originally published |
previewfile | string <binary> Video preview file |
privacy | |
object (VideoScheduledUpdate) | |
support | string A text tell the audience how to support the video creator |
tags | Array of strings [ 1 .. 5 ] items unique [ items [ 2 .. 30 ] characters ] Video tags (maximum 5 tags each between 2 and 30 characters) |
thumbnailfile | string <binary> Video thumbnail file |
videoPasswords | Array of strings (AddVideoPasswords) unique [ items >= 2 characters ] |
waitTranscoding | boolean Whether or not we wait transcoding before publish the video |
## DEPENDENCIES: jq USERNAME="<your_username>" PASSWORD="<your_password>" FILE_PATH="<your_file_path>" CHANNEL_ID="<your_channel_id>" NAME="<video_name>" API="https://peertube2.cpy.re/api/v1" ## AUTH client_id=$(curl -s "$API/oauth-clients/local" | jq -r ".client_id") client_secret=$(curl -s "$API/oauth-clients/local" | jq -r ".client_secret") token=$(curl -s "$API/users/token" \ --data client_id="$client_id" \ --data client_secret="$client_secret" \ --data grant_type=password \ --data username="$USERNAME" \ --data password="$PASSWORD" \ | jq -r ".access_token") ## VIDEO UPLOAD curl -s "$API/videos/upload" \ -H "Authorization: Bearer $token" \ --max-time 600 \ --form videofile=@"$FILE_PATH" \ --form channelId=$CHANNEL_ID \ --form name="$NAME"
{- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
Uses a resumable protocol to initialize the upload of a video
X-Upload-Content-Length required | number Example: 2469036 Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading. |
X-Upload-Content-Type required | string <mimetype> Example: video/mp4 MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary. |
channelId required | integer >= 1 Channel id that will contain this video |
filename required | string <filename> Video filename including extension |
name required | string [ 3 .. 120 ] characters Video name |
category | integer (VideoCategorySet) category id of the video (see /videos/categories) |
commentsEnabled | boolean Deprecated Deprecated in 6.2, use commentsPolicy instead |
commentsPolicy | integer (VideoCommentsPolicySet) Enum: 1 2 3 Comments policy of the video (Enabled = |
description | string Video description |
downloadEnabled | boolean Enable or disable downloading for this video |
generateTranscription | boolean PeerTube >= 6.2 If enabled by the admin, automatically generate a subtitle of the video |
language | string (VideoLanguageSet) language id of the video (see /videos/languages) |
licence | integer (VideoLicenceSet) licence id of the video (see /videos/licences) |
nsfw | boolean Whether or not this video contains sensitive content |
nsfwFlags | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwSummary | any More information about the sensitive content of the video |
originallyPublishedAt | string <date-time> Date when the content was originally published |
previewfile | string <binary> Video preview file |
privacy | |
object (VideoScheduledUpdate) | |
support | string A text tell the audience how to support the video creator |
tags | Array of strings [ 1 .. 5 ] items unique [ items [ 2 .. 30 ] characters ] Video tags (maximum 5 tags each between 2 and 30 characters) |
thumbnailfile | string <binary> Video thumbnail file |
videoPasswords | Array of strings (AddVideoPasswords) unique [ items >= 2 characters ] |
waitTranscoding | boolean Whether or not we wait transcoding before publish the video |
{- "name": "What is PeerTube?",
- "channelId": 3,
- "privacy": 1,
- "category": 15,
- "licence": 2,
- "language": "en",
- "description": "**[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)**\n",
- "waitTranscoding": true,
- "generateTranscription": true,
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "nsfw": true,
- "nsfwSummary": null,
- "nsfwFlags": 0,
- "tags": [
- "framasoft",
- "peertube"
], - "commentsEnabled": true,
- "commentsPolicy": 1,
- "downloadEnabled": true,
- "originallyPublishedAt": "2019-08-24T14:15:22Z",
- "scheduleUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "thumbnailfile": "string",
- "previewfile": "string",
- "videoPasswords": [
- "string"
], - "filename": "what_is_peertube.mp4"
}
Uses a resumable protocol to continue, pause or resume the upload of a video
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 262144 Size of the chunk that the request is sending. Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from 1048576 bytes (~1MB) and increases or reduces size depending on connection health. |
Content-Range required | string Example: bytes 0-262143/2469036 Specifies the bytes in the file that the request is uploading. For example, a value of |
{- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
Uses a resumable protocol to cancel the upload of a video
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 0 |
Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
channelId required | integer >= 1 Channel id that will contain this video |
name required | string [ 3 .. 120 ] characters Video name |
targetUrl required | string <url> remote URL where to find the import's source video |
category | integer (VideoCategorySet) category id of the video (see /videos/categories) |
commentsEnabled | boolean Deprecated Deprecated in 6.2, use commentsPolicy instead |
commentsPolicy | integer (VideoCommentsPolicySet) Enum: 1 2 3 Comments policy of the video (Enabled = |
description | string Video description |
downloadEnabled | boolean Enable or disable downloading for this video |
generateTranscription | boolean PeerTube >= 6.2 If enabled by the admin, automatically generate a subtitle of the video |
language | string (VideoLanguageSet) language id of the video (see /videos/languages) |
licence | integer (VideoLicenceSet) licence id of the video (see /videos/licences) |
nsfw | boolean Whether or not this video contains sensitive content |
nsfwFlags | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwSummary | any More information about the sensitive content of the video |
originallyPublishedAt | string <date-time> Date when the content was originally published |
previewfile | string <binary> Video preview file |
privacy | |
object (VideoScheduledUpdate) | |
support | string A text tell the audience how to support the video creator |
tags | Array of strings [ 1 .. 5 ] items unique [ items [ 2 .. 30 ] characters ] Video tags (maximum 5 tags each between 2 and 30 characters) |
thumbnailfile | string <binary> Video thumbnail file |
videoPasswords | Array of strings (AddVideoPasswords) unique [ items >= 2 characters ] |
waitTranscoding | boolean Whether or not we wait transcoding before publish the video |
{- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
PeerTube >= 6.0 Uses a resumable protocol to initialize the replacement of a video
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
X-Upload-Content-Length required | number Example: 2469036 Number of bytes that will be uploaded in subsequent requests. Set this value to the size of the file you are uploading. |
X-Upload-Content-Type required | string <mimetype> Example: video/mp4 MIME type of the file that you are uploading. Depending on your instance settings, acceptable values might vary. |
filename | string <filename> Video filename including extension |
{- "filename": "what_is_peertube.mp4"
}
PeerTube >= 6.0 Uses a resumable protocol to continue, pause or resume the replacement of a video
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 262144 Size of the chunk that the request is sending. Remember that larger chunks are more efficient. PeerTube's web client uses chunks varying from 1048576 bytes (~1MB) and increases or reduces size depending on connection health. |
Content-Range required | string Example: bytes 0-262143/2469036 Specifies the bytes in the file that the request is uploading. For example, a value of |
PeerTube >= 6.0 Uses a resumable protocol to cancel the replacement of a video
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
upload_id required | string Created session id to proceed with. If you didn't send chunks in the last hour, it is not valid anymore and you need to initialize a new upload. |
Content-Length required | number Example: 0 |
Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
channelId required | integer >= 1 Channel id that will contain this video |
name required | string [ 3 .. 120 ] characters Video name |
targetUrl required | string <url> remote URL where to find the import's source video |
category | integer (VideoCategorySet) category id of the video (see /videos/categories) |
commentsEnabled | boolean Deprecated Deprecated in 6.2, use commentsPolicy instead |
commentsPolicy | integer (VideoCommentsPolicySet) Enum: 1 2 3 Comments policy of the video (Enabled = |
description | string Video description |
downloadEnabled | boolean Enable or disable downloading for this video |
generateTranscription | boolean PeerTube >= 6.2 If enabled by the admin, automatically generate a subtitle of the video |
language | string (VideoLanguageSet) language id of the video (see /videos/languages) |
licence | integer (VideoLicenceSet) licence id of the video (see /videos/licences) |
nsfw | boolean Whether or not this video contains sensitive content |
nsfwFlags | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwSummary | any More information about the sensitive content of the video |
originallyPublishedAt | string <date-time> Date when the content was originally published |
previewfile | string <binary> Video preview file |
privacy | |
object (VideoScheduledUpdate) | |
support | string A text tell the audience how to support the video creator |
tags | Array of strings [ 1 .. 5 ] items unique [ items [ 2 .. 30 ] characters ] Video tags (maximum 5 tags each between 2 and 30 characters) |
thumbnailfile | string <binary> Video thumbnail file |
videoPasswords | Array of strings (AddVideoPasswords) unique [ items >= 2 characters ] |
waitTranscoding | boolean Whether or not we wait transcoding before publish the video |
{- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
x-peertube-video-password | string Required on password protected video |
{- "total": 1,
- "data": [
- {
- "language": {
- "id": "en",
- "label": "English"
}, - "captionPath": "string"
}
]
}
PeerTube >= 6.2 This feature has to be enabled by the administrator
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
forceTranscription | boolean Default: false |
{- "forceTranscription": false
}
captionLanguage required | string (VideoLanguageSet) Example: en The caption language |
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
captionfile | string <binary> The file to upload. |
PeerTube >= 6.0
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
x-peertube-video-password | string Required on password protected video |
{- "chapters": {
- "title": "string",
- "timecode": 0
}
}
PeerTube >= 6.0
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
Array of objects |
{- "chapters": [
- {
- "title": "string",
- "timecode": 0
}
]
}
Operations dealing with the creation, modification and listing of videos within a channel.
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
]
}
displayName required | any Channel display name |
name required | string [ 1 .. 50 ] characters /^[a-zA-Z0-9\\-_.:]+$/ username of the channel to create |
description | any Channel description |
support | any How to support/fund the channel |
{- "displayName": null,
- "description": null,
- "support": null,
- "name": "framasoft_videos"
}
{- "videoChannel": {
- "id": 42
}
}
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
{- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
bulkVideosSupportUpdate | boolean Update the support field for all videos of this channel |
description | any Channel description |
displayName | any Channel display name |
support | any How to support/fund the channel |
{- "displayName": null,
- "description": null,
- "support": null,
- "bulkVideosSupportUpdate": true
}
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
string or Array of strings PeerTube >= 6.2 Admins and moderators only filter on videos that contain one of these automatic tags | |
VideoCategorySet (integer) or Array of VideoCategorySet (integers) category id of the video (see /videos/categories) | |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
excludeAlreadyWatched | boolean Whether or not to exclude videos that are in the user's video history |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
host | string Find elements owned by this host |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
includeScheduledLive | boolean whether or not include live that are scheduled for later |
isLive | boolean whether or not the video is a live |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
VideoLanguageSet (string) or Array of VideoLanguageSet (strings) language id of the video (see /videos/languages). Use | |
VideoLicenceSet (integer) or Array of VideoLicenceSet (integers) licence id of the video (see /videos/licences) | |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
nsfwFlagsExcluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsIncluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
search | string Plain text search, applied to various parts of the model depending on endpoint |
skipCount | string Default: "false" Enum: "true" "false" if you don't need the |
sort | string Enum: "name" "-duration" "-createdAt" "-publishedAt" "-views" "-likes" "-comments" "-trending" "-hot" "-best" Sort videos by criteria (prefixing with
|
start | integer >= 0 Offset used to paginate results |
string or Array of strings tag(s) of the video, where all should be present in the video | |
string or Array of strings tag(s) of the video |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
playlistType | integer (VideoPlaylistTypeSet) Enum: 1 2 The video playlist type (Regular = |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "description": "string",
- "displayName": "string",
- "isLocal": true,
- "videoLength": 0,
- "thumbnailPath": "string",
- "privacy": {
- "id": 1,
- "label": "string"
}, - "type": {
- "id": 1,
- "label": "string"
}, - "ownerAccount": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannelPosition": 1
}
]
}
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
insertAfterPosition required | integer >= 0 New position for the block to reorder, to add the block before the first element |
startPosition required | integer >= 1 Start position of the element to reorder |
reorderLength | integer >= 1 How many element from |
{- "startPosition": 1,
- "insertAfterPosition": 0,
- "reorderLength": 1
}
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
search | string Plain text search, applied to various parts of the model depending on endpoint |
sort | string Value: "createdAt" Sort followers by criteria |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "follower": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "following": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "score": 0,
- "state": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
avatarfile | string <binary> The file to upload. |
{- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Import a remote channel/playlist videos into a channel
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
externalChannelUrl required | string |
videoChannelSyncId | integer If part of a channel sync process, specify its id to assign video imports to this channel synchronization |
{- "videoChannelSyncId": 0
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
withStats | boolean include daily view statistics for the last 30 days and total views (only if authentified as the account user) |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
]
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "state": {
- "id": 2,
- "label": "PROCESSING"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "lastSyncAt": "2019-08-24T14:15:22Z",
- "channel": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
handles | Array of strings Find elements with these handles |
host | string Find elements owned by this host |
search required | string String to search. If the user can make a remote URI search, and the string is an URI then the PeerTube instance will fetch the remote object and add it to its database. Then, you can use the REST API to fetch the complete channel information and interact with it. |
searchTarget | string Enum: "local" "search-index" If the administrator enabled search index support, you can override the default search target. Warning: If you choose to make an index search, PeerTube will get results from a third party service. It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
|
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
]
}
Operations dealing with comments to a video. Comments are organized in threads: adding a comment in response to the video starts a thread, adding a reply to a comment adds it to its root comment thread.
PeerTube >= 6.2
string or Array of strings PeerTube >= 6.2 filter on comments that contain one of these automatic tags | |
isHeldForReview | boolean only display comments that are held for review |
search | string Plain text search, applied to various parts of the model depending on endpoint |
searchAccount | string Filter comments by searching on the account |
searchVideo | string Filter comments by searching on the video |
videoChannelId | integer Limit results on this specific video channel |
videoId | integer Limit results on this specific video |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "url": "string",
- "text": "This video is wonderful!",
- "heldForReview": true,
- "threadId": 42,
- "inReplyToCommentId": 42,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "account": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}, - "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "name": "What is PeerTube?",
- "state": {
- "id": 1,
- "label": "string"
}
}, - "automaticTags": [
- "string"
]
}
]
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Enum: "-createdAt" "-totalReplies" Sort comments by criteria |
start | integer >= 0 Offset used to paginate results |
x-peertube-video-password | string Required on password protected video |
{- "total": 0,
- "totalNotDeletedComments": 0,
- "data": [
- {
- "id": 42,
- "url": "string",
- "text": "This video is wonderful!",
- "threadId": 42,
- "inReplyToCommentId": 42,
- "videoId": 42,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "deletedAt": null,
- "isDeleted": false,
- "heldForReview": true,
- "totalRepliesFromVideoAuthor": 0,
- "totalReplies": 0,
- "account": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
]
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
text required | string <html> [ 1 .. 10000 ] characters Text of the comment |
{- "text": "This video is wonderful!"
}
{- "comment": {
- "id": 42,
- "url": "string",
- "text": "This video is wonderful!",
- "threadId": 42,
- "inReplyToCommentId": 42,
- "videoId": 42,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "deletedAt": null,
- "isDeleted": false,
- "heldForReview": true,
- "totalRepliesFromVideoAuthor": 0,
- "totalReplies": 0,
- "account": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
threadId required | integer The thread id (root comment id) |
x-peertube-video-password | string Required on password protected video |
{- "comment": {
- "id": 42,
- "url": "string",
- "text": "This video is wonderful!",
- "threadId": 42,
- "inReplyToCommentId": 42,
- "videoId": 42,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "deletedAt": null,
- "isDeleted": false,
- "heldForReview": true,
- "totalRepliesFromVideoAuthor": 0,
- "totalReplies": 0,
- "account": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}, - "children": [
- { }
]
}
string or Array of strings PeerTube >= 6.2 filter on comments that contain one of these automatic tags | |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
onLocalVideo | boolean Display only objects of local or remote videos |
search | string Plain text search, applied to various parts of the model depending on endpoint |
searchAccount | string Filter comments by searching on the account |
searchVideo | string Filter comments by searching on the video |
videoChannelId | integer Limit results on this specific video channel |
videoId | integer Limit results on this specific video |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "url": "string",
- "text": "This video is wonderful!",
- "heldForReview": true,
- "threadId": 42,
- "inReplyToCommentId": 42,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "account": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}, - "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "name": "What is PeerTube?",
- "state": {
- "id": 1,
- "label": "string"
}
}, - "automaticTags": [
- "string"
]
}
]
}
commentId required | integer >= 1 Example: 42 The comment id |
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
x-peertube-video-password | string Required on password protected video |
text required | string <html> [ 1 .. 10000 ] characters Text of the comment |
{- "text": "This video is wonderful!"
}
{- "comment": {
- "id": 42,
- "url": "string",
- "text": "This video is wonderful!",
- "threadId": 42,
- "inReplyToCommentId": 42,
- "videoId": 42,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "deletedAt": null,
- "isDeleted": false,
- "heldForReview": true,
- "totalRepliesFromVideoAuthor": 0,
- "totalReplies": 0,
- "account": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
x-peertube-video-password | string Required on password protected video |
rating required | string Enum: "like" "dislike" |
{- "rating": "like"
}
Operations dealing with playlists of videos. Playlists are bound to users and/or channels.
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
playlistType | integer (VideoPlaylistTypeSet) Enum: 1 2 The video playlist type (Regular = |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "description": "string",
- "displayName": "string",
- "isLocal": true,
- "videoLength": 0,
- "thumbnailPath": "string",
- "privacy": {
- "id": 1,
- "label": "string"
}, - "type": {
- "id": 1,
- "label": "string"
}, - "ownerAccount": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannelPosition": 1
}
]
}
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
insertAfterPosition required | integer >= 0 New position for the block to reorder, to add the block before the first element |
startPosition required | integer >= 1 Start position of the element to reorder |
reorderLength | integer >= 1 How many element from |
{- "startPosition": 1,
- "insertAfterPosition": 0,
- "reorderLength": 1
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
playlistType | integer (VideoPlaylistTypeSet) Enum: 1 2 The video playlist type (Regular = |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "description": "string",
- "displayName": "string",
- "isLocal": true,
- "videoLength": 0,
- "thumbnailPath": "string",
- "privacy": {
- "id": 1,
- "label": "string"
}, - "type": {
- "id": 1,
- "label": "string"
}, - "ownerAccount": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannelPosition": 1
}
]
}
If the video playlist is set as public, videoChannelId
is mandatory.
displayName required | string [ 1 .. 120 ] characters Video playlist display name |
description | string [ 3 .. 1000 ] characters Video playlist description |
privacy | integer (VideoPlaylistPrivacySet) Enum: 1 2 3 Video playlist privacy policy (see /video-playlists/privacies) |
thumbnailfile | string <binary> Video playlist thumbnail file |
videoChannelId | integer >= 1 Video channel in which the playlist will be published |
{- "videoPlaylist": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
{- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "description": "string",
- "displayName": "string",
- "isLocal": true,
- "videoLength": 0,
- "thumbnailPath": "string",
- "privacy": {
- "id": 1,
- "label": "string"
}, - "type": {
- "id": 1,
- "label": "string"
}, - "ownerAccount": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannelPosition": 1
}
If the video playlist is set as public, the playlist must have a assigned channel.
playlistId required | integer >= 1 Example: 42 Playlist id |
description | string Video playlist description |
displayName | string [ 1 .. 120 ] characters Video playlist display name |
privacy | integer (VideoPlaylistPrivacySet) Enum: 1 2 3 Video playlist privacy policy (see /video-playlists/privacies) |
thumbnailfile | string <binary> Video playlist thumbnail file |
videoChannelId | integer >= 1 Video channel in which the playlist will be published |
playlistId required | integer >= 1 Example: 42 Playlist id |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "position": 2,
- "startTimestamp": 10,
- "stopTimestamp": 42,
- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
}
]
}
playlistId required | integer >= 1 Example: 42 Playlist id |
required | string or integer Video to add in the playlist |
startTimestamp | integer <seconds> Start the video at this specific timestamp |
stopTimestamp | integer <seconds> Stop the video at this specific timestamp |
{- "videoId": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "startTimestamp": 0,
- "stopTimestamp": 0
}
{- "videoPlaylistElement": {
- "id": 2
}
}
playlistId required | integer >= 1 Example: 42 Playlist id |
insertAfterPosition required | integer >= 0 New position for the block to reorder, to add the block before the first element |
startPosition required | integer >= 1 Start position of the element to reorder |
reorderLength | integer >= 1 How many element from |
{- "startPosition": 1,
- "insertAfterPosition": 0,
- "reorderLength": 1
}
playlistElementId required | integer (id) >= 1 Example: 42 Playlist element id |
playlistId required | integer >= 1 Example: 42 Playlist id |
startTimestamp | integer <seconds> Start the video at this specific timestamp |
stopTimestamp | integer <seconds> Stop the video at this specific timestamp |
{- "startTimestamp": 0,
- "stopTimestamp": 0
}
videoIds required | Array of integers[ items >= 1 ] Example: videoIds=42 The video ids to check |
{- "videoId": [
- {
- "playlistElementId": 0,
- "playlistId": 0,
- "startTimestamp": 0,
- "stopTimestamp": 0
}
]
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
playlistType | integer (VideoPlaylistTypeSet) Enum: 1 2 The video playlist type (Regular = |
search | string Plain text search, applied to various parts of the model depending on endpoint |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "description": "string",
- "displayName": "string",
- "isLocal": true,
- "videoLength": 0,
- "thumbnailPath": "string",
- "privacy": {
- "id": 1,
- "label": "string"
}, - "type": {
- "id": 1,
- "label": "string"
}, - "ownerAccount": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannelPosition": 1
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
host | string Find elements owned by this host |
search required | string String to search. If the user can make a remote URI search, and the string is an URI then the PeerTube instance will fetch the remote object and add it to its database. Then, you can use the REST API to fetch the complete playlist information and interact with it. |
searchTarget | string Enum: "local" "search-index" If the administrator enabled search index support, you can override the default search target. Warning: If you choose to make an index search, PeerTube will get results from a third party service. It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
|
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
uuids | Array of strings Find elements with specific UUIDs |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "description": "string",
- "displayName": "string",
- "isLocal": true,
- "videoLength": 0,
- "thumbnailPath": "string",
- "privacy": {
- "id": 1,
- "label": "string"
}, - "type": {
- "id": 1,
- "label": "string"
}, - "ownerAccount": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannelPosition": 1
}
]
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
endDate | string <date-time> Filter stats by end date |
startDate | string <date-time> Filter stats by start date |
{- "averageWatchTime": 0,
- "totalWatchTime": 0,
- "viewersPeak": 0,
- "totalViewers": 0,
- "viewersPeakDate": "2019-08-24T14:15:22Z",
- "countries": [
- {
- "isoCode": "string",
- "viewers": 0
}
], - "subdivisions": [
- {
- "name": "string",
- "viewers": 0
}
]
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
endDate | string <date-time> Filter stats by end date |
startDate | string <date-time> Filter stats by start date |
{- "clients": [
- {
- "name": "string",
- "viewers": 0
}
], - "devices": [
- {
- "name": "console",
- "viewers": 0
}
], - "operatingSystem": [
- {
- "name": "string",
- "viewers": 0
}
]
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
metric required | string Enum: "viewers" "aggregateWatchTime" The metric to get |
endDate | string <date-time> Filter stats by end date |
startDate | string <date-time> Filter stats by start date |
{- "data": [
- {
- "date": "string",
- "value": 0
}
]
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
username required | string |
{- "username": "string"
}
PeerTube instances can mirror videos from one another, and help distribute some videos.
For importing videos as your own, refer to video imports.
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Value: "name" Sort abuses by criteria |
start | integer >= 0 Offset used to paginate results |
target required | string Enum: "my-videos" "remote-videos" direction of the mirror |
[- {
- "id": 42,
- "name": "string",
- "url": "string",
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "redundancies": {
- "streamingPlaylists": [
- {
- "id": 42,
- "fileUrl": "string",
- "strategy": "manual",
- "size": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "expiresOn": "2019-08-24T14:15:22Z"
}
]
}
}
]
Create a task to edit a video (cut, add intro/outro etc)
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
name | string Value: "cut" |
object |
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
transcodingType required | string Enum: "hls" "web-video" |
forceTranscoding | boolean Default: false If the video is stuck in transcoding state, do it anyway |
{- "transcodingType": "hls",
- "forceTranscoding": false
}
channelId required | integer Channel id that will contain this live video |
name required | string [ 3 .. 120 ] characters Live video/replay name |
category | integer (VideoCategorySet) category id of the video (see /videos/categories) |
commentsEnabled | boolean Deprecated Deprecated in 6.2, use commentsPolicy instead |
commentsPolicy | integer (VideoCommentsPolicySet) Enum: 1 2 3 Comments policy of the video (Enabled = |
description | string Live video/replay description |
downloadEnabled | boolean Enable or disable downloading for the replay of this live video |
language | string (VideoLanguageSet) language id of the video (see /videos/languages) |
latencyMode | integer Enum: 1 2 3 User can select live latency mode if enabled by the instance |
licence | integer (VideoLicenceSet) licence id of the video (see /videos/licences) |
nsfw | boolean Whether or not this live video/replay contains sensitive content |
nsfwFlags | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwSummary | any More information about the sensitive content of the video |
permanentLive | boolean User can stream multiple times in a permanent live |
previewfile | string <binary> Live video/replay preview file |
privacy | |
object (LiveVideoReplaySettings) | |
saveReplay | boolean |
Array of objects (LiveSchedule) | |
support | string A text tell the audience how to support the creator |
tags | Array of strings [ 1 .. 5 ] items [ items [ 2 .. 30 ] characters ] Live video/replay tags (maximum 5 tags each between 2 and 30 characters) |
thumbnailfile | string <binary> Live video/replay thumbnail file |
{- "video": {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
{- "rtmpUrl": "string",
- "rtmpsUrl": "string",
- "streamKey": "string",
- "saveReplay": true,
- "replaySettings": {
- "privacy": 1
}, - "permanentLive": true,
- "latencyMode": 1,
- "schedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
]
}
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
latencyMode | integer Enum: 1 2 3 User can select live latency mode if enabled by the instance |
permanentLive | boolean User can stream multiple times in a permanent live |
object (LiveVideoReplaySettings) | |
saveReplay | boolean |
Array of objects (LiveSchedule) |
{- "saveReplay": true,
- "replaySettings": {
- "privacy": 1
}, - "permanentLive": true,
- "latencyMode": 1,
- "schedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
]
}
List all sessions created in a particular live
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
{- "total": 1,
- "data": [
- {
- "id": 0,
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "error": 1,
- "replayVideo": {
- "id": 0,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
]
}
If the video is a replay of a live, you can find the associated live session using this endpoint
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
x-peertube-video-password | string Required on password protected video |
{- "id": 0,
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "error": 1,
- "replayVideo": {
- "id": 0,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC"
}
}
Operations dealing with synchronizing PeerTube user's channel with channels of other platforms
Import a remote channel/playlist videos into a channel
channelHandle required | string Example: my_username | my_username@example.com The video channel handle |
externalChannelUrl required | string |
videoChannelSyncId | integer If part of a channel sync process, specify its id to assign video imports to this channel synchronization |
{- "videoChannelSyncId": 0
}
externalChannelUrl | string |
videoChannelId | integer (id) >= 1 |
{- "videoChannelId": 42
}
{- "videoChannelSync": {
- "id": 42,
- "state": {
- "id": 2,
- "label": "PROCESSING"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "lastSyncAt": "2019-08-24T14:15:22Z",
- "channel": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
}
}
name required | string Example: chocobozzz | chocobozzz@example.org The username or handle of the account |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "state": {
- "id": 2,
- "label": "PROCESSING"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "lastSyncAt": "2019-08-24T14:15:22Z",
- "channel": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
}
]
}
PeerTube >= 6.0
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "password": "string",
- "videoId": 42
}
]
}
PeerTube >= 6.0
required | id (integer) or UUIDv4 (string) or shortUUID (string) The object id, uuid or short uuid |
passwords | Array of strings (AddVideoPasswords) unique [ items >= 2 characters ] |
{- "passwords": [
- "string"
]
}
The search helps to find videos or channels from within the instance and beyond. Videos from other instances federated by the instance (that is, instances followed by the instance) can be found via keywords and other criteria of the advanced search.
Administrators can also enable the use of a remote search system, indexing videos and channels not could be not federated by the instance.
string or Array of strings PeerTube >= 6.2 Admins and moderators only filter on videos that contain one of these automatic tags | |
VideoCategorySet (integer) or Array of VideoCategorySet (integers) category id of the video (see /videos/categories) | |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
durationMax | integer Get videos that have this maximum duration |
durationMin | integer Get videos that have this minimum duration |
endDate | string <date-time> Get videos that are published before this date |
excludeAlreadyWatched | boolean Whether or not to exclude videos that are in the user's video history |
hasHLSFiles | boolean PeerTube >= 4.0 Display only videos that have HLS files |
hasWebVideoFiles | boolean PeerTube >= 6.0 Display only videos that have Web Video files |
host | string Find elements owned by this host |
include | integer Enum: 0 1 2 4 8 16 32 Only administrators and moderators can use this parameter Include additional videos in results (can be combined using bitwise or operator)
|
includeScheduledLive | boolean whether or not include live that are scheduled for later |
isLive | boolean whether or not the video is a live |
isLocal | boolean PeerTube >= 4.0 Display only local or remote objects |
VideoLanguageSet (string) or Array of VideoLanguageSet (strings) language id of the video (see /videos/languages). Use | |
VideoLicenceSet (integer) or Array of VideoLicenceSet (integers) licence id of the video (see /videos/licences) | |
nsfw | string Enum: "true" "false" whether to include nsfw videos, if any |
nsfwFlagsExcluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
nsfwFlagsIncluded | integer (NSFWFlag) Enum: 0 1 2 4 NSFW flags (can be combined using bitwise or operator)
|
originallyPublishedEndDate | string <date-time> Get videos that are originally published before this date |
originallyPublishedStartDate | string <date-time> Get videos that are originally published after this date |
privacyOneOf | integer (VideoPrivacySet) Enum: 1 2 3 4 5 PeerTube >= 4.0 Display only videos in this specific privacy/privacies |
search required | string String to search. If the user can make a remote URI search, and the string is an URI then the PeerTube instance will fetch the remote object and add it to its database. Then, you can use the REST API to fetch the complete video information and interact with it. |
searchTarget | string Enum: "local" "search-index" If the administrator enabled search index support, you can override the default search target. Warning: If you choose to make an index search, PeerTube will get results from a third party service. It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
|
skipCount | string Default: "false" Enum: "true" "false" if you don't need the |
sort | string Enum: "name" "-duration" "-createdAt" "-publishedAt" "-views" "-likes" "-comments" "-trending" "-hot" "-best" Sort videos by criteria (prefixing with
|
start | integer >= 0 Offset used to paginate results |
startDate | string <date-time> Get videos that are published after this date |
string or Array of strings tag(s) of the video, where all should be present in the video | |
string or Array of strings tag(s) of the video | |
uuids | Array of strings Find elements with specific UUIDs |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "isLive": true,
- "liveSchedules": [
- {
- "startAt": "2019-08-24T14:15:22Z"
}
], - "createdAt": "2017-10-01T10:52:46.396Z",
- "publishedAt": "2018-10-01T10:52:46.396Z",
- "updatedAt": "2021-05-04T08:01:01.502Z",
- "originallyPublishedAt": "2010-10-01T10:52:46.396Z",
- "category": {
- "id": 15,
- "label": "Science & Technology"
}, - "licence": {
- "id": 2,
- "label": "Attribution - Share Alike"
}, - "language": {
- "id": "en",
- "label": "English"
}, - "privacy": {
- "id": 1,
- "label": "string"
}, - "truncatedDescription": "**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\\r\\n\\r\\n\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**\\r\\n*A decentralized video hosting network, based on fr...\n",
- "duration": 1419,
- "aspectRatio": 1.778,
- "isLocal": true,
- "name": "What is PeerTube?",
- "thumbnailPath": "/lazy-static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "previewPath": "/lazy-static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg",
- "embedPath": "/videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee",
- "views": 1337,
- "likes": 42,
- "dislikes": 7,
- "comments": 0,
- "nsfw": true,
- "nsfwFlags": 0,
- "nsfwSummary": "string",
- "waitTranscoding": true,
- "state": {
- "id": 1,
- "label": "string"
}, - "scheduledUpdate": {
- "privacy": 1,
- "updateAt": "2019-08-24T14:15:22Z"
}, - "blacklisted": true,
- "blacklistedReason": "string",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "channel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "userHistory": {
- "currentTime": 0
}
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
handles | Array of strings Find elements with these handles |
host | string Find elements owned by this host |
search required | string String to search. If the user can make a remote URI search, and the string is an URI then the PeerTube instance will fetch the remote object and add it to its database. Then, you can use the REST API to fetch the complete channel information and interact with it. |
searchTarget | string Enum: "local" "search-index" If the administrator enabled search index support, you can override the default search target. Warning: If you choose to make an index search, PeerTube will get results from a third party service. It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
|
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
host | string Find elements owned by this host |
search required | string String to search. If the user can make a remote URI search, and the string is an URI then the PeerTube instance will fetch the remote object and add it to its database. Then, you can use the REST API to fetch the complete playlist information and interact with it. |
searchTarget | string Enum: "local" "search-index" If the administrator enabled search index support, you can override the default search target. Warning: If you choose to make an index search, PeerTube will get results from a third party service. It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
|
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
uuids | Array of strings Find elements with specific UUIDs |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "description": "string",
- "displayName": "string",
- "isLocal": true,
- "videoLength": 0,
- "thumbnailPath": "string",
- "privacy": {
- "id": 1,
- "label": "string"
}, - "type": {
- "id": 1,
- "label": "string"
}, - "ownerAccount": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannel": {
- "id": 42,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}, - "videoChannelPosition": 1
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
id | integer only list the report with this id |
sort | string Enum: "-id" "-createdAt" "-state" Sort abuses by criteria |
start | integer >= 0 Offset used to paginate results |
state | integer (AbuseStateSet) Enum: 1 2 3 The abuse state (Pending = |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "reason": "The video is a spam",
- "predefinedReasons": [
- "spamOrMisleading"
], - "reporterAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}, - "state": {
- "id": 1,
- "label": "string"
}, - "moderationComment": "Decided to ban the server since it spams us regularly",
- "video": {
- "id": 0,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "name": "string",
- "nsfw": true,
- "startAt": "2019-08-24T14:15:22Z",
- "endAt": "2019-08-24T14:15:22Z",
- "deleted": true,
- "blacklisted": true,
- "thumbnailPath": "string",
- "channel": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
}, - "createdAt": "2019-08-24T14:15:22Z"
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
filter | string Enum: "video" "comment" "account" only list account, comment or video reports |
id | integer only list the report with this id |
predefinedReason | Array of strings (PredefinedAbuseReasons) <= 8 items Items Enum: "violentOrAbusive" "hatefulOrAbusive" "spamOrMisleading" "privacy" "rights" "serverRules" "thumbnails" "captions" predefined reason the listed reports should contain |
search | string plain search that will match with video titles, reporter names and more |
searchReportee | string only list reports of a specific reportee |
searchReporter | string only list reports of a specific reporter |
searchVideo | string only list reports of a specific video |
searchVideoChannel | string only list reports of a specific video channel |
sort | string Enum: "-id" "-createdAt" "-state" Sort abuses by criteria |
start | integer >= 0 Offset used to paginate results |
state | integer (AbuseStateSet) Enum: 1 2 3 The abuse state (Pending = |
videoIs | string Enum: "deleted" "blacklisted" only list deleted or blocklisted videos |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "reason": "The video is a spam",
- "predefinedReasons": [
- "spamOrMisleading"
], - "reporterAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}, - "state": {
- "id": 1,
- "label": "string"
}, - "moderationComment": "Decided to ban the server since it spams us regularly",
- "video": {
- "id": 0,
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "shortUUID": "2y84q2MQUMWPbiEcxNXMgC",
- "name": "string",
- "nsfw": true,
- "startAt": "2019-08-24T14:15:22Z",
- "endAt": "2019-08-24T14:15:22Z",
- "deleted": true,
- "blacklisted": true,
- "thumbnailPath": "string",
- "channel": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "displayName": "Videos of Framasoft",
- "description": "Videos made with <3 by Framasoft",
- "support": "Please support our work on https://soutenir.framasoft.org/en/ <3",
- "isLocal": true,
- "banners": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "ownerAccount": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userId": 42,
- "displayName": "string",
- "description": "string"
}
}
}, - "createdAt": "2019-08-24T14:15:22Z"
}
]
}
reason required | string [ 2 .. 3000 ] characters Reason why the user reports this video |
object | |
object | |
predefinedReasons | Array of strings (PredefinedAbuseReasons) <= 8 items Items Enum: "violentOrAbusive" "hatefulOrAbusive" "spamOrMisleading" "privacy" "rights" "serverRules" "thumbnails" "captions" Reason categories that help triage reports |
object |
{- "reason": "string",
- "predefinedReasons": [
- "violentOrAbusive"
], - "video": {
- "id": 42,
- "startAt": 0,
- "endAt": 0
}, - "comment": {
- "id": 42
}, - "account": {
- "id": 0
}
}
{- "abuse": {
- "id": 42
}
}
abuseId required | integer >= 1 Example: 42 Abuse id |
moderationComment | string [ 2 .. 3000 ] characters Update the report comment visible only to the moderation team |
state | integer (AbuseStateSet) Enum: 1 2 3 The abuse state (Pending = |
{- "state": 1,
- "moderationComment": "string"
}
abuseId required | integer >= 1 Example: 42 Abuse id |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "message": "string",
- "byModerator": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "account": {
- "id": 0,
- "name": "string",
- "displayName": "string",
- "url": "string",
- "host": "example.com",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
}
]
}
Operations dealing with blocking videos (removing them from view and preventing interactions).
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
search | string plain search that will match with video titles, and more |
sort | string Enum: "-id" "name" "-duration" "-views" "-likes" "-dislikes" "-uuid" "-createdAt" Sort blocklists by criteria |
start | integer >= 0 Offset used to paginate results |
type | integer Enum: 1 2 list only blocks that match this type:
|
{- "total": 1,
- "data": [
- {
- "id": 42,
- "videoId": 42,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "name": "string",
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "description": "string",
- "duration": 0,
- "views": 0,
- "likes": 0,
- "dislikes": 0,
- "nsfw": true
}
]
}
accounts | Array of strings Example: accounts=goofy@example.com&accounts=donald@example.com Check if these accounts are blocked |
hosts | Array of strings Example: hosts=example.com Check if these hosts are blocked |
{- "accounts": {
- "account1": {
- "blockedByServer": true,
- "blockedByUser": true
}, - "account2": {
- "blockedByServer": true,
- "blockedByUser": true
}
}, - "hosts": {
- "host1": {
- "blockedByServer": true,
- "blockedByUser": true
}, - "host2": {
- "blockedByServer": true,
- "blockedByUser": true
}
}
}
accounts | Array of strings Example: accounts=goofy@example.com&accounts=donald@example.com Check if these accounts are blocked |
hosts | Array of strings Example: hosts=example.com Check if these hosts are blocked |
{- "accounts": {
- "account1": {
- "blockedByServer": true,
- "blockedByUser": true
}, - "account2": {
- "blockedByServer": true,
- "blockedByUser": true
}
}, - "hosts": {
- "host1": {
- "blockedByServer": true,
- "blockedByUser": true
}, - "host2": {
- "blockedByServer": true,
- "blockedByUser": true
}
}
}
Automatic tags set on objects (like comments or videos) by specific rules (external link, watched words, etc.)
PeerTube >= 6.2
accountName required | string account name to list watched words |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "listName": "string",
- "words": [
- "string"
], - "updatedAt": "2021-05-04T08:01:01.502Z",
- "createdAt": "2021-05-04T08:01:01.502Z"
}
]
}
PeerTube >= 6.2
accountName required | string |
listName | string |
words | Array of strings |
{- "listName": "string",
- "words": [
- "string"
]
}
{- "watchedWordsList": {
- "id": 0
}
}
PeerTube >= 6.2
accountName required | string |
listId required | string list of watched words to update |
listName | string |
words | Array of strings |
{- "listName": "string",
- "words": [
- "string"
]
}
PeerTube >= 6.2
listName | string |
words | Array of strings |
{- "listName": "string",
- "words": [
- "string"
]
}
{- "watchedWordsList": {
- "id": 0
}
}
PeerTube >= 6.2
listId required | string list of watched words to update |
listName | string |
words | Array of strings |
{- "listName": "string",
- "words": [
- "string"
]
}
{- "client": {
- "header": {
- "hideInstanceName": false
}, - "videos": {
- "miniature": {
- "preferAuthorDisplayName": true
}, - "resumableUpload": {
- "maxChunkSize": 0
}
}, - "browseVideos": {
- "defaultSort": "-publishedAt",
- "defaultScope": "federated"
}, - "menu": {
- "login": {
- "redirectOnSingleExternalAuth": false
}
}, - "openInApp": {
- "android": {
- "intent": {
- "enabled": true,
- "host": "joinpeertube.org",
- "scheme": "peertube",
}
}, - "ios": {
- "enabled": true,
- "host": "joinpeertube.org",
- "scheme": "peertube",
}
}
}, - "defaults": {
- "publish": {
- "downloadEnabled": true,
- "commentsPolicy": 1,
- "commentsEnabled": true,
- "privacy": 4,
- "licence": null
}, - "p2p": {
- "webapp": {
- "enabled": false
}, - "embed": {
- "enabled": false
}
}, - "player": {
- "theme": "galaxy",
- "autoPlay": true
}
}, - "webadmin": {
- "configuration": {
- "edition": {
- "allowed": true
}
}
}, - "instance": {
- "name": "PeerTube Nightly",
- "shortDescription": "PeerTube instance updated nightly",
- "isNSFW": false,
- "defaultNSFWPolicy": "do_not_list",
- "defaultClientRoute": "/home",
- "serverCountry": "",
- "support": {
- "text": ""
}, - "social": {
- "blueskyLink": "",
- "mastodonLink": "",
- "xLink": "",
- "externalLink": ""
}, - "customizations": {
- "javascript": "",
- "css": ""
}, - "defaultLanguage": "en",
- "avatars": [
- {
- "height": 48,
- "width": 48,
- "path": "/lazy-static/avatars/abace30f-69ad-4ff2-a954-dea06c5db6eb.png",
- "createdAt": "2024-05-15T09:12:38.749Z",
- "updatedAt": "2024-05-15T09:12:38.749Z"
}, - {
- "height": 120,
- "width": 120,
- "path": "/lazy-static/avatars/1163da44-0367-4df9-bf10-a1b0dc0e3fb9.png",
- "createdAt": "2024-05-15T09:12:38.719Z",
- "updatedAt": "2024-05-15T09:12:38.719Z"
}, - {
- "height": 600,
- "width": 600,
- "path": "/lazy-static/avatars/177f70c4-ddef-4bb6-bc96-b00d5e2a0e05.png",
- "createdAt": "2024-05-15T09:12:38.709Z",
- "updatedAt": "2024-05-15T09:12:38.709Z"
}, - {
- "height": 1500,
- "width": 1500,
- "path": "/lazy-static/avatars/82936e50-9560-42e7-9e4b-d96309f5c9c9.png",
- "createdAt": "2024-05-15T09:12:38.684Z",
- "updatedAt": "2024-05-15T09:12:38.684Z"
}
], - "banners": [
- {
- "height": 100,
- "width": 600,
- "path": "/lazy-static/banners/d853452c-f020-4c6f-a4ea-9fc582d68ff2.jpg",
- "createdAt": "2024-04-16T14:09:02.665Z",
- "updatedAt": "2024-04-16T14:09:02.665Z"
}, - {
- "height": 317,
- "width": 1920,
- "path": "/lazy-static/banners/772ff0ae-6cb5-4d1c-b89b-ace85eece196.jpg",
- "createdAt": "2024-04-16T14:09:02.615Z",
- "updatedAt": "2024-04-16T14:09:02.615Z"
}
], - "logo": [
- {
- "height": 48,
- "width": 48,
- "type": "favicon",
- "isFallback": true
}, - {
- "height": 120,
- "width": 120,
- "type": "favicon",
- "isFallback": true
}, - {
- "height": 600,
- "width": 600,
- "type": "favicon",
- "isFallback": true
}, - {
- "height": 1500,
- "width": 1500,
- "type": "favicon",
- "isFallback": true
}, - {
- "height": 48,
- "width": 48,
- "type": "header-square",
- "isFallback": true
}, - {
- "height": 120,
- "width": 120,
- "type": "header-square",
- "isFallback": true
}, - {
- "height": 600,
- "width": 600,
- "type": "header-square",
- "isFallback": true
}, - {
- "height": 1500,
- "width": 1500,
- "type": "header-square",
- "isFallback": true
}, - {
- "height": 48,
- "width": 48,
- "type": "header-wide",
- "isFallback": true
}, - {
- "height": 120,
- "width": 120,
- "type": "header-wide",
- "isFallback": true
}, - {
- "height": 600,
- "width": 600,
- "type": "header-wide",
- "isFallback": true
}, - {
- "height": 1500,
- "width": 1500,
- "type": "header-wide",
- "isFallback": true
}, - {
- "height": 48,
- "width": 48,
- "type": "opengraph",
- "isFallback": true
}, - {
- "height": 120,
- "width": 120,
- "type": "opengraph",
- "isFallback": true
}, - {
- "height": 600,
- "width": 600,
- "type": "opengraph",
- "isFallback": true
}, - {
- "height": 1500,
- "width": 1500,
- "type": "opengraph",
- "isFallback": true
}
]
}, - "search": {
- "remoteUri": {
- "users": true,
- "anonymous": false
}, - "searchIndex": {
- "enabled": false,
- "disableLocalSearch": false,
- "isDefaultSearch": false
}
}, - "plugin": {
- "registered": [
- {
- "npmName": "peertube-plugin-auto-mute",
- "name": "auto-mute",
- "version": "0.0.6",
- "description": "Auto mute plugin for PeerTube",
- "clientScripts": { }
}, - {
- "npmName": "peertube-plugin-matomo",
- "name": "matomo",
- "version": "1.0.2",
- "description": "Matomo plugin that tracks page views on a PeerTube instance.",
- "clientScripts": {
- "dist/common-client-plugin.js": {
- "script": "dist/common-client-plugin.js",
- "scopes": [
- "common"
]
}, - "dist/embed-client-plugin.js": {
- "script": "dist/embed-client-plugin.js",
- "scopes": [
- "embed"
]
}
}
}, - {
- "npmName": "peertube-plugin-auth-ldap",
- "name": "auth-ldap",
- "version": "0.0.14",
- "description": "Add LDAP support to login form in PeerTube.",
- "clientScripts": { }
}, - {
- "npmName": "peertube-plugin-akismet",
- "name": "akismet",
- "version": "0.1.2",
- "description": "Reject local comments, remote comments and registrations based on Akismet service",
- "clientScripts": {
- "dist/common-client-plugin.js": {
- "script": "dist/common-client-plugin.js",
- "scopes": [
- "common"
]
}
}
}, - {
- "npmName": "peertube-plugin-transcoding-custom-quality",
- "name": "transcoding-custom-quality",
- "version": "0.2.0",
- "description": "Set a custom quality for transcoding",
- "clientScripts": { }
}, - {
- "npmName": "peertube-plugin-livechat",
- "name": "livechat",
- "version": "14.0.1",
- "description": "PeerTube plugin livechat: create chat rooms for your Peertube lives! Comes with many features: federation, moderation tools, chat bot, chat persistence, OBS integration, ...",
- "clientScripts": {
- "dist/client/common-client-plugin.js": {
- "script": "dist/client/common-client-plugin.js",
- "scopes": [
- "common"
]
}, - "dist/client/admin-plugin-client-plugin.js": {
- "script": "dist/client/admin-plugin-client-plugin.js",
- "scopes": [
- "admin-plugin"
]
}
}
}
], - "registeredExternalAuths": [ ],
- "registeredIdAndPassAuths": [
- {
- "npmName": "peertube-plugin-auth-ldap",
- "name": "auth-ldap",
- "version": "0.0.14",
- "authName": "ldap",
- "weight": 100
}
]
}, - "theme": {
- "registered": [
- {
- "npmName": "peertube-theme-dark",
- "name": "dark",
- "version": "3.0.2",
- "description": "PeerTube dark theme",
- "css": [
- "assets/style.css"
], - "clientScripts": { }
}, - {
- "npmName": "peertube-theme-framasoft",
- "name": "framasoft",
- "version": "1.0.0",
- "description": "PeerTube Framasoft theme",
- "css": [
- "assets/style.css"
], - "clientScripts": { }
}
], - "builtIn": [
- {
- "name": "peertube-core-dark-brown"
}, - {
- "name": "peertube-core-light-beige"
}
], - "default": "default",
- "customization": {
- "primaryColor": null,
- "foregroundColor": null,
- "backgroundColor": null,
- "backgroundSecondaryColor": null,
- "menuForegroundColor": null,
- "menuBackgroundColor": null,
- "menuBorderRadius": null,
- "headerForegroundColor": null,
- "headerBackgroundColor": null,
- "inputBorderRadius": null
}
}, - "email": {
- "enabled": true
}, - "contactForm": {
- "enabled": true
}, - "serverVersion": "7.3.0-nightly-2025-09-12",
- "serverCommit": "",
- "transcoding": {
- "remoteRunners": {
- "enabled": true
}, - "hls": {
- "enabled": true
}, - "web_videos": {
- "enabled": false
}, - "enabledResolutions": [
- 0,
- 240,
- 480
], - "profile": "custom-quality",
- "availableProfiles": [
- "default",
- "custom-quality"
]
}, - "live": {
- "enabled": true,
- "allowReplay": true,
- "latencySetting": {
- "enabled": true
}, - "maxDuration": -1,
- "maxInstanceLives": 20,
- "maxUserLives": 4,
- "transcoding": {
- "enabled": true,
- "remoteRunners": {
- "enabled": true
}, - "enabledResolutions": [
- 360
], - "profile": "default",
- "availableProfiles": [
- "default",
- "custom-quality"
]
}, - "rtmp": {
- "port": 1935
}
}, - "videoStudio": {
- "enabled": true,
- "remoteRunners": {
- "enabled": false
}
}, - "videoFile": {
- "update": {
- "enabled": true
}
}, - "videoTranscription": {
- "enabled": true,
- "remoteRunners": {
- "enabled": true
}
}, - "import": {
- "videos": {
- "http": {
- "enabled": true
}, - "torrent": {
- "enabled": true
}
}, - "videoChannelSynchronization": {
- "enabled": true
}, - "users": {
- "enabled": true
}
}, - "export": {
- "users": {
- "enabled": true,
- "exportExpiration": 172800000,
- "maxUserVideoQuota": 10737418240
}
}, - "autoBlacklist": {
- "videos": {
- "ofUsers": {
- "enabled": true
}
}
}, - "avatar": {
- "file": {
- "size": {
- "max": 8388608
}, - "extensions": [
- ".png",
- ".jpeg",
- ".jpg",
- ".gif",
- ".webp"
]
}
}, - "banner": {
- "file": {
- "size": {
- "max": 8388608
}, - "extensions": [
- ".png",
- ".jpeg",
- ".jpg",
- ".gif",
- ".webp"
]
}
}, - "video": {
- "image": {
- "extensions": [
- ".png",
- ".jpg",
- ".jpeg",
- ".webp"
], - "size": {
- "max": 8388608
}
}, - "file": {
- "extensions": [
- ".webm",
- ".ogv",
- ".ogg",
- ".mp4",
- ".mkv",
- ".mov",
- ".qt",
- ".mqv",
- ".m4v",
- ".flv",
- ".f4v",
- ".wmv",
- ".avi",
- ".3gp",
- ".3gpp",
- ".3g2",
- ".3gpp2",
- ".nut",
- ".mts",
- "ts",
- ".m2ts",
- ".mpv",
- ".m2v",
- ".m1v",
- ".mpg",
- ".mpe",
- ".mpeg",
- ".vob",
- ".mxf",
- ".mp3",
- ".wma",
- ".wav",
- ".flac",
- ".aac",
- ".m4a",
- ".ac3"
]
}
}, - "videoCaption": {
- "file": {
- "size": {
- "max": 20971520
}, - "extensions": [
- ".vtt",
- ".srt"
]
}
}, - "user": {
- "videoQuota": -1,
- "videoQuotaDaily": 104857600
}, - "videoChannels": {
- "maxPerUser": 20
}, - "trending": {
- "videos": {
- "intervalDays": 7,
- "algorithms": {
- "enabled": [
- "best",
- "hot",
- "most-viewed",
- "most-liked"
], - "default": "most-viewed"
}
}
}, - "tracker": {
- "enabled": true
}, - "followings": {
}, - "federation": {
- "enabled": true
}, - "broadcastMessage": {
- "enabled": false,
- "message": "We are currently experiencing technical problems on this instance. We are trying to fix it as soon as possible. Thank you for your understanding.",
- "level": "error",
- "dismissable": false
}, - "homepage": {
- "enabled": true
}, - "openTelemetry": {
- "metrics": {
- "enabled": true,
- "playbackStatsInterval": 15000
}
}, - "views": {
- "videos": {
- "watchingInterval": {
- "anonymous": 5000,
- "users": 5000
}
}
}, - "storyboards": {
- "enabled": true,
- "remoteRunners": {
- "enabled": false
}
}, - "webrtc": {
- "stunServers": [
- "stun:stunserver2024.stunprotocol.org",
- "stun:stun.framasoft.org"
]
}, - "nsfwFlagsSettings": {
- "enabled": true
}, - "fieldsConstraints": {
- "users": {
- "password": {
- "minLength": 8,
- "maxLength": 50
}
}
}, - "signup": {
- "allowed": false,
- "allowedForCurrentIP": true,
- "minimumAge": 16,
- "requiresApproval": true,
- "requiresEmailVerification": true
}
}
{- "instance": {
- "name": "PeerTube Nightly",
- "shortDescription": "PeerTube instance updated nightly",
- "description": "This instance is a test instance of the PeerTube project. It is updated to the latest commit in the develop branch every business day, 8pm CET.",
- "terms": "No terms for now. Being a closed test instance, no real terms of use beyond fair use are to be expected.",
- "codeOfConduct": "",
- "hardwareInformation": "",
- "creationReason": "",
- "moderationInformation": "",
- "administrator": "",
- "maintenanceLifetime": "",
- "businessModel": "",
- "languages": [
- "fr"
], - "categories": [
- 16
], - "banners": [
- {
- "height": 100,
- "width": 600,
- "path": "/lazy-static/banners/d853452c-f020-4c6f-a4ea-9fc582d68ff2.jpg",
- "createdAt": "2024-04-16T14:09:02.665Z",
- "updatedAt": "2024-04-16T14:09:02.665Z"
}, - {
- "height": 317,
- "width": 1920,
- "path": "/lazy-static/banners/772ff0ae-6cb5-4d1c-b89b-ace85eece196.jpg",
- "createdAt": "2024-04-16T14:09:02.615Z",
- "updatedAt": "2024-04-16T14:09:02.615Z"
}
], - "avatars": [
- {
- "height": 48,
- "width": 48,
- "path": "/lazy-static/avatars/abace30f-69ad-4ff2-a954-dea06c5db6eb.png",
- "createdAt": "2024-05-15T09:12:38.749Z",
- "updatedAt": "2024-05-15T09:12:38.749Z"
}, - {
- "height": 120,
- "width": 120,
- "path": "/lazy-static/avatars/1163da44-0367-4df9-bf10-a1b0dc0e3fb9.png",
- "createdAt": "2024-05-15T09:12:38.719Z",
- "updatedAt": "2024-05-15T09:12:38.719Z"
}, - {
- "height": 600,
- "width": 600,
- "path": "/lazy-static/avatars/177f70c4-ddef-4bb6-bc96-b00d5e2a0e05.png",
- "createdAt": "2024-05-15T09:12:38.709Z",
- "updatedAt": "2024-05-15T09:12:38.709Z"
}, - {
- "height": 1500,
- "width": 1500,
- "path": "/lazy-static/avatars/82936e50-9560-42e7-9e4b-d96309f5c9c9.png",
- "createdAt": "2024-05-15T09:12:38.684Z",
- "updatedAt": "2024-05-15T09:12:38.684Z"
}
]
}
}
{- "instance": {
- "name": "string",
- "shortDescription": "string",
- "description": "string",
- "terms": "string",
- "codeOfConduct": "string",
- "creationReason": "string",
- "moderationInformation": "string",
- "administrator": "string",
- "maintenanceLifetime": "string",
- "businessModel": "string",
- "hardwareInformation": "string",
- "languages": [
- "string"
], - "categories": [
- 0
], - "isNSFW": true,
- "defaultNSFWPolicy": "string",
- "serverCountry": "string",
- "support": {
- "text": "string"
}, - "social": {
- "externalLink": "string",
- "mastodonLink": "string",
- "blueskyLink": "string",
- "xLink": "string"
}, - "defaultClientRoute": "string",
- "customizations": {
- "javascript": "string",
- "css": "string"
}
}, - "theme": {
- "default": "string"
}, - "services": {
- "twitter": {
- "username": "string"
}
}, - "cache": {
- "previews": {
- "size": 0
}, - "captions": {
- "size": 0
}
}, - "signup": {
- "enabled": true,
- "limit": 0,
- "requiresEmailVerification": true
}, - "admin": {
- "email": "user@example.com"
}, - "contactForm": {
- "enabled": true
}, - "user": {
- "videoQuota": 16810141515,
- "videoQuotaDaily": 1681014151
}, - "transcoding": {
- "enabled": true,
- "originalFile": {
- "keep": true
}, - "allowAdditionalExtensions": true,
- "allowAudioFiles": true,
- "threads": 0,
- "concurrency": 0,
- "profile": "default",
- "resolutions": {
- "0p": true,
- "144p": true,
- "240p": true,
- "360p": true,
- "480p": true,
- "720p": true,
- "1080p": true,
- "1440p": true,
- "2160p": true
}, - "web_videos": {
- "enabled": true
}, - "hls": {
- "enabled": true,
- "splitAudioAndVideo": true
}
}, - "import": {
- "videos": {
- "http": {
- "enabled": true
}, - "torrent": {
- "enabled": true
}
}, - "video_channel_synchronization": {
- "enabled": true
}
}, - "autoBlacklist": {
- "videos": {
- "ofUsers": {
- "enabled": true
}
}
}, - "followers": {
- "instance": {
- "enabled": true,
- "manualApproval": true
}
}, - "storyboard": {
- "enabled": true
}, - "defaults": {
- "publish": {
- "downloadEnabled": true,
- "commentsPolicy": 1,
- "privacy": 1,
- "licence": 2
}, - "p2p": {
- "webapp": {
- "enabled": true
}, - "embed": {
- "enabled": true
}
}, - "player": {
- "autoPlay": true
}
}
}
Set a cookie so that, the next time the client refreshes the HTML of the web interface, PeerTube will use the next language
language required | string Language code to set |
{- "language": "en-US"
}
Managing servers which the instance interacts with is crucial to the concept of federation in PeerTube and external video indexation. The PeerTube server then deals with inter-server ActivityPub operations and propagates information across its social graph by posting activities to actors' inbox endpoints.
actorType | string Enum: "Person" "Application" "Group" "Service" "Organization" |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
state | string Enum: "pending" "accepted" |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "follower": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "following": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "score": 0,
- "state": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
actorType | string Enum: "Person" "Application" "Group" "Service" "Organization" |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
state | string Enum: "pending" "accepted" |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "follower": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "following": {
- "id": 42,
- "url": "string",
- "name": "chocobozzz",
- "avatars": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "host": "example.com",
- "hostRedundancyAllowed": true,
- "followingCount": 0,
- "followersCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "score": 0,
- "state": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
handles | Array of strings unique |
hosts | Array of strings <hostname> unique [ items <hostname > ] |
{- "hosts": [
- "example.com"
], - "handles": [
- "string"
]
}
Redundancy is part of the inter-server solidarity that PeerTube fosters. Manage the list of instances you wish to help by seeding their videos according to the policy of video selection of your choice. Note that you have a similar functionality to mirror individual videos, see video mirroring.
host required | string <hostname> server domain to mirror |
redundancyAllowed required | boolean allow mirroring of the host's local videos |
{- "redundancyAllowed": true
}
Managing plugins installed from a local path or from NPM, or search for new ones.
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
pluginType | integer |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
uninstalled | boolean |
{- "total": 1,
- "data": [
- {
- "name": "peertube-plugin-auth-ldap",
- "type": 1,
- "latestVersion": "0.0.3",
- "version": "0.0.1",
- "enabled": true,
- "uninstalled": true,
- "peertubeEngine": "2.2.0",
- "description": "string",
- "settings": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
currentPeerTubeEngine | string |
pluginType | integer |
search | string |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "name": "peertube-plugin-auth-ldap",
- "type": 1,
- "latestVersion": "0.0.3",
- "version": "0.0.1",
- "enabled": true,
- "uninstalled": true,
- "peertubeEngine": "2.2.0",
- "description": "string",
- "settings": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
npmName required | string Example: peertube-plugin-auth-ldap name of the plugin/theme on npmjs.com or in its package.json |
{- "name": "peertube-plugin-auth-ldap",
- "type": 1,
- "latestVersion": "0.0.3",
- "version": "0.0.1",
- "enabled": true,
- "uninstalled": true,
- "peertubeEngine": "2.2.0",
- "description": "string",
- "settings": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
{- "totalUsers": 0,
- "totalDailyActiveUsers": 0,
- "totalWeeklyActiveUsers": 0,
- "totalMonthlyActiveUsers": 0,
- "totalModerators": 0,
- "totalAdmins": 0,
- "totalLocalVideos": 0,
- "totalLocalVideoViews": 0,
- "totalLocalVideoComments": 0,
- "totalLocalVideoFilesSize": 0,
- "totalVideos": 0,
- "totalVideoComments": 0,
- "totalLocalVideoChannels": 0,
- "totalLocalDailyActiveVideoChannels": 0,
- "totalLocalWeeklyActiveVideoChannels": 0,
- "totalLocalMonthlyActiveVideoChannels": 0,
- "totalLocalPlaylists": 0,
- "totalInstanceFollowers": 0,
- "totalInstanceFollowing": 0,
- "videosRedundancy": [
- {
- "strategy": "string",
- "totalSize": 0,
- "totalUsed": 0,
- "totalVideoFiles": 0,
- "totalVideos": 0
}
], - "totalActivityPubMessagesProcessed": 0,
- "totalActivityPubMessagesSuccesses": 0,
- "totalActivityPubMessagesErrors": 0,
- "activityPubMessagesProcessedPerSecond": 0,
- "totalActivityPubMessagesWaiting": 0,
- "averageRegistrationRequestResponseTimeMs": 0,
- "totalRegistrationRequestsProcessed": 0,
- "totalRegistrationRequests": 0,
- "averageAbuseResponseTimeMs": 0,
- "totalAbusesProcessed": 0,
- "totalAbuses": 0
}
These metrics are exposed by OpenTelemetry metrics exporter if enabled.
downloadedBytesHTTP required | number How many bytes were downloaded with HTTP since the last metric creation |
downloadedBytesP2P required | number How many bytes were downloaded with P2P since the last metric creation |
errors required | number How many errors occurred since the last metric creation |
p2pEnabled required | boolean |
playerMode required | string Enum: "p2p-media-loader" "web-video" |
resolutionChanges required | number How many resolution changes occurred since the last metric creation |
uploadedBytesP2P required | number How many bytes were uploaded with P2P since the last metric creation |
required | id (integer) or UUIDv4 (string) or shortUUID (string) |
bufferStalled | number How many times buffer has been stalled since the last metric creation |
fps | number Current player video fps |
p2pPeers | number P2P peers connected (doesn't include WebSeed peers) |
resolution | number Current player video resolution |
{- "playerMode": "p2p-media-loader",
- "resolution": 0,
- "fps": 0,
- "p2pEnabled": true,
- "p2pPeers": 0,
- "resolutionChanges": 0,
- "bufferStalled": 0,
- "errors": 0,
- "downloadedBytesP2P": 0,
- "downloadedBytesHTTP": 0,
- "uploadedBytesP2P": 0,
- "videoId": 42
}
level required | any Enum: "error" "warn" |
message required | string |
url required | string URL of the current user page |
meta | string Additional information regarding this log |
stackTrace | string Stack trace of the error if there is one |
userAgent | string User agent of the web browser that sends the message |
{- "message": "string",
- "url": "string",
- "level": "error",
- "stackTrace": "string",
- "userAgent": "string",
- "meta": "string"
}
Jobs are long-running tasks enqueued and processed by the instance itself. No additional worker registration is currently available.
state required | string Enum: "" "active" "completed" "failed" "waiting" "delayed" The state of the job ('' for for no filter) |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
jobType | string Enum: "activitypub-follow" "activitypub-http-broadcast" "activitypub-http-fetcher" "activitypub-http-unicast" "email" "video-transcoding" "video-file-import" "video-import" "videos-views-stats" "activitypub-refresher" "video-redundancy" "video-live-ending" "video-channel-import" job type |
sort | string Example: sort=-createdAt Sort column |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 42,
- "state": "active",
- "type": "activitypub-http-unicast",
- "data": { },
- "error": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "finishedOn": "2019-08-24T14:15:22Z",
- "processedOn": "2019-08-24T14:15:22Z"
}
]
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Value: "createdAt" Sort registration tokens by criteria |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 0,
- "registrationToken": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "registeredRunnersCount": 0
}
]
}
API used by PeerTube runners
runnerToken required | string |
jobTypes | Array of strings Filter jobs depending on their types |
{- "runnerToken": "string",
- "jobTypes": [
- "string"
]
}
{- "availableJobs": [
- {
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "type": "vod-web-video-transcoding",
- "payload": {
- "input": {
- "videoFileUrl": "string"
}, - "output": {
- "resolution": 0,
- "fps": 0
}
}
}
]
}
API used by PeerTube runners
jobUUID required | string <uuid> (UUIDv4) = 36 characters ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 9c9de5e8-0a1e-484a-b099-e80766180a6d |
runnerToken required | string |
{- "runnerToken": "string"
}
{- "job": {
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "type": "vod-web-video-transcoding",
- "state": {
- "id": 1,
- "label": "Processing"
}, - "payload": {
- "input": {
- "videoFileUrl": "string"
}, - "output": {
- "resolution": 0,
- "fps": 0
}
}, - "failures": 0,
- "error": "string",
- "progress": 0,
- "priority": 0,
- "updatedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "startedAt": "2019-08-24T14:15:22Z",
- "finishedAt": "2019-08-24T14:15:22Z",
- "parent": {
- "type": "vod-web-video-transcoding",
- "state": {
- "id": 1,
- "label": "Processing"
}, - "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d"
}, - "runner": {
- "id": 0,
- "name": "string",
- "description": "string"
}, - "jobToken": "string"
}
}
API used by PeerTube runners
jobUUID required | string <uuid> (UUIDv4) = 36 characters ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 9c9de5e8-0a1e-484a-b099-e80766180a6d |
jobToken required | string |
reason required | string Why the runner aborts this job |
runnerToken required | string |
{- "runnerToken": "string",
- "jobToken": "string",
- "reason": "string"
}
API used by PeerTube runners
jobUUID required | string <uuid> (UUIDv4) = 36 characters ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 9c9de5e8-0a1e-484a-b099-e80766180a6d |
jobToken required | string |
runnerToken required | string |
object | |
progress | integer Update job progression percentage (optional) |
{- "runnerToken": "string",
- "jobToken": "string",
- "progress": 0,
- "payload": {
- "type": "add-chunk",
- "masterPlaylistFile": "string",
- "resolutionPlaylistFile": "string",
- "resolutionPlaylistFilename": "string",
- "videoChunkFile": "string",
- "videoChunkFilename": "string"
}
}
API used by PeerTube runners
jobUUID required | string <uuid> (UUIDv4) = 36 characters ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 9c9de5e8-0a1e-484a-b099-e80766180a6d |
jobToken required | string |
message required | string Why the runner failed to process this job |
runnerToken required | string |
{- "runnerToken": "string",
- "jobToken": "string",
- "message": "string"
}
API used by PeerTube runners
jobUUID required | string <uuid> (UUIDv4) = 36 characters ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 9c9de5e8-0a1e-484a-b099-e80766180a6d |
jobToken required | string |
required | VOD web video transcoding (object) or VOD HLS transcoding (object) or VOD audio merge transcoding (object) or Live RTMP to HLS transcoding (object) |
runnerToken required | string |
{- "runnerToken": "string",
- "jobToken": "string",
- "payload": {
- "videoFile": "string"
}
}
The endpoint will first cancel the job if needed, and then remove it from the database. Children jobs will also be removed
jobUUID required | string <uuid> (UUIDv4) = 36 characters ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 9c9de5e8-0a1e-484a-b099-e80766180a6d |
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
search | string Plain text search, applied to various parts of the model depending on endpoint |
sort | string Enum: "updatedAt" "createdAt" "priority" "state" "progress" Sort runner jobs by criteria |
start | integer >= 0 Offset used to paginate results |
stateOneOf | Array of integers (RunnerJobState) Items Enum: 1 2 3 4 5 6 7 8 |
{- "total": 1,
- "data": [
- {
- "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d",
- "type": "vod-web-video-transcoding",
- "state": {
- "id": 1,
- "label": "Processing"
}, - "payload": {
- "input": {
- "videoFileUrl": "string"
}, - "output": {
- "resolution": 0,
- "fps": 0
}
}, - "failures": 0,
- "error": "string",
- "progress": 0,
- "priority": 0,
- "updatedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "startedAt": "2019-08-24T14:15:22Z",
- "finishedAt": "2019-08-24T14:15:22Z",
- "parent": {
- "type": "vod-web-video-transcoding",
- "state": {
- "id": 1,
- "label": "Processing"
}, - "uuid": "9c9de5e8-0a1e-484a-b099-e80766180a6d"
}, - "runner": {
- "id": 0,
- "name": "string",
- "description": "string"
}, - "privatePayload": { }
}
]
}
API used by PeerTube runners
name required | string |
registrationToken required | string |
description | string |
{- "registrationToken": "string",
- "name": "string",
- "description": "string"
}
{- "id": 0,
- "runnerToken": "string"
}
count | integer [ 1 .. 100 ] Default: 15 Number of items to return |
sort | string Value: "createdAt" Sort runners by criteria |
start | integer >= 0 Offset used to paginate results |
{- "total": 1,
- "data": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "ip": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "lastContact": "2019-08-24T14:15:22Z"
}
]
}