BYTETOOLS

PeerTube (SepiaSearch) API

Free PeerTube search API with no key: search videos across the federated PeerTube network via SepiaSearch, with duration, channel and licence data. Tested.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the PeerTube (SepiaSearch) API?

SepiaSearch is a free, key-free search API across the federated PeerTube network, indexing videos from thousands of independent instances with metadata including duration, channel, licence and view counts.

PeerTube is a decentralised, self-hostable video platform, which means there is no single catalogue to search. SepiaSearch solves that by indexing across instances, giving you one endpoint for the whole federated network.

Because PeerTube is favoured by creators who care about licensing, a genuinely useful proportion of results carry explicit Creative Commons licences — the `licence` field is populated far more often than on commercial platforms.

Quick facts

Base URL
https://sepiasearch.org/api/v1/search
Authentication
No API key required. Individual PeerTube instances expose the same API at their own domains.
Rate limit
No published hard limit; fair use expected.
Pricing
Free and open source.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the PeerTube (SepiaSearch) API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Search federated PeerTube videos

GET https://sepiasearch.org/api/v1/search/videos?search=linux&count=1

curl
curl 'https://sepiasearch.org/api/v1/search/videos?search=linux&count=1'
JavaScript (fetch)
const res = await fetch("https://sepiasearch.org/api/v1/search/videos?search=linux&count=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://sepiasearch.org/api/v1/search/videos?search=linux&count=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "total": 16180,
  "data": [
    {
      "id": 167978,
      "uuid": "da5463ca-fbc7-4311-948a-356594d5c70a",
      "shortUUID": "sXGnj113k5GYzdzzYmr4cY",
      "score": 1,
      "createdAt": "2025-05-11T20:36:00.942Z",
      "updatedAt": "2026-08-13T18:00:34.304Z",
      "publishedAt": "2025-05-11T20:43:40.247Z",
      "originallyPublishedAt": null,
      "category": {
        "id": 15,
        "label": "Science & Technology"
      },
      "licence": {
        "id": null,
        "label": "Unknown"
      },
      "language": {
        "id": "en",
        "label": "English"
      },
      "privacy": {
        "id": 1,
        "label": "Public"
      },
      "name": "Installing Linux Doesn't Need to Change. The Experience Does.",
      "description": "People online complain that Linux is hard to install for new users. But who are these people and why do they levy these complaints? The biggest barrier for the new Linux user isn't the installer; it's the experience, the lack of empathy, and complacency of supposed Linux users.\r\n\r\nWebsite: https://trafotin.com\r\n\r\nDonate:\r\n✨ Patreon: https://patreon.com/trafotin\r\n▶️ YouTube Membership: https://www.youtube.com/channel/UC5U7mHlhP6s6478wd7ZvnhA/join\r\n\r\nLinks:\r\n▶️ YouTube: https://www.youtube.com/@trafotin?sub_confirmation=1\r\n🦑 Peertube: https://spectra.video/c/trafotin\r\n🐘 Mastodon: https://vt.social/@trafotin\r\n🦋 Bluesky: https://bsky.app/profile/trafotin.com\r\n𝕏 (Formerly Twitter): https://x.com/trafotin\r\n\r\n🪙 Crypto:\r\nXMR: 84ZpcYxjfkT7uFGXgmi2jH2wyhUBMx8hGBJ3sAp478rKSShMAJHR3DhVVPSwCAskReRBPifzpA5

Parameters

ParameterTypeRequiredDescription
searchstringRequiredSearch query. linux
countintegerOptionalResults per page, max 100. 10
startintegerOptionalPagination offset. 10
durationMin / durationMaxintegerOptionalDuration filter in seconds. 600
sortstringOptional-match, -publishedAt or -views. -publishedAt

Response fields

totalinteger
Total videos matching the search.
data[].uuidstring
Video identifier.
data[].namestring
Video title.
data[].durationinteger
Length in seconds.
data[].channelobject
Publishing channel with its host instance.
data[].licenceobject
Licence, often an explicit Creative Commons one.
data[].urlstring
Canonical video URL on its home instance.

What you can build with the PeerTube (SepiaSearch) API

  • Search the federated video network without platform lock-in
  • Find openly licensed video content for reuse
  • Build an alternative video discovery interface
  • Aggregate independent creator content

Common errors and how to fix them

Empty data array

No videos matched.

Fix: The federated catalogue is much smaller than commercial platforms; broaden the query.

Video unavailable on its instance

Instances go offline or defederate.

Fix: The `url` points at the home instance — handle failures gracefully.

Inconsistent metadata

Instances are independently operated.

Fix: Field completeness varies; null-check before rendering.

PeerTube (SepiaSearch) API — frequently asked questions

What is PeerTube?

A decentralised, self-hostable video platform where anyone can run an instance. There is no central catalogue, which is why a federated search service like SepiaSearch exists.

Is the API free?

Yes, completely free with no API key. Individual PeerTube instances also expose the same API at their own domains.

Can I find openly licensed videos?

Yes, and unusually often. PeerTube attracts creators who care about licensing, so the `licence` field is populated with explicit Creative Commons terms far more frequently than on commercial platforms.

Can I search a single instance instead?

Yes. Every PeerTube instance exposes the same REST API, so point the same code at that instance's domain to search only its content.

Tools that pair with this API

PeerTube (SepiaSearch) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.