Eposyne Director

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

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

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.

How many judgements your events cause depends on your policy. Policy counts them and works through an example.

When Director refuses a call

SituationResult
Your balance is under EUR 1.00429, "code": "credits_refused"
Usage credits are switched off429, "code": "credits_refused"
Your balance, minus what calls in flight have reserved, does not cover this call's reservation429, "code": "credits_refused", "reason": "insufficient_for_hold"
This month's credits spend has reached your monthly limit, if you set one429, "code": "credits_refused", "reason": "monthly_limit_reached"
The prompt is over 30,000 input tokens413, "code": "prompt_too_large"
More than 60 requests in a minute429
The account service cannot be reached503, "code": "account_service_unavailable". No decision is made.
Director cannot record the call for billing503, "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.