2 min read
REST API overview
A clean JSON REST API at https://formspring.io/api/v1. Bearer-token auth. Ability-scoped per token. Versioned.
The full machine-readable spec is at /api/v1/openapi.json, and the interactive reference page lives at /api/v1/docs.

Endpoint groups
| Group | Resource |
|---|---|
| Account | GET /me |
| Forms | GET/POST/PUT/DELETE /forms, /forms/{form}/publish, /unpublish, /restore, /force |
| Submissions | GET /forms/{form}/submissions, PUT/DELETE /forms/{form}/submissions/{id}, /bulk, /export, /files/{file} |
| Webhooks | GET/POST/PUT/DELETE /forms/{form}/webhooks/..., /deliveries, /deliveries/{id}/replay |
| Billing | GET /billing/team, /plan, /usage, /subscription, /invoices |
| AI Insights | GET /ai-insights, POST /ai-insights/regenerate |
| Tokens | GET/POST/DELETE /tokens |
Each endpoint lists the ability it requires. See Tokens & abilities →.
Authentication
Pass your token in Authorization: Bearer <token>. See Authentication →.
Versioning
The current version is v1. Backwards-incompatible changes ship as v2 with a separate URL prefix, never as silent breaks to v1. Fields may be added; existing fields and shapes don't change.
Quickstart
TOKEN="..."
# List your forms
curl -H "Authorization: Bearer $TOKEN" \
https://formspring.io/api/v1/forms
# Create a form
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Contact form","notification_emails":["ops@example.com"]}' \
https://formspring.io/api/v1/forms
# Read submissions
curl -H "Authorization: Bearer $TOKEN" \
"https://formspring.io/api/v1/forms/{form_id}/submissions?per_page=50"