Improvements
What the nightly reviewer found in your agent: dismiss or resolve a finding, and rate a handoff.
Download the full API pública projection: openapi.json.
| Method | Path | What it does |
|---|---|---|
PATCH | /ai-agents/{id}/findings/{findingId} | Mark a finding addressed, dismissed (with a note) or reopen it |
POST | /conversations/{id}/handoff-feedback | The assigned human's answer to "could the agent have avoided this handoff?" |
PATCH /ai-agents/{id}/findings/{findingId}
Mark a finding addressed, dismissed (with a note) or reopen it
Sets status to addressed, dismissed or open. addressed and dismissed stamp who decided and when; dismissed also stores the optional note as dismiss_note. Reopening with open clears those stamps. Recorded in the audit log and refreshes the agent's Coach notices. Needs the corrections:write scope; 404 when the finding does not belong to the agent in this workspace. Answers the updated finding.
| Parameter | In | Type | Required | Constraints |
|---|---|---|---|---|
id | path | uuid | yes | |
findingId | path | uuid | yes |
Body
| Field | Type | Required | Constraints |
|---|---|---|---|
status | open \ | addressed \ | dismissed |
note | string | — | máx. 1000 |
curl -X PATCH https://api.vitrinadev.com/api/v1/ai-agents/<id>/findings/<id> \
-H "Authorization: Bearer $VITRINA_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "dismissed",
"note": "Es un caso aislado de una campaña ya terminada."
}'Example response (200)
{
"data": {
"id": "7b7b7b7b-0000-4000-8000-000000000011",
"tenant_id": "a1a1a1a1-0000-4000-8000-000000000001",
"ai_agent_id": "7b7b7b7b-0000-4000-8000-000000000001",
"kind": "missing_knowledge",
"topic_key": "horarios-de-atencion",
"title": "El agente no sabe los horarios de atención de la sucursal",
"description": "Varios clientes preguntaron por el horario de sábado sin obtener respuesta.",
"status": "dismissed",
"first_seen_at": "2026-09-20T15:00:00.000Z",
"last_seen_at": "2026-10-08T18:30:00.000Z",
"occurrence_count": 7,
"sample_conversation_ids": [
"bbbbbbbb-0000-4000-8000-000000000001",
"bbbbbbbb-0000-4000-8000-000000000002"
],
"investigation": null,
"investigated_at": null,
"investigation_error": null,
"addressed_at": null,
"addressed_by": null,
"dismissed_at": "2026-10-09T10:00:00.000Z",
"dismissed_by": "11111111-0000-4000-8000-000000000001",
"dismiss_note": "Es un caso aislado de una campaña ya terminada.",
"created_at": "2026-09-20T15:00:00.000Z",
"updated_at": "2026-10-09T10:00:00.000Z"
}
}Answers: 200 · 400 · 401 · 403 · 404 · 409 · 429
POST /conversations/{id}/handoff-feedback
The assigned human's answer to "could the agent have avoided this handoff?"
skipped only records that the card was dismissed; any other verdict queues a review that reads the note as first-hand evidence.
| Parameter | In | Type | Required | Constraints |
|---|---|---|---|---|
id | path | string | yes | mín. 1 |
Body
| Field | Type | Required | Constraints |
|---|---|---|---|
verdict | missing_knowledge \ | missing_capability \ | wrong_behavior \ |
note | string | null | — | máx. 1000 |
curl -X POST https://api.vitrinadev.com/api/v1/conversations/<id>/handoff-feedback \
-H "Authorization: Bearer $VITRINA_KEY" \
-H "Content-Type: application/json" \
-d '{
"verdict": "missing_knowledge",
"note": "Preguntó por el horario de sábado y el agente no tenía el dato."
}'Example response (201)
{
"data": {
"feedback": {
"verdict": "missing_knowledge",
"note": "Preguntó por el horario de sábado y el agente no tenía el dato.",
"user_id": "11111111-0000-4000-8000-000000000001",
"at": "2026-10-09T10:00:00.000Z"
},
"review_status": "pending"
}
}Answers: 201 · 400 · 401 · 403 · 404 · 409 · 429
Media library
Photos, videos, PDFs and audio the team and the agent send, with a «when to use it» note, topics and consent for patient photos.
Team
The workspace's members and their invitations: add one, change a role or branch, and remove one — removal always hands off the person's open work instead of stranding it.