The survey embedded experiment combines the embedded experiment framework with custom survey questions. Raters view content rendered by your JavaScript code and then answer survey questions about it. Unlike the embedded rubric experiment where raters respond to statements on a fixed agreement scale, the survey experiment supports open-ended text responses, single-choice (radio), and multiple-choice (checkbox) questions.
This is useful when you need qualitative or structured feedback about dynamically generated content, such as asking raters to describe their experience, identify issues, or classify content attributes.
For details on how to create datasets with JavaScript-based stimuli, see the embedded experiments documentation.

You can configure up to 10 survey questions per experiment. Each question requires a kind (the question type), a question (the prompt), and a dimension (a short label used to identify the question in the results).
Three question types are supported:
| Kind | Description |
|---|---|
textarea | An open-ended text response field. |
radio | A single-choice question where the rater selects one option. |
checkbox | A multiple-choice question where the rater selects one or more options. |
For radio and checkbox questions, you must also provide a list of choices. For checkbox questions, you can optionally set minSelect and maxSelect to constrain the number of selections.
If your embedded content includes audio, you can enable this option so that audio is not muted during the experiment.
You can optionally set a fixed width and height (in pixels) for the iframe in which your JavaScript content is rendered. If not set, the iframe will use a default size.
Below is an example configuration to get you started when using our API to create a survey embedded experiment.
config = {
"surveyEmbed": {
"survey": [
{
"kind": "textarea",
"dimension": "Overall",
"question": "How do you feel about the content?",
},
{
"kind": "radio",
"dimension": "Realism",
"question": "How realistic does the content look?",
"choices": [
{"label": "Very realistic"},
{"label": "Somewhat realistic"},
{"label": "Not realistic"},
],
},
],
"hasAudio": False,
},
}