POST /api/v1/forms/{formId}/responses/{responseId}/qualification/retry
Requests a new Jev analysis of a submitted response, regardless of its previous analysis status or whether automatic AI was enabled. The original answers and qualification criteria are retained; responses without prior qualification use the default analysis dimensions. Reusing the key suppresses another analysis request; the returned attempt is the current attempt for that response.
Use x-api-key with an active organization-bound API key. Its holder keeps their current Organization, CASL and resource permissions.
| Role in the organization | Access |
|---|---|
| OWNER | Allowed |
| ADMIN | Allowed |
| MEMBER | Refused — 403 |
| Requirement | Rule |
|---|---|
| Business role | None; additional setter/closer roles do not grant access |
| Resource scope | Organization bound to the verified key |
| Participation | None |
| Resource state | Submitted response; any previous analysis status |
| Parameter | Type | Required | Description |
|---|---|---|---|
| formId | UUID | yes | Form in the key’s organization |
| responseId | UUID | yes | Response under that form |
| Header | Required | Description |
|---|---|---|
| x-api-key | yes | Organization-bound key |
| Idempotency-Key | yes | Stable key for one intention; reuse on retry |
curl -X POST "https://your-school.cohorte.app/api/v1/forms/{formId}/responses/{responseId}/qualification/retry" \
-H "x-api-key: YOUR_API_KEY" \
-H "Idempotency-Key: form-intention-1"Success: 202 on a new request, 200 on replay. 400 invalid_request for malformed input or missing key; 401 unauthorized for invalid authentication; 403 forbidden for permission refusal; 404 not_found for missing or other-organization resources; 409 conflict for a conflicting state; 500 internal_error for an unexpected failure.
The envelope has success, data, and correlationId, plus replayed for a retry. data contains attempt, the current analysis attempt.
{
"success": true,
"replayed": false,
"data": {
"attempt": 1
},
"correlationId": "00000000-0000-4000-8000-000000000002"
}Requests a new Jev analysis of a submitted response, regardless of its previous analysis status or whether automatic AI was enabled. The original answers and qualification criteria are retained; responses without prior qualification use the default analysis dimensions. Reusing the key suppresses another analysis request; the returned attempt is the current attempt for that response.
Commands claim idempotency before the write. Replays suppress repeat audit/events and return current resource state. New intentions need a new key. Qualification updates do not re-score existing responses automatically.
A new intention requires a new idempotency key. Manual analysis does not enable automatic AI or change the human decision. If Jev is unavailable or unconfigured, the analysis records an explicit failure. Names and email fields are excluded from the analysis.