Get a form
get_formOne form with its public_url, publish state and config. config is the editable version: the unpublished draft when there is one (config_source "draft"), else the live config. update_form takes an edited copy of all of config, with expected_updated_at = updated_at. When is_live is false the public link opens an empty form, so it is not ready to share. Webhooks and HubSpot are not part of the config: they are listed apart in destinations (with their ids, secrets masked) and changed with set_destinations.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"form_id": "<form_id>"
},
"name": "get_form"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes | The form id, from list_forms or get_form. | |
| workspace_id | No | The workspace this call acts in: an id from list_my_workspaces. Required for a person signed in with several workspaces and for staff of this deployment; optional with an API key or with only one workspace. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | Yes | ||
| slug | Yes | ||
| config | Yes | The config to edit and send back whole. | |
| is_live | Yes | False when the live version has no steps: the form was never published with a question, so public_url opens an empty form and is not ready to share until publish_form makes a draft live. Null when unknown. | |
| folder_id | Yes | ||
| workspace | Yes | The workspace this call acted in, to compare with the one the user means. | |
| created_at | Yes | ||
| editor_url | Yes | The form in the dForms editor. | |
| public_url | Yes | The exact link respondents open, to give to the user as returned (form links are not built by hand). Null when this deployment has no public address. | |
| updated_at | Yes | Version stamp (epoch ms): the value expected_updated_at takes on update_form and publish_form. | |
| live_config | No | Only when a draft is pending: what respondents see right now. | |
| destinations | Yes | Where responses go now (webhooks and HubSpot), as stored on the live form, each with its id; signing secrets masked. The list set_destinations starts from: send it back whole with your change, a masked secret unchanged to keep it. | |
| config_source | Yes | ||
| live_step_count | Yes | How many steps the live version has: what public_url serves now. Null when unknown. | |
| last_published_at | Yes | When publish_form last made a draft live. Null when publish_form never ran: the form serves what it was created with, which is an empty form when is_live is false. | |
| has_unpublished_draft | Yes | True when edits were saved with update_form but not published yet. The public form does not show them. | |
| previous_published_at | Yes | When the version revert_form would bring back went live. Null when there is nothing to revert to. | |
| connected_destinations | Yes | How many webhooks and HubSpot connections the form has (the length of destinations). |