Docs
ApiOperational

Pricing

How credit consumption works - format costs, ingest billing, plans, trials, and credit packs.

View as Markdown

Every paid operation on the API integration debits a single credit wallet on your Layers organization. Ingest is free today; generation costs credits; credit packs are the only way to top up.

New accounts start at 0 credits. The card-required first week costs $9 today, adds 1,000 credits, and converts to Pro monthly after 7 days unless canceled, with the $9 credited toward the first month. Pro is monthly only at $49/month with 5,000 credits. Ultra is $199/month with 25,000 credits.

One-time credit packs add credits to the same wallet: Crawl, 1,000 credits, $9; Walk, 4,000 credits, $29; Run, 10,000 credits, $69; Scale, 20,000 credits, $129. Plans and packs are available in the Layers dashboard. Auto-reload buys one of those same packs, at the same price, whenever the balance falls below a threshold the organization sets; it charges the saved card and needs an active subscription. Variable-amount top-ups are retired. Enterprise pricing is negotiated; contact sales@layers.com.

For the programmatic wallet check used before a generate call, see GET /v1/credits.

Format cost table (in credits)

Credits per operation are the same on every plan - what varies is the $/credit your plan charges. The numbers below match estimatedCreditsPerFormat returned by GET /v1/credits.

FormatCreditsStatus
slideshow-builder85Available.
ugc-remix200Available (gated on media:write for the required app-demo upload).
video-remix200Reserved; not partner-callable. Returns UNSUPPORTED_FORMAT.
slideshow-remix85Reserved; not partner-callable. Returns UNSUPPORTED_FORMAT.

Multi-variant fan-out (variantCount > 1) charges N × per-format credits — the request is gated by your wallet balance pre-flight; if the multiplied cost exceeds the balance the call returns 402 BILLING_EXHAUSTED before any container is created.

Ingest costs

Ingest calls are free today. The GET /v1/credits response reflects this on the ingestCostsBilled object - all three flags are false.

IngestBilled today?
POST /v1/projects/:id/ingest/githubNo (false)
POST /v1/projects/:id/ingest/websiteNo (false)
POST /v1/projects/:id/ingest/appstoreNo (false)

If Layers ever flips one of these to billed, we commit to 30-day advance notice via partner notice and an update in this page's change history below listing the exact per-call credit deduction. The ingestCostsBilled flag on /v1/credits will flip to true on the same date, so partners who gate programmatically will see it before a single bill posts.

Credit packs and exhaustion

At balance zero, every credit-spending call returns 402 BILLING_EXHAUSTED:

{
  "error": {
    "code": "BILLING_EXHAUSTED",
    "message": "Credit balance exhausted. Top up to resume.",
    "requestId": "req_8a1f2c3d4e5f6a7b",
    "details": { "reason": "insufficient" }
  }
}

details.reason is "insufficient" when the wallet can't cover the call, or "cap" when a sub-org child hit its monthlyCreditCap.

Calls that do not spend credits (reads, whoami, job polling, webhook receipt) continue to work - the plan gate only blocks credit-spending operations.

Credit packs are the only top-up mechanism. Purchase them manually in the Layers dashboard:

  • Crawl, 1,000 credits, $9.
  • Walk, 4,000 credits, $29.
  • Run, 10,000 credits, $69.
  • Scale, 20,000 credits, $129.

Layers does not automatically charge for a top-up or replenish a wallet. The sub-organization auto-refill described below only transfers credits already held by the parent; it does not purchase credits.

Sub-organization billing

When you run customers as sub-organizations, the parent stays the billing principal — only the parent has a card on file, and only the parent is ever charged. Moving credits to a child is never a new charge:

  • Allocation (POST /:orgId/credits/allocate) is an internal transfer of already-purchased prepaid credits from the parent wallet to the child. No Stripe event, no markup — the same credits, now spendable by the child. Reclaim on archive runs the same transfer in reverse.
  • Per-child monthly cap is a budget control, not a price: it bounds how many credits a child may spend per period. Set it with PATCH /:orgId/credit-config (monthlyCreditCap, in credits). At the cap, the child's next generation returns 402 BILLING_EXHAUSTED with details.reason: "cap" — it doesn't change the cost of anything.
  • Auto-refill is an automated parent→child transfer (no Stripe charge) that tops a child up when it runs low. Set refillThreshold + refillAmount via credit-config. It draws from the parent's existing balance; if the parent is itself exhausted, the refill is a no-op and the child gets 402. See the Credits concept.

Format costs (the table above) are identical for a child and a top-level org — a slideshow costs the same number of credits wherever it's generated.

Forecasting spend

Use estimatedCreditsPerFormat from GET /v1/credits as the pre-flight check before firing a generate call. The response also carries usedThisPeriod and includedRemaining - everything you need to render a "you've used X of Y this period" bar in your own dashboard.

const wallet = await fetch("https://api.layers.com/v1/credits", {
  headers: { "Authorization": `Bearer ${process.env.LAYERS_API_KEY}` },
}).then((r) => r.json());

const cost = wallet.estimatedCreditsPerFormat["slideshow_builder"];
if (wallet.balance < cost) {
  // 402 will fire if we proceed; warn the user and link to top-up.
  throw new Error(`Low balance: ${wallet.balance} < ${cost}`);
}

Change history

Material changes to credit-per-operation rates or ingest billing land here with a date. Non-material changes (copy edits, clarifications) are not logged. Subscription-tier $/credit changes are plan-level and do not appear here.

DateChange
2026-08-27Updated slideshow formats to 85 credits and video formats to 200 credits. Replaced automatic top-up instructions with the current trial, plans, and one-time credit packs.
2026-05-08Replaced legacy `video_remix
2026-04-20Initial publication of the credit-cost table and ingest-billing policy. No changes to credits-per-operation vs prior implicit defaults.

See also

On this page