Skip to content

API-Referenz ​

Eigene Systeme anbinden?

Für Integrationen gibt es die versionierte öffentliche API v1 mit API-Schlüsseln, Scopes und Stabilitätsversprechen (Referenz v1). Die folgende Liste beschreibt die interne API des Dashboards, die sich mit dem Dashboard ändern kann.

Die Endpunkte werden beim Bauen der Doku aus der OpenAPI-Spezifikation erzeugt (frontend/packages/api-client/openapi.json, Version 0.1.0). Die interaktive Dokumentation liefert die API selbst unter /api/docs.

BereichMethodePfadBeschreibung
AccountDeletionGET/api/me/account-deletionWhat deleting the own account would do
AccountDeletionPOST/api/me/account-deletionDelete the own account immediately
AccountDeletionPOST/api/me/data-exportDownload the data of the own account (profile, linked accounts, memberships, sessions, own audit log entries)
AiSettingsGET/api/organizations/{id}/ai-settingsGet the AI settings, budget and usage of the organization (requires organization.view)
AiSettingsPATCH/api/organizations/{id}/ai-settingsEnable or disable the AI functions of the organization (requires organization.update, admin+)
AiSurveySettingsPOST/api/surveys/{id}/ai-settingsEnable or disable the AI functions for one survey (requires surveys.edit)
AiTextAnalysisGET/api/ai-analyses/{id}Get an AI analysis with status, progress, cost and the topic report (requires analytics.view)
AiTextAnalysisPOST/api/surveys/{id}/analytics/text-aiStart the AI analysis of a free-text question (requires analytics.ai and the organization's opt-in)
AiTextEstimatePOST/api/surveys/{id}/analytics/text-ai/estimateEstimate the AI analysis of a free-text question: availability, answers, cost and budget (requires analytics.view)
AlertRuleGET/api/alert-rulesList the alert rules (requires analytics.view)
AlertRulePOST/api/alert-rulesCreate an alert rule (requires reports.manage)
AlertRuleGET/api/alert-rules/{id}Get an alert rule with its state (requires analytics.view)
AlertRulePATCH/api/alert-rules/{id}Change, pause or resume an alert rule (requires reports.manage)
AlertRuleDELETE/api/alert-rules/{id}Delete an alert rule and its delivery log (requires reports.manage). Audit-logged (`alert_rule.deleted`).
AnalyticsBehaviourPOST/api/surveys/{id}/analytics/behaviourTime per question, speeders and channel/embed comparison (requires analytics.view)
AnalyticsComparePOST/api/surveys/{id}/analytics/compareCompare two segments, versions or time ranges (requires analytics.view)
AnalyticsCrosstabPOST/api/surveys/{id}/analytics/crosstabCrosstab of two variables with chi-square test (requires analytics.view)
AnalyticsCrosstabPOST/api/surveys/{id}/analytics/crosstab/exportDownload a crosstab as CSV or XLSX (requires analytics.export)
AnalyticsDimensionsPOST/api/surveys/{id}/analytics/dimensionsFilter suggestions: distinct dimension values with counts (requires analytics.view)
AnalyticsFunnelPOST/api/surveys/{id}/analytics/funnelFunnel impression → start → answered per question → completion (requires analytics.view)
AnalyticsOverviewPOST/api/surveys/{id}/analytics/overviewKPIs of the survey (requires analytics.view)
AnalyticsQuestionsPOST/api/surveys/{id}/analytics/questionsResults per question of the current version (requires analytics.view)
AnalyticsTextAnswersPOST/api/surveys/{id}/analytics/text-answersSearch and list the free-text answers of a question (requires analytics.view)
AnalyticsTextKeywordsPOST/api/surveys/{id}/analytics/text-keywordsMost frequent words of the free-text answers of a question (requires analytics.view)
AnalyticsTimeseriesPOST/api/surveys/{id}/analytics/timeseriesStarts and completions per hour, day or week (requires analytics.view)
ApiKeyGET/api/api-keysList the API keys of the active organization (requires api_keys.manage)
ApiKeyPOST/api/api-keysCreate an API key (requires api_keys.manage)
ApiKeyGET/api/api-keys/{id}Get an API key (requires api_keys.manage)
ApiKeyPOST/api/api-keys/{id}/revokeRevoke an API key (requires api_keys.manage)
AuditLogEntryGET/api/organizations/{id}/audit-logList the audit log of the active organization, newest first (requires audit.view)
AuthGET/api/auth/captchaGet a proof-of-work captcha challenge
AuthPOST/api/auth/loginLog in with e-mail and password
AuthPOST/api/auth/login/two-factorComplete a login with a TOTP or backup code
AuthPOST/api/auth/logoutSign out the session of the refresh token cookie
AuthGET/api/auth/oauth/{provider}/callbackRedirect URI of the providers
AuthGET/api/auth/oauth/{provider}/startStart an OAuth sign-in (browser navigation)
AuthPOST/api/auth/oauth/exchangeExchange the single-use code of the OAuth callback
AuthPOST/api/auth/refreshExchange the refresh token cookie for a new access token
BillingInvoiceListGET/api/organizations/{id}/billing/invoicesThe newest invoices of the organization (requires billing.manage)
CollectGET/api/collect/captchaGet a captcha challenge for surveys with settings.captcha
CollectPOST/api/collect/eventsRecord funnel events (also as text/plain for navigator.sendBeacon)
CollectGET/api/collect/responses/{responseId}Get the saved state of a response to continue it (resume after a reload)
CollectPATCH/api/collect/responses/{responseId}Save answers of a multi-page survey partially
CollectPOST/api/collect/responses/{responseId}/completeComplete a response
CollectGET/api/collect/surveys/{publicId}Get the published survey for respondents
CollectGET/api/collect/surveys/{publicId}/resultsGet the results if the survey's results visibility allows it
CollectPOST/api/collect/surveys/{publicId}/sessionsStart a response session
CreditHistoryGET/api/organizations/{id}/billing/creditsCredit bookings of the organization, newest first (requires billing.manage)
CustomDomainGET/api/custom-domainsList the custom domains of the active organization (requires organization.view)
CustomDomainPOST/api/custom-domainsAdd a custom domain (requires domains.manage)
CustomDomainGET/api/custom-domains/{id}Get a custom domain (requires organization.view)
CustomDomainDELETE/api/custom-domains/{id}Remove a custom domain (requires domains.manage)
CustomDomainPOST/api/custom-domains/{id}/verifyCheck the DNS records of a custom domain now (requires domains.manage)
DataExportGET/api/exports/{id}Get an export with its status and download link (requires analytics.export)
DataExportGET/api/surveys/{id}/exportsList the latest 50 exports of a survey, newest first (requires analytics.export)
DataExportPOST/api/surveys/{id}/exportsExport the responses as CSV, XLSX or SPSS, or the analytics report as PDF (requires analytics.export)
EmailChangeConfirmationPOST/api/auth/email/confirmConfirm a new e-mail address with the token from the confirmation e-mail
EmailChangeRequestPOST/api/me/emailRequest a change of the e-mail address
EmailVerificationPOST/api/auth/verify-emailConfirm an e-mail address with the token from the verification e-mail
EmbedConfigGET/api/embeds/{id}Get an embed configuration (requires surveys.view)
EmbedConfigPATCH/api/embeds/{id}Change an embed configuration (requires surveys.edit)
EmbedConfigDELETE/api/embeds/{id}Delete an embed configuration (requires surveys.edit)
EmbedConfigGET/api/surveys/{id}/embedsList the embed configurations of a survey, oldest first (requires surveys.view)
EmbedConfigPOST/api/surveys/{id}/embedsCreate an embed configuration (requires surveys.edit)
EmbedSecretGET/api/organizations/{id}/embed-secretGet the secret for signed identity tokens (requires api_keys.manage, admin+)
EmbedSecretPOST/api/organizations/{id}/embed-secret/rotateReplace the secret for signed identity tokens (requires api_keys.manage, admin+)
HealthGET/healthLiveness and readiness probe
InvitationGET/api/organizations/{id}/invitationsList the open invitations of the organization (requires members.manage)
InvitationPOST/api/organizations/{id}/invitationsInvite someone by e-mail (requires members.manage; only owners may invite owners)
InvitationDELETE/api/organizations/{id}/invitations/{invitationId}Revoke an invitation (requires members.manage)
InvitationPOST/api/organizations/{id}/invitations/{invitationId}/resendSend an invitation again (requires members.manage)
InvitationAcceptancePOST/api/invitations/acceptAccept an invitation and join the organization
InvitationPreviewGET/api/invitations/previewShow the invitation of a token from an invitation e-mail (public)
LinkedIdentityGET/api/me/identitiesList the provider accounts linked to the current user
LinkedIdentityDELETE/api/me/identities/{id}Unlink a provider account
LinkedIdentityPOST/api/me/identities/linkStart linking a provider account
MeGET/api/meProfile of the authenticated user
MePATCH/api/meUpdate name, language or time zone of the authenticated user
MemberGET/api/organizations/{id}/membersList the members of the organization (requires members.view)
MemberPATCH/api/organizations/{id}/members/{membershipId}Change the role of a member (requires members.manage)
MemberDELETE/api/organizations/{id}/members/{membershipId}Remove a member, or leave the organization (own membership)
MyActivityGET/api/me/activityList the last 50 security events of the current user, newest first
MyPermissionsGET/api/me/permissionsRole and permissions of the current user in the active organization
NotificationDeliveryPOST/api/alert-rules/{id}/testSend a test alert with the current values (requires reports.manage)
NotificationDeliveryGET/api/notification-deliveriesThe delivery log of reports and alerts, newest first (requires analytics.view)
NotificationDeliveryGET/api/notification-deliveries/{id}Get one delivery of the log, e.g. to follow a "send now" (requires analytics.view)
NotificationDeliveryPOST/api/report-schedules/{id}/sendSend a scheduled report now (requires reports.manage)
OAuthLinkConfirmationPOST/api/auth/oauth/confirm-linkLink a provider account with the token from the confirmation e-mail
OAuthProviderGET/api/auth/oauth/providersList the enabled OAuth sign-in providers
OrganizationGET/api/organizationsList the organizations of the current user
OrganizationPOST/api/organizationsCreate an organization owned by the current user (free plan)
OrganizationGET/api/organizations/{id}Get an organization of the current user
OrganizationPATCH/api/organizations/{id}Rename an organization or change its slug (requires organization.update)
OrganizationAnalyticsPOST/api/analytics/organizationAnalytics across the surveys of the organization (requires analytics.view)
OrganizationBillingGET/api/organizations/{id}/billingCredit balance and the credit packs on sale (requires billing.manage)
OrganizationBillingPOST/api/organizations/{id}/billing/checkoutStart a Stripe Checkout for a credit pack (requires billing.manage)
OrganizationBillingPOST/api/organizations/{id}/billing/portalOpen the Stripe Customer Portal (requires billing.manage)
OrganizationBrandingGET/api/organizations/{id}/brandingGet the branding of the organization (requires organization.view)
OrganizationBrandingPUT/api/organizations/{id}/brandingChange the branding (requires organization.update)
OrganizationBrandingPUT/api/organizations/{id}/branding/logoSet or remove the logo (requires organization.update)
OrganizationBrandingPOST/api/organizations/{id}/branding/sender-domain/verifyCheck the DNS TXT record of the sender domain (requires organization.update)
OrganizationUsageGET/api/organizations/{id}/usagePlan, usage and features of the organization
OwnershipTransferPOST/api/organizations/{id}/transfer-ownershipHand the ownership over to another member (owners only)
PasswordChangePOST/api/me/passwordChange the password of the authenticated user
PasswordForgotPOST/api/auth/password/forgotRequest a password reset link by e-mail
PasswordResetPOST/api/auth/password/resetSet a new password with the token from the reset e-mail
PrivacyRequestGET/api/privacy-requestsList the data subject requests of the organization, newest first (requires privacy.manage)
PrivacyRequestPOST/api/privacy-requestsStart a data subject request: search the responses of one person (requires privacy.manage)
PrivacyRequestGET/api/privacy-requests/{id}Get a data subject request (requires privacy.manage)
PrivacyRequestPOST/api/privacy-requests/{id}/completeMark the data subject request as completed, e.g. after an access request (requires privacy.manage)
PrivacyRequestPOST/api/privacy-requests/{id}/eraseDelete the responses of the request's subject (requires privacy.manage)
PrivacyRequestPOST/api/privacy-requests/{id}/exportDownload the export for the data subject (requires privacy.manage)
PrivacyRequestPOST/api/privacy-requests/{id}/searchSearch the responses of the request's subject again (requires privacy.manage)
PrivacySettingsGET/api/organizations/{id}/privacy-settingsGet the retention settings of the organization (requires organization.view)
PrivacySettingsPATCH/api/organizations/{id}/privacy-settingsSet the default retention period of responses (requires privacy.manage, admin+)
ProjectGET/api/projectsList the projects of the active organization in position order (requires surveys.view)
ProjectPOST/api/projectsCreate a project at the end of the list (requires surveys.edit)
ProjectGET/api/projects/{id}Get a project (requires surveys.view)
ProjectPATCH/api/projects/{id}Rename or move a project (requires surveys.edit)
ProjectDELETE/api/projects/{id}Delete a project; its surveys are kept without project (requires surveys.edit)
Public API v1: AnalyticsGET/api/v1/surveys/{id}/analyticsKey figures and results per question (scope analytics:read)
Public API v1: ResponsesGET/api/v1/responses/{id}Get a response with all answers (scope responses:read)
Public API v1: ResponsesDELETE/api/v1/responses/{id}Delete a response permanently (scope responses:write)
Public API v1: ResponsesGET/api/v1/surveys/{surveyId}/responsesList the responses of a survey (scope responses:read)
Public API v1: SurveysGET/api/v1/surveysList surveys (scope surveys:read)
Public API v1: SurveysPOST/api/v1/surveysCreate a draft (scope surveys:write)
Public API v1: SurveysGET/api/v1/surveys/{id}Get a survey with its structure (scope surveys:read)
Public API v1: SurveysPATCH/api/v1/surveys/{id}Change title or description (scope surveys:write)
Public API v1: SurveysPOST/api/v1/surveys/{id}/closeClose a live or scheduled survey (scope surveys:write; 409 from other statuses)
Public API v1: SurveysPOST/api/v1/surveys/{id}/publishPublish the draft as a new version (scope surveys:write)
RealtimeTokenGET/api/surveys/{id}/realtime-tokenGet a Mercure subscriber token for the survey's private topic (requires surveys.view)
RegistrationPOST/api/auth/registerCreate an account and its organization
ReportScheduleGET/api/report-schedulesList the scheduled reports (requires analytics.view)
ReportSchedulePOST/api/report-schedulesSchedule an e-mail report (requires reports.manage)
ReportScheduleGET/api/report-schedules/{id}Get a scheduled report (requires analytics.view)
ReportSchedulePATCH/api/report-schedules/{id}Change, pause or resume a scheduled report (requires reports.manage)
ReportScheduleDELETE/api/report-schedules/{id}Delete a scheduled report and its delivery log (requires reports.manage). Audit-logged (`report_schedule.deleted`).
ResponseGET/api/responses/{id}Get a response with all answers, context and flag history (requires analytics.view)
ResponseDELETE/api/responses/{id}Delete a response and its answers permanently (requires responses.manage)
ResponsePOST/api/responses/{id}/excludeExclude a response from the statistics (requires responses.manage)
ResponsePOST/api/responses/{id}/flagFlag a response (requires responses.manage)
ResponsePOST/api/responses/{id}/includeInclude an excluded or flagged response again (requires responses.manage)
ResponsePOST/api/responses/{id}/unflagRemove the flag of a response, automatic or manual (requires responses.manage)
ResponseBulkActionPOST/api/surveys/{id}/responses/bulkFlag, unflag, exclude, include or delete selected responses (requires responses.manage)
ResponseColumnsGET/api/surveys/{id}/responses/columnsList the columns of the response table (requires analytics.view)
ResponseFlagSummaryGET/api/surveys/{id}/responses/flag-summaryFlagged share of the recent completions (requires analytics.view)
ResponseSearchPOST/api/surveys/{id}/responses/searchSearch the responses of a survey (requires analytics.view)
SegmentGET/api/segmentsList the segments you can use (requires analytics.view)
SegmentPOST/api/segmentsSave a filter combination as segment (requires analytics.view)
SegmentGET/api/segments/{id}Get a segment (requires analytics.view; private segments only for their creator)
SegmentPATCH/api/segments/{id}Rename a segment, change its filter or sharing (creator; shared segments also segments.manage = admin+)
SegmentDELETE/api/segments/{id}Delete a segment (creator; shared segments also segments.manage = admin+). Audit-logged (`segment.deleted`).
SessionGET/api/auth/sessionsList the active sessions of the current user
SessionDELETE/api/auth/sessions/{id}Sign out one session
SessionPOST/api/auth/sessions/revoke-othersSign out all other sessions ("log out everywhere else")
ShareLinkGET/api/share-links/{id}Get a results share link (requires analytics.share)
ShareLinkPOST/api/share-links/{id}/revokeRevoke a results share link (requires analytics.share)
ShareLinkGET/api/surveys/{id}/share-linksList the results share links of a survey, newest first (requires analytics.share)
ShareLinkPOST/api/surveys/{id}/share-linksCreate a results share link (requires analytics.share)
SurveyGET/api/surveysList the surveys of the active organization (requires surveys.view)
SurveyPOST/api/surveysCreate a draft (requires surveys.edit)
SurveyGET/api/surveys/{id}Get a survey with settings and structure (requires surveys.view)
SurveyPATCH/api/surveys/{id}Change title, description, project, theme or settings (requires surveys.edit)
SurveyDELETE/api/surveys/{id}Delete a draft (requires surveys.edit; other statuses: 409, archive them instead)
SurveyPOST/api/surveys/{id}/archiveArchive a survey (requires surveys.edit; idempotent)
SurveyPOST/api/surveys/{id}/closeClose a live or scheduled survey (requires surveys.publish; 409 from other statuses)
SurveyPOST/api/surveys/{id}/duplicateCopy a survey with its complete structure as a new draft (requires surveys.edit)
SurveyPOST/api/surveys/{id}/extendExtend a published survey by one year for one credit (requires surveys.publish)
SurveyPOST/api/surveys/{id}/publishPublish the draft as a new version (requires surveys.publish and a confirmed e-mail address)
SurveyPOST/api/surveys/{id}/reopenReopen a closed survey: live, or scheduled if its start lies ahead (requires surveys.publish; 409 if not closed, the end of the current version has passed or the paid year is over)
SurveyPOST/api/surveys/{id}/restoreTake a survey out of the archive: closed if it was published, otherwise a draft (requires surveys.edit; 409 if not archived)
SurveyPUT/api/surveys/{id}/structureReplace the structure of the draft (requires surveys.edit)
SurveyChangesGET/api/surveys/{id}/changesCompare the draft with the current version (requires surveys.view)
SurveyExportGET/api/surveys/{id}/exportExport the draft of a survey as a JSON document (requires surveys.view)
SurveyExportPOST/api/surveys/importCreate a draft from an exported survey (requires surveys.edit)
SurveyRetentionGET/api/surveys/{id}/retentionGet the retention period of a survey (requires surveys.view)
SurveyRetentionPOST/api/surveys/{id}/retentionSet the retention period of a survey (requires privacy.manage, admin+)
SurveyTemplateGET/api/survey-templatesList the built-in templates and those of the active organization (requires surveys.view)
SurveyTemplatePOST/api/survey-templatesSave a survey of the organization as template (requires surveys.edit)
SurveyTemplateGET/api/survey-templates/{id}Preview a template with its pages and questions (requires surveys.view)
SurveyTemplatePATCH/api/survey-templates/{id}Rename an organization template or change its description or category (requires surveys.edit)
SurveyTemplateDELETE/api/survey-templates/{id}Delete an organization template; surveys created from it stay (requires surveys.edit; built-in templates: 409)
SurveyTemplatePOST/api/survey-templates/{id}/useCreate an editable draft from a template (requires surveys.edit)
SurveyTranslationsGET/api/surveys/{id}/translationsGet the languages and translations of the draft (requires surveys.view)
SurveyTranslationsPUT/api/surveys/{id}/translationsReplace the languages and translations of the draft (requires surveys.edit)
SurveyTranslationsPOST/api/surveys/{id}/translations/pretranslatePre-translate texts of a language with DeepL (requires surveys.edit)
SurveyVersionGET/api/surveys/{id}/versionsList the published versions of a survey, newest first (requires surveys.view)
SurveyVersionGET/api/surveys/{id}/versions/{number}Get a version with its complete definition (requires surveys.view)
TextAnswerTaggingPOST/api/surveys/{id}/analytics/text-answers/tagsAdd or remove tags of free-text answers (requires responses.manage)
TextTagGET/api/text-tagsList the organization's free-text tags by name (requires analytics.view)
TextTagPOST/api/text-tagsCreate a free-text tag (requires responses.manage)
TextTagGET/api/text-tags/{id}Get a free-text tag (requires analytics.view)
TextTagPATCH/api/text-tags/{id}Rename or recolour a free-text tag (requires responses.manage). Audit-logged (`text_tag.updated`).
TextTagDELETE/api/text-tags/{id}Delete a free-text tag and all its assignments (requires responses.manage). Audit-logged (`text_tag.deleted`).
ThemeGET/api/themesList the themes of the organization (requires surveys.view)
ThemePOST/api/themesCreate a theme (requires surveys.edit)
ThemeGET/api/themes/{id}Get a theme (requires surveys.view)
ThemePATCH/api/themes/{id}Change a theme (requires surveys.edit)
ThemeDELETE/api/themes/{id}Delete a theme (requires surveys.edit)
ThemePresetGET/api/themes/presetsList the built-in themes
TwoFactorBackupCodesPOST/api/me/two-factor/backup-codesRegenerate the backup codes
TwoFactorBackupCodesPOST/api/me/two-factor/enableEnable two-factor authentication
TwoFactorDisablePOST/api/me/two-factor/disableDisable two-factor authentication
TwoFactorSetupPOST/api/me/two-factor/setupStart the two-factor setup
VerificationResendPOST/api/auth/verify-email/resendSend the verification e-mail again
WebhookGET/api/webhooksList the webhook endpoints of the active organization (requires webhooks.manage)
WebhookPOST/api/webhooksCreate a webhook endpoint (requires webhooks.manage)
WebhookGET/api/webhooks/{id}Get a webhook endpoint (requires webhooks.manage)
WebhookPATCH/api/webhooks/{id}Change a webhook endpoint, disable or enable it (requires webhooks.manage)
WebhookDELETE/api/webhooks/{id}Delete a webhook endpoint with its delivery log (requires webhooks.manage). Audit-logged (`webhook.deleted`).
WebhookPOST/api/webhooks/{id}/reveal-secretShow the signing secret of a webhook endpoint (requires webhooks.manage)
WebhookPOST/api/webhooks/{id}/rotate-secretReplace the signing secret (requires webhooks.manage)
WebhookDeliveryGET/api/webhook-deliveries/{id}Get a webhook delivery with request body and attempts (requires webhooks.manage)
WebhookDeliveryPOST/api/webhook-deliveries/{id}/resendSend the event of a delivery again (requires webhooks.manage)
WebhookDeliveryGET/api/webhooks/{webhookId}/deliveriesDelivery log of a webhook endpoint (requires webhooks.manage)
WebhookDeliveryPOST/api/webhooks/{webhookId}/testSend a test event to a webhook endpoint (requires webhooks.manage)

TypeScript-Client ​

Für TypeScript-Projekte gibt es einen typisierten Client:

ts
import { createPollyouClient } from '@pollyou/api-client'

const api = createPollyouClient({
  baseUrl: 'https://api.pollyou.example',
  getAccessToken: () => sessionToken,
})

const { data, error } = await api.GET('/health')