Create a focus group
Create a new AI-powered focus group study. Focus groups generate synthetic responses from personas for market research, product feedback, and audience insights.
Pricing: 1 credit per response (minimum 100 credits). Total cost = personas × sample_size × questions.
Processing: Analysis is performed asynchronously. Poll GET /focus-groups/{id} to check status.
curl -X POST https://app.mavera.io/api/v1/focus-groups \
-H "Authorization: Bearer mvra_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Product Feedback Study",
"sample_size": 50,
"persona_ids": ["persona_id_1", "persona_id_2"],
"questions": [
{
"question": "How likely are you to recommend this product?",
"type": "net_promoter_score"
},
{
"question": "What features do you value most?",
"type": "multiple_choice_multiple",
"options": ["Price", "Quality", "Design", "Brand"]
}
]
}'import requests
headers = {"Authorization": "Bearer mvra_live_your_key_here"}
response = requests.post(
"https://app.mavera.io/api/v1/focus-groups",
headers=headers,
json={
"name": "Product Feedback Study",
"sample_size": 50,
"persona_ids": ["persona_id_1", "persona_id_2"],
"questions": [
{"question": "How likely are you to recommend?", "type": "net_promoter_score"},
{"question": "What features matter?", "type": "multiple_choice_multiple", "options": ["Price", "Quality"]}
]
}
)
focus_group = response.json()
print(f"Focus group created: {focus_group['id']}")
print(f"Credits charged: {focus_group['credits_charged']}")const response = await fetch("https://app.mavera.io/api/v1/focus-groups", {
method: "POST",
headers: {
"Authorization": "Bearer mvra_live_your_key_here",
"Content-Type": "application/json"
},
body: JSON.stringify({
name: "Product Feedback Study",
sample_size: 50,
persona_ids: ["persona_id_1", "persona_id_2"],
questions: [
{ question: "How likely are you to recommend?", type: "net_promoter_score" },
{ question: "What features matter?", type: "multiple_choice_multiple", options: ["Price", "Quality"] }
]
})
});
const focusGroup = await response.json();
console.log("Focus group created:", focusGroup.id);package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.mavera.io/api/v1/focus-groups"
payload := strings.NewReader("{\n \"name\": \"Product Feedback Study Q1 2026\",\n \"sample_size\": 50,\n \"persona_ids\": [\n \"clx1abc2d0001abcdef123456\",\n \"clx1abc2d0002abcdef789012\"\n ],\n \"questions\": [\n {\n \"question\": \"How likely are you to recommend this product to a friend?\",\n \"type\": \"net_promoter_score\",\n \"options\": [\n \"Very Satisfied\",\n \"Satisfied\",\n \"Neutral\",\n \"Dissatisfied\"\n ],\n \"config\": {\n \"min_value\": 123,\n \"max_value\": 123,\n \"min_label\": \"<string>\",\n \"max_label\": \"<string>\",\n \"likert_labels\": [\n \"<string>\"\n ],\n \"left_label\": \"<string>\",\n \"right_label\": \"<string>\",\n \"scale_points\": 123,\n \"matrix_rows\": [\n \"<string>\"\n ],\n \"matrix_columns\": [\n \"<string>\"\n ],\n \"attributes\": [\n \"<string>\"\n ],\n \"rating_scale\": 123,\n \"max_length\": 123\n },\n \"description\": \"<string>\",\n \"is_required\": true\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "cly2xyz3e0001efghij456789",
"object": "focus_group",
"status": "pending",
"created_at": 1706380800,
"name": "Product Feedback Study Q1 2026",
"sample_size": 50,
"credits_charged": 500,
"personas": [
{
"id": "<string>",
"name": "<string>"
}
],
"questions": [
{
"id": "<string>",
"question": "<string>",
"type": "<string>",
"options": [
"<string>"
],
"order": 123
}
]
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}Authorizations
API key prefixed with mvra_live_. Create keys at Settings > Developer > API Keys.
Body
Name/title for the focus group study.
3 - 100"Product Feedback Study Q1 2026"
Number of responses to generate per persona per question.
1 <= x <= 50050
Array of persona IDs to participate in the focus group. Get persona IDs from GET /personas.
1 - 20 elements[ "clx1abc2d0001abcdef123456", "clx1abc2d0002abcdef789012" ]
Array of questions for the focus group.
1 - 50 elementsShow child attributes
Show child attributes
Response
Focus group created and processing started.
Unique focus group ID.
"cly2xyz3e0001efghij456789"
focus_group "focus_group"
Current processing status.
pending, generating, completed, failed "pending"
Unix timestamp of creation.
1706380800
"Product Feedback Study Q1 2026"
50
Total credits charged for this focus group.
500
Show child attributes
Show child attributes
Show child attributes
Show child attributes
curl -X POST https://app.mavera.io/api/v1/focus-groups \
-H "Authorization: Bearer mvra_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Product Feedback Study",
"sample_size": 50,
"persona_ids": ["persona_id_1", "persona_id_2"],
"questions": [
{
"question": "How likely are you to recommend this product?",
"type": "net_promoter_score"
},
{
"question": "What features do you value most?",
"type": "multiple_choice_multiple",
"options": ["Price", "Quality", "Design", "Brand"]
}
]
}'import requests
headers = {"Authorization": "Bearer mvra_live_your_key_here"}
response = requests.post(
"https://app.mavera.io/api/v1/focus-groups",
headers=headers,
json={
"name": "Product Feedback Study",
"sample_size": 50,
"persona_ids": ["persona_id_1", "persona_id_2"],
"questions": [
{"question": "How likely are you to recommend?", "type": "net_promoter_score"},
{"question": "What features matter?", "type": "multiple_choice_multiple", "options": ["Price", "Quality"]}
]
}
)
focus_group = response.json()
print(f"Focus group created: {focus_group['id']}")
print(f"Credits charged: {focus_group['credits_charged']}")const response = await fetch("https://app.mavera.io/api/v1/focus-groups", {
method: "POST",
headers: {
"Authorization": "Bearer mvra_live_your_key_here",
"Content-Type": "application/json"
},
body: JSON.stringify({
name: "Product Feedback Study",
sample_size: 50,
persona_ids: ["persona_id_1", "persona_id_2"],
questions: [
{ question: "How likely are you to recommend?", type: "net_promoter_score" },
{ question: "What features matter?", type: "multiple_choice_multiple", options: ["Price", "Quality"] }
]
})
});
const focusGroup = await response.json();
console.log("Focus group created:", focusGroup.id);package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.mavera.io/api/v1/focus-groups"
payload := strings.NewReader("{\n \"name\": \"Product Feedback Study Q1 2026\",\n \"sample_size\": 50,\n \"persona_ids\": [\n \"clx1abc2d0001abcdef123456\",\n \"clx1abc2d0002abcdef789012\"\n ],\n \"questions\": [\n {\n \"question\": \"How likely are you to recommend this product to a friend?\",\n \"type\": \"net_promoter_score\",\n \"options\": [\n \"Very Satisfied\",\n \"Satisfied\",\n \"Neutral\",\n \"Dissatisfied\"\n ],\n \"config\": {\n \"min_value\": 123,\n \"max_value\": 123,\n \"min_label\": \"<string>\",\n \"max_label\": \"<string>\",\n \"likert_labels\": [\n \"<string>\"\n ],\n \"left_label\": \"<string>\",\n \"right_label\": \"<string>\",\n \"scale_points\": 123,\n \"matrix_rows\": [\n \"<string>\"\n ],\n \"matrix_columns\": [\n \"<string>\"\n ],\n \"attributes\": [\n \"<string>\"\n ],\n \"rating_scale\": 123,\n \"max_length\": 123\n },\n \"description\": \"<string>\",\n \"is_required\": true\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "cly2xyz3e0001efghij456789",
"object": "focus_group",
"status": "pending",
"created_at": 1706380800,
"name": "Product Feedback Study Q1 2026",
"sample_size": 50,
"credits_charged": 500,
"personas": [
{
"id": "<string>",
"name": "<string>"
}
],
"questions": [
{
"id": "<string>",
"question": "<string>",
"type": "<string>",
"options": [
"<string>"
],
"order": 123
}
]
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}