Audio-first forms

Turn any form into a live audio interview

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 asks questions aloud, fills structured fields from the conversation, and exports clean JSON for your apps, workflows, and agents.

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.

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 answerEvaluate in a controlled pilot
CompletionUse as the measured baselineCompare in an A/B test

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

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.

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.

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?

Public pricing is not yet published. You can try the browser demo and public-form importer today; plan limits will be published before self-serve charging begins.