Forms
Restore a version
/v1/forms/{formId}/restoreCopy a published version into the draft. That's its definition, plus its theme overrides if the version recorded them. It doesn't publish. The version's checks come back as they were, whatever the plan. See AI builds and fixes.
Path parameters
formIdstringrequiredThe form's id.
Body
JSON, with Content-Type: application/json.
versionintegerrequiredThe number of the version to restore. Restoring the live version throws away the unpublished changes, and
hasUnpublishedChangesbecomes false.max 9007199254740991
Response
idstringrequiredThe form's id.
brandIdstringrequiredThe brand the form belongs to.
workspaceIdstringrequiredThe workspace the form belongs to.
namestringrequiredThe form's name.
statusenumrequireddraftuntil it's first published, thenpublishedwhile it's live.unpublishedonce it's taken offline; its versions are kept.One of
"draft","published","unpublished"publishedVersionnumber or nullrequiredThe number of the live version. Null if the form was never published.
publishedAtnumber or nullrequiredWhen the latest version was published, in milliseconds since the epoch. Null if never.
hasUnpublishedChangesbooleanrequiredWhether the draft or theme overrides changed since the form was last published.
changedAtnumber or nullrequiredWhen the draft or theme overrides last changed, in milliseconds since the epoch. Null if they were never edited.
partialCapturebooleanrequiredWhether the draft has "Save unfinished responses" on. The webhook event for people who left (
submission.abandoned) needs it, and the plan featurepartialCapturetoo.stepCountintegerrequiredHow many steps the draft has.
-9007199254740991–9007199254740991
blockCountintegerrequiredHow many questions and other blocks the draft has, across all steps.
-9007199254740991–9007199254740991
createdAtnumberrequiredWhen the form was created, in milliseconds since the epoch.
updatedAtnumberrequiredWhen anything about the form last changed, in milliseconds since the epoch.
draftobjectrequiredThe whole form as it is now, unpublished edits included. It holds
stepsin order, thenendings, andsettings, in the same shape asdraftinPATCH /v1/forms/{formId}.themeOverridesobjectrequiredTheme values that override the brand theme for this form.
Show 13 fieldsHide 13 fields
accentstringaccentTextstringbackgroundstringsurfacestringtextstringmutedstringborderstringradiusnumber0–48
buttonRadiusnumber0–48
fontstringheadingFontstringmax 500 chars
backdropstringfontStylesheetstringmax 2000 chars · uri
trackingOverridesobjectrequiredWhether this form fires the brand's Meta and GA4 tracking, and its own Jornaya campaign key.
Show 3 fieldsHide 3 fields
metabooleanrequiredWhether this form fires the brand's Meta Lead, in the browser and through the Conversions API.
ga4booleanrequiredWhether this form fires the brand's GA4
generate_leadevent.jornayaCampaignKeystringThis form's own Jornaya campaign key. Leave it out to use the brand's. It applies while the brand has Jornaya on. A page loads one campaign script, so with two forms on a page the first one's key is used.
picturesarray of objectrequiredPictures AI is making in the background for image choice options after an AI build or fix. If a picture can't be made, or its option was removed or got a picture in the meantime, it drops off this list and the option stays as it is. You can add a picture yourself with
POST /v1/forms/{formId}/images. Publishing while a picture is stillmakingfails like a missing picture would, with a message that it's still coming.Show 4 fieldsHide 4 fields
blockIdstringrequiredThe id of the image choice question.
valuestringrequiredThe
valueof the option the picture is for.statusenumrequiredmakingwhile AI makes the picture.addedonce it's on the option asimageIdin the draft.One of
"making","added"imageIdstring or nullrequiredThe picture's id once it's added. Null while it's being made.
Errors answer with a status and the error shape.