---
title: "Get a Persona"
method: GET
path: "/context/brands/{slug}/personas/{personaSlug}"
tags: ["Personas"]
---

# Get a Persona

`GET /context/brands/{slug}/personas/{personaSlug}`

## Request

- Base URL: `https://api.adcrunch.dev`
- URL: `https://api.adcrunch.dev/context/brands/{slug}/personas/{personaSlug}`
- Auth: HTTP bearer

Reads one Persona by its Brand slug and its own slug. The answer has every section, the age range, and the current revision. Send that revision back as `base_revision` when you update the Persona. A section that nobody wrote is `null`.

## Path parameters

- `personaSlug` string, required: The Persona slug — its handle within the Brand.
- `slug` string, required: The Brand slug.

## Response `200`

The Persona with all four sections. `brandId` is the Brand it belongs to; the pair of slugs in the path is its handle.

- object
  - `ageMax` number, nullable, required
  - `ageMin` number, nullable, required: Each bound is independently optional, so "35+" is expressible.
  - `brandId` string, required
  - `createdAt` number, required: Milliseconds since the Unix epoch, UTC.
  - `createdBy` string, required
  - `description` string, required
  - `frictions` string, nullable, required: Objections, doubts, what stops them.
  - `id` string, required
  - `language` string, nullable, required: The words *they* use for the problem, in their own register. Not a locale, despite the name.
  - `motivations` string, nullable, required: What they want, and what triggers them.
  - `name` string, required
  - `profile` string, nullable, required: Who they are, and their situation.
  - `revision` number, required: Increments on every write. Send it back as `base_revision` to edit; a stale one answers 409.
  - `slug` string, required
  - `updatedAt` number, nullable, required: Milliseconds since the Unix epoch, UTC.

## Other responses

- `400`: The request does not match the schema of this operation: a field is missing or has the wrong type, or the body is not valid JSON. `error` is `invalid_request`, and `issues` names each field. Nothing was changed.
- `401`: No API key, or one that does not resolve. See the security scheme. `error` is `unauthorized`.
- `402`: The organization has no active subscription. An owner subscribes at `paywallUrl`. `error` is `organization_unentitled`.
- `403`: The caller does not hold `brand:read`. `error` is `forbidden`.
- `404`: No such Brand, or no Persona with that slug inside it. `error` is `not_found` either way — the two are deliberately not told apart.

---

[API](https://skmtc.dev/adcrunch/apis/adcrunch-api.md) · [All operations](https://skmtc.dev/adcrunch/apis/adcrunch-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adcrunch/apis/adcrunch-api/revisions/a420ba80914f?raw)
