Overview
Forms allow collecting data from users (including external users without an Obeya Cloud account) and automatically creating items on a board from submissions. The form builder is powered by form.io.
List all forms associated with a board.
GET /api/trpc/forms.list?input={"json":{"boardId":"brd_01HXK5..."}}
Response:
{
"result": {
"data": {
"json": {
"forms": [
{
"id": "frm_01HXK5QJBN3YZXM8KJP2RSNV4C",
"boardId": "brd_01HXK5...",
"name": "Bug Report",
"description": "Submit a bug report",
"status": "published",
"publicUrl": "https://acme.obeya.cloud/forms/frm_01HXK5...",
"submissionCount": 34,
"fieldCount": 8,
"requireAuth": false,
"createdBy": "usr_01HXK5...",
"createdAt": "2026-02-20T10:00:00.000Z",
"updatedAt": "2026-03-10T14:00:00.000Z"
}
]
}
}
}
}
Retrieve a form with its field definitions and column mappings.
GET /api/trpc/forms.get?input={"json":{"id":"frm_01HXK5..."}}
Response:
{
"result": {
"data": {
"json": {
"id": "frm_01HXK5QJBN3YZXM8KJP2RSNV4C",
"boardId": "brd_01HXK5...",
"name": "Bug Report",
"description": "Submit a bug report for the platform",
"status": "published",
"schema": {
"components": [
{
"type": "textfield",
"key": "title",
"label": "Bug Title",
"validate": { "required": true }
},
{
"type": "textarea",
"key": "description",
"label": "Description",
"validate": { "required": true }
},
{
"type": "select",
"key": "severity",
"label": "Severity",
"data": {
"values": [
{ "label": "Critical", "value": "critical" },
{ "label": "Major", "value": "major" },
{ "label": "Minor", "value": "minor" },
{ "label": "Trivial", "value": "trivial" }
]
}
},
{
"type": "file",
"key": "screenshots",
"label": "Screenshots",
"multiple": true
}
]
},
"mappings": [
{ "formField": "title", "columnId": null, "target": "item_name" },
{ "formField": "description", "columnId": null, "target": "item_description" },
{ "formField": "severity", "columnId": "col_01HXK5...", "target": "column" },
{ "formField": "screenshots", "columnId": "col_01HXK6...", "target": "column" }
],
"settings": {
"successMessage": "Thank you! Your bug report has been submitted.",
"redirectUrl": null,
"notifyOnSubmit": ["usr_01HXK5..."],
"groupId": "grp_01HXK5...",
"requireAuth": false,
"allowMultiple": true
},
"publicUrl": "https://acme.obeya.cloud/forms/frm_01HXK5...",
"createdAt": "2026-02-20T10:00:00.000Z"
}
}
}
}
Create a new form linked to a board.
POST /api/trpc/forms.create
Request:
{
"json": {
"boardId": "brd_01HXK5...",
"name": "Feature Request",
"description": "Submit a feature request",
"schema": {
"components": [
{
"type": "textfield",
"key": "title",
"label": "Feature Title",
"validate": { "required": true }
},
{
"type": "textarea",
"key": "description",
"label": "Describe the feature"
},
{
"type": "select",
"key": "priority",
"label": "How important is this?",
"data": {
"values": [
{ "label": "Must have", "value": "critical" },
{ "label": "Nice to have", "value": "low" }
]
}
}
]
},
"mappings": [
{ "formField": "title", "target": "item_name" },
{ "formField": "description", "target": "item_description" },
{ "formField": "priority", "columnId": "col_01HXK5...", "target": "column" }
],
"settings": {
"groupId": "grp_01HXK5...",
"requireAuth": false,
"successMessage": "Thank you for your suggestion!"
}
}
}
POST /api/trpc/forms.update
{
"json": {
"id": "frm_01HXK5...",
"name": "Updated Feature Request Form",
"status": "published"
}
}
| Status | Description |
|---|
draft | Form is not accessible to respondents |
published | Form is live and accepting submissions |
closed | Form is visible but no longer accepting submissions |
POST /api/trpc/forms.delete
{
"json": {
"id": "frm_01HXK5..."
}
}
Deleting a form does not delete items created from its submissions. The items remain on the board.
List Submissions
View submissions for a specific form.
GET /api/trpc/forms.submissions.list?input={"json":{"formId":"frm_01HXK5..."}}
Input Parameters:
| Parameter | Type | Required | Description |
|---|
formId | string | Yes | Form ID |
cursor | string | No | Pagination cursor |
limit | number | No | Results per page (default: 50) |
status | string | No | Filter: new, reviewed, archived |
Response:
{
"result": {
"data": {
"json": {
"submissions": [
{
"id": "sub_01HXK5...",
"formId": "frm_01HXK5...",
"data": {
"title": "Add dark mode support",
"description": "It would be great to have a dark mode option...",
"priority": "critical"
},
"itemId": "itm_01HXK5...",
"status": "new",
"submittedBy": null,
"submittedAt": "2026-03-19T14:30:00.000Z"
}
],
"nextCursor": null
}
}
}
}
The submittedBy field is null for anonymous submissions (when requireAuth is false). When authentication is required, it contains the submitting user’s ID.
Submit a form response. This endpoint is publicly accessible for published forms that do not require authentication.
POST https://acme.obeya.cloud/api/forms/frm_01HXK5.../submit
Content-Type: application/json
{
"title": "Mobile app crashes on login",
"description": "The app crashes when I try to log in with Google OAuth...",
"severity": "critical",
"screenshots": ["file_01HXK5..."]
}
Response:
{
"success": true,
"message": "Thank you! Your bug report has been submitted.",
"submissionId": "sub_01HXK5..."
}