Skip to content

Libera

Developers

Libera's open endpoints. All are key-free and read-only; they return only public content. Responses are cached for 10 minutes.

  • Video JSON

    /api/v/{video-id}

    Public data for a single video: title, description, views, like AND dislike counts, comment count, channel, embed URL.

    Example: https://libera-demo.netlify.app/api/v/9b2f…

  • Channel JSON

    /api/k/{username}

    Channel profile: name, bio, links, follower and video counts, latest 12 public videos.

    Example: https://libera-demo.netlify.app/api/k/owner

  • Channel RSS

    /channel/{username}/feed.xml

    RSS 2.0 feed — any RSS reader can follow a channel without an account. Latest 30 videos.

    Example: https://libera-demo.netlify.app/channel/owner/feed.xml

  • oEmbed

    /api/oembed?url={watch-url}

    The oembed.com standard. Software like WordPress, Ghost and Discourse turns a watch link into a player automatically. Watch pages carry a discovery tag.

    Example: https://libera-demo.netlify.app/api/oembed?url=https://libera-demo.netlify.app/watch/9b2f…

  • Embeddable player

    /embed/{video-id}

    Embeddable in any site via iframe; ?t=42 starts at a specific second. "Copy embed code" in the Share menu gives ready-made code.

    Example: <iframe src="https://libera-demo.netlify.app/embed/9b2f…" width="560" height="315" allowfullscreen></iframe>

Notes

  • Endpoints contain no personal data; they neither require nor offer authentication.
  • In the JSON endpoints, like and dislike counts always come together.
  • Reasonable use is expected; if you fetch heavily, respect the cache headers (s-maxage=600).
  • 404 and 503 mean different things. 404 is a statement: this video or channel is not here. 503 means we could not look right now — the same request may well work in a minute, so treat it as retryable and do not drop the link. The RSS feeds follow the same rule and never answer an outage with an empty feed.
  • A count is never faked as zero. If a number or list could not be read, the field is null — never 0 and never an empty list. Zero is a claim; null says we could not look. Such responses are sent with no-store so a momentary failure is not cached on your behalf.