curl --request GET \
--url https://guidinghand.ai/v1/agents/{agent_id}/procedures/{procedure_id}/latency \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://guidinghand.ai/v1/agents/{agent_id}/procedures/{procedure_id}/latency', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://guidinghand.ai/v1/agents/{agent_id}/procedures/{procedure_id}/latency"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"object": "procedure_latency",
"procedure_id": "<string>",
"revisions": [
{
"revision": 123,
"saved_at": "2023-11-07T05:31:56Z",
"current": true,
"replies": 123,
"reply_p50_ms": 123,
"first_message_p50_ms": 123,
"tasks": 123,
"task_p50_ms": 123
}
],
"last_30_days": {
"replies": {
"count": 123,
"first_message": {
"p50_ms": 123,
"p95_ms": 123
},
"whole": {
"p50_ms": 123,
"p95_ms": 123
},
"by_mode": [
{
"mode": "ai",
"count": 123,
"first_message": {
"p50_ms": 123,
"p95_ms": 123
},
"whole": {
"p50_ms": 123,
"p95_ms": 123
}
}
]
},
"tasks": {
"count": 123,
"whole": {
"p50_ms": 123,
"p95_ms": 123
},
"active": {
"p50_ms": 123,
"p95_ms": 123
},
"by_mode": [
{
"mode": "ai",
"count": 123,
"whole": {
"p50_ms": 123,
"p95_ms": 123
},
"active": {
"p50_ms": 123,
"p95_ms": 123
}
}
]
}
}
}How long a procedure’s runs take
In milliseconds, over finished runs (failed and cancelled ones aside); p50_ms is the median, p95_ms the time 95 in 100 finish within. replies: the chat replies that read the procedure or ran its steps, from the person’s message to the reply’s first message (first_message) and to its end (whole, its tool calls and tasks included). tasks: the browser and computer tasks that followed it, start to end (whole) and the time they ran (active, waits for a person or a browser aside). Each by_mode: replies on the model (ai), on the procedure’s steps without AI (steps), or steps that handed on to the model (steps_ai); tasks on the model (ai), on its recorded browser steps (replay), or a replay that handed on (replay_ai). revisions: each revision’s median reply and task, oldest first.
curl --request GET \
--url https://guidinghand.ai/v1/agents/{agent_id}/procedures/{procedure_id}/latency \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://guidinghand.ai/v1/agents/{agent_id}/procedures/{procedure_id}/latency', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://guidinghand.ai/v1/agents/{agent_id}/procedures/{procedure_id}/latency"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"object": "procedure_latency",
"procedure_id": "<string>",
"revisions": [
{
"revision": 123,
"saved_at": "2023-11-07T05:31:56Z",
"current": true,
"replies": 123,
"reply_p50_ms": 123,
"first_message_p50_ms": 123,
"tasks": 123,
"task_p50_ms": 123
}
],
"last_30_days": {
"replies": {
"count": 123,
"first_message": {
"p50_ms": 123,
"p95_ms": 123
},
"whole": {
"p50_ms": 123,
"p95_ms": 123
},
"by_mode": [
{
"mode": "ai",
"count": 123,
"first_message": {
"p50_ms": 123,
"p95_ms": 123
},
"whole": {
"p50_ms": 123,
"p95_ms": 123
}
}
]
},
"tasks": {
"count": 123,
"whole": {
"p50_ms": 123,
"p95_ms": 123
},
"active": {
"p50_ms": 123,
"p95_ms": 123
},
"by_mode": [
{
"mode": "ai",
"count": 123,
"whole": {
"p50_ms": 123,
"p95_ms": 123
},
"active": {
"p50_ms": 123,
"p95_ms": 123
}
}
]
}
}
}Authorizations
An org API key (gh_live_…) from Settings → API keys in the console.