plyr · licensed playback

every play pays

plyr sits beside the player you already run. It checks the license at the press, meters only what plays, and leaves a receipt anyone can check.

01 · before play

A chip in the feed.

The license travels with the media. The chip says so, and nothing else.

02 · during play

A slim bar. The meter runs.

Pause and the meter stops. Only seconds that actually play are counted.

03 · after play

Gone. The receipt stays.

The chrome leaves. The receipt binds the play to a payment, never to a person.

the license gate

Checked at the press.

plyr decides before the first frame. A refused play never starts and costs nothing.

not live yet · nothing plays and nothing is charged
console

What played. What settled.

Plays, seconds metered and what settled, by license. Every number is the sum of the rows under it.

not live yet · no plays are recorded yet
plyr.sh/r

A play, on record.

Hold the receipt and you can check it. No account, no lookup. It names the payment and the asset, never a person.

not live yet · no receipts are issued yet
attach

Your player. Our receipt.

plyr is a few lines beside the player you run today.

01 · only when useful

A chip, a bar, then nothing.

Your chrome stays yours. plyr adds a license chip and a slim bar, then leaves.

02 · what played

Pause meters nothing.

Stop early or close the tab and the receipt keeps exactly what happened.

03 · a payment, not a person

No one is named.

Every receipt ties the play to what was paid. Nothing else.

not live yet · not a published sdk
the same gate, called by an agentagents →
every call and fielddocs →
pricing · every play pays

Only what plays is metered.

plyr meters the seconds that actually play and prices them per viewer-minute. The price is set at launch. A pause stops the meter. A press the license refuses never starts it.

public list price
  • plyrPer viewer-minute, every minute on a receipt.price set at launch
Open the console for plays and settlements, or a receipt.
every line, with its price
lineprice
HLS delivery, live + VODEvery viewer-minute that plays, metered by the second.price set at launch
WebRTC / WHEPSub-second delivery for live that cannot wait.price set at launch
StorageEach minute of media kept, with its ladder.price set at launch
Per play, hosted mediaA play of media plyr hosts.price set at launch
Rail clipA flat clip on each settled paid play, never a percentage.price set at launch
Paused secondsA pause stops the meter.not metered
Refused pressA use the license leaves off is refused before the first frame.not metered
not live yet · price set at launch
for rights holders

Write the license once.

The license names what a play may be used for and where. plyr checks exactly this at every press. A use you leave off is refused before the first frame.

not live yet · no license is issued yet
plyr.sh / license / receipts

Every right. Every play.

Each license, its scope, and the play receipt for every play under it.

not live yet · no licenses or receipts are issued yet
plyr.sh / license / scope

When rights change, plays keep their date.

A new version governs the next press. Earlier play receipts keep the scope under which they ran.

not live yet · no license versions are recorded yet
plyr.sh / creator / play statement

The plays behind the count.

Every line is a licensed play under one license. Seconds are counted. Payout amount is not set.

not live yet · no creator identity, payout destination or settlement is established
two clients · one surface

People press play. Agents call play.

A press in the player and a call to the api go through the same gate, the same meter and the same receipt.

not live yet · person_identifier is null on every receipt
for agents · POST /v1/play

Agents call play.

An agent asks before a single byte streams. The license answers first, the meter takes only what plays, and the receipt comes back with the answer.

not live yet · person_identifier is null on every receipt
the badge · on every licensed embed

The asterisk means it checks.

Every player that attaches plyr carries the blue asterisk on its frame. It only shows when the license checks. Tap it and the receipt behind the play is checked in front of you.

not live yet · person_identifier is null on every receipt
the lens · what the receipt knows

A payment. Never a person.

Your player has to know where to send the stream. The receipt does not keep it.

not live yet · person_identifier is null on every receipt
past media · any measurable event

Anything you can measure leaves a receipt.

A play was the first event. An ad impression and a licensed data query work the same way: checked against a license, metered, written as a ledger line anyone can check.

not live yet
sign in

Sign in to plyr.

not live yet · nothing is sent · new to plyr? start here
docs · api

Four calls. Every play.

Write a license, ask to play, read what played, check the receipt. The same four calls cover a person pressing play and an agent calling it.

endpointsplanned
callwhat it does
POST /v1/licensesWrite the license once: the uses a play may have and where it may play.
POST /v1/playAsk before a byte streams. The license answers first.
GET /v1/playsRead what played, filtered by license. Totals are the sum of the rows.
GET /r/{id}Fetch a receipt. No account, no lookup. It names the payment and the asset, never a person.
attach to the player you runsee attach →
not live yet · person_identifier is null on every receipt
start

Start on plyr.

you are

not live yet · nothing is sent · already on plyr? sign in
404

Nothing is playing here.

back to plyr
plyr.sh / plays and money / session analytics

How the play went.

Startup, rebuffering and watch-through for each play. No viewer is named. Paused seconds are not counted.

not live yet · no telemetry is collected yet
plyr.sh / play / simulcast

One crossing in. Every destination out.

A live crossing would come in on txrx. plyr would send it to every destination you choose.

not live yet · txrx would carry the incoming crossing; plyr would distribute it. Neither hand-off is live yet.