Curate a dataset item from a generation
Promotes a real, completed generation into a test case: its input messages become the item's input, and its own answer becomes expected_output unless you supply one. Use it to build an evaluation set out of production traffic rather than hand-authoring fixtures.
The item is a copy, not a view. It keeps working after the source generation's content is purged, and source_generation_id goes null if that generation is deleted — a purge can never quietly stop a suite from being runnable.
Requires both evaluations:CreateDataset and generations:GetGeneration: the call copies content out of a generation, so a principal that may not read that generation may not curate it either.
Only a completed generation can be promoted (409 GENERATION_NOT_COMPLETED), and only while its content is still available: an agent or project running with trace_content_mode: none never stored the input, and a purged or expired generation no longer has it (409 GENERATION_CONTENT_UNAVAILABLE). Generations that predate input recording answer the same way.
Request
- Base URL: https://api.naturali.ai
- URL: https://api.naturali.ai/v1/projects/{project_id}/datasets/{dataset_id}/items/from-generation
- Auth: one of:
- HTTP bearer
- OAuth 2 (authorization code, authorization URL https://api.naturali.ai/authorize, token URL https://api.naturali.ai/token, scopes: mcp:access)
Path parameters
Dataset ID
Request body
Example request
{
"generation_id": "gen_V1StGXR8Z5jdHi6B",
"expected_output": "Your invoice is issued on the first of each month.",
"metadata": {
"author": "John",
"revision": 2
}
}Response
Dataset item created from the generation
Example response
{
"id": "dsit_V1StGXR8Z5jdHi6B",
"dataset_id": "dset_V1StGXR8Z5jdHi6B",
"input": [
{
"role": "user",
"content": "When is my invoice issued?"
}
],
"metadata": {
"author": "John",
"revision": 2
},
"source_generation_id": "gen_V1StGXR8Z5jdHi6B"
}Changes
No recorded changes to this operation across all 1 revision of this API.