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.

The rate, from the APIbash
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.

What a first look is quoted at, by the length of the video
The videoQuotedAbout
A 15-second advert1,100 credits$0.09
A 60-second reel1,100 credits$0.09
A 10-minute walkthrough11,000 credits$0.92
An hour-long webinar65,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.

Twenty adverts, one questionbash
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.

The three pots, and what each one pays for
API creditCredit for the dashboardPlan credits
What it isMoney you added on API billingMoney you added on the billing pageThe monthly grant of the plan
RenewalNever changedNever changedSet 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 forEvery API keyThe dashboard and the connector, after the monthly credits are goneThe 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.

What a refusal looks likejson
{
  "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.