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

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 second1080p: $0.06 per second1080p · 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.
| Operation | Unit | Published price |
|---|---|---|
Pikaffects — Image to Video | per request | $0.05 / request |
Pikadditions — Video to Video | per request | $0.03 / request |
Pikaswaps — Video to Video | per request | $0.03 / request |
Pika Soundtrack — Video to Video | per second | $0.005 / sec |
Pika Music — Reference to Audio | per minute | $0.015 / min |
Pika SFX — Text to Audio | per second | $0.0002 / sec |
Pika Speech — Text to Audio | per 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.