> ## Documentation Index
> Fetch the complete documentation index at: https://runinfra.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Coding plan

> Monthly Model API usage for your workspace, with two plan limits, optional credits after limits, and Standby for chat.

Your plan pays first for covered requests from your workspace, with a 5-hour limit and a weekly limit. Usage is counted at our standard per-token prices, with cached input at the cached price. Plan usage is not a credit deposit and does not roll over.

## Choose a plan

| | Starter | Pro | Team |
| - | - | - | - |
| Monthly price | \$10 | \$29 | \$99 |
| Approximate usage a month at our rates | \$12 | \$35 | \$119 |
| 5-hour limit | \$1.11 | \$3.23 | \$10.98 |
| Weekly limit | \$2.77 | \$8.08 | \$27.46 |
| Standby daily amount | Up to \$0.20 | Up to \$0.58 | Up to \$1.98 |

Shared by this workspace, not per member. Monthly usage is approximate: months hold different numbers of weekly resets.

Only an owner can buy a plan, with **Subscribe** at [**Settings > Coding plan**](https://runinfra.ai/settings/plan). A workspace with partner pricing, a legacy subscription or a billing hold cannot subscribe. Secure checkout shows the renewal disclosure and asks you to accept the [Terms of Service](https://runinfra.ai/terms-of-service#subscriptions). If you were charged but the payment is not confirmed after 10 minutes, select **Charged? Contact support**.

Your coding plan automatically renews each month until canceled. Your payment method is charged at the start of each billing period.

## How the limits work

Your 5-hour window starts with your first plan request, and the next request after it ends starts a new one. The weekly limit resets on a fixed schedule from activation. The plan pays while both have room.

If requests still running have reserved the rest of a plan limit, a new request waits up to 30 seconds, then gets a retryable `429 plan_window_busy` instead of credits or Standby.

## Manage your plan

[**Settings > Coding plan**](https://runinfra.ai/settings/plan) shows your limits, when they reset, and your plan. Only an owner can change it; members can view it. From a terminal, `runinfra plan` reads your plan. From code, [GET /v1/usage](/docs/api-reference/usage) returns its current limits. To connect a coding agent, see [Set up with your coding agent](/docs/tools-sdks/agent-setup).

## See your plan usage

In [**Usage Analytics**](https://runinfra.ai/inference/usage), **Paid from** shows what paid for each request. Plan and Standby requests charge nothing.

## What happens at a limit

At a limit, keep full speed on credits (your choice: a cap, or no limit), then Standby, free and slower.

<div className="block dark:hidden">
  <svg viewBox="0 0 720 430" width="100%" role="img" aria-label="A covered request first uses the coding plan when both limits have room, then credits if chosen and the request fits the cap, then Standby for chat if available. Otherwise it stops with 402 plan_limit_reached, a reset time and a next step. Temporary capacity refusals use 429 with retry timing." fill="none" xmlns="http://www.w3.org/2000/svg"><text x="24" y="16" fill="#6e6d64" fontFamily="Consolas, Menlo, monospace" fontSize="9" fontWeight="500" letterSpacing="0.3">Coding plan funding</text><text x="24" y="39" fill="#52524c" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">A covered request on a serving plan, with Credits only off.</text><line x1="26" y1="67" x2="26" y2="352" stroke="#e8e8e3" strokeWidth="1" strokeDasharray="3 3" /><rect x="23.5" y="91.5" width="5" height="5" fill="#bbb9b1" shapeRendering="crispEdges" /><line x1="29" y1="94" x2="48" y2="94" stroke="#e8e8e3" strokeWidth="1" strokeDasharray="3 3" /><rect x="48.5" y="62.5" width="647" height="67" fill="#ffffff" stroke="#e8e8e3" strokeWidth="1" shapeRendering="crispEdges" /><text x="62" y="81" fill="#6e6d64" fontFamily="Consolas, Menlo, monospace" fontSize="9" fontWeight="500" letterSpacing="0.3">01 Plan</text><text x="166" y="81" fill="#0f0f0e" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="12.5" fontWeight="500" letterSpacing="-0.12">Both plan limits have room</text><text x="62" y="108" fill="#52524c" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">The plan pays. At a 5-hour or weekly limit, check credits.</text><rect x="23.5" y="181.5" width="5" height="5" fill="#bbb9b1" shapeRendering="crispEdges" /><line x1="29" y1="184" x2="48" y2="184" stroke="#e8e8e3" strokeWidth="1" strokeDasharray="3 3" /><rect x="48.5" y="152.5" width="647" height="67" fill="#ffffff" stroke="#e8e8e3" strokeWidth="1" shapeRendering="crispEdges" /><text x="62" y="171" fill="#6e6d64" fontFamily="Consolas, Menlo, monospace" fontSize="9" fontWeight="500" letterSpacing="0.3">02 Credits</text><text x="166" y="171" fill="#0f0f0e" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="12.5" fontWeight="500" letterSpacing="-0.12">Chosen by the owner, within the cap</text><text x="62" y="198" fill="#52524c" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">The maximum request cost must fit. Otherwise, check Standby.</text><rect x="23.5" y="271.5" width="5" height="5" fill="#bbb9b1" shapeRendering="crispEdges" /><line x1="29" y1="274" x2="48" y2="274" stroke="#e8e8e3" strokeWidth="1" strokeDasharray="3 3" /><rect x="48.5" y="242.5" width="647" height="67" fill="#ffffff" stroke="#e8e8e3" strokeWidth="1" shapeRendering="crispEdges" /><text x="62" y="261" fill="#6e6d64" fontFamily="Consolas, Menlo, monospace" fontSize="9" fontWeight="500" letterSpacing="0.3">03 Standby</text><text x="166" y="261" fill="#0f0f0e" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="12.5" fontWeight="500" letterSpacing="-0.12">Chat only, when available</text><text x="62" y="288" fill="#52524c" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">Free, slower, best effort. The daily amount must have room.</text><rect x="23.5" y="347.5" width="5" height="5" fill="#bbb9b1" shapeRendering="crispEdges" /><line x1="29" y1="350" x2="48" y2="350" stroke="#e8e8e3" strokeWidth="1" strokeDasharray="3 3" /><rect x="48" y="335" width="100" height="3" fill="#76b900" shapeRendering="crispEdges" /><rect x="48" y="338" width="110" height="24" fill="#76b900" shapeRendering="crispEdges" /><rect x="58" y="362" width="100" height="3" fill="#76b900" shapeRendering="crispEdges" /><text x="103" y="354" fill="#0f0f0e" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="12" fontWeight="500" textAnchor="middle" letterSpacing="-0.12">Stopped</text><text x="176" y="354" fill="#0f0f0e" fontFamily="Consolas, Menlo, monospace" fontSize="10.5" letterSpacing="0">402 plan\_limit\_reached</text><text x="48" y="388" fill="#52524c" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">Read the reset, Standby condition, and next step in the response.</text><text x="48" y="410" fill="#6e6d64" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">Temporary capacity refusals use 429 with retry timing.</text></svg>
</div>

<div className="hidden dark:block">
  <svg viewBox="0 0 720 430" width="100%" role="img" aria-label="A covered request first uses the coding plan when both limits have room, then credits if chosen and the request fits the cap, then Standby for chat if available. Otherwise it stops with 402 plan_limit_reached, a reset time and a next step. Temporary capacity refusals use 429 with retry timing." fill="none" xmlns="http://www.w3.org/2000/svg"><text x="24" y="16" fill="#9a998e" fontFamily="Consolas, Menlo, monospace" fontSize="9" fontWeight="500" letterSpacing="0.3">Coding plan funding</text><text x="24" y="39" fill="#c8c7ba" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">A covered request on a serving plan, with Credits only off.</text><line x1="26" y1="67" x2="26" y2="352" stroke="#383833" strokeWidth="1" strokeDasharray="3 3" /><rect x="23.5" y="91.5" width="5" height="5" fill="#6e6d64" shapeRendering="crispEdges" /><line x1="29" y1="94" x2="48" y2="94" stroke="#383833" strokeWidth="1" strokeDasharray="3 3" /><rect x="48.5" y="62.5" width="647" height="67" fill="#161614" stroke="#383833" strokeWidth="1" shapeRendering="crispEdges" /><text x="62" y="81" fill="#9a998e" fontFamily="Consolas, Menlo, monospace" fontSize="9" fontWeight="500" letterSpacing="0.3">01 Plan</text><text x="166" y="81" fill="#f0efe2" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="12.5" fontWeight="500" letterSpacing="-0.12">Both plan limits have room</text><text x="62" y="108" fill="#c8c7ba" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">The plan pays. At a 5-hour or weekly limit, check credits.</text><rect x="23.5" y="181.5" width="5" height="5" fill="#6e6d64" shapeRendering="crispEdges" /><line x1="29" y1="184" x2="48" y2="184" stroke="#383833" strokeWidth="1" strokeDasharray="3 3" /><rect x="48.5" y="152.5" width="647" height="67" fill="#161614" stroke="#383833" strokeWidth="1" shapeRendering="crispEdges" /><text x="62" y="171" fill="#9a998e" fontFamily="Consolas, Menlo, monospace" fontSize="9" fontWeight="500" letterSpacing="0.3">02 Credits</text><text x="166" y="171" fill="#f0efe2" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="12.5" fontWeight="500" letterSpacing="-0.12">Chosen by the owner, within the cap</text><text x="62" y="198" fill="#c8c7ba" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">The maximum request cost must fit. Otherwise, check Standby.</text><rect x="23.5" y="271.5" width="5" height="5" fill="#6e6d64" shapeRendering="crispEdges" /><line x1="29" y1="274" x2="48" y2="274" stroke="#383833" strokeWidth="1" strokeDasharray="3 3" /><rect x="48.5" y="242.5" width="647" height="67" fill="#161614" stroke="#383833" strokeWidth="1" shapeRendering="crispEdges" /><text x="62" y="261" fill="#9a998e" fontFamily="Consolas, Menlo, monospace" fontSize="9" fontWeight="500" letterSpacing="0.3">03 Standby</text><text x="166" y="261" fill="#f0efe2" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="12.5" fontWeight="500" letterSpacing="-0.12">Chat only, when available</text><text x="62" y="288" fill="#c8c7ba" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">Free, slower, best effort. The daily amount must have room.</text><rect x="23.5" y="347.5" width="5" height="5" fill="#6e6d64" shapeRendering="crispEdges" /><line x1="29" y1="350" x2="48" y2="350" stroke="#383833" strokeWidth="1" strokeDasharray="3 3" /><rect x="48" y="335" width="100" height="3" fill="#76b900" shapeRendering="crispEdges" /><rect x="48" y="338" width="110" height="24" fill="#76b900" shapeRendering="crispEdges" /><rect x="58" y="362" width="100" height="3" fill="#76b900" shapeRendering="crispEdges" /><text x="103" y="354" fill="#0f0f0e" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="12" fontWeight="500" textAnchor="middle" letterSpacing="-0.12">Stopped</text><text x="176" y="354" fill="#f0efe2" fontFamily="Consolas, Menlo, monospace" fontSize="10.5" letterSpacing="0">402 plan\_limit\_reached</text><text x="48" y="388" fill="#c8c7ba" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">Read the reset, Standby condition, and next step in the response.</text><text x="48" y="410" fill="#9a998e" fontFamily="'Helvetica Neue', Helvetica, Arial, sans-serif" fontSize="10.5" letterSpacing="0">Temporary capacity refusals use 429 with retry timing.</text></svg>
</div>

* An owner picks **Keep full speed on credits** or **Use Standby only (free, slower)** when subscribing, and can change it with **Change** on the **At a limit** tile at **Settings > Coding plan**.
* The credits cap defaults to the plan price and accepts \$1 to \$100,000, or **No limit**. A request whose maximum cost does not fit in the rest of the cap cannot use credits.
* With a cap, **Most you can pay** is the plan price plus the cap per billing period. Wallet and key limits still apply.

A stopped request gets `402 plan_limit_reached` with its reset time and next step. See [Plan limit errors](/docs/api-reference/errors#coding-plan-limit) and [Spending controls](/docs/introduction/plans#spending-controls).

## Standby

Standby is best effort. It refills at midnight UTC, may be reduced or paused at any time, and is off while a plan payment is due or processing, or credits are owed. See [Rate limits](/docs/api-reference/rate-limits#coding-plans-and-standby) for its capacity limits.

## What your plan covers

The plan covers these operations from every workspace key except keys marked **Credits only**. The [Model Library](https://runinfra.ai/inference-api) lists the models served now.

| Operation | Plan | Standby |
| - | - | - |
| `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | Covered | When available |
| `/v1/embeddings`, `/v1/rerank` | Covered when those models are available | Not covered |

Images and audio always stay pay as you go.

### Credits only keys

An owner marks a key **Credits only** at [**Settings > API keys**](https://runinfra.ai/settings/api-keys) so it always pays from credits and skips the plan, Standby and the credits cap. Its wallet and key limits still apply, and the setting survives rotation.

## What you can count on

* Requests that fail before returning output never use your plan.
* Client cancellations count usage, as in pay as you go.
* A request stays on the source that admitted it.
* Every response a plan decision applied to says what paid, in [`x-runinfra-funding`](/docs/api-reference/usage#response-funding-headers).
* Metering changes come with written notice, and promotional rates are labeled temporary.
* Credits survive cancellation and keep their existing expiry dates.

## Emails

Coding plan emails go to the billing contact with the owner copied, or to the owner alone. Plan limit emails follow the owner's **Product notifications** switch at [**Settings > Notifications**](https://runinfra.ai/settings/notifications). All other plan emails always send.

## Change, cancel, or delete

Upgrades take effect now with a prorated charge. New limits apply immediately, and usage already counted carries over. Downgrades take effect at the end of the current billing period.

An upgrade that needs payment action shows **Upgrade unpaid** and a **Pay** button. Your plan keeps its current tier until you pay, and stays on it if the deadline passes. **Keep Pro**, named for your current tier, undoes a scheduled downgrade.

Cancel anytime at Settings > Coding plan, in any plan state. Cancellation takes effect at the end of the current billing period, or immediately while a payment dispute is open. Until then, **Keep plan** undoes it, except after a payment dispute, even one decided in RunInfra's favor. When your plan ends, your keys keep working with credits.

Account deletion ends the plan at once, with no refund of the current month. A renewal or an upgrade charged after you delete your account is refunded.

### Payment issues

After a failed renewal, your plan can keep serving for up to 48 hours, or 7 days if it has had a paid renewal. Select **Pay overdue amount** at **Settings > Coding plan** before then.

A disputed plan payment pauses the plan and ends it at the period end. A bank inquiry, which only asks about a charge, does not. If the disputed card also bought credits, your account is frozen too, so credits cannot pay either. A dispute decided in RunInfra's favor lifts the pause and the freeze, but the plan still ends at the period end, on its current tier. One decided for the cardholder ends it at once. Contact support.

See the [account FAQ](/docs/faq/account#coding-plans) and [Terms of Service, section 7](https://runinfra.ai/terms-of-service#subscriptions) for the cancellation and refund rules.
