Forms API

Bramble Forms: forms with pages, fields and logic; collaborators; publishing; responses with file uploads, summaries and CSV export; links from responses to records in other apps; and the public endpoints people fill forms in with. Works with an API key.

Address
https://<your-org>.brambleit.cloud/api
Sign-in
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Address
https://<your-org>.brambleit.cloud/forms
Sign-in
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Endpoints
30
OpenAPI
forms.json
Guides
How Forms works

Public forms are filled in at /forms/f/<slug>, which uses the public endpoints here (no sign-in, unless the form requires it). Each response can start a flow (forms.response.submitted).

Resources

Forms

Creating and editing forms (pages, fields, logic), publishing and closing them, and statistics.

MethodPathSummary
GET/v1/app/forms/formsList this tenant's forms with response counts
POST/v1/app/forms/formsCreate a draft form with one default page
GET/v1/app/forms/forms/:idFull structure for the builder (pages, fields, logic)
PUT/v1/app/forms/forms/:id/structureBulk save: replaces pages/fields/logic in one transaction (delete-then-reinsert)
PATCH/v1/app/forms/forms/:idUpdate title/description/status/require_login/theme
DELETE/v1/app/forms/forms/:idSoft delete
POST/v1/app/forms/forms/:id/publishGo live at /f/:slug
POST/v1/app/forms/forms/:id/closeStop accepting new responses
GET/v1/app/forms/forms/:id/statsResponse dashboard stat tiles
GET/v1/app/forms/forms/:id/summaryPer-question breakdown for the responses "Summary" tab: option counts for choice-type fields, top keywords for free-text ones

Responses

Responses, their uploaded files, summaries, CSV export, and links from a response to a record in another app.

MethodPathSummary
GET/v1/app/forms/forms/:id/submissionsPaginated list
GET/v1/app/forms/forms/:id/submissions/exportCSV export (register before the :subId route below so "export" isn't parsed as a submission id)
GET/v1/app/forms/forms/:id/submissions/:subIdFull detail
DELETE/v1/app/forms/forms/:id/submissionsBulk delete, body: { ids: [1,2,3] }
DELETE/v1/app/forms/forms/:id/submissions/:subIdSingle delete
GET/v1/app/forms/forms/:id/uploads/:uploadIdAuth-gated file-answer download
GET/v1/app/forms/forms/:id/submissions/:subId/linksA response's links to other records
POST/v1/app/forms/forms/:id/submissions/:subId/linksLink a response to a record in another app
DELETE/v1/app/forms/forms/:id/submissions/:subId/links/:linkIdRemove a link
POST/v1/app/forms/forms/linksSame as the nested create above, but keyed by submission_id alone (no form_id needed in the URL)
GET/v1/app/forms/forms/links/for-targetThe reverse lookup, called from BRM-Project/BRM-ToDo to show what submissions link to a given work package/task

Collaborators

Who else can edit a form and see its responses, and handing a form to a new owner.

MethodPathSummary
GET/v1/app/forms/forms/:id/collaboratorsOwner + current collaborator list
GET/v1/app/forms/forms/:id/collaborators/availableTenant users not already the owner or a collaborator, for the "add collaborator" picker
POST/v1/app/forms/forms/:id/collaboratorsAdd a collaborator. Owner only
DELETE/v1/app/forms/forms/:id/collaborators/:collabIdOwner only
PATCH/v1/app/forms/forms/:id/ownerTransfer ownership. Owner only; the new owner must already be a collaborator (promotes them and drops the old owner down to collaborator, so they don't lose …

Public form endpoints

Reading a published form and submitting a response.

MethodPathSummary
GET/v1/app/forms/public/:slugA published form's structure/theme (404 if draft/closed) optionalAuth so alreadySubmitted can be reported for one-response-per-user forms without requiring t…
POST/v1/app/forms/public/:slug/submitSubmit a response. FormData shape: answers = JSON string { [fieldId]: value|value[] }, plus one file part per file-type field named file_<fieldId>

Images

Images used in forms.

MethodPathSummary
POST/v1/app/forms/imagesUpload a theme background/banner image (multipart, field "image")
GET/v1/app/forms/images/:idPublic, no auth (theme images embedded via <img>/CSS background-image)

Web pages

These return pages for the browser rather than data.

  • GET /
  • GET /builder
  • GET /builder/*
  • GET /responses/*
  • GET /f/*