/api/v1/projects/{project_id}/persona-groups
Endpoints
| Method | Path | Auth | Description |
|---|---|---|---|
POST | .../persona-groups/parse-prompt | Yes | Convert a natural language description into group fields |
GET | .../persona-groups | Yes | List all persona groups in a project |
POST | .../persona-groups | Yes | Create a persona group |
GET | .../persona-groups/{group_id} | Yes | Get a persona group and its generation status |
PATCH | .../persona-groups/{group_id} | Yes | Update a persona group’s definition |
DELETE | .../persona-groups/{group_id} | Yes | Delete a group and all its personas |
POST | .../persona-groups/{group_id}/generate | Yes | Trigger persona generation (async, returns 202) |
POST /persona-groups/parse-prompt
Pass a plain-language description of your target audience and get back a structured set of group fields. This is useful for building a quick “describe your audience” onboarding step before creating a group.Request body
A natural language description of the target segment. Include demographic details like age range, location, gender, and behavioral signals for best results.
Response
Returns a partially or fully filled group definition object that you can review and pass directly toPOST /persona-groups.
A suggested group name derived from the prompt.
Minimum age extracted from the prompt.
Maximum age extracted from the prompt.
Gender extracted from the prompt, e.g.
"Female", "Male", or "All".City and country extracted from the prompt.
Inferred income bracket:
"Low", "Middle", or "High".Occupation or professional context extracted from the prompt.
Example
GET /persona-groups
List all persona groups in a project, including their current generation status.Path parameters
UUID of the parent project.
Example
POST /persona-groups
Create a new persona group. After creating a group, call/generate to produce the individual personas.
Path parameters
UUID of the parent project.
Request body
A label for this segment, e.g.
"Metro Manila Millennials".Minimum age of personas in the group.
Maximum age of personas in the group.
Target gender. Accepts
"Male", "Female", or "All".City and country for the segment, e.g.
"Jakarta, Indonesia". Boses uses this to ground personas in local cultural signals.Income bracket:
"Low", "Middle", or "High".Job title or professional context, e.g.
"Office worker" or "Freelancer".How many personas to generate when you call
/generate. Accepts 1–10. Defaults to 5.Example
GET /persona-groups/
Retrieve a single persona group. Use this endpoint to poll for generation status after calling/generate.
Path parameters
UUID of the parent project.
UUID of the persona group.
Example
PATCH /persona-groups/
Update the definition of an existing persona group. Only the fields you include are changed. Note that updating a group does not automatically regenerate its personas — call/generate explicitly after updating if you want fresh personas.
Path parameters
UUID of the parent project.
UUID of the persona group.
Request body
All fields are optional. Include only the fields you want to change.Updated group name.
Updated minimum age.
Updated maximum age.
Updated gender target.
Updated location.
Updated income bracket.
Updated occupation.
Updated number of personas to generate on next
/generate call.Example
DELETE /persona-groups/
Permanently delete a persona group and all the personas inside it.Path parameters
UUID of the parent project.
UUID of the persona group to delete.
Example
POST /persona-groups//generate
Start persona generation for the group. This is an asynchronous operation — the endpoint returns202 Accepted immediately and the generation runs in the background.
Poll GET /persona-groups/{group_id} and check the generation_status field to track progress.
generation_status | Meaning |
|---|---|
pending | Not yet started |
generating | In progress — check generation_progress for a human-readable status message |
complete | All personas have been generated and are ready |
failed | Generation failed — review your group definition and retry |
Path parameters
UUID of the parent project.
UUID of the persona group to generate.
Example
/generate, poll the group until generation_status is complete:
GET /persona-groups/{group_id}/personas.