New studies start as
draft. studies.publish opens a study, and studies.pause stops admitting participants and unlocks editing.
1. Create the study
Create it directly with the fields you already have:survey_type is one of sociology (the default), user_experience, customer_development or polling. model_tier is one of open_weights (the default), standard or premium.
Or draft it with AI
studies.draft turns a short brief into study fields, and studies.draft_from_site does the same from a product landing page. Neither stores anything, so review the draft and pass its fields to create:
survey_type reads a different set of brief fields. See draft for which are required.
Drafting is a model call that usually takes 20–40 seconds. Keep the client timeout at its 120-second default or higher.
2. Configure what participants see
Participants go through these stages in order. Each is optional except the questions.1
Welcome and consent
client.welcome.generate(study.id). Fill in any placeholders the draft lists, then save it with set. Add translations with upsert_translation.2
Screening
Qualifying multiple-choice questions. Participants whose answers aren’t in
acceptable_options are disqualified.3
Characteristics
Participant attributes you’ll segment by later.
4
Interview questions
Write them, generate them, or both. Generated questions are appended, never replacing what’s there.For branching interviews, author a flow instead. See Interview flows.
Question types
If you omitqtype, it’s inferred from the config you pass:
Set
qtype explicitly for multi_select, ranking and card_sort (which uses groups). image_upload needs the standard or premium model tier.
3. Validate
studies.validate checks everything participants will read (questions or flow, welcome, screening and characteristics) and records the result. Each issue has a severity:
- Ethical and blocking issues must be fixed before publishing.
- Methodological issues can be acknowledged.
questions.validate.
4. Publish
publish checks your plan’s open-study limit, your credits and the latest validation. If anything blocks it, it raises ConflictError, with the refusal code, the issues and the validation_run_id in e.body.
acknowledge_credit_shortfall=True to publish anyway.
Check where a study stands at any time with get_publication:
5. Pause and edit
An open study’s interview configuration is locked. Pause it to make changes, then publish again to reopen:6. Monitor
stats counts simulated interviews and test runs separately, in simulated_interviews and test_interviews..png?fit=max&auto=format&n=G_hwo_L4hZsQ93vT&q=85&s=c00b6042d4688a9b776bae65a530206a)