About
Programmatic access to lead-capture (embed) forms: create and update forms, read submissions as they come in, and pull the analytics behind the app’s form dashboards — conversion funnels, traffic sources, engagement time, and lead routing. All operations go through the developer API gateway — one endpoint, called byoperationId. If you haven’t set up a key yet, start with the
Developer API Overview.
Operations
Forms and submissions (READ scope)
Form analytics (READ scope)
Writing forms (WRITE scope)
fieldConfig validationA single-page form uses a flat field array. A multi-step form uses
{ fields, steps, showStepProgress }; each step has a unique id, required
builder-facing name, and optional visitor-facing title, subtitle, and
ctaLabel. Fields point to a page with stepId; an unknown step is rejected.
Two or more steps render the paged experience.Field type is one of text | email | phone | number | dollar | dropdown | multiselect | textarea | checkbox | address | calendar; mapping is
firstName | lastName | fullName | email | phone | address | note | none | customField:<id>; width is full | half | third. Fields may also carry
hideLabel, validation rules, dropdown-to-custom-field option mappings, and
calendarConfig. A calendar field without calendarConfig renders no picker,
so always provide it. At least one field is required and at most one calendar
field is allowed. Malformed entries are rejected with a validation error
naming the field.Styling is a full replacement
styleConfig controls colors, typography, spacing, borders, inputs, buttons,
form width/padding/shadow, dividers, and sanitized custom CSS on both hosted
and embedded forms. Read the current object with getForm, merge locally,
then send the whole result; {} resets defaults. Unknown keys are ignored at
render time, so use the supported key vocabulary in updateForm’s discovery
detail rather than guessing property names.Organization guardForm operations are org-guarded on the
formId (or id on updateForm): a form
outside your organization returns 403 forbidden. listForms and createForm
take no cross-org id — they list / create under your org. See
Authorization for the model.