EvaluateRun evaluations

Run evaluations

⚠️
Preview — this feature is being built; the design below is the spec.

A run executes one to four variants over a dataset and grades every output. A variant is a model plus a prompt.

Start a run

curl -sS https://app.syntic.ai/v1/evals/runs \
  -H "Authorization: Bearer $SYNTIC_API_KEY" \
  -H "syntic-beta: evals-2026-12-01" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "quick vs s1.2 on billing",
    "dataset_id": "evds_01JD13B5D7F9H1K3M5P7",
    "variants": [
      {"label": "s12", "model": "Amara S1.2", "prompt_version": "support-v13"},
      {"label": "quick", "model": "Amara Quick", "prompt_version": "support-v13"}
    ],
    "grader_ids": ["evgr_01JD46E8G0J2L4N6Q8S0"],
    "item_tags": ["billing"]
  }'

Compare one thing at a time

Change the prompt or the model in a run, not both, or you will not know which change caused the difference. A useful pattern is always including the production setup as the first variant (label: "baseline").

Timing and cost

Runs use the batch path by default: half the token price and usually done within an hour. Pass priority: "interactive" while iterating on a small set if you want results in minutes. Watch progress with Get a run or subscribe to the eval.run.completed webhook.

Repeatability

Each item is generated once per variant. Model outputs vary a little between runs, so a difference of one or two points on a few hundred items can be noise. For close decisions, run twice or use a larger set.

Templates and variables

Inline templates use {{variable}} placeholders filled from each item’s input:

{
  "label": "short",
  "model": "Amara S1.2",
  "messages": [
    {"role": "system", "content": "You answer billing questions for Acme. Under 120 words."},
    {"role": "user", "content": "Customer tier: {{customer_tier}}\n\n{{ticket}}"}
  ]
}

A placeholder with no matching input key fails the run at creation with unknown_variable, before anything is billed.

Was this page helpful?