Skip to main content
Rate limit tier: general, 600 requests/min. See Rate limits. Breaks one eval down: the totals, then the counts per field (by_field), per dataset document (by_document_packet) and per dataset tag (by_dataset_tag), plus coverage, the fields that have ground truth to grade against. Every count is a number of values. A value is matched when it equals its ground truth, mismatched when it does not, and ungraded when there is no ground truth for it. Accuracy is matched / (matched + mismatched); ungraded values stay out of it. The eval grades the documents it ran, so a later eval, or a later run on the same version, never changes these numbers.

While the eval runs

The numbers are partial while the eval’s status is in_progress: they grade the documents finished so far, and documents still running count nothing yet. Read them once GET …/evals/{eval_id}/ shows a terminal status.

Reading the breakdown

  • by_field names each field by its persistent_id, the identifier in the workflow’s schema (see GET /v3/workflows/{workflow_id}/).
  • by_document_packet names each document by the dataset copy’s document_packet_id. Adding a production packet to the dataset makes a copy with its own id; this is that id, not the production packet’s. Pass it to GET …/document-packets/{document_packet_id}/fields/ to see the values that differ. failed_persistent_ids lists the fields with at least one mismatched value; name is present only when the packet has a name of its own.
  • by_dataset_tag gives the counts of the documents carrying each tag. A document counts under every tag it carries, so the rows do not add up to the totals.
An unknown eval, or one on another workflow or organization, returns 404 NOT_FOUND.