API reference · Forms
Forms and submissions
/formsList forms
Lists published forms by default. Authorized form managers can include drafts.
- Required scope
forms:read- Success
200- Response
Page<FormObject>
Parameters
include_draftsquerybooleanInclude draft and archived forms. Defaults to false.
Example request
curl -X GET "https://api.getclassflow.com/partner/v1/forms" \
-H "X-ClassFlow-Key: $CLASSFLOW_API_KEY"Example response
{
"object": "list",
"data": [{
"id": "9fc7be37-507a-46f6-a9a2-85fda0ac7342",
"object": "form",
"title": "Child-care interest",
"slug": "child-care-interest",
"fields": [
{ "key": "child_care_help", "label": "Would child care help you visit JUX?", "type": "select", "options_layout": "buttons", "options": ["Yes", "Maybe", "No", "Not now"], "required": true },
{ "key": "child_count", "label": "Number of children", "type": "select", "options": ["1", "2", "3+"], "display_when": { "field_key": "child_care_help", "op": "in", "value": ["Yes", "Maybe"] } }
],
"settings": { "confirmation_message": "Thanks — we saved your answers." },
"status": "published"
}],
"has_more": false,
"next_cursor": null
}/formsCreate a form
Creates a draft or published studio form through the canonical form service.
- Required scope
forms:write- Success
201- Response
FormObject
Request body
Send a JSON object matching PartnerFormCreate.
{
"title": "Child-care interest",
"slug": "child-care-interest",
"status": "published",
"fields": [
{
"key": "child_care_help",
"label": "Would child care help you visit JUX?",
"type": "select",
"required": true,
"options_layout": "buttons",
"options": ["Yes", "Maybe", "No", "Not now"]
},
{
"key": "child_count",
"label": "Number of children",
"type": "select",
"options": ["1", "2", "3+"],
"display_when": {
"field_key": "child_care_help",
"op": "in",
"value": ["Yes", "Maybe"]
}
}
]
}Example request
curl -X POST "https://api.getclassflow.com/partner/v1/forms" \
-H "X-ClassFlow-Key: $CLASSFLOW_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"title": "Child-care interest",
"slug": "child-care-interest",
"status": "published",
"fields": [
{
"key": "child_care_help",
"label": "Would child care help you visit JUX?",
"type": "select",
"required": true,
"options_layout": "buttons",
"options": ["Yes", "Maybe", "No", "Not now"]
},
{
"key": "child_count",
"label": "Number of children",
"type": "select",
"options": ["1", "2", "3+"],
"display_when": {
"field_key": "child_care_help",
"op": "in",
"value": ["Yes", "Maybe"]
}
}
]
}'Example response
{
"id": "9fc7be37-507a-46f6-a9a2-85fda0ac7342",
"object": "form",
"title": "Child-care interest",
"slug": "child-care-interest",
"fields": [
{ "key": "child_care_help", "label": "Would child care help you visit JUX?", "type": "select", "options_layout": "buttons", "options": ["Yes", "Maybe", "No", "Not now"], "required": true },
{ "key": "child_count", "label": "Number of children", "type": "select", "options": ["1", "2", "3+"], "display_when": { "field_key": "child_care_help", "op": "in", "value": ["Yes", "Maybe"] } }
],
"settings": { "confirmation_message": "Thanks — we saved your answers." },
"status": "published"
}/forms/{form_id}Update a form
Replaces supplied form properties while preserving the studio and form identity.
- Required scope
forms:write- Success
200- Response
FormObject
Parameters
form_idpathrequireduuidThe stable ClassFlow identifier for the form.
Request body
Send a JSON object matching StudioFormUpdate.
{
"status": "published",
"settings": {
"confirmation_message": "Thanks — we saved your answers."
}
}Example request
curl -X PUT "https://api.getclassflow.com/partner/v1/forms/YOUR_FORM_ID" \
-H "X-ClassFlow-Key: $CLASSFLOW_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"status": "published",
"settings": {
"confirmation_message": "Thanks — we saved your answers."
}
}'Example response
{
"id": "9fc7be37-507a-46f6-a9a2-85fda0ac7342",
"object": "form",
"title": "Child-care interest",
"slug": "child-care-interest",
"fields": [
{ "key": "child_care_help", "label": "Would child care help you visit JUX?", "type": "select", "options_layout": "buttons", "options": ["Yes", "Maybe", "No", "Not now"], "required": true },
{ "key": "child_count", "label": "Number of children", "type": "select", "options": ["1", "2", "3+"], "display_when": { "field_key": "child_care_help", "op": "in", "value": ["Yes", "Maybe"] } }
],
"settings": { "confirmation_message": "Thanks — we saved your answers." },
"status": "published"
}/forms/{form_id}Retrieve a form
Returns one form definition, including fields, conditions, settings, and status.
- Required scope
forms:read- Success
200- Response
FormObject
Parameters
form_idpathrequireduuidThe stable ClassFlow identifier for the form.
Example request
curl -X GET "https://api.getclassflow.com/partner/v1/forms/YOUR_FORM_ID" \
-H "X-ClassFlow-Key: $CLASSFLOW_API_KEY"Example response
{
"id": "9fc7be37-507a-46f6-a9a2-85fda0ac7342",
"object": "form",
"title": "Child-care interest",
"slug": "child-care-interest",
"fields": [
{ "key": "child_care_help", "label": "Would child care help you visit JUX?", "type": "select", "options_layout": "buttons", "options": ["Yes", "Maybe", "No", "Not now"], "required": true },
{ "key": "child_count", "label": "Number of children", "type": "select", "options": ["1", "2", "3+"], "display_when": { "field_key": "child_care_help", "op": "in", "value": ["Yes", "Maybe"] } }
],
"settings": { "confirmation_message": "Thanks — we saved your answers." },
"status": "published"
}/forms/{form_id}/submissionsList form submissions
Lists submissions for one studio-owned form.
- Required scope
form_submissions:read- Success
200- Response
Page<FormSubmissionObject>
Parameters
form_idpathrequireduuidThe stable ClassFlow identifier for the form.
cursorqueryuuidOpaque cursor returned by the previous page. Pass it back unchanged.
limitqueryintegerNumber of records to return. Defaults to 50; maximum 200.
Example request
curl -X GET "https://api.getclassflow.com/partner/v1/forms/YOUR_FORM_ID/submissions" \
-H "X-ClassFlow-Key: $CLASSFLOW_API_KEY"Example response
{
"object": "list",
"data": [{
"id": "8350c2ed-aee7-4f52-8745-45765f899518",
"object": "form_submission",
"form_id": "9fc7be37-507a-46f6-a9a2-85fda0ac7342",
"submitter_email": "randy@example.com",
"data": {
"child_care_help": "Yes",
"child_count": "2"
},
"status": "pending",
"created_at": "2026-08-02T20:35:00Z"
}],
"has_more": false,
"next_cursor": null
}/forms/{form_id}/submissionsCreate a form submission
Validates and stores answers through the same submission flow used by the widget.
- Required scope
form_submissions:write- Success
201- Response
FormSubmissionObject
Parameters
form_idpathrequireduuidThe stable ClassFlow identifier for the form.
Request body
Send a JSON object matching FormSubmissionCreate.
{
"submitter_name": "Randy Example",
"submitter_email": "randy@example.com",
"data": {
"child_care_help": "Yes",
"child_count": "2",
"age_ranges": ["1–2", "3–5"]
}
}Example request
curl -X POST "https://api.getclassflow.com/partner/v1/forms/YOUR_FORM_ID/submissions" \
-H "X-ClassFlow-Key: $CLASSFLOW_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"submitter_name": "Randy Example",
"submitter_email": "randy@example.com",
"data": {
"child_care_help": "Yes",
"child_count": "2",
"age_ranges": ["1–2", "3–5"]
}
}'Example response
{
"id": "8350c2ed-aee7-4f52-8745-45765f899518",
"object": "form_submission",
"form_id": "9fc7be37-507a-46f6-a9a2-85fda0ac7342",
"submitter_email": "randy@example.com",
"data": {
"child_care_help": "Yes",
"child_count": "2"
},
"status": "pending",
"created_at": "2026-08-02T20:35:00Z"
}/forms/{form_id}/submissions/{submission_id}Retrieve a form submission
Returns one submission only when both the form and submission belong to the credential’s studio.
- Required scope
form_submissions:read- Success
200- Response
FormSubmissionObject
Parameters
form_idpathrequireduuidThe stable ClassFlow identifier for the form.
submission_idpathrequireduuidThe stable ClassFlow identifier for the submission.
Example request
curl -X GET "https://api.getclassflow.com/partner/v1/forms/YOUR_FORM_ID/submissions/YOUR_SUBMISSION_ID" \
-H "X-ClassFlow-Key: $CLASSFLOW_API_KEY"Example response
{
"id": "8350c2ed-aee7-4f52-8745-45765f899518",
"object": "form_submission",
"form_id": "9fc7be37-507a-46f6-a9a2-85fda0ac7342",
"submitter_email": "randy@example.com",
"data": {
"child_care_help": "Yes",
"child_count": "2"
},
"status": "pending",
"created_at": "2026-08-02T20:35:00Z"
}Object schema
FormObject
fields[].keystringStable answer key used in submissions and conditional rules.
fields[].typeenumtext, textarea, number, email, phone, date, select, checkbox, checkbox_group, signature, file_upload, address, rating, section_break, or consent.
fields[].display_whenConditionalRule | nullOptional field_key, operator, and value rule controlling visibility.
fields[].step_indexinteger | nullOptional multi-step grouping.
settingsFormSettingsAuthentication, notifications, confirmation, and redirect behavior.
statusdraft | published | archivedPublishing state.