API Reference
Integrate ImpactCheck with your platform to programmatically manage facilitators, generate survey links, and retrieve results.
Authentication
All API requests require a bearer token in the Authorization header.
Authorization: Bearer YOUR_API_KEY
Generate your API key from Account Settings in the ImpactCheck dashboard. Keep it secret — treat it like a password.
Base URL
https://impactcheck.net/api/v1
All endpoints return JSON. Send request bodies as JSON with Content-Type: application/json.
Error Handling
The API uses standard HTTP status codes. Error responses include a JSON body with an error field.
| Status | Meaning |
|---|---|
| 200 | Success — resource already exists |
| 201 | Created — new resource was created |
| 401 | Unauthorized — missing or invalid API key |
| 404 | Not found — survey or facilitator doesn't exist |
| 422 | Validation error — missing required fields |
Example error response:
{
"error": "email is required"
}
List Surveys
Endpoint
GET /api/v1/surveys
Returns all active surveys for the authenticated user. Use the id field from the response as the survey_id parameter in other endpoints.
Response
{
"surveys": [
{
"id": 15,
"name": "Leadership Accelerator 2025",
"programme_name": "Leadership Accelerator",
"survey_type": "programme_evaluation",
"template_name": "Post-Programme",
"retrospective": false,
"slug": "k7m2p9x4q1",
"response_count": 25,
"published_at": "2026-02-14T10:30:00Z",
"survey_url": "https://impactcheck.net/k7m2p9x4q1"
}
]
}
Example Request
curl https://impactcheck.net/api/v1/surveys \ -H "Authorization: Bearer YOUR_API_KEY"
Facilitator Lookup
Endpoint
POST /api/v1/surveys/:survey_id/facilitators/lookup
Look up a facilitator by email. Creates the facilitator and/or assigns them to the survey if they don't exist yet. Returns the facilitator's unique survey link token. This endpoint is idempotent — calling it multiple times with the same email returns the same result.
URL Parameters
| Parameter | Type | Description |
|---|---|---|
| survey_id | integer | The ID of the survey to assign the facilitator to. Must belong to the authenticated user. |
Request Body
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| string | required | — | Facilitator's email address. Used as the unique lookup key within your account. | |
| name | string | required* | — | Facilitator's display name. Required when creating a new facilitator. Updates the name if it has changed. |
| create_facilitator | boolean | optional | true | If the facilitator doesn't exist, create them. Set to false to return 404 instead. |
| assign_to_survey | boolean | optional | true | If the facilitator isn't assigned to this survey, assign them. Set to false to return 404 instead. |
Response
Returns 201 if anything was newly created or assigned, 200 if everything already existed.
{
"facilitator": {
"id": 42,
"name": "Jane Smith",
"email": "jane@coaching.com"
},
"survey_facilitator": {
"token": "a8f3x2m9"
},
"survey_url": "https://impactcheck.net/k7m2p9x4q1?f=a8f3x2m9",
"created": false,
"assigned": true
}
| Field | Description |
|---|---|
| facilitator | The facilitator object (id, name, email) |
| survey_facilitator.token | The opaque token for this facilitator's survey link |
| survey_url | The full URL to send to participants — includes the ?f= token. Append &g=Cohort+3 to tag a group and &s=Day+1 to tag a session. |
| created | true if the facilitator was newly created |
| assigned | true if the facilitator was newly assigned to this survey |
Example Request
curl -X POST https://impactcheck.net/api/v1/surveys/15/facilitators/lookup \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "jane@coaching.com",
"name": "Jane Smith"
}'
Quickstart
Generate your API key
Go to Account Settings in the ImpactCheck dashboard and click "Generate API Key".
Create a survey
Create and publish a survey in the dashboard. Note its ID from the URL (e.g., /surveys/15).
Look up a facilitator
Call the Facilitator Lookup endpoint with the coach's email. You'll get back a unique survey URL.
Send the link to participants
Use the survey_url from the response. Responses submitted via this link are automatically attributed to the facilitator.
How Facilitator Links Work
Each facilitator assigned to a survey gets a unique, opaque token appended to the survey URL:
https://impactcheck.net/k7m2p9x4q1?f=a8f3x2m9
To tag a response with a group and/or session, append &g= and &s=:
https://impactcheck.net/k7m2p9x4q1?f=a8f3x2m9&g=Cohort+3&s=Day+1
- ✓ Tokens are random and unguessable — participants can't switch between facilitators
- ✓ Responses are still fully anonymous — no respondent identity is collected
- ✓ If a participant uses a link without a token (or with an invalid one), their response is still recorded but marked as "unattributed"
- ✓ Results can be filtered by facilitator, group, and session in the dashboard
-
✓
Group identifiers (
&g=) are for cohorts, locations, or teams. Session identifiers (&s=) are for specific events within a group. Both are free-form strings.
Typical integration: Your platform calls the lookup endpoint after each session, gets the facilitator's survey URL, appends group and session identifiers, and emails the link to the participant. The response is attributed to the correct facilitator, group, and session.