Skip to main content
POST
Run this month's recipe tuning now

Authorizations

Authorization
string
header
required

An organization API key. Keys carry a role (read_write or read_only) and may be restricted to a namespace prefix such as acme/*, or to one namespace such as acme/prod/tenant_1. A prefix matches on a / boundary: acme/prod/tenant_1* covers acme/prod/tenant_1 and everything under acme/prod/tenant_1/, never acme/prod/tenant_12.

Headers

Idempotency-Key
string

One key per logical request, reused only on its retries. A key belongs to one request: within your organization, the same method, path, query and body. For 24 hours after a successful response, a request with the key and the same body gets that response back verbatim, with Idempotent-Replayed: true, and runs nothing. Only a successful response is kept, so the retry of a request that failed runs again. While the first request runs or its response is kept, the key with a different request is idempotency_key_reused (422). A request sent while one with its key is still running is rate_limited with Retry-After: 1, without running: retry it to get the first one's response. In the rare case the key can't be checked, the request runs as if it had none.

Required string length: 1 - 255

Path Parameters

ns
string
required

A namespace name, or a template prefix ending in /*, with any / sent as %2F: acme%2Fprod%2Ftenant_123 or acme%2Fprod%2F*.

A namespace name, or a template prefix: a namespace path ending in /*, such as acme/prod/*, which every namespace under acme/prod/ inherits judgments from. Up to 256 bytes. Never exactly . or .., which a URL path can't carry.

Required string length: 1 - 256
Pattern: ^(?!\.\.?$)[A-Za-z0-9._:/-]+(/\*)?$
name
string
required

A judgment, attribute or threshold name. Names are path segments in field references, so they never contain ..

Required string length: 1 - 128
Pattern: ^[A-Za-z0-9_-]+$

Response

The run started, is running, or ended this month.

The cheaper context recipe a version's outcomes support, from its last recipe-tuning run, or why there is none.

version
integer<int32>
required
Required range: x >= 1
status
enum<string>
required
  • not_run: no run yet; reason says why.
  • running: a run is testing smaller recipes.
  • ready: suggestion holds a cheaper recipe.
  • none: the last run found none; reason says why.
Available options:
not_run,
running,
ready,
none
reason
enum<string> | null
required

Why there is no suggestion. Not run: awaiting_run (the next calibration run starts it), too_few_outcomes (no calibration fit yet), no_recipe, no_smaller_recipe (nothing to drop or halve, such as a single field), composite, inherited (the template has the suggestion). None: nothing_to_save (every answer is already standard, the smallest size class), no_cheaper_recipe (nothing moves enough answers to a smaller size class to be meaningfully cheaper), accuracy_would_drop, too_few_outcomes, cost_cap (the run stopped at this month's limit) or superseded (the engine's model changed during the run). Null while running and when ready.

Available options:
awaiting_run,
too_few_outcomes,
no_recipe,
composite,
inherited,
nothing_to_save,
no_smaller_recipe,
no_cheaper_recipe,
accuracy_would_drop,
cost_cap,
superseded
message
string
required

What status and reason mean, in a sentence.

headline
string | null
required

One sentence when ready, such as "A context recipe 42% cheaper per answer, with accuracy unchanged within noise on 312 labelled answers."

suggestion
object | null
required

One smaller recipe, measured against the current one on the same labelled answers and engine epoch. Apply it by posting definition as a new version and activating it through its shadow report.

computed_at
string<date-time> | null
required

When the last run ended. Null before one has.

next_run_after
string<date-time> | null
required

The earliest the nightly calibration starts the next run, 30 days after the last started. Null before one has.

plan_required
object | null
required

Set below Team, where the recipe itself is withheld.