Research preview. Apply for access. We review each application and email you when it's approved, with your API key ready on the API keys page.

Account

Every request authenticates with one of your API keys and counts against your token budgets.

API keys

After we approve your account, you sign in and create keys on the API keys page. A key has the form acs-bm-<prefix>-<secret>, and the page lists each key by its 8-character prefix.

We create your first key when we approve your account and keep an encrypted copy until your first visit to the API keys page. That visit shows the key once and deletes the copy.

For each key you create, we store only a hash. The page shows the key once, when you create it. Copy it before you leave the page. If you lose a key, revoke it and create a new one.

You can pause, resume, rename, or revoke each key. A request that uses a paused or revoked key gets a 401 response. Revoking a key is permanent.

A paused key still counts toward the limit of 10 active keys, but a revoked key does not.

Budgets

Every request counts against up to five token budgets, but a budget with no value set does not limit you. When a budget refuses a request, the 429 budget_exceeded message gives the budget's name from this table, so you know which budget to ask us to raise.

Budget Counts Covers Resets Set by
key monthly prompt and completion tokens one key the first of each month, UTC you on the create-key form, or an administrator
account monthly prompt and completion tokens all your keys together the first of each month, UTC an administrator
daily prompt and completion tokens one key midnight UTC an administrator
monthly input prompt tokens one key the first of each month, UTC an administrator
monthly output completion tokens one key the first of each month, UTC an administrator

We can set a daily budget on a key to pace its usage over a long run.

On the create-key form, No per-key limit starts checked, so a new key has no key monthly budget unless you clear it. Your account monthly budget still applies.

When we set an account monthly budget, the API keys page shows it as "Across all your keys this month." The create-key form caps a key monthly budget at that value. We can set a larger key budget, but the account budget then refuses the request first.

Tokens held by runs that are still active at a reset keep counting until those runs end.

Requests near the cap

Before a request runs, the API reserves its worst case against each budget. Tokens held by your other active runs count as used. In the table, completions is n times the number of prompts.

Budget Worst case reserved
key monthly, account monthly, daily prompt + max_tokens × completions
monthly input prompt
monthly output max_tokens × completions

If the worst case does not fit, the API shortens max_tokens until it fits, so that a script keeps making progress. The Workbench and the Loom never change a value you typed, so they refuse the run instead. To make the run fit, lower max_tokens, shorten the prompt, or choose a key with more budget.

Surface When the worst case does not fit
The API at /v1/completions The API shortens max_tokens to fit and runs the request. It returns 429 budget_exceeded when the prompt alone is larger than the remaining monthly input budget, or when not even one token per completion fits.
Workbench, single pane The Workbench refuses the run with 429 budget_exceeded.
Loom The Loom refuses the run with 429 budget_exceeded. The worst case counts every branch.
Compare Compare mode reserves budget one lane at a time. The lanes that fit start, and the other lanes show a budget_exceeded error.

When the API shortens max_tokens, the response includes this header:

X-Acs-Max-Tokens-Clamped: requested=N,applied=M,reason=budget,source=client

applied is the max_tokens that the request ran with, so the completion can stop at M tokens with finish_reason: "length". Check this header when exact completion lengths matter.

When you leave out max_tokens, the header has source=default instead of source=client. requested is then the API's default. Response headers explains reason.

A refusal clears when your active runs finish and release their holds. A budget reset or a raise from us also clears it.

Account pages

The menu under your email lists Usage, API keys, Settings, and Community once you sign in.

Page What you do there
Usage See this month's totals against your budgets, a chart of the last 30 days, and totals by key and by endpoint. Its Recent requests section is the only place that shows which model a request used.
API keys Create and manage your keys, and see each key's last use and tokens this month.
Settings See your profile, change your password, and set preferences. The preference "Show the token heatmap by default in new sessions" sets whether new Workbench sessions, Compare lanes, and looms start with the heatmap on.
Community Connect your Discord account and open the Discord server.
Workbench Run base-model completions in your browser. The server keeps your drafts, so they follow you across browsers.
Loom Grow a tree of base-model completions and continue from any branch.

Once you sign in, the Feedback button opens a form for a bug report or a feature request.

Request a higher limit

Ask us for a bigger budget, more than 10 keys, a warm window, or a model that is not listed.

  1. If a budget refused a request, copy the budget name from the budget_exceeded message.
  2. Choose Feedback, or email infra@acsresearch.org.
  3. Include your key prefix or key name.

Next steps