{"openapi":"3.0.0","paths":{"/api/v1/me":{"get":{"operationId":"PublicApiController_me","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Check an API key and see which workspace it belongs to","tags":["Public API v1"]}},"/api/v1/forms":{"get":{"operationId":"PublicApiController_listForms","parameters":[{"name":"cursor","required":false,"in":"query","description":"nextCursor from the previous page","schema":{}},{"name":"limit","required":false,"in":"query","description":"1 to 100, default 25","schema":{}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List forms, newest first","tags":["Public API v1"]}},"/api/v1/forms/{formId}":{"get":{"operationId":"PublicApiController_getForm","parameters":[{"name":"formId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get a form and its fields","tags":["Public API v1"]}},"/api/v1/forms/{formId}/submissions":{"get":{"operationId":"PublicApiController_listSubmissions","parameters":[{"name":"formId","required":true,"in":"path","schema":{"type":"string"}},{"name":"since","required":false,"in":"query","description":"ISO 8601 time; only responses completed after it","schema":{}},{"name":"cursor","required":false,"in":"query","description":"nextCursor from the previous page","schema":{}},{"name":"limit","required":false,"in":"query","description":"1 to 100, default 25","schema":{}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List completed responses for a form, newest first","tags":["Public API v1"]}},"/api/v1/submissions/{submissionId}":{"get":{"operationId":"PublicApiController_getSubmission","parameters":[{"name":"submissionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Get one completed response","tags":["Public API v1"]}},"/api/v1/webhooks":{"get":{"operationId":"PublicApiController_listWebhooks","parameters":[{"name":"formId","required":false,"in":"query","schema":{}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"List webhook subscriptions","tags":["Public API v1"]},"post":{"operationId":"PublicApiController_createWebhook","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["formId","url"],"properties":{"formId":{"type":"string"},"url":{"type":"string","format":"uri","description":"https only"},"event":{"type":"string","enum":["submission.created"]}}}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Subscribe a URL to submission.created for one form","tags":["Public API v1"]}},"/api/v1/webhooks/{webhookId}":{"delete":{"operationId":"PublicApiController_deleteWebhook","parameters":[{"name":"webhookId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Delete a webhook subscription","tags":["Public API v1"]}}},"info":{"title":"Enform API","description":"Read your Enform forms and responses, and subscribe to new responses.\n\nCreate an API key in Settings > API and send it as `Authorization: Bearer <key>`.\n\nResponses are wrapped as `{ type, data }`; lists add `hasMore` and `nextCursor`.\n\nA response lists its answers by question ID; when the form has them it also carries `hidden` (link values by parameter name) `calculations` (totals like `score` by variable) and `payments` (each payment answer by question ID).\n\nLimit: 120 requests per minute per endpoint for each key.\n\nWebhooks: `POST /api/v1/webhooks` returns a `secret` once. Each delivery is a POST of `{ id, type: 'submission.created', createdAt, data }` with `webhook-id`, `webhook-timestamp` and `webhook-signature: v1,<base64 HMAC-SHA256 of '<id>.<timestamp>.<body>'>` keyed with the whole secret string. Answer 2xx to accept, 410 to unsubscribe; 429s, 5xx and timeouts are retried with backoff, up to 8 attempts over about 20 minutes.","version":"v1","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"An Enform API key (enf_...)"}},"schemas":{}}}