Submissions API
Submit form data and retrieve responses. Supports both client-side (browser) and server-side submissions.
Submit Form
POST /v1/forms/{formId}/submissions
Submit data to a form. Use publishable keys for client-side submissions or secret keys for server-side submissions.
Client-Side Submission
Use publishable keys (pk_live_... or pk_test_...) which are safe to expose in frontend code:
POST /v1/forms/{formId}/submissions
x-publishable-key: pk_live_...
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com",
"message": "Hello from the contact form!"
}Server-Side Submission
Use secret keys (sk_live_... or sk_test_...) via Authorization header:
POST /v1/forms/{formId}/submissions
Authorization: Bearer sk_live_...
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com",
"message": "Hello from the server!"
}Response
{
"id": "sub_123",
"formId": "form_123",
"submittedAt": "2024-01-01T00:00:00Z",
"status": "completed",
"answers": {
"name": "John Doe",
"email": "john@example.com",
"message": "Hello!"
}
}List Responses
GET /responses
Retrieve all form responses. Requires authentication with a secret key or session token.
Query Parameters
form_id- Filter by form IDstatus- Filter by status (completed, partial, abandoned)limit- Number of results (default: 50)offset- Pagination offsetformat- Export format (csv, json)
Export Responses
GET /responses?format=csv
Export responses as CSV or JSON. Useful for data analysis and reporting.
Response Status
completed - Form was fully submitted
partial - Form submission was started but not completed
abandoned - User started but abandoned the form