Save and continue

Store partial form answers and resume later with a 14-day token.

Save and continue

When a form has allow_save_continue: true, a submitter can store their in-progress answers and come back later. The server keeps the partial state for 14 days and hands back an opaque partialId you use to restore it.

Both endpoints check that the form exists and that allow_save_continue is enabled. The partialId is bound to one form; a partialId from form A cannot read form B's state.

Save partial state

POSThttps://forms.hep.gg/api/v1/forms/public/:slug/partialPublic
Store partial answers, get a 14-day partialId.

Pass the answers collected so far. Omit partialId to create a new save; pass a partialId from an earlier save to overwrite that same row. Overwriting in place is what keeps autosave from piling up duplicate rows, so reuse the id you got back the first time.

Body
data
objectrequired
The current answers, keyed by field_key, same shape as a submit's data.
currentPageId
stringoptional
Optional. The id of the page the submitter is on, so a resume can land them back there.
partialId
stringoptional
Optional. A partialId from a previous save for this form. When it matches an existing row, that row is updated in place; otherwise a new row is created.
Response (data)
partialId
stringoptional
The token to restore this state. Store it client-side (the hosted page keeps it in localStorage and in a resume URL).
expiresAt
stringoptional
ISO timestamp, 14 days out, after which the state is gone.
curl
curl -X POST https://forms.hep.gg/api/v1/forms/public/my-form/partial \
  -H "Content-Type: application/json" \
  -d '{
        "data": { "your_name": "Ada" },
        "currentPageId": "pg_1"
      }'
200 response
{ "ok": true, "data": { "partialId": "01J...", "expiresAt": "2026-06-12T00:00:00.000Z" } }

If the form does not allow save-and-continue, the call returns 400:

400
{ "ok": false, "error": "This form doesn't support save-and-continue." }

Restore partial state

GEThttps://forms.hep.gg/api/v1/forms/public/:slug/partial/:partialIdPublic
Read back saved answers to resume a form.

Returns the answers and the page the submitter was on so you can rehydrate the form. The partialId must belong to the form named by :slug.

Path
slug
stringrequired
The form slug.
partialId
stringrequired
The id returned by the save call.
Response (data)
data
objectoptional
The saved answers, keyed by field_key.
currentPageId
string | nulloptional
The page id saved with the state, or null.
curl
curl https://forms.hep.gg/api/v1/forms/public/my-form/partial/01J...

Errors

StatusWhenerror
400Form does not allow save-and-continue (save only)This form doesn't support save-and-continue.
404Form not found, or partialId does not belong to this formForm not found / Partial state not found
410The saved state is past its 14-day expiryPartial state has expired