> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userintuition.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Sandbox quickstart

> Test the dashboard, API, and MCP workflows against staging with AI respondents.

The sandbox uses staging data and credentials. Study design, analysis, and report workflows use the staging services. Participant links and the public feedback page are disabled: opening one shows a sandbox message, and the interview API rejects participant entry. Use **Test with AI** to preview an interview.

| Surface | Sandbox URL |
| - | - |
| Dashboard | [sandbox.userintuition.ai](https://sandbox.userintuition.ai) |
| Public API | `https://staging.userintuition.ai` |
| MCP | `https://mcp.sandbox.userintuition.ai/mcp` |

Create a staging API key in the sandbox dashboard under **Manage Account → API Keys**. A production key does not authenticate against staging. For a local MCP client, set `BACKEND_URL=https://staging.userintuition.ai`, `APP_URL=https://sandbox.userintuition.ai`, and `USERINTUITION_API_KEY` to the staging key. For hosted MCP clients, connect to the sandbox MCP URL above and complete its OAuth flow.

## Design and test a study

Create a chat study with synthetic respondents. Send the research brief through Customize Plan, answer any returned `questions`, and review the saved plan. Wait for `provisioning_status` to become `provisioned`.

```sh theme={null}
export UI_API_KEY='ui_sk_...'
export UI_API_BASE='https://staging.userintuition.ai'

curl -fsS "$UI_API_BASE/api/public/v1/studies/" \
  -H "Authorization: Bearer $UI_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Sandbox concept feedback","study_type":"in-depth-interview","recruiting_method":"synthetic_respondents","interview_format":"chat"}'

export UI_STUDY_ID='<id from create response>'
curl -fsS "$UI_API_BASE/api/public/v1/studies/$UI_STUDY_ID/customize-plan" \
  -H "Authorization: Bearer $UI_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"message":"Interview early-stage founders about how they evaluate customer research tools and what evidence earns their trust."}'

curl -fsS "$UI_API_BASE/api/public/v1/studies/$UI_STUDY_ID" \
  -H "Authorization: Bearer $UI_API_KEY"
```

In the dashboard, open **Test Conversation → Test with AI**. This runs one test interview and lets you watch the AI respondent. Test calls are excluded from report sample counts. The public feedback link and **Test it yourself** are unavailable in the sandbox. AI tests are currently unavailable for studies with a concept link.

## Launch three synthetic responses

In **Ready to Launch**, choose **Launch Synthetic Study**. The sandbox starts a batch of **three** AI respondent interviews automatically. This is the minimum report sample; the three-response sandbox batch does not debit credits. Wait for all three to finish and pass interview quality checks. If any response is unusable, launch another synthetic batch from the study dashboard.

The synthetic launch control and Test with AI are dashboard workflows; they are not operations in the stable public API or MCP tool catalog. API and MCP clients can use the staging study design and reporting endpoints before and after those dashboard steps.

## Generate and retrieve the report

Once three usable synthetic responses are complete, open **Dashboard → Reports → Generate Report**, or use the public API (and its `generate_report` MCP equivalent):

```sh theme={null}
curl -fsS -X POST "$UI_API_BASE/api/public/v1/studies/$UI_STUDY_ID/report" \
  -H "Authorization: Bearer $UI_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

export UI_JOB_ID='<job_id from response>'
curl -fsS "$UI_API_BASE/api/public/v1/studies/$UI_STUDY_ID/report/jobs/$UI_JOB_ID" \
  -H "Authorization: Bearer $UI_API_KEY"

curl -fsS "$UI_API_BASE/api/public/v1/studies/$UI_STUDY_ID/report?view=overview" \
  -H "Authorization: Bearer $UI_API_KEY"
```

With fewer than three usable synthetic responses, the sandbox rejects report generation with `insufficient_synthetic_responses`. Fetch `view=full` or a named section for detailed evidence. Keep the same idempotency key when retrying an uncertain report request. See the [API introduction](/api-reference/introduction) for job states and report views.
