Skip to main content

When the platform fee is charged

Every live run has a platform fee, charged when Millwork accepts the run, not when it completes. An ordinary run defaults to $0.02**; a Review Composer run defaults to **$0.10 instead. The service can configure either fee differently. Review the amount shown by the CLI before approving ordinary work. API callers can read both configured fees in GET /v1/account as billing.platform_fee_usd_per_execution and billing.review_composer_fee_usd_per_execution. If a fee is absent, confirm it before starting paid work. A Review Composer run’s max_cost_usd budget must cover at least its configured fee. Model or coding-agent provider usage is a separate cost. A run is one submitted task; the API calls it an execution. Who pays for model usage is fixed by the saved model that answers, and the receipt names it (commercial_owner). When several saved models fit a task, Millwork may pick any of them, including one billed the other way. To keep a run on one saved model, send its arm_id in routing.required_arm_id. The run then uses that model and no other. If that model is not ready or cannot take the task, Millwork refuses the request with invalid_state and charges nothing. The model budget in the approval prompt is an allowance for model usage, not a fixed price for the task. Check the model, payer, platform fee, and allowance together. For your provider account, its pricing terms apply; for a model Millwork provides, Millwork deducts recorded model usage from your credit. Contact support if you need a model rate before choosing an allowance. You can add credit in Billing. Your credit and quota can stop a run whichever account pays for model usage.

What you pay for each outcome

A live run is submitted to call a model. A test run (the API calls it Echo, mode: "echo") does not call a model, so it has no platform fee and no model cost. Your quota is the number of runs your organization may submit per calendar month (UTC), and how many may run at once.

Read your usage totals

GET /v1/usage reports the costs recorded for the period: The combined total includes Millwork charges and any model usage billed directly by your provider. If you use both your own provider account and models Millwork provides, check which account paid for each run. The result and receipt name it in model_provenance.source.commercial_owner when available. The daily by_day entries have the same split. The by_arm and by_api_key entries do not. A receipt keeps model usage (totals.usd) and the platform fee (totals.platform_fee_usd) on separate lines. Recorded usage helps you follow a run’s cost; check the provider’s own account for its invoice and balance.

How the model-usage budget works

Millwork checks recorded model spend before each call. Once it reaches your max_cost_usd budget, Millwork starts no further calls for the run. A call already in progress can finish and take the total above your budget, even if it is the first call. This describes ordinary live runs. For a Review Composer run, max_cost_usd must cover its configured platform fee plus reported agent usage. The receipt shows the fee separately as totals.platform_fee_usd.

If you cancel a run

You can cancel a run while its status is queued, running, or progress. A run with a final status (completed, failed, cancelled, or expired) cannot be cancelled; the API answers invalid_state.
  • Cancelling a run yourself stops work that has not started. Work that is already running is not stopped, and its provider cost can continue until it finishes.
  • A run you cancel keeps its platform fee, and the run still counts toward your quota.
These cancellation rules describe runs you cancel yourself. They do not cover every other way a run can end as cancelled.

If Millwork cannot start the run

A separate rule applies when Millwork fails a run before any model attempt starts because no model could serve it, the output check (the API calls it a verifier) was unavailable, or the selected model was not ready. Millwork returns the platform fee and the quota for that run automatically, at the moment it records the failure. Your usage totals reflect the return. You do not need to request it from support.

Find an available model

Your catalog lists the models your organization can save. For a model Millwork provides, Millwork manages the provider connection. For your own provider account, the catalog lists supported models that connection can use.
In API responses, the field commercial_owner says who bills the model usage: millwork for a model Millwork provides, customer for your provider account.
A model appears only when Millwork supports it, its provider account is connected and ready, and it matches your organization’s rules. If the catalog is empty, ask support about your organization’s model access. Connect your own provider account only if you want to use that account. A provider name elsewhere in the docs does not mean a model is available to your organization.