> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shareofmodel.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Update persona

> Update a persona, creating a new immutable version. Required permission: `write:analysis`.



## OpenAPI

````yaml https://openapi.shareofmodel.ai/swagger.json put /v1/organizations/{organization_id}/workspaces/{workspace_id}/personas/{id}
openapi: 3.0.3
info:
  title: Share Of Model API
  version: v1
  description: >-
    ## Model Context Protocol (MCP)


    In addition to this REST API, Share of Model exposes a **Model Context
    Protocol** server that lets AI assistants (Claude Desktop, Claude Code, MCP
    Inspector, custom agents…) call our endpoints directly as tools. Any
    MCP-compatible client can interact with Share of Model without writing
    custom integration code — connect once with your usual login and start
    asking the assistant to query the data for you.


    ### Connecting from Claude Desktop


    Open **Settings → Connectors**, scroll to the bottom and click **Add custom
    connector**, then paste `https://mcp.shareofmodel.ai/mcp/`. A browser window
    opens for you to log in with your Share of Model account (same login as the
    web app), and the assistant gains access to the tools.


    ### Connecting from Claude Code


    ```bash

    claude mcp add --transport http share-of-model
    https://mcp.shareofmodel.ai/mcp/

    ```


    The first time you call a tool, Claude Code opens your browser to complete
    the login.


    ### Connecting from MCP Inspector


    ```bash

    npx @modelcontextprotocol/inspector

    ```


    In the Inspector UI, pick **Streamable HTTP** as transport, paste
    `https://mcp.shareofmodel.ai/mcp/`, and click **Connect**. The first
    connection prompts you to log in.


    ### Available tools


    Only endpoints tagged `mcp` in this OpenAPI spec are exposed as MCP tools,
    and only read-only (`GET`) routes are exposed. Everything tagged `mcp` below
    is callable from any compliant MCP client.


    ### Example prompts


    Once connected, try asking your assistant things like:


    - _"List the workspaces I have access to."_

    - _"Show me the latest searches in workspace X."_

    - _"Compare the share of model between brand A and brand B over the last 30
    days."_


    For more details on the protocol itself, see the [Model Context Protocol
    specification](https://modelcontextprotocol.io/).
servers:
  - description: Production API
    url: https://api.shareofmodel.ai/
  - description: Development API
    url: https://api.dev.shareofmodel.ai/
security: []
tags:
  - name: Auth
    description: Endpoints needed for API authentication.
  - name: Organizations
    description: Endpoints related to organizations, to list all available organizations.
  - name: Workspaces
    description: Endpoints related to workspaces, to list all available workspaces.
  - name: Analyses
    description: Endpoints related to analyses and analyses management.
  - name: Asset Evaluations
    description: Endpoints related to assets and asset evaluations.
  - name: Brand Catalog
    description: Endpoints related to general brand information.
  - name: Content Briefs
    description: Endpoints related to content briefs generation and optimisation.
  - name: Metrics
    description: >+
      Endpoints related to brand metrics.


      **LEXICON**



      **Brand Awareness**: What opinion the LLMs have concerning specific
      brands, related to certain categories.



      **Brand Perception**: The general sentiment of the LLMs towards a brand,

      based on the pros and cons they mention.

paths:
  /v1/organizations/{organization_id}/workspaces/{workspace_id}/personas/{id}:
    put:
      tags:
        - Personas
      summary: Update persona
      description: >-
        Update a persona, creating a new immutable version. Required permission:
        `write:analysis`.
      operationId: update_persona
      parameters:
        - in: path
          name: id
          schema:
            type: string
            format: uuid
          description: A UUID string identifying the persona.
          required: true
        - in: path
          name: organization_id
          schema:
            type: string
            format: uuid
          description: A UUID string identifying the organization.
          required: true
        - in: path
          name: workspace_id
          schema:
            type: string
            format: uuid
          description: A UUID string identifying the workspace.
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonaUpdate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PersonaUpdate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PersonaUpdate'
          '*/*':
            schema:
              $ref: '#/components/schemas/PersonaUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonaDetail'
          description: ''
        '400':
          description: Validation error or persona is archived.
        '403':
          description: Insufficient permissions.
        '404':
          description: Persona not found.
      security:
        - Bearer: []
components:
  schemas:
    PersonaUpdate:
      type: object
      properties:
        profile_brand:
          type: string
          maxLength: 255
        profile_archetype:
          type: string
          maxLength: 255
        profile_tag:
          type: string
          maxLength: 255
        demographic_country:
          type: string
          maxLength: 255
        demographic_language:
          type: string
          maxLength: 255
        demographic_age_from:
          type: integer
          nullable: true
        demographic_age_to:
          type: integer
          nullable: true
        demographic_gender:
          type: string
          default: ''
          maxLength: 255
        demographic_education_level:
          type: string
          default: ''
          maxLength: 255
        demographic_education_field:
          type: string
          default: ''
          maxLength: 255
        demographic_occupation:
          type: string
          default: ''
          maxLength: 255
        demographic_income_from:
          type: integer
          nullable: true
        demographic_income_to:
          type: integer
          nullable: true
        demographic_living_context:
          type: string
          default: ''
          maxLength: 255
        internal_compass_job_to_be_done:
          type: string
          default: ''
        internal_compass_values_and_personality_traits:
          type: string
          default: ''
        internal_compass_motivations:
          type: string
          default: ''
        internal_compass_strategic_goal:
          type: string
          default: ''
        behavioural_map_lifestyle_and_primary_tasks:
          type: string
          default: ''
        behavioural_map_media_consumption:
          type: string
          default: ''
        behavioural_map_typical_quote:
          type: string
          default: ''
        resistance_pain_points:
          type: string
          default: ''
        resistance_purchase_barriers:
          type: string
          default: ''
        resistance_core_questions:
          type: string
          default: ''
        resistance_key_buying_triggers:
          type: string
          default: ''
        connection_product_need:
          type: string
          default: ''
        connection_why_loves_category:
          type: string
          default: ''
        connection_summary:
          type: string
          default: ''
        version_source:
          enum:
            - ai
            - manual
            - csv
          type: string
          description: |-
            * `ai` - ai
            * `manual` - manual
            * `csv` - csv
          x-spec-enum-id: 8c72147099fc9df7
        picture:
          type: string
          writeOnly: true
          default: ''
      required:
        - demographic_country
        - demographic_language
        - profile_archetype
        - profile_brand
        - profile_tag
        - version_source
    PersonaDetail:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        organization_id:
          type: string
          format: uuid
        workspace_id:
          type: string
          format: uuid
        archived:
          type: boolean
        picture:
          type: string
          readOnly: true
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Created
        updated_at:
          type: string
          format: date-time
          readOnly: true
          title: Modified
        profile:
          allOf:
            - $ref: '#/components/schemas/PersonaProfile'
          readOnly: true
        demographic:
          allOf:
            - $ref: '#/components/schemas/PersonaDemographic'
          readOnly: true
        internal_compass:
          allOf:
            - $ref: '#/components/schemas/PersonaInternalCompass'
          readOnly: true
        behavioural_map:
          allOf:
            - $ref: '#/components/schemas/PersonaBehaviouralMap'
          readOnly: true
        resistance:
          allOf:
            - $ref: '#/components/schemas/PersonaResistance'
          readOnly: true
        connection:
          allOf:
            - $ref: '#/components/schemas/PersonaConnection'
          readOnly: true
        version:
          allOf:
            - $ref: '#/components/schemas/PersonaVersion'
          readOnly: true
      required:
        - behavioural_map
        - connection
        - created_at
        - demographic
        - id
        - internal_compass
        - organization_id
        - picture
        - profile
        - resistance
        - updated_at
        - version
        - workspace_id
    PersonaProfile:
      type: object
      properties:
        brand:
          type: string
        archetype:
          type: string
        tag:
          type: string
      required:
        - archetype
        - brand
        - tag
    PersonaDemographic:
      type: object
      properties:
        age_from:
          type: integer
        age_to:
          type: integer
        gender:
          type: string
        country:
          type: string
        language:
          type: string
        education_level:
          type: string
        education_field:
          type: string
        occupation:
          type: string
        income_from:
          type: integer
          nullable: true
        income_to:
          type: integer
          nullable: true
        living_context:
          type: string
      required:
        - age_from
        - age_to
        - country
        - education_field
        - education_level
        - gender
        - income_from
        - income_to
        - language
        - living_context
        - occupation
    PersonaInternalCompass:
      type: object
      properties:
        job_to_be_done:
          type: string
        values_and_personality_traits:
          type: string
        motivations:
          type: string
        strategic_goal:
          type: string
      required:
        - job_to_be_done
        - motivations
        - strategic_goal
        - values_and_personality_traits
    PersonaBehaviouralMap:
      type: object
      properties:
        lifestyle_and_primary_tasks:
          type: string
        media_consumption:
          type: string
        typical_quote:
          type: string
      required:
        - lifestyle_and_primary_tasks
        - media_consumption
        - typical_quote
    PersonaResistance:
      type: object
      properties:
        pain_points:
          type: string
        purchase_barriers:
          type: string
        core_questions:
          type: string
        key_buying_triggers:
          type: string
      required:
        - core_questions
        - key_buying_triggers
        - pain_points
        - purchase_barriers
    PersonaConnection:
      type: object
      properties:
        product_need:
          type: string
        why_loves_category:
          type: string
        summary:
          type: string
      required:
        - product_need
        - summary
        - why_loves_category
    PersonaVersion:
      type: object
      properties:
        name:
          type: string
        changes:
          type: string
        source:
          enum:
            - ai
            - manual
            - csv
          type: string
          description: |-
            * `ai` - ai
            * `manual` - manual
            * `csv` - csv
          x-spec-enum-id: 8c72147099fc9df7
        is_active:
          type: boolean
        created_by:
          type: string
          format: uuid
        created_at:
          type: string
          format: date-time
      required:
        - changes
        - created_at
        - created_by
        - is_active
        - name
        - source
  securitySchemes:
    Bearer:
      type: apiKey
      in: header
      name: Authorization

````