Custom Personas
Update a custom persona
Update fields of a custom persona. Only custom personas can be modified - base personas are read-only. You can update the name, description, and any custom persona fields.
PATCH
/
personas
/
{id}
cURL
curl -X PATCH https://app.mavera.io/api/v1/personas/YOUR_PERSONA_ID \
-H "Authorization: Bearer mvra_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Persona Name",
"goals": ["New goal 1", "New goal 2"],
"pains": ["Updated pain point"]
}'import requests
url = "https://app.mavera.io/api/v1/personas/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"goals": ["<string>"],
"pains": ["<string>"],
"triggers": ["<string>"],
"channels": ["<string>"],
"objections": ["<string>"],
"values": ["<string>"],
"proof_preferences": ["<string>"],
"tone_guardrails": ["<string>"],
"alternatives": ["<string>"],
"win_factors": ["<string>"],
"role_title": "<string>",
"seniority": "<string>",
"industry": "<string>",
"company_size": "<string>",
"tech_stack": ["<string>"],
"budget_authority": "<string>",
"procurement_constraints": ["<string>"],
"life_stage": "<string>",
"age_band": "<string>",
"income_band": "<string>",
"household_context": ["<string>"],
"lifestyle_affinities": ["<string>"],
"purchase_cadence": "<string>",
"key_differentiators": ["<string>"],
"regulatory_context": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
goals: ['<string>'],
pains: ['<string>'],
triggers: ['<string>'],
channels: ['<string>'],
objections: ['<string>'],
values: ['<string>'],
proof_preferences: ['<string>'],
tone_guardrails: ['<string>'],
alternatives: ['<string>'],
win_factors: ['<string>'],
role_title: '<string>',
seniority: '<string>',
industry: '<string>',
company_size: '<string>',
tech_stack: ['<string>'],
budget_authority: '<string>',
procurement_constraints: ['<string>'],
life_stage: '<string>',
age_band: '<string>',
income_band: '<string>',
household_context: ['<string>'],
lifestyle_affinities: ['<string>'],
purchase_cadence: '<string>',
key_differentiators: ['<string>'],
regulatory_context: ['<string>']
})
};
fetch('https://app.mavera.io/api/v1/personas/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.mavera.io/api/v1/personas/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"goals\": [\n \"<string>\"\n ],\n \"pains\": [\n \"<string>\"\n ],\n \"triggers\": [\n \"<string>\"\n ],\n \"channels\": [\n \"<string>\"\n ],\n \"objections\": [\n \"<string>\"\n ],\n \"values\": [\n \"<string>\"\n ],\n \"proof_preferences\": [\n \"<string>\"\n ],\n \"tone_guardrails\": [\n \"<string>\"\n ],\n \"alternatives\": [\n \"<string>\"\n ],\n \"win_factors\": [\n \"<string>\"\n ],\n \"role_title\": \"<string>\",\n \"seniority\": \"<string>\",\n \"industry\": \"<string>\",\n \"company_size\": \"<string>\",\n \"tech_stack\": [\n \"<string>\"\n ],\n \"budget_authority\": \"<string>\",\n \"procurement_constraints\": [\n \"<string>\"\n ],\n \"life_stage\": \"<string>\",\n \"age_band\": \"<string>\",\n \"income_band\": \"<string>\",\n \"household_context\": [\n \"<string>\"\n ],\n \"lifestyle_affinities\": [\n \"<string>\"\n ],\n \"purchase_cadence\": \"<string>\",\n \"key_differentiators\": [\n \"<string>\"\n ],\n \"regulatory_context\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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": "<string>",
"object": "custom_persona",
"name": "<string>",
"category": "<string>",
"description": "<string>",
"is_custom": true,
"created_at": 123,
"credits_charged": 300,
"details": {
"pipeline_type": "<string>",
"persona_type": "<string>",
"primary_use_case": "<string>",
"buying_stage": "<string>",
"decision_role": "<string>",
"role_segment": [
"<string>"
],
"primary_objectives": [
"<string>"
],
"mcda_weights": {},
"goals": [
"<string>"
],
"pains": [
"<string>"
],
"triggers": [
"<string>"
],
"channels": [
"<string>"
],
"proof_types": [
"<string>"
],
"alternatives": [
"<string>"
],
"win_factors": [
"<string>"
],
"objections": [
"<string>"
],
"values": [
"<string>"
],
"proof_preferences": [
"<string>"
],
"brand_voice_fit": "<string>",
"reading_level": "<string>",
"tone_guardrails": [
"<string>"
],
"role_title": "<string>",
"seniority": "<string>",
"industry": "<string>",
"company_size": "<string>",
"tech_stack": [
"<string>"
],
"budget_authority": "<string>",
"procurement_constraints": [
"<string>"
],
"committee_mapping": [
"<string>"
],
"life_stage": "<string>",
"age_band": "<string>",
"income_band": "<string>",
"household_context": [
"<string>"
],
"lifestyle_affinities": [
"<string>"
],
"purchase_cadence": "<string>",
"key_differentiators": [
"<string>"
],
"regulatory_context": [
"<string>"
],
"is_localized": true,
"locale_scope": "<string>",
"locale_value": "<string>",
"local_channels": [
"<string>"
],
"local_objections": [
"<string>"
],
"local_keywords": [
"<string>"
],
"price_sensitivity_delta": 123,
"purpose_packs_enabled": {},
"acquisition_config": {},
"pmm_config": {},
"content_config": {},
"sales_config": {},
"research_config": {}
},
"ai_generated": {
"confidence": 123,
"rationale": "<string>"
}
}{
"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.
Path Parameters
The persona ID.
Body
application/json
Update an existing custom persona. All fields are optional - only include fields you want to change.
Required string length:
2 - 100Response
Persona updated successfully.
Unique persona ID.
Available options:
custom_persona Example:
"custom_persona"
Available options:
north_star, intermediate, advanced Available options:
B2B, B2C Example:
true
Unix timestamp.
Credits charged for creation.
Example:
300
Detailed custom persona fields.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I
cURL
curl -X PATCH https://app.mavera.io/api/v1/personas/YOUR_PERSONA_ID \
-H "Authorization: Bearer mvra_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Persona Name",
"goals": ["New goal 1", "New goal 2"],
"pains": ["Updated pain point"]
}'import requests
url = "https://app.mavera.io/api/v1/personas/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"goals": ["<string>"],
"pains": ["<string>"],
"triggers": ["<string>"],
"channels": ["<string>"],
"objections": ["<string>"],
"values": ["<string>"],
"proof_preferences": ["<string>"],
"tone_guardrails": ["<string>"],
"alternatives": ["<string>"],
"win_factors": ["<string>"],
"role_title": "<string>",
"seniority": "<string>",
"industry": "<string>",
"company_size": "<string>",
"tech_stack": ["<string>"],
"budget_authority": "<string>",
"procurement_constraints": ["<string>"],
"life_stage": "<string>",
"age_band": "<string>",
"income_band": "<string>",
"household_context": ["<string>"],
"lifestyle_affinities": ["<string>"],
"purchase_cadence": "<string>",
"key_differentiators": ["<string>"],
"regulatory_context": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
goals: ['<string>'],
pains: ['<string>'],
triggers: ['<string>'],
channels: ['<string>'],
objections: ['<string>'],
values: ['<string>'],
proof_preferences: ['<string>'],
tone_guardrails: ['<string>'],
alternatives: ['<string>'],
win_factors: ['<string>'],
role_title: '<string>',
seniority: '<string>',
industry: '<string>',
company_size: '<string>',
tech_stack: ['<string>'],
budget_authority: '<string>',
procurement_constraints: ['<string>'],
life_stage: '<string>',
age_band: '<string>',
income_band: '<string>',
household_context: ['<string>'],
lifestyle_affinities: ['<string>'],
purchase_cadence: '<string>',
key_differentiators: ['<string>'],
regulatory_context: ['<string>']
})
};
fetch('https://app.mavera.io/api/v1/personas/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.mavera.io/api/v1/personas/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"goals\": [\n \"<string>\"\n ],\n \"pains\": [\n \"<string>\"\n ],\n \"triggers\": [\n \"<string>\"\n ],\n \"channels\": [\n \"<string>\"\n ],\n \"objections\": [\n \"<string>\"\n ],\n \"values\": [\n \"<string>\"\n ],\n \"proof_preferences\": [\n \"<string>\"\n ],\n \"tone_guardrails\": [\n \"<string>\"\n ],\n \"alternatives\": [\n \"<string>\"\n ],\n \"win_factors\": [\n \"<string>\"\n ],\n \"role_title\": \"<string>\",\n \"seniority\": \"<string>\",\n \"industry\": \"<string>\",\n \"company_size\": \"<string>\",\n \"tech_stack\": [\n \"<string>\"\n ],\n \"budget_authority\": \"<string>\",\n \"procurement_constraints\": [\n \"<string>\"\n ],\n \"life_stage\": \"<string>\",\n \"age_band\": \"<string>\",\n \"income_band\": \"<string>\",\n \"household_context\": [\n \"<string>\"\n ],\n \"lifestyle_affinities\": [\n \"<string>\"\n ],\n \"purchase_cadence\": \"<string>\",\n \"key_differentiators\": [\n \"<string>\"\n ],\n \"regulatory_context\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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": "<string>",
"object": "custom_persona",
"name": "<string>",
"category": "<string>",
"description": "<string>",
"is_custom": true,
"created_at": 123,
"credits_charged": 300,
"details": {
"pipeline_type": "<string>",
"persona_type": "<string>",
"primary_use_case": "<string>",
"buying_stage": "<string>",
"decision_role": "<string>",
"role_segment": [
"<string>"
],
"primary_objectives": [
"<string>"
],
"mcda_weights": {},
"goals": [
"<string>"
],
"pains": [
"<string>"
],
"triggers": [
"<string>"
],
"channels": [
"<string>"
],
"proof_types": [
"<string>"
],
"alternatives": [
"<string>"
],
"win_factors": [
"<string>"
],
"objections": [
"<string>"
],
"values": [
"<string>"
],
"proof_preferences": [
"<string>"
],
"brand_voice_fit": "<string>",
"reading_level": "<string>",
"tone_guardrails": [
"<string>"
],
"role_title": "<string>",
"seniority": "<string>",
"industry": "<string>",
"company_size": "<string>",
"tech_stack": [
"<string>"
],
"budget_authority": "<string>",
"procurement_constraints": [
"<string>"
],
"committee_mapping": [
"<string>"
],
"life_stage": "<string>",
"age_band": "<string>",
"income_band": "<string>",
"household_context": [
"<string>"
],
"lifestyle_affinities": [
"<string>"
],
"purchase_cadence": "<string>",
"key_differentiators": [
"<string>"
],
"regulatory_context": [
"<string>"
],
"is_localized": true,
"locale_scope": "<string>",
"locale_value": "<string>",
"local_channels": [
"<string>"
],
"local_objections": [
"<string>"
],
"local_keywords": [
"<string>"
],
"price_sensitivity_delta": 123,
"purpose_packs_enabled": {},
"acquisition_config": {},
"pmm_config": {},
"content_config": {},
"sales_config": {},
"research_config": {}
},
"ai_generated": {
"confidence": 123,
"rationale": "<string>"
}
}{
"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
}
}