Submit a Response

Send answers against a published flow version, with optional identity, metadata, and request context.

Last reviewed

Submit a Response

Most API-based integrations follow the same sequence:

  1. resolve the current published flowVersionId
  2. collect the answers in your own UI
  3. submit against response.submit

Endpoint

POST /api/v1/{apiKey}/trpc/response.submit

Logical input shape

The submission payload is built around these fields:

{
  "flowVersionId": "flv_123",
  "answers": {
    "question_1": "Very satisfied",
    "question_2": ["fast", "clear"]
  },
  "identities": [
    { "type": "userId", "value": "user_123" },
    { "type": "traits.email", "value": "user@example.com" }
  ],
  "metadata": {
    "tags": {
      "source": "billing-page"
    }
  },
  "context": {
    "page": {
      "path": "/settings/billing",
      "referrer": "/settings",
      "search": "?plan=pro"
    },
    "locale": "en-AU",
    "userAgent": "Mozilla/5.0"
  }
}

If you are calling the endpoint directly, send this logical input through the standard tRPC transport for response.submit.

Failure cases worth planning for

  • Flow version not found. means the flowVersionId is unknown or no longer available.
  • This survey version is no longer accepting responses... means the version is older than the allowed grace window after a newer publish.

When in doubt, resolve the latest published version again before retrying.