Turn any form into a live audio interview
Talkform asks questions aloud, fills structured fields from the conversation, and exports clean JSON for your apps, workflows, and agents.
Talkform asks questions aloud, fills structured fields from the conversation, and exports clean JSON for your apps, workflows, and agents.
Paste a public URL from Typeform, Google Forms, Jotform, or HubSpot, then review an editable draft before testing the interview.
MCP tools, a CLI, JSON schemas, and docs that explain exactly how to configure and consume Talkform.
Every example below is a real Talkform config. Answer one question and watch it land as structured JSON — the same result your app, workflow, or agent receives.
A quick look at the problem, the guided interview, and the structured result Talkform sends downstream.
Import your existing form and compare a guided conversational path with the current experience.
| Dimension | Old wayStatic forms demand attention every screen | New wayTalkform carries the interview and writes the answers |
|---|---|---|
| Steps | Open, read, scan, type, submit | Open, answer aloud, review draft |
| Duration | Respondent reads and types each answer | Evaluate in a controlled pilot |
| Completion | Use as the measured baseline | Compare in an A/B test |
You keep the schema. Talkform owns the interview, extraction, and export.
Describe variables, prompt copy, options, and validation in your config.
Talkform asks one question at a time over live audio and writes the form.
Download JSON locally, or use a configured HTTP API and CLI deployment.
Transcript on the left, live question flow in the middle, captured answers on the right.
Use Talkform from a product UI, backend, terminal, or agent runtime.
Embed the widget in any React product.
Bootstrap sessions and pull exports.
Generate configs and export results.
Expose schemas and templates to coding agents.
Transient session APIs and public Realtime issuance are disabled in hosted production by default. Enable them only after adding a durable session store, a distributed rate limiter, and server authentication; the checked-in process-local implementations are for development and controlled evaluation.
One stable schema so downstream systems can adapt it into plans, CRM records, or onboarding flows.
One schema across the UI, HTTP API, CLI, and MCP resources.
{
"schemaVersion": "1.0",
"formId": "customer-intake",
"sessionId": "session_3e2z1f0c",
"status": "completed",
"completion": {
"required": 5,
"captured": 5,
"percent": 100,
"missingFieldIds": []
},
"currentPrompt": null,
"fields": {
"fullName": "Avery Stone",
"role": "Product Lead",
"goal": [
"upskill_current_job",
"ship_ai_projects"
],
"aiComfort": 4,
"teamContext": "Leading a small product team at a B2B SaaS startup."
},
"transcript": [
{
"speaker": "assistant",
"text": "What should I call you?",
"timestamp": 1
},
{
"speaker": "user",
"text": "Avery Stone.",
"timestamp": 2
}
],
"summary": "Avery leads product at a SaaS startup and wants to ship AI projects for the current role.",
"metadata": {
"model": "gpt-realtime-2.1",
"voice": "marin",
"startedAt": "2026-03-10T12:00:00.000Z"
}
}Published at /schemas/audioform-session-result.json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "AudioformSessionResult",
"type": "object",
"required": [
"schemaVersion",
"formId",
"sessionId",
"status",
"completion",
"fields",
"transcript",
"summary",
"metadata"
],
"properties": {
"schemaVersion": {
"type": "string",
"const": "1.0"
},
"formId": {
"type": "string"
},
"sessionId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"in_progress",
"completed",
"abandoned"
]
},
"completion": {
"type": "object",
"required": [
"required",
"captured",
"percent",
"missingFieldIds"
],
"properties": {
"required": {
"type": "number"
},
"captured": {
"type": "number"
},
"percent": {
"type": "number"
},
"missingFieldIds": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"currentPrompt": {
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"fieldId",
"title",
"detail"
],
"properties": {
"fieldId": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
]
},
"fields": {
"type": "object",
"additionalProperties": true
},
"transcript": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"speaker",
"text",
"timestamp"
],
"properties": {
"id": {
"type": "string"
},
"speaker": {
"type": "string",
"enum": [
"assistant",
"user",
"system"
]
},
"text": {
"type": "string"
},
"timestamp": {
"type": "number"
}
}
}
},
"summary": {
"type": "string"
},
"metadata": {
"type": "object",
"required": [
"model",
"voice",
"startedAt"
],
"properties": {
"model": {
"type": "string"
},
"voice": {
"type": "string"
},
"startedAt": {
"type": "string"
},
"completedAt": {
"type": "string"
}
}
}
}
}The questions people ask first. The full list lives on the FAQ page.
Talkform converts online forms into guided voice interviews. You import a public form or define its fields, Talkform asks each question aloud in the browser, writes the answers into structured fields, and exports the results as clean JSON. It imports Typeform, Google Forms, Jotform, and HubSpot forms, and the browser demo is free to try.
Talkform can turn supported fields from a public form URL into an editable draft, run a guided browser voice or text interview, and export structured JSON.
No. Typing is available without a realtime audio connection and stays in your browser until export. A text-only deployment never requests microphone permission.
The importer recognizes common patterns from Typeform, Google Forms, Jotform, and HubSpot public forms. Complex logic, uploads, payments, widgets, restricted forms, and provider automation may require manual work.
The browser demo and local developer tools are free. The Pro launch plan is $29 per month or $290 per year for 100 voice minutes and 100 hosted handoffs, with hard limits and no automatic overages.