Import existing forms

Paste a public URL from Typeform, Google Forms, Jotform, or HubSpot, then review an editable draft before testing the interview.

Developer-first integrations

MCP tools, a CLI, JSON schemas, and docs that explain exactly how to configure and consume Talkform.

Try it live

Pick a use case. Hear the interview.

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.

Run the full live demo →Explore all use casesPick a use case, answer aloud, and watch the structured result build.
38-second product story

See the form become a conversation

A quick look at the problem, the guided interview, and the structured result Talkform sends downstream.

Explore feedback, onboarding, and personalization

Old way vs. new way

Import your existing form and compare a guided conversational path with the current experience.

Comparison of a static form against a guided Talkform audio interview
DimensionOld wayStatic forms demand attention every screenNew wayTalkform carries the interview and writes the answers
StepsOpen, read, scan, type, submitOpen, answer aloud, review draft
DurationRespondent reads and types each answerAnswer, review, and continue
CompletionUse as the measured baselineMeasure what people complete

How it works

You keep the schema. Talkform owns the interview, extraction, and export.

1

Define the fields

Describe variables, prompt copy, options, and validation in your config.

2

Run the interview

Talkform asks one question at a time over live audio and writes the form.

3

Export the result

Download JSON locally, or use a configured HTTP API and CLI deployment.

The surface

Transcript on the left, live question flow in the middle, captured answers on the right.

Transcript
Prompt canvas
Lock the learner identity
Ask for the person's name first, confirm it, and keep the interview moving one question at a time.
NameRoleGoalsAI comfort
Form answers

Integrations

Use Talkform from a product UI, backend, terminal, or agent runtime.

R

React

Embed the widget in any React product.

API

HTTP API

Bootstrap sessions and pull exports.

CLI

CLI

Generate configs and export results.

MCP

MCP

Expose schemas and templates to coding agents.

Hosted API boundary

Hosted text handoffs are bounded per project, with 7-day respondent links and 7-day completed-result access. Voice is optional under shared limits. The public demo remains browser-local, and availability can vary while the hosted workflow matures.

Legacy process-local session routes are disabled in hosted production by default. Enabling those reference routes requires a durable session store, a distributed rate limit, and server authentication.

Canonical result

One stable schema so downstream systems can adapt it into plans, CRM records, or onboarding flows.

AudioformSessionResult

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"
  }
}

Schema availability

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"
        }
      }
    }
  }
}

Quick answers

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.

What does Talkform do today?

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.

Is microphone access required?

No. Typing is available without a realtime audio connection and stays in your browser until export. A text-only deployment never requests microphone permission.

Which form providers can Talkform import?

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.

How much does Talkform cost?

Talkform is free for up to 100 hosted text handoffs per day per project. Respondent links and completed results are available for 7 days; voice is optional under shared limits.