The few causes behind a run’s failures
GET
/v1/runs/{id}/failure-groups
const url = 'https://beta-api.plune.ai/v1/runs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/failure-groups';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://beta-api.plune.ai/v1/runs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/failure-groups \ --header 'Authorization: Bearer <token>'A separate path rather than a field on the run: GET /v1/runs/{id} returns the CLI’s RunResult verbatim, and that round trip is the sync contract.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ” id
required
string format: uuid
Responses
Section titled “ Responses ”Grouped failures (empty for a clean run)
Media type application/json
object
groups
required
Largest cause first; ties ordered by signature so the list is stable.
Array<object>
One cause behind several failures in a run. The signature hashes the reason with its numbers and quoted values replaced, so per-row differences collapse; it is mixed with the eval id, so identical wording in two evals stays two groups.
object
signature
required
Stable id for this kind of failure.
string
evalId
required
string
count
required
Dataset rows that failed this way.
integer
reason
required
One cause verbatim, as an example.
string
rows
required
Row indexes within the eval, for expanding the group.
Array<integer>
Example generated
{ "groups": [ { "signature": "example", "evalId": "example", "count": 1, "reason": "example", "rows": [ 1 ] } ]}No / invalid token or session
Not found or not yours
Media type application/json
object
error
required
string
Example generated
{ "error": "example"}