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.

FieldTypeDescription
job_titlestring[]Target job titles.
exclude_job_titlestring[]Job titles to exclude.
locationstring[]Target locations.
headcountstring[]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+.
industrystring[]Target industries.
senioritystring[]Target seniority levels. Valid values: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern.
additional_infostringAdditional 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

FieldTypeDescription
data.idintegerPersona SQL id.
warningsstring[]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.

On this page