---
{
  "id": "platform.form.publish-lifecycle-and-sharing",
  "topic": "form",
  "title": "Form publication, sharing, and destructive lifecycle",
  "locale": "en",
  "version": "2026-08-25",
  "summary": "Publishing creates the public snapshot and stable share link; closing, archiving, unarchiving, and permanent deletion have distinct consequences.",
  "content": "A Form is `draft`, `published`, or `closed`; archival is separate. Confirmed `publish_form` requires an active field and creates a `published` revision. The first publish creates a share token; later `publish_form` calls keep that token, so the public URL stays stable. Later edits remain draft-only until another publish; `hasUnpublishedChanges` exposes that gap.\n\n`close_form` stops submissions but preserves data. `reopen_form` requires a published revision and never publishes pending draft changes. Confirmed `regenerate_share_token` rotates the token and invalidates the old URL. `archive_form` hides the Form and forces `closed`; `unarchive_form` only clears archival and remains `closed` until reopened or published.\n\n`delete_form` requires UserConfirm, is irreversible, and only accepts an already archived Form; otherwise runtime returns `invalid_arguments`. It purges Form revision history and permanently deletes the Form. Never describe archive as deletion or imply that deleted history can be restored.\n\nPublic availability follows `opens_at`, `closes_at`, and `max_responses`. Defaults are 50 active Forms per user and 10,000 responses per Form, but runtime configuration wins. Only a successful live result proves a change.\n",
  "aliases": [
    "publish form",
    "republish",
    "share link",
    "close responses",
    "archive form",
    "unarchive form",
    "delete form",
    "unpublished changes"
  ],
  "tags": [
    "form",
    "publish",
    "sharing",
    "lifecycle",
    "deletion"
  ],
  "relatedActions": [
    "arinova.form.get_form",
    "arinova.form.publish_form",
    "arinova.form.close_form",
    "arinova.form.reopen_form",
    "arinova.form.archive_form",
    "arinova.form.unarchive_form",
    "arinova.form.delete_form",
    "arinova.form.regenerate_share_token"
  ],
  "relatedActionPrefixes": [],
  "url": "https://docs.arinova.ai/en/kb/form/publish-lifecycle-and-sharing/"
}
---

A Form is `draft`, `published`, or `closed`; archival is separate. Confirmed `publish_form` requires an active field and creates a `published` revision. The first publish creates a share token; later `publish_form` calls keep that token, so the public URL stays stable. Later edits remain draft-only until another publish; `hasUnpublishedChanges` exposes that gap.

`close_form` stops submissions but preserves data. `reopen_form` requires a published revision and never publishes pending draft changes. Confirmed `regenerate_share_token` rotates the token and invalidates the old URL. `archive_form` hides the Form and forces `closed`; `unarchive_form` only clears archival and remains `closed` until reopened or published.

`delete_form` requires UserConfirm, is irreversible, and only accepts an already archived Form; otherwise runtime returns `invalid_arguments`. It purges Form revision history and permanently deletes the Form. Never describe archive as deletion or imply that deleted history can be restored.

Public availability follows `opens_at`, `closes_at`, and `max_responses`. Defaults are 50 active Forms per user and 10,000 responses per Form, but runtime configuration wins. Only a successful live result proves a change.
