Quickstart
Five steps. The only thing you need first is a browser.
1. Get a key
Sign in at jeantechnologies.com/dashboard with Google or an email link. You get an organisation of your own on first sign-in, and every key, job and score below belongs to it.
Create a key in the dashboard and copy it. It is shown once and never again; if you lose it, revoke it and make another.
export JEAN_API_KEY="jean_live_..."
Keys are created from the dashboard, not from a key. An API key cannot mint another API key, so a leaked key cannot be used to grow itself a longer life.
2. See what you can be scored against
curl --fail-with-body "https://api-833252724876.us-central1.run.app/v1/suites" \
-H "Authorization: Bearer $JEAN_API_KEY"
Each suite names a metric, how many items it holds, and whether it returns per-item feedback. More about suites.
3. Submit predictions
One prediction per item, with the item id the suite gave you. Send an Idempotency-Key and a
retry after a timeout returns the original job instead of queueing a second one.
curl --fail-with-body -X POST "https://api-833252724876.us-central1.run.app/v1/evals" \
-H "Authorization: Bearer $JEAN_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"suite_id": "suite:smoke-v1",
"label": "first try",
"predictions": [
{"item_id": "item-00", "prediction": "whatever your model said"},
{"item_id": "item-01", "prediction": "whatever your model said"}
]
}'
You get back a job with "status": "queued". Scoring happens on a worker, not in your
request. Those two predictions will score zero, which is the point: the number comes from
comparing what you sent to data you do not have.
4. Poll the job
curl --fail-with-body "https://api-833252724876.us-central1.run.app/v1/jobs/$JOB_ID" \
-H "Authorization: Bearer $JEAN_API_KEY"
queued → running → succeeded, or failed with an error, or cancelled if you cancel it.
Poll every couple of seconds. A first submission after a quiet period waits a few seconds
longer while the worker starts.
A succeeded job carries a result: the metric, the value, how many items were scored, and how
many you sent that the suite did not recognise. If the suite allows it, per_item says which
items you got right — never what the right answer was.
5. Read the trace
curl --fail-with-body "https://api-833252724876.us-central1.run.app/v1/jobs/$JOB_ID/trace" \
-H "Authorization: Bearer $JEAN_API_KEY"
Every job records what ran, in what order, and how long each step took, so a number you disagree with can be argued about with evidence.
Then
- Check what you have used with
GET /v1/usage. Free accounts get 20,000 eval items a month, two jobs at a time, and 60 requests a minute. - Invite your team, or claim your email domain so colleagues land in your organisation instead of making their own.
- Read the API overview for errors, limits and idempotency in full.