API referenceEvaluationsGradersCreate a grader

Create a grader

⚠️
Preview — this feature is being built; the design below is the spec.
POST https://app.syntic.ai/v1/evals/graders

Define how an output is judged. Code graders (exact, contains, regex, schema) are free and deterministic; use them wherever the right answer can be checked mechanically. Rubric graders use a model and cost tokens, but can judge tone, completeness and faithfulness.

For how this fits into a full workflow, see Evaluations.

Headers

HeaderRequiredValue
AuthorizationYesBearer <key>: a private inference key (sk_live_...). See Authentication.
syntic-betaYes, while in previewevals-2026-12-01. Without it the call fails with 400 beta_required. See Versioning.
Content-TypeYesapplication/json
Idempotency-KeyNoUp to 255 characters. Retrying with the same key within 24 hours returns the first result instead of acting twice. See Idempotency.

Body parameters

ParameterTypeRequiredNotes
namestringYes
kindstringYes
configobjectYes

Response

201 Created, Content-Type: application/json

{
  "id": "evgr_01JD46E8G0J2L4N6Q8S0",
  "type": "eval_grader",
  "name": "support-rubric",
  "kind": "model_rubric",
  "config": {
    "model": "Amara Deep",
    "rubric": "Score 1-5. 5 = correct facts, apologises once, gives a concrete timeline, under 120 words. Deduct 2 for any invented policy.",
    "pass_threshold": 4
  },
  "created_at": "2026-11-01T09:30:00Z",
  "updated_at": "2026-11-01T09:30:00Z"
}
FieldTypeDescription
kindstringexact_match, contains, regex, json_schema, similarity (embedding cosine against ideal), or model_rubric (a model scores the output against your rubric).
configobjectSettings for the kind. For model_rubric: model, rubric and pass_threshold on a 1 to 5 scale. For similarity: threshold from 0 to 1. For regex: pattern.

Examples

curl -sS "https://app.syntic.ai/v1/evals/graders" \
  -H "Authorization: Bearer $SYNTIC_API_KEY" \
  -H "syntic-beta: evals-2026-12-01" \
  -H "Idempotency-Key: 8d6f0c1e-4b2a-4a57-9f0e-2f1d3c4b5a69" \
  -H "Content-Type: application/json" \
  -d '{
      "name": "support-rubric",
      "kind": "model_rubric",
      "config": {
        "model": "Amara Deep",
        "rubric": "Score 1-5. 5 = correct facts, apologises once, gives a concrete timeline, under 120 words. Deduct 2 for any invented policy.",
        "pass_threshold": 4
      }
    }'

Errors

Errors use the error envelope and carry a request_id. Codes specific to this operation:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
400invalid_request_errorinvalid_grader_configThe config does not fit the kind, for example a regex that does not compile.
401authentication_errorinvalid_api_keyThe key is missing, unknown, revoked or expired.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.
Was this page helpful?