Create request
request_createCreate a request: one assignment of a published form to one named recipient, with its own link, prefilled answers, expiry and optional callback. Use it when you need answers from a specific person and want to know whether they answered; for a link anyone may fill, use formShareLink_create. Call fields_list(formId) first — prefill/context/readonly take field keys. Returns { id, status, url, deliveryStatus, expiresAt, next }. Track with request_get, withdraw with request_cancel. See load_skill("requests").
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| test | No | Dry run. No invitation or reminder email whatever delivery says; the link still opens and can be completed; the callback fires with "test": true; the request is hidden from the Requests page and analytics by default and its submission counts nowhere (no quota, no exports, no integrations). | |
| formId | Yes | Published form to send. Call fields_list(formId) first for its keys. | |
| context | No | Values for HIDDEN fields, keyed by field key: { "crm_id": "A-42" }. Only hidden-field keys (fields_list context: true); use metadata for others. Recipient cannot edit them, but sees mentioned ones. | |
| prefill | No | Starting answers for visible questions, keyed by field key. Shapes: string, number, "2026-03-01", "09:30", option KEY not label (see fields_list options), string[] of option keys (checkbox/ranking/picture-choice), { "row_key": "column_key" } (matrix), [{ "member_key": value }] (repeating group). | |
| delivery | No | "none" (default) returns the link for you to deliver; "email" sends the invitation (needs recipient.email, Pro+). | |
| domainId | No | Mint the link on this custom domain; formShareLink_list returns the ids as availableCustomDomains. | |
| language | No | Published language tag the form opens in and the invitation is written in, e.g. "fr". Omit for the form default. The recipient can switch to any published language. | |
| metadata | No | Opaque JSON echoed on request_get and in the callback. | |
| readonly | No | Field keys the recipient may not edit. Each must also be in prefill. | |
| documents | No | Files for this one recipient, added below the block’s authored documents. See document_create. | |
| expiresAt | No | Epoch ms when the link dies. Default 30 days, max 365. | |
| recipient | No | Who this is for, e.g. { "email": "ada@acme.com", "name": "Ada" }. | |
| reminders | No | Idle-time offsets, e.g. ["2d","5d"] (max 5, units m/h/d). Omit to inherit the form schedule, [] for none. Needs recipient.email (Pro+). | |
| externalId | No | Your own id; request_list filters on it. | |
| callbackUrl | No | Public https endpoint POSTed on completion, expiry and cancellation, signed with X-formbase-Signature. Private and loopback addresses are refused. | |
| idempotencyKey | No | Retry-safe key, workspace-scoped for 30 days. Same key + same body returns the original request; a different body is a conflict. |