Pricing
The API is one flat rate per 1,000 credits. A first look at a video is quoted by the length of the video, and a second question about the same video costs a fraction of that, because it reads what the first look found. Every answer carries what it charged, so you never have to work a bill out afterwards.
Last updated
The rate
One published figure: $0.083 per 1,000 credits. Every price below is that rate over a credit count.
Credits are the unit the work is metered in. The rate is flat: it does not fall with volume, and adding funds gives you exactly what you paid for. $100 in is $100 of balance. A discount, when there is one, is a subscription rather than a bigger button.
curl https://api.tryplayhead.com/v1/billing/config | jq .api_rate
{
"credits_per_usd": 12000,
"usd_per_1k_credits": 0.0833,
"usd_per_video_minute": 0.0900
}What a call costs
A first look is quoted in bands by the length of the video, with a floor of 1,100 credits. A follow-up on the same video does not open it again.
| The video | Quoted | About |
|---|---|---|
| A 15-second advert | 1,100 credits | $0.09 |
| A 60-second reel | 1,100 credits | $0.09 |
| A 10-minute walkthrough | 11,000 credits | $0.92 |
| An hour-long webinar | 65,000 credits | $5.42 |
The bands are estimates from measured runs, not a tariff. The floor is the whole quote for a short video: the fixed work of a reading does not shrink with the clock, so a 15-second advert is quoted the same as a full minute.
The figures above are a quote rather than a bill. What you are charged is what the work actually cost, and the answer says so in credits_charged. A question the first look already answered can come back for two credits without opening anything.
Many videos at once
One request, one question, as many videos as you have. Each is charged as its own first look.
curl -X POST https://api.tryplayhead.com/v1/batches \
-H "Authorization: Bearer $PLAYHEAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "What is the hook, and when does it land?",
"items": [
{ "url": "https://...", "ref": "spring-a" },
{ "url": "https://...", "ref": "spring-b" }
]
}'
# Then ask once, and it holds the connection until they are done.
curl "https://api.tryplayhead.com/v1/batches/$BATCH_ID?wait=60" \
-H "Authorization: Bearer $PLAYHEAD_API_KEY"A batch is one request and not one price: twenty videos cost twenty readings. What it saves is the round trips and the waiting. ref comes back beside each answer, so nothing has to be matched by position.
What the API is billed from
API credit, always. The monthly credits of a plan and the credit for the dashboard do not pay for the API.
| API credit | Credit for the dashboard | Plan credits | |
|---|---|---|---|
| What it is | Money you added on API billing | Money you added on the billing page | The monthly grant of the plan |
| Renewal | Never changed | Never changed | Set again on renewal, not added to |
| Rate | $0.083 per 1,000, and 1 credit for each credit of work | $0.038 per 1,000, at the burn of the plan | $0.022 to $0.032 per 1,000, at the burn of the plan |
| Pays for | Every API key | The dashboard and the connector, after the monthly credits are gone | The dashboard and the connector |
An API key is refused when the API credit runs out, even when the plan still has credits. That refusal is the product, not a fault. A key is given to software, and often to software of another company. A key that could reach the plan is one copied credential away from spending the seat you bought for a person.
The plan is not idle in the meantime. It pays for the dashboard, for the MCP connector and for the browser extension, because each of those is a person who signed in to the seat. When its monthly credits are gone, those three spend the credit bought on the billing page. An API key spends neither.
Add API credit on API billing. A key has no setting to change, because there is nothing to choose.
Running out
A 402 that says what it needed, and a switch that stops it happening.
{
"error": {
"type": "insufficient_credits",
"message": "This API key has no API credit left. Please add API credit.",
"credits_required": 1200,
"credits_available": 340,
"wallet": "topup",
"upgrade_url": "https://tryplayhead.com/developer/billing"
}
}Nothing is half done and nothing is charged. Automatic top-up buys more before this happens: set a threshold and an amount on API billing, and the card your last purchase saved is charged when the balance falls under it. It is off until you turn it on, and a declined card stops it rather than retrying.
GET /v1/account reports the balance in credits and in money, with the wallet this credential spends. On a key that is always topup. Read it before an expensive run rather than after a refusal.
Questions
- How much does one call cost?
- A first look is quoted in bands by the length of the video: 1,100 credits up to a minute, 11,000 up to ten minutes, 65,000 up to an hour. The first band is also the floor, so a 15 second advert is quoted the same as a full minute. The fixed work of a reading does not get smaller with the clock. These are estimates from measured runs, not a tariff. A second question about the same video costs a fraction, because it reads what the first look found and does not watch again. Every answer carries credits_charged.
- Is the API cheaper than a subscription?
- No. A plan is the cheapest way to buy work. The API is one flat rate of $0.083 per 1,000 credits, and one credit pays for one credit of work. A plan spends 2 credits for each credit of work, and it is still cheaper. Credit for the dashboard and the connector costs more than any plan, and API credit costs a little more than that. An API key spends only API credit.
- Do credits expire?
- Money you add never expires, and no renewal changes it. The monthly grant of a plan is the other kind. It is set again on renewal and not added to, so it does not roll over.
- What happens when the balance runs out?
- The API refuses the call with a 402 that says how many credits it needed and how many are left. Nothing is half done and nothing is charged. Automatic top-up buys more before that happens, on the card that your last purchase saved.
- Am I charged for a failed call?
- No. A call reserves what it can cost before it starts, and the difference comes back when it settles. A call that failed gets all of it back.