Pika bills API usage in two layers, and its pricing page states both: $10/month membership fee and Pay as you go. The membership is charged either way; usage is charged only on jobs that succeed.

The two layers of Pika API billing

A two-layer billing diagram: a flat monthly membership bar above a metered per-second usage bar, each labelled with the unit it is charged in

The developer FAQ states the model in two lines. First: Membership is $10/month and unlocks member (wholesale) pricing. Second: Beyond the flat membership fee, model usage is pay-as-you-go. You only pay for what you actually generate, at member rates.

The first line gets misread. The $10 is not a credit pack you spend down, it buys a rate — The membership fee is what allows Pika to negotiate better rates on your behalf and pass genuine wholesale pricing to our members rather than baking a hidden markup into every API call. The comparison Pika draws against other aggregators is Up to 80% off.

Layer one: the club membership fee

The charge is flat and the credit is separate. Membership is $10/month and unlocks member (wholesale) pricing is the fee; New members get a $10 credit toward their first month of usage is what comes back. Cancellation carries no condition — You can cancel anytime — and onboarding is self-serve end to end. No sales contact, no waitlist, no manual provisioning.

Above it, an enterprise track adds Volume pricing: committed-use discounts that improve as you scale (up to 70% off) and higher concurrency via dev.pika.art/enterprise#contact. No price list is published.

Layer two: what a second or a request costs

Rates are published per model, and the unit changes with the operation.

The per-second models

Pika 2.5 is listed from $0.04 / sec on both image-to-video and text-to-video. The operation specification resolves that range into discrete lines:

  • 720p: $0.04 per second
  • 1080p: $0.06 per second
  • 1080p · 5s: $0.09 per second

The third line prices the same endpoint higher for one resolution-and-duration pair, so no single headline rate describes this API. Pika 2.5 Keyframe lists two lines instead of four: 720p: $0.04 per second and 1080p: $0.06 per second.

The per-request and per-minute models

The rest of the Pika catalog is priced by the unit the operation consumes.

OperationUnitPublished price
Pikaffects — Image to Videoper request$0.05 / request
Pikadditions — Video to Videoper request$0.03 / request
Pikaswaps — Video to Videoper request$0.03 / request
Pika Soundtrack — Video to Videoper second$0.005 / sec
Pika Music — Reference to Audioper minute$0.015 / min
Pika SFX — Text to Audioper second$0.0002 / sec
Pika Speech — Text to Audioper minute$0.01 / min

A per-request price breaks any model built on runtime: Pikaffects charges $0.05 for the job, so five seconds and ten seconds carry the same price line.

Price a job before you submit it

Two surfaces answer without charging: the public catalog needs no API key, and quotes, balance and spend reads are never charged. The quote endpoint takes the body you intend to submit, so it is a dry run rather than an estimate off a table.

# The catalog needs no key. Dump the record instead of guessing field names.
curl -s "https://api.dev.pika.art/catalog/apis/pika/pika-2.5/image-to-video?expand=inputs" | jq .

# Price the exact body you intend to submit, without spending anything.
curl -s -X POST "https://api.dev.pika.art/catalog/apis/pika/pika-2.5/image-to-video/quote" \
  -H "Content-Type: application/json" \
  -d '{"resolution": "1080p", "duration_s": 5, "image": "https://example.com/frame.png"}' | jq .

Multiplying the rate by the runtime gives the same number for a per-second model; reading the balance first turns an estimate into a decision.

import os
import requests

BASE = "https://api.dev.pika.art"
HEADERS = {"X-API-Key": os.environ["PIKA_API_KEY"], "Content-Type": "application/json"}

# Published rate for pika/pika-2.5/image-to-video at 1080p.
rate_per_second_usd = 0.06
planned = [{"resolution": "1080p", "duration_s": 5, "image": "https://example.com/a.png"}] * 3

estimate_usd = sum(rate_per_second_usd * job["duration_s"] for job in planned)

balance = requests.get(f"{BASE}/billing/balance", headers=HEADERS, timeout=30).json()
available_usd = balance["balance_micro_usd"] / 1_000_000

print(f"estimate ${estimate_usd:.2f} against a balance of ${available_usd:.2f}")
if estimate_usd > available_usd:
    raise SystemExit("top up first: the submit would fail with insufficient_balance")

Read the settled charge off the job

A terminal job carries two cost objects, and llms.txt says which is authoritative: Record spend from billing.charge_micro_usd only when billing.state is settled. The usage object reports provider units and may not reproduce the charge.

{
  "status": "completed",
  "usage": { "video_output_tokens": 50638 },
  "billing": { "state": "settled", "charge_micro_usd": 372189 }
}

That 372189 is $0.372189. The balance endpoint uses the same unit — unit (string): Always micro_usd — so a ledger in dollars divides by 1,000,000.

Two billing states are not a charge: pending settles shortly (retry at 1s, 2s, then 5s) and unavailable means the billing read failed (wait no sooner than 30s). A null billing block on submit responses and webhooks is not a charge. The Pika API reference documents the rest of the job object, and the endpoint walk covers the three calls.

Free credits, and what is not published

llms.txt is blunt: There is no free generation tier and no separate test environment. What exists is the first-month credit plus calls that never bill. Daily spend reads per key and per model.

# Both dates are required and inclusive; the range cannot exceed 366 days.
curl -s "https://api.dev.pika.art/billing/spend/daily?start_date=2026-09-01&end_date=2026-09-18" \
  -H "X-API-Key: ${PIKA_API_KEY}" | jq .

The ceilings behind a 429 are not on the pricing or agent pages. The per-model table comes from a client-side calculator whose footnote reads Prices reported as of 9.16.26, and include Pika API Club's 5% platform fee, so any figure needs that date attached. Nothing explains how this meter relates to the consumer plans, which use video credits with no published conversion — the credit breakdown and the free plan walkthrough cover that side.

Frequently asked questions

Is the membership fee charged on top of usage? Yes. Membership is $10/month is separate from the usage charge and applies whether or not you generate.

What does one second of video cost? Pika 2.5 is listed from $0.04 / sec, and the operation spec resolves it to 720p: $0.04 per second and 1080p: $0.06 per second, with an extra 1080p · 5s: $0.09 per second line.

Are there free credits? One, tied to joining: New members get a $10 credit toward their first month of usage. There is no free generation tier.

How do I audit a job’s real cost? Read billing.charge_micro_usd when billing.state is settled and divide by 1,000,000.

Do failed generations bill? No. The spec closes with Only successful generations are charged, and a failed job returns "charge_micro_usd": 0.

The bill is two numbers: budget the $10, price the body with a quote, and reconcile against charge_micro_usd.