---
title: "Select Form Language"
method: POST
path: "/forms/{session_id}/select-language"
tags: ["Form Widget"]
---

# Select Form Language

`POST /forms/{session_id}/select-language`

Resolve a visitor-selected language and return the first question in that language.

Called by the form widget when the language selector is enabled. The widget
passes either a preset_code (from the configured buttons) or other_text
(free-form input); backend validates against the supported-language set,
falling back to a Haiku language-resolution call if local fuzzy matching fails.

## Path parameters

- `session_id` string, uuid, required

## Request body

- SelectLanguageRequest
  - `preset_code` string, nullable — ISO 639-1 / BCP-47 code from the preset options
  - `other_text` string, nullable — Free-form language name entered via 'Other'

## Response `200`

Successful Response

- SelectLanguageResponse
  - `language_code` string, required
  - `language_name_native` string, required
  - `first_question` FormQuestionData, required
    - `question_text` string, required
    - `answer_format` string, required
    - `options` string[], nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/openintake/apis/fastapi.md) · [All operations](https://skmtc.dev/openintake/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openintake/fastapi/revisions/4a81645b59f6/schema)
