Create datasets

Writes a dataset — the named set of graded examples a run scores a model against — under the caller's org and answers 201 with it.

POST /v1/eval/datasets

Addresshttps://api.hanzo.ai/v1/eval/datasets
MethodPOST
Operationpost_eval_datasets
AuthAuthorization: Bearer $HANZO_API_KEY

Writes a dataset — the named set of graded examples a run scores a model against — under the caller's org and answers 201 with it.

The NAME is the key, not an id: posting a name the org already has updates that dataset's description and metadata and keeps its original creation time, so this is create-or-edit and never a duplicate. Its items are untouched.

Requires a validated principal; 401 without one. The org comes from the validated owner claim, never from a client X-Org-Id, so a dataset can only ever be written under the caller's own tenant. A description over 64 KiB is 400.

Request

4 fields, body application/json (required).

FieldInTypeRequiredDescription
descriptionbodystring—Description is free text about what this set measures; over 64 KiB is refused.
metadatabodyobject—Metadata is a free-form object stored with the set and echoed back verbatim.
metadata.*bodyany—
namebodystringyesName is the dataset's org-unique handle and the segment that will address it, so it must match ^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$.

Response

StatusBodyMeaning
201eval.datasetViewcreated
defaultproblem-detailsrefused

201 body — 7 fields.

FieldInTypeAlwaysDescription
createdAtbodystring—CreatedAt is when the name was first written, kept across later edits.
descriptionbodystring—Description is free text the org wrote about what this set measures.
itemsbodyinteger (int64)—Items is how many examples the set holds.
metadatabodyobject—Metadata is the free-form object stored with the set, echoed back verbatim.
metadata.*bodyany—
namebodystring—Name is the dataset's org-unique handle and the segment that addresses it.
updatedAtbodystring—UpdatedAt is when the description or metadata last changed.

Failure carries the platform error shape — see Errors.

Examples

hanzo eval datasets create --name <name>
import { Configuration, EvalApi } from 'hanzoai';

const api = new EvalApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postEvalDatasets({ name: "<name>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import EvalApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = EvalApi(client).post_eval_datasets(name="<name>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.EvalAPI.PostEvalDatasets(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, eval_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = eval_api::post_eval_datasets(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.EvalApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new EvalApi(client).postEvalDatasets();
curl -X POST https://api.hanzo.ai/v1/eval/datasets \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "name": "<name>"
     }'

MCP reaches eval through the eval tool, which names its 16 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_eval_datasets"
         }
       }
     }'

Eval API · All Hanzo APIs · Interactive reference

Was this page useful?