GET /api/v1/forms/{formId}/stats
total and qualification distributions count submitted responses only. incomplete counts separately; it never changes qualification denominators.
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 | Published valid draft for publication; otherwise the command determines state |
| Parameter | Type | Required | Description |
|---|---|---|---|
| formId | UUID | yes | Form in the key’s organization |
curl -X GET "https://your-school.cohorte.app/api/v1/forms/{formId}/stats" \
-H "x-api-key: YOUR_API_KEY"Success: 200. 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. data contains formId, formTitle, qualificationEnabled, total, qualified, notAnalysed, byProfile and incomplete.
{
"success": true,
"data": {
"formId": "00000000-0000-4000-8000-000000000001",
"formTitle": "Applications",
"qualificationEnabled": false,
"total": 1,
"qualified": 0,
"notAnalysed": 0,
"byProfile": [],
"incomplete": 2
},
"correlationId": "00000000-0000-4000-8000-000000000002"
}total and qualification distributions count submitted responses only. incomplete counts separately; it never changes qualification denominators.