Dataopi
API

Admin API

Endpoints used by the admin UI and by backend integrations with a project API key.

All endpoints below require either a valid session cookie (admin UI) or a project API key in the Authorization header. For full request/response schemas, open the interactive /api-docs page.

Projects

MethodPathDescription
GET/api/projectsList projects owned by the caller
POST/api/projectsCreate a project
GET/api/projects/{projectId}Get one project (with surveys)
PATCH/api/projects/{projectId}Update name / description

Surveys

MethodPathDescription
GET/api/projects/{projectId}/surveysList surveys in a project
POST/api/projects/{projectId}/surveysCreate a survey
GET/api/surveys/{surveyId}Get one survey (with questions, theme)
PATCH/api/surveys/{surveyId}Update survey (status, questions, …)
GET/api/surveys/{surveyId}/responsesList responses with their metadata

Response templates

MethodPathDescription
POST/api/surveys/{surveyId}/templatesCreate a single template
POST/api/surveys/{surveyId}/templates/batchCreate up to 10 000 templates at once
DELETE/api/templates/{templateId}Delete an unredeemed template

Single template

curl -X POST https://your-host/api/surveys/$SURVEY_ID/templates \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{ "metadata": { "email": "ada@example.com" } }'
{ "token": "0c63a3f5-…", "url": "/r/0c63a3f5-…" }

Batch

curl -X POST https://your-host/api/surveys/$SURVEY_ID/templates/batch \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "templates": [
      { "metadata": { "email": "ada@example.com" } },
      { "metadata": { "email": "linus@example.com" } }
    ]
  }'

API keys

MethodPathDescription
GET/api/projects/{projectId}/api-keysList keys (masked)
POST/api/projects/{projectId}/api-keysCreate a key (returns plaintext once)
DELETE/api/api-keys/{apiKeyId}Revoke a key

On this page