Personas
Generate a per-member entertainment persona, and list the airline’s archetype gallery.
A persona is a per-member behavioral profile — genre affinities, retail interests, engagement and monetization signals — that shapes scored serves and suggestions. This page covers generating one for a member, and listing the airline’s selectable archetype gallery.
Generate a persona
POST /v1/personas/generate drafts a persona for one member from declared
traveler attributes. It is session-scoped
— requires the X-Session-Id header — and Deep-tier (it makes a model call).
Body (max 16 KiB; each string attribute max 100 chars):
The 200 response is a PersonaRecord:
descriptionis model-generated free text.genreAffinities,retailCategories,engagementScore,monetizationPropensityare the structured, code-normalized fields — present once the persona is generated (genreAffinitiesis filled to zero across the canonical genre vocabulary).embeddingis a similarity vector, useful for archetype/content matching.- Null-valued fields are omitted from the response, not sent as
null— a solo traveler’s record simply has nomemberSlotkey, for instance.
Generation is idempotent per session + member. Calling generate again for a
member who already has a persona returns the same record (200, no new
model call, no second write) — the record is written once per session and never
overwritten. To re-profile, use a new session. There is no rules fallback:
if generation genuinely fails, it surfaces as a generic 500 internal.error —
quote the correlationId.
Errors: 400 session.unresolved, 401 / 403, 422 request.validation
(a required attribute missing/blank, an attribute over 100 chars, too many
retailInterests/declaredGenrePreferences), 500.
List archetypes
GET /v1/personas returns your airline’s selectable persona archetype
gallery — the pre-computed clusters a seatback UI can offer as a starting
point. It is airline-scoped:
no X-Session-Id, no parameters.
archetypeIdis stable within the airline — pass it as a member’sarchetypeIdin session setup to seed their persona.clusterRankis 1-based (1 = largest/most significant cluster).- An airline with no seeded gallery gets an honest empty
archetypeslist — never another tenant’s archetypes.
Errors: 401 / 403, 500.