Billing and limits
Hosted decisions are paid from your account's usage credits. This page lists what you pay with, when Director refuses a call, and the limits that apply.
Usage credits
- Credits belong to your Eposyne account. A key, the console, and the engine plugins all draw from the same balance.
- Buy credits on the credits page. The minimum purchase is EUR 5 of credits. Every purchase adds 21% Dutch VAT and the payment processing fee; the credits page shows the total before you pay, and each purchase has a VAT receipt.
- New accounts can earn a EUR 3 welcome credit through the survey shown after sign-up.
- Usage credits can be switched on or off on the same page. You can also set an optional monthly limit; it is off unless you set one.
What a decision costs
A decision costs what the model call costs, converted to euro. The price of each model is listed by GET /v2/models. A decision with validation on makes two model calls and costs both. Read the real total with GET /v2/usage/me.
Reserve, then charge
Before a model runs, Director reserves the most the call can cost on your credits: the size of your prompt with a margin, plus the longest answer the model may give, at the model's price. The reservation is taken atomically, so calls running at the same time can never together spend more than your balance. When the model has answered, the call is charged what it really cost and the rest of the reservation is released straight away. A call that cannot be reserved is refused before any model runs.
Credit held for a game
When a lease is in use, Director holds one block of up to EUR 0.25 of your usage credits for the games you play, instead of reserving each decision on its own. Your balance shows the held amount apart from the credit you can spend. The block is released after ten minutes without a decision, or when a day has passed. Each decision's cost is charged to your usage within a few seconds of the answer, not at the same instant, so your usage can lag a few seconds behind the decision.
Every paid model call is charged
- When the model has answered, the call is charged, even if Director then fails and answers
500or502. - When the provider does not report what a call cost (
502,"code": "accounting_unavailable"), the call is charged its reserved amount. - When the model provider fails before answering, nothing is charged and the reservation is released.
- A call interrupted by a Director restart is charged its reserved amount, and is marked as such in your usage.
If a call ever costs more than your balance, the balance goes negative and your next purchase pays that back first. Director refuses calls until the balance is back over EUR 1.00.
Plots and Memory calls
Plots and Memory make model calls of their own, called judgements: Plots fitting an event to a story arc, choosing an arc, picking a branch, and filling in a beat; Memory weighing an event in model mode, retelling a rumour, judging a claim as a referee, and checking a reply for inventions. See Events.
- Every judgement is reserved and charged from your usage credits exactly like a decision: reserved before the call, charged what the call cost, with the rest released. Each one can be refused like a decision, for the same reasons. A reply that is written again under the invention rule is a full decision call and is charged as one.
- A judgement uses a model you may use: the model you bind with
shared.judgement_modelin the policy, else the decision's model inside a decision, else your account's default model. Its price is the listed price of that model. Without a priced model the judgement does not run and nothing is charged. - A judgement prompt is held to the same cap of 30,000 input tokens as a decision.
- A judgement that is refused is skipped. The module acts as if nothing happened, and
POST /v2/eventsreports the count and the reason inrefused_judgements. - The headers
X-LLM-*describe the decision's own model call only. Judgements are not in those headers, but they are in your spend, which you read withGET /v2/usage/me. - Storage and event intake are free. They are capped, not charged: events, worlds, timelines, and library arcs have the limits on Events. A request over a cap is refused with a status and a code listed on Errors and retries, and costs nothing.
- Plots and Memory are off for every account until you switch them on, on every plan. See Events.
How many judgements your events cause depends on your policy. Policy counts them and works through an example.
When Director refuses a call
| Situation | Result |
|---|---|
| Your balance is under EUR 1.00 | 429, "code": "credits_refused" |
| Usage credits are switched off | 429, "code": "credits_refused" |
| Your balance, minus what calls in flight have reserved, does not cover this call's reservation | 429, "code": "credits_refused", "reason": "insufficient_for_hold" |
| This month's credits spend has reached your monthly limit, if you set one | 429, "code": "credits_refused", "reason": "monthly_limit_reached" |
| The prompt is over 30,000 input tokens | 413, "code": "prompt_too_large" |
| More than 60 requests in a minute | 429 |
| The account service cannot be reached | 503, "code": "account_service_unavailable". No decision is made. |
| Director cannot record the call for billing | 503, "code": "billing_unavailable". No decision is made. |
The refusal happens before any model runs, so a refused call costs nothing.
The balance floor
Director needs a balance of at least EUR 1.00 to start a decision, and enough beyond what calls in flight have reserved to reserve this one. The check happens before the call. When your balance falls under EUR 1.00, add credits and the next call works.
The optional monthly limit
While a block of credit is held for a game, spend can pass the monthly limit by at most one block (EUR 0.25 by default). The limit is checked when a block is taken or topped up.
You may set a monthly limit on what usage credits can spend in a calendar month; without one, your balance is the only limit. When a limit is set, the decision that crosses it completes, and every later decision that month is refused with a 429 until the month rolls over at the start of the next UTC month or you raise the limit. resets_at in GET /v2/usage/me gives the moment. A limit is a useful extra guard if a key leaks; revoking the key is the real fix.
The prompt cap
A prompt of more than 30,000 input tokens is refused with a 413. Director estimates the size before it calls a model. Send only what bears on the decision. See Writing requests.
Request rate
Each account gets 60 requests per minute. All keys of the account share the limit, and so do tokens used by the console and the plugins. A request over the limit gets a 429 and no model runs. Spread calls out, and do not retry in a loop. Reading GET /v2/models and GET /v2/usage/me does not count toward the limit. Neither do POST /v2/events, the policy, the Plots library and running arcs reads, or the Memory read. Deleting a world does. Events and library writes have rate limits of their own, see Events.
For building and testing
The hosted Director is a beta for building and testing. A shipped game cannot use it yet.