Create an evaluation set
curl --request POST \
--url http://localhost:8000/dev/apps/{app_name}/eval-sets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"evalSet": {
"eval_set_id": "travel-eval",
"eval_cases": []
}
}
'import requests
url = "http://localhost:8000/dev/apps/{app_name}/eval-sets"
payload = { "evalSet": {
"eval_set_id": "travel-eval",
"eval_cases": []
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({evalSet: {eval_set_id: 'travel-eval', eval_cases: []}})
};
fetch('http://localhost:8000/dev/apps/{app_name}/eval-sets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"eval_set_id": "<string>",
"eval_cases": [
{
"evalId": "<string>",
"conversation": [
{
"userContent": {
"parts": [
{
"mediaResolution": {
"level": "MEDIA_RESOLUTION_UNSPECIFIED",
"numTokens": 123
},
"codeExecutionResult": {
"outcome": "OUTCOME_UNSPECIFIED",
"output": "<string>",
"id": "<string>"
},
"executableCode": {
"code": "<string>",
"language": "LANGUAGE_UNSPECIFIED",
"id": "<string>"
},
"fileData": {
"displayName": "<string>",
"fileUri": "<string>",
"mimeType": "<string>"
},
"functionCall": {
"id": "<string>",
"args": {},
"name": "<string>",
"partialArgs": [
{
"boolValue": true,
"jsonPath": "<string>",
"nullValue": "NULL_VALUE",
"numberValue": 123,
"stringValue": "<string>",
"willContinue": true
}
],
"willContinue": true
},
"functionResponse": {
"willContinue": true,
"scheduling": "SCHEDULING_UNSPECIFIED",
"parts": [
{
"inlineData": {
"mimeType": "<string>",
"data": "<string>",
"displayName": "<string>"
},
"fileData": {
"fileUri": "<string>",
"mimeType": "<string>",
"displayName": "<string>"
}
}
],
"id": "<string>",
"name": "<string>",
"response": {}
},
"inlineData": {
"data": "<string>",
"displayName": "<string>",
"mimeType": "<string>"
},
"text": "<string>",
"thought": true,
"thoughtSignature": "<string>",
"videoMetadata": {
"endOffset": "<string>",
"fps": 123,
"startOffset": "<string>"
},
"toolCall": {
"id": "<string>",
"toolType": "TOOL_TYPE_UNSPECIFIED",
"args": {}
},
"toolResponse": {
"id": "<string>",
"toolType": "TOOL_TYPE_UNSPECIFIED",
"response": {}
},
"partMetadata": {}
}
],
"role": "<string>"
},
"invocationId": "",
"finalResponse": {
"parts": [
{
"mediaResolution": {
"level": "MEDIA_RESOLUTION_UNSPECIFIED",
"numTokens": 123
},
"codeExecutionResult": {
"outcome": "OUTCOME_UNSPECIFIED",
"output": "<string>",
"id": "<string>"
},
"executableCode": {
"code": "<string>",
"language": "LANGUAGE_UNSPECIFIED",
"id": "<string>"
},
"fileData": {
"displayName": "<string>",
"fileUri": "<string>",
"mimeType": "<string>"
},
"functionCall": {
"id": "<string>",
"args": {},
"name": "<string>",
"partialArgs": [
{
"boolValue": true,
"jsonPath": "<string>",
"nullValue": "NULL_VALUE",
"numberValue": 123,
"stringValue": "<string>",
"willContinue": true
}
],
"willContinue": true
},
"functionResponse": {
"willContinue": true,
"scheduling": "SCHEDULING_UNSPECIFIED",
"parts": [
{
"inlineData": {
"mimeType": "<string>",
"data": "<string>",
"displayName": "<string>"
},
"fileData": {
"fileUri": "<string>",
"mimeType": "<string>",
"displayName": "<string>"
}
}
],
"id": "<string>",
"name": "<string>",
"response": {}
},
"inlineData": {
"data": "<string>",
"displayName": "<string>",
"mimeType": "<string>"
},
"text": "<string>",
"thought": true,
"thoughtSignature": "<string>",
"videoMetadata": {
"endOffset": "<string>",
"fps": 123,
"startOffset": "<string>"
},
"toolCall": {
"id": "<string>",
"toolType": "TOOL_TYPE_UNSPECIFIED",
"args": {}
},
"toolResponse": {
"id": "<string>",
"toolType": "TOOL_TYPE_UNSPECIFIED",
"response": {}
},
"partMetadata": {}
}
],
"role": "<string>"
},
"intermediateData": {
"toolUses": [],
"toolResponses": [],
"intermediateResponses": []
},
"creationTimestamp": 0,
"rubrics": [
{
"rubricId": "<string>",
"rubricContent": {
"textProperty": "<string>"
},
"description": "<string>",
"type": "<string>"
}
],
"appDetails": {
"agentDetails": {}
}
}
],
"conversationScenario": {
"startingPrompt": "<string>",
"conversationPlan": "<string>",
"userPersona": {
"id": "<string>",
"description": "<string>",
"behaviors": [
{
"name": "<string>",
"description": "<string>",
"behavior_instructions": [
"<string>"
],
"violation_rubrics": [
"<string>"
]
}
]
}
},
"sessionInput": {
"appName": "<string>",
"userId": "<string>",
"state": {}
},
"creationTimestamp": 0,
"rubrics": [
{
"rubricId": "<string>",
"rubricContent": {
"textProperty": "<string>"
},
"description": "<string>",
"type": "<string>"
}
],
"finalSessionState": {}
}
],
"name": "<string>",
"description": "<string>",
"creation_timestamp": 0
}{
"detail": "<string>"
}{
"error": "CONTENT_LENGTH_REQUIRED"
}{
"error": "REQUEST_TOO_LARGE"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Development evaluation
Create an evaluation set
Create an empty evaluation set using evalSet.eval_set_id. This endpoint does not import eval_cases from the request; add cases through the corresponding endpoint
Exposed by the verified SDK/ADK versions for trusted development and debugging. Paths depend on the installed ADK version and should not be used as public application entry points
POST
/
dev
/
apps
/
{app_name}
/
eval-sets
Create an evaluation set
curl --request POST \
--url http://localhost:8000/dev/apps/{app_name}/eval-sets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"evalSet": {
"eval_set_id": "travel-eval",
"eval_cases": []
}
}
'import requests
url = "http://localhost:8000/dev/apps/{app_name}/eval-sets"
payload = { "evalSet": {
"eval_set_id": "travel-eval",
"eval_cases": []
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({evalSet: {eval_set_id: 'travel-eval', eval_cases: []}})
};
fetch('http://localhost:8000/dev/apps/{app_name}/eval-sets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"eval_set_id": "<string>",
"eval_cases": [
{
"evalId": "<string>",
"conversation": [
{
"userContent": {
"parts": [
{
"mediaResolution": {
"level": "MEDIA_RESOLUTION_UNSPECIFIED",
"numTokens": 123
},
"codeExecutionResult": {
"outcome": "OUTCOME_UNSPECIFIED",
"output": "<string>",
"id": "<string>"
},
"executableCode": {
"code": "<string>",
"language": "LANGUAGE_UNSPECIFIED",
"id": "<string>"
},
"fileData": {
"displayName": "<string>",
"fileUri": "<string>",
"mimeType": "<string>"
},
"functionCall": {
"id": "<string>",
"args": {},
"name": "<string>",
"partialArgs": [
{
"boolValue": true,
"jsonPath": "<string>",
"nullValue": "NULL_VALUE",
"numberValue": 123,
"stringValue": "<string>",
"willContinue": true
}
],
"willContinue": true
},
"functionResponse": {
"willContinue": true,
"scheduling": "SCHEDULING_UNSPECIFIED",
"parts": [
{
"inlineData": {
"mimeType": "<string>",
"data": "<string>",
"displayName": "<string>"
},
"fileData": {
"fileUri": "<string>",
"mimeType": "<string>",
"displayName": "<string>"
}
}
],
"id": "<string>",
"name": "<string>",
"response": {}
},
"inlineData": {
"data": "<string>",
"displayName": "<string>",
"mimeType": "<string>"
},
"text": "<string>",
"thought": true,
"thoughtSignature": "<string>",
"videoMetadata": {
"endOffset": "<string>",
"fps": 123,
"startOffset": "<string>"
},
"toolCall": {
"id": "<string>",
"toolType": "TOOL_TYPE_UNSPECIFIED",
"args": {}
},
"toolResponse": {
"id": "<string>",
"toolType": "TOOL_TYPE_UNSPECIFIED",
"response": {}
},
"partMetadata": {}
}
],
"role": "<string>"
},
"invocationId": "",
"finalResponse": {
"parts": [
{
"mediaResolution": {
"level": "MEDIA_RESOLUTION_UNSPECIFIED",
"numTokens": 123
},
"codeExecutionResult": {
"outcome": "OUTCOME_UNSPECIFIED",
"output": "<string>",
"id": "<string>"
},
"executableCode": {
"code": "<string>",
"language": "LANGUAGE_UNSPECIFIED",
"id": "<string>"
},
"fileData": {
"displayName": "<string>",
"fileUri": "<string>",
"mimeType": "<string>"
},
"functionCall": {
"id": "<string>",
"args": {},
"name": "<string>",
"partialArgs": [
{
"boolValue": true,
"jsonPath": "<string>",
"nullValue": "NULL_VALUE",
"numberValue": 123,
"stringValue": "<string>",
"willContinue": true
}
],
"willContinue": true
},
"functionResponse": {
"willContinue": true,
"scheduling": "SCHEDULING_UNSPECIFIED",
"parts": [
{
"inlineData": {
"mimeType": "<string>",
"data": "<string>",
"displayName": "<string>"
},
"fileData": {
"fileUri": "<string>",
"mimeType": "<string>",
"displayName": "<string>"
}
}
],
"id": "<string>",
"name": "<string>",
"response": {}
},
"inlineData": {
"data": "<string>",
"displayName": "<string>",
"mimeType": "<string>"
},
"text": "<string>",
"thought": true,
"thoughtSignature": "<string>",
"videoMetadata": {
"endOffset": "<string>",
"fps": 123,
"startOffset": "<string>"
},
"toolCall": {
"id": "<string>",
"toolType": "TOOL_TYPE_UNSPECIFIED",
"args": {}
},
"toolResponse": {
"id": "<string>",
"toolType": "TOOL_TYPE_UNSPECIFIED",
"response": {}
},
"partMetadata": {}
}
],
"role": "<string>"
},
"intermediateData": {
"toolUses": [],
"toolResponses": [],
"intermediateResponses": []
},
"creationTimestamp": 0,
"rubrics": [
{
"rubricId": "<string>",
"rubricContent": {
"textProperty": "<string>"
},
"description": "<string>",
"type": "<string>"
}
],
"appDetails": {
"agentDetails": {}
}
}
],
"conversationScenario": {
"startingPrompt": "<string>",
"conversationPlan": "<string>",
"userPersona": {
"id": "<string>",
"description": "<string>",
"behaviors": [
{
"name": "<string>",
"description": "<string>",
"behavior_instructions": [
"<string>"
],
"violation_rubrics": [
"<string>"
]
}
]
}
},
"sessionInput": {
"appName": "<string>",
"userId": "<string>",
"state": {}
},
"creationTimestamp": 0,
"rubrics": [
{
"rubricId": "<string>",
"rubricContent": {
"textProperty": "<string>"
},
"description": "<string>",
"type": "<string>"
}
],
"finalSessionState": {}
}
],
"name": "<string>",
"description": "<string>",
"creation_timestamp": 0
}{
"detail": "<string>"
}{
"error": "CONTENT_LENGTH_REQUIRED"
}{
"error": "REQUEST_TOO_LARGE"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}The server must expose development evaluation endpoints. Create an empty set with
evalSet.eval_set_id; this endpoint does not import eval_cases supplied in the request. To add an existing session, use Add a session as an evaluation case
The returned set has the requested ID. A duplicate ID or invalid input can return 400. This operation does not run the agentAuthorizations
Optional locally without a gateway; cloud deployments use the Runtime API key or user-pool JWT required by that deployment, never the model API key
Path Parameters
Application name; harness_agent for the CLI deployment
Body
application/json
Evaluation set definition
Show child attributes
Show child attributes
Last modified on September 19, 2026