Data & automation
REST API v1
Programmatic access to forms and submissions. JSON over HTTPS, Bearer-token auth, predictable endpoints.
Base URL
https://gatherino.com/api/v1Authentication
All requests require an API key. Create one from Settings → API keys in the dashboard. Keys start with gs_live_ and are shown once on creation — store them in a secret manager.
Pass the key as a Bearer token:
bashcurl https://gatherino.com/api/v1/forms \
-H "Authorization: Bearer gs_live_************************"Heads up
Rate limits
By default, each workspace is allowed 120 requests per minute across all API keys. Exceeded requests return 429 Too Many Requests with a Retry-After header. Business-plan workspaces have higher limits — contact us if you need more.
Endpoints
/v1/formsList all forms in the workspace/v1/forms/:idGet a single form with its schema/v1/forms/:slug/submitSubmit data to a form programmatically/v1/submissionsList submissions with filters and pagination/v1/submissions/:idGet a single submission by ID/v1/submissions/:id/statusChange submission statusListing forms
bashGET https://gatherino.com/api/v1/formsExample response:
json{
"forms": [
{
"id": "ckx...",
"name": "Customer feedback",
"slug": "customer-feedback",
"isPublished": true,
"createdAt": "2026-03-01T12:00:00.000Z"
}
],
"total": 1
}Listing submissions
bashGET https://gatherino.com/api/v1/submissions?formId=ckx...&status=NEW&page=1&limit=50Query parameters
formId— filter to a single formstatus—NEW,IN_PROGRESS,COMPLETED,ARCHIVEDsearch— full-text search across answer valuesdateFrom/dateTo— ISO 8601 datespage— 1-based, default 1limit— max 100, default 50sortBy,sortOrder— e.g.submittedAt/desc
Example response:
json{
"submissions": [
{
"id": "sub_01HA...",
"formId": "ckx...",
"status": "NEW",
"submittedAt": "2026-04-16T08:42:00.000Z",
"data": {
"field_1712345678901_a8fgh": "Jane Doe",
"field_1712345678912_qw4er": "jane@example.com"
}
}
],
"page": 1,
"limit": 50,
"total": 128
}Submitting data
Post a body with a data object keyed by field ID. Missing required fields return 422 Unprocessable Entity with a list of validation errors.
bashcurl -X POST https://gatherino.com/api/v1/forms/customer-feedback/submit \
-H "Authorization: Bearer gs_live_..." \
-H "Content-Type: application/json" \
-d '{
"data": {
"field_1712345678901_a8fgh": "Jane Doe",
"field_1712345678912_qw4er": "jane@example.com",
"field_1712345678923_r4t5y": 5
}
}'Updating status
bashcurl -X PATCH https://gatherino.com/api/v1/submissions/sub_01HA.../status \
-H "Authorization: Bearer gs_live_..." \
-H "Content-Type: application/json" \
-d '{ "status": "COMPLETED" }'Errors
The API uses standard HTTP status codes:
400— malformed request401— missing or invalid API key403— key is valid but lacks permission for this resource404— form or submission not found422— validation error (body includes field-level messages)429— rate limit exceeded500— something went wrong on our side; safe to retry after a short delay
Versioning
The current version is v1, reflected in the URL path. Breaking changes will ship under a new version prefix; additive changes (new optional fields, new endpoints) may be rolled into v1.