Upsert persona
Upsert your workspace's ideal customer profile targeting criteria.
Upsert persona
PUT/api/v2/persona
Request body
All fields are optional. Provide the fields you want to set or update.
| Field | Type | Description |
|---|---|---|
| job_title | string[] | Target job titles. |
| exclude_job_title | string[] | Job titles to exclude. |
| location | string[] | Target locations. |
| headcount | string[] | Target headcount ranges. Valid values: 1-10, 11-50, 51-200, 201-500, 501-1,000, 1,001-5,000, 5,001-10,000, 10,001+. |
| industry | string[] | Target industries. |
| seniority | string[] | Target seniority levels. Valid values: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern. |
| additional_info | string | Additional free-text persona context. |
Example request
curl -X PUT "https://api.getsillage.com/api/v2/persona" \
-H "Authorization: Bearer $SILLAGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"job_title": ["VP Sales", "Head of Sales"],
"seniority": ["vp", "director"],
"location": ["France", "Germany"]
}'const response = await fetch('https://api.getsillage.com/api/v2/persona', {
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
job_title: ['VP Sales', 'Head of Sales'],
seniority: ['vp', 'director'],
location: ['France', 'Germany'],
}),
})
const result = await response.json()import { request } from 'node:https'
const body = JSON.stringify({
job_title: ['VP Sales', 'Head of Sales'],
seniority: ['vp', 'director'],
location: ['France', 'Germany'],
})
const req = request(
new URL('https://api.getsillage.com/api/v2/persona'),
{
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(body),
},
},
(res) => {
let data = ''
res.on('data', (chunk) => {
data += chunk
})
res.on('end', () => {
console.log(JSON.parse(data))
})
},
)
req.write(body)
req.end()import os
import requests
response = requests.put(
"https://api.getsillage.com/api/v2/persona",
json={
"job_title": ["VP Sales", "Head of Sales"],
"seniority": ["vp", "director"],
"location": ["France", "Germany"],
},
headers={"Authorization": f"Bearer {os.environ['SILLAGE_API_KEY']}"},
timeout=30,
)
response.raise_for_status()
result = response.json()Example response
{
"data": {
"id": 1234
}
}A submitted persona missing a job title, with a location that could not be resolved to a country — warnings appears only when there is something to flag:
{
"data": {
"id": 1234
},
"warnings": [
"No job_title set. Content generation and account mapping will target every job title until this is set.",
"None of the submitted locations could be resolved to a country. Account mapping will not run until this is fixed."
]
}Response fields
| Field | Type | Description |
|---|---|---|
| data.id | integer | Persona SQL id. |
| warnings | string[] | Non-blocking notices about the persona you just submitted, for example a missing job title or location, or a location that could not be matched to a country. The persona is saved either way. Omitted from the response when there is nothing to flag. |