Submit a Reply
Submits a Completed Reply to the live Form Revision of a published Form without a credential, and answers with the stored Reply. Address the Form as the Form Revision read does. The answers are validated against the Form exactly as the Form's own page validates them. The Reply is recorded as filled by an agent, and its Ending is the one the Form's Branches resolve from the answers. Completing it fires the Form's integrations.
organizationRef*||The Organization that owns the Form: the wildcard -, its canonical id, or its slug. Responses always carry the canonical id.
formRef*||The Form, addressed by its public id, the segment its public URL carries, or by its canonical id. The wildcard - is not accepted. Responses always carry the canonical id.
formRevisionRef*unknownThe Revision to submit to: live, the published Revision. No other Revision takes a Reply without a credential.
application/json- body
reply*The Reply to submit. Key the answers by the step keys the live Revision lists, and answer every required question: a submitted Reply is Completed, because nothing can update it afterwards.
OK
application/json- response
answers?The respondent's answers, keyed by the key of the question step each one answers. Read those keys from the Form Revision's steps.
{}attribution?{ "campaign": "", "content": "", "medium": "", "source": "", "term": ""}completeTime?|nullcreateTime?stringdate-time"2026-10-27T12:29:43.925Z"endStepKey?string""followUps?array<>Output only. The Follow-ups the Player Agent added to an AI Funnel's fill, in the order it asked them. Each answer also appears in answers under the Follow-up's key.
[]leadScoring?{ "override": null, "result": null, "scoreTime": null, "state": "pending"}path*string^organizations\/([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)\/forms\/([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)\/revisions\/([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)\/replies\/([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$payment?|What the respondent paid on the Form's Payment Step, or null when the Reply has not paid. Read-only: a write never sets it.
nullrespondent?{ "email": "", "name": "", "sentiment": "neutral"}seenTime?|nullsource?string"web""web""voice""agent"stop?|Output only. Why the Player Agent stopped asking in a Completed AI Funnel Reply's fill. Null for an Incomplete Reply, a Logic Funnel's, and one the Player Agent did not conduct, such as a Voice Mode call or a Reply created through the API.
nullupdateTime?stringdate-time"2026-10-27T12:29:43.925Z"voiceSession?|nullcurl -X POST 'https://getaiform.com/api/v1/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/forms/497f6eca-6276-4993-bfeb-53cbbbba6f08/revisions/live/replies:submit' \ -H 'Content-Type: application/json' \ -d '{ "reply": {}}'{ "answers": {}, "attribution": { "campaign": "", "content": "", "medium": "", "source": "", "term": "" }, "completeTime": null, "createTime": "2026-10-27T12:29:43.925Z", "endStepKey": "", "followUps": [], "leadScoring": { "override": null, "result": null, "scoreTime": null, "state": "pending" }, "path": "string", "payment": null, "respondent": { "email": "", "name": "", "sentiment": "neutral" }, "seenTime": null, "source": "web", "stop": null, "updateTime": "2026-10-27T12:29:43.925Z", "voiceSession": null}List the Replies to a Form Revision GET
Lists the Replies to a Form Revision, most recently created first. A Reply belongs to the Revision it answered, so address every Revision of the Form with the wildcard -. Page with pageSize and the nextPageToken the response carries, and narrow the page with filter and orderBy: filter completeTime:* for the Completed Replies only, and end a custom orderBy with path so pages never repeat or skip a Reply. Needs permission to read the Organization's Replies.
Create a Destination POST
Creates a Destination on the Form, such as the one Zapier creates when a Zap turns on. Only the `zapier:send-reply` kind is accepted, and only for an Organization whose plan includes Zapier. From then on each Completed Reply of the Form is POSTed to the Destination's URL as a Delivery, with retries, pauses, and replay. The server assigns the Destination's path; a URL that answers 410 pauses the Destination. Set validateOnly to check the request, the plan included, without creating anything.