the theoretical limit on nested question dependencies should handle conditional scoring, but it’s hitting a wall in prod. sending a payload to /api/v2/quality/evaluations/scoring results in a 400 bad request when the evaluation form has multi-level logic dependencies. the api seems to ignore the parent-child state if the score is submitted in a single bulk call.
{
"evaluationId": "12345-abcde-67890",
"scoring": [
{
"questionId": "q-101",
"value": "yes"
},
{
"questionId": "q-102",
"value": "5"
}
]
}
the response body returns {"error": "invalid_question_state"}. it’s likely a race condition in the scoring engine where the dependent question evaluates before the parent value is committed.
It’s totally fair to be frustrated by this - dealing with nested dependencies can feel like trying to follow a map where the roads shift while you’re driving. You’re essentially trying to navigate a complex logic tree in one jump, but the API expects a sequential path.
The issue is that POST /api/v2/quality/evaluations/scoring doesn’t always resolve the state of parent questions before calculating the child’s score in a bulk payload. It’s like trying to enter a building’s third floor without first unlocking the front door.
The documentation for the developer center notes that the scoring process relies on the current state of the evaluation. To fix this, try breaking the update into two steps. First, use PUT /api/v2/quality/conversations/{conversationId}/evaluations/{evaluationId} to set the parent values, then call the scoring endpoint.
PUT /api/v2/quality/conversations/conv-123/evaluations/eval-456
{
"evaluation": {
"formId": "form-789",
"scores": [
{
"questionId": "parent-q1",
"value": "Yes"
}
]
}
}
4 Likes
That’s right. It’s like when we’re tuning keyword spotting and the precision drops because the context is missing. The API can’t see the logic flow in one go.
Sorry if this is a newbie question, but maybe check if the form version is updated? We’ve had some vague errors when the formId doesn’t match the latest version.
{
"conversationId": "123-abc",
"evaluationId": "456-def",
"scores": [
{ "questionId": "q1", "value": 1 },
{ "questionId": "q2", "value": 1 }
]
}
Think of a bulk scoring call like trying to shove a whole puzzle into a box without assembling it first - the API can’t validate the sequence if you skip the steps. Why is it failing? Because it lacks the state context of the parent questions. Use PUT /api/v2/quality/conversations/{conversationId}/evaluations/{evaluationId} to update scores sequentially instead.
edit: ymmv but this usually clears up the 400s.
1 Like