REST API v1
API Documentation
Reform exposes a REST API for creating forms, submitting responses, and retrieving submission data. All requests require an API key.
Authentication
All API requests must include an API key. You can pass it via the Authorization: Bearer header or the x-api-key header. Create a key on the API Keys page.
# Bearer token (recommended)
curl https://reform.onrender.com/api/v1/forms \
-H "Authorization: Bearer fep_live_..."
# x-api-key header
curl https://reform.onrender.com/api/v1/forms \
-H "x-api-key: fep_live_..."Try It Live
Enter your API key to test the GET /api/v1/forms endpoint.
Endpoints
List Forms
List all published forms with submission counts.
Required scope:
forms:readResponse
{
"forms": [
{
"id": "clk...",
"shareId": "cmqv...",
"name": "Customer Feedback Survey",
"description": "...",
"status": "published",
"submissionCount": 42,
"createdAt": "2026-06-20T..."
}
]
}Create Form
Create and publish a new form from a flowchart definition.
Required scope:
forms:writeRequest Body
{
"name": "Newsletter Signup",
"description": "Collect email signups",
"flowchart": {
"nodes": [
{ "id": "n1", "type": "start", "position": {"x":80,"y":240}, "data": {"label":"Start"} },
{ "id": "n2", "type": "field", "position": {"x":360,"y":220}, "data": {"label":"Email","fieldType":"email","required":true} },
{ "id": "n3", "type": "submit", "position": {"x":680,"y":240}, "data": {"label":"Submit"} }
],
"edges": [
{ "id": "e1", "source": "n1", "target": "n2" },
{ "id": "e2", "source": "n2", "target": "n3" }
]
}
}Response
{
"id": "clk...",
"shareId": "cmqv...",
"name": "Newsletter Signup",
"status": "published",
"createdAt": "2026-06-27T..."
}Code Examples
JavaScript / Node.js
const res = await fetch(
'https://reform.onrender.com/api/v1/forms',
{
headers: {
'Authorization':
'Bearer fep_live_...'
}
}
);
const { forms } = await res.json();
console.log(forms);Python
import requests
res = requests.get(
'https://reform.onrender.com/api/v1/forms',
headers={
'Authorization':
'Bearer fep_live_...'
}
)
forms = res.json()['forms']
print(forms)