> ## 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.

# Create asset evaluation

> Create a new asset evaluation over assets already in the workspace's library.

The assets are referenced by `assets_ids` and must all belong to the workspace in the path; referencing an
asset from another workspace is rejected with `400`.

**Content types.** An evaluation may span more than one content type — for example an image and a video in
the same evaluation. The authoritative set is always derived server-side from the referenced assets, so:

- `content_types` is optional. When supplied it is validated against the derivation and must agree with it,
  in any order. Omit it and the server derives it silently.
- `content_type` (singular) is **deprecated** and kept for older clients. When supplied it asserts that every
  asset shares that one type, and a mixed selection is rejected. Send `null` or omit it and use
  `content_types` instead.

**Communication type.** Must be drawn from the list matching the evaluation's content types — see the
`settings` endpoint. A single-type evaluation uses that type's list; an evaluation spanning more than one type
must use one of the *mixed* communication types, and the two sets are mutually exclusive.

**Model support.** `source` must support every content type in the evaluation. A selection containing a video
therefore restricts the choice to the video-capable models.

**Limits.** 1–10 assets, of which at most 4 may be videos (videos are the
expensive modality and stay capped even when combined with other types). 3–6
attributes.

Creating an evaluation consumes workspace quota and its cost in generations is priced per asset by that
asset's own type — see the `compute-cost` endpoint to price a selection before committing to it.

Required permission: `write:asset_evaluation`.



## OpenAPI

````yaml https://openapi.shareofmodel.ai/swagger.json post /v1/organizations/{organization_id}/workspaces/{workspace_id}/asset_evaluations
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}/asset_evaluations:
    post:
      tags:
        - Asset Evaluations
      summary: Create asset evaluation
      description: >-
        Create a new asset evaluation over assets already in the workspace's
        library.


        The assets are referenced by `assets_ids` and must all belong to the
        workspace in the path; referencing an

        asset from another workspace is rejected with `400`.


        **Content types.** An evaluation may span more than one content type —
        for example an image and a video in

        the same evaluation. The authoritative set is always derived server-side
        from the referenced assets, so:


        - `content_types` is optional. When supplied it is validated against the
        derivation and must agree with it,
          in any order. Omit it and the server derives it silently.
        - `content_type` (singular) is **deprecated** and kept for older
        clients. When supplied it asserts that every
          asset shares that one type, and a mixed selection is rejected. Send `null` or omit it and use
          `content_types` instead.

        **Communication type.** Must be drawn from the list matching the
        evaluation's content types — see the

        `settings` endpoint. A single-type evaluation uses that type's list; an
        evaluation spanning more than one type

        must use one of the *mixed* communication types, and the two sets are
        mutually exclusive.


        **Model support.** `source` must support every content type in the
        evaluation. A selection containing a video

        therefore restricts the choice to the video-capable models.


        **Limits.** 1–10 assets, of which at most 4 may be videos (videos are
        the

        expensive modality and stay capped even when combined with other types).
        3–6

        attributes.


        Creating an evaluation consumes workspace quota and its cost in
        generations is priced per asset by that

        asset's own type — see the `compute-cost` endpoint to price a selection
        before committing to it.


        Required permission: `write:asset_evaluation`.
      operationId: create_asset_evaluation
      parameters:
        - 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/CreateAssetEvaluationRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateAssetEvaluationRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateAssetEvaluationRequest'
          '*/*':
            schema:
              $ref: '#/components/schemas/CreateAssetEvaluationRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetEvaluation'
          description: ''
        '400':
          description: >-
            Invalid input: assets missing from the workspace, `content_types`
            disagreeing with the referenced assets, a communication type that
            does not match the content types, a model that does not support
            every content type, or too many video assets.
        '403':
          description: The workspace's asset evaluation quota is fully used.
        '503':
          description: The evaluation could not be created downstream. Safe to retry.
      security:
        - Bearer: []
components:
  schemas:
    CreateAssetEvaluationRequest:
      type: object
      description: Base for all the serializers in the assets app
      properties:
        name:
          type: string
        source:
          enum:
            - gpt-4o
            - gpt-5
            - gpt-5.2
            - gpt-5.4-mini
            - gemini-2.0-flash
            - gemini-2.5-flash
            - gemini-3-flash-preview
            - meta-llama-3.3-70B-instruct-turbo
            - meta-llama-4-maverick
            - claude-4-6-sonnet
          type: string
          x-spec-enum-id: 156d86aecf288cb7
          description: >-
            AI model that should perform the evaluation


            * `gpt-4o` - gpt 4o

            * `gpt-5` - gpt 5

            * `gpt-5.2` - gpt 5.2

            * `gpt-5.4-mini` - gpt 5.4 mini

            * `gemini-2.0-flash` - gemini 2.0 flash

            * `gemini-2.5-flash` - gemini 2.5 flash

            * `gemini-3-flash-preview` - gemini 3 flash preview

            * `meta-llama-3.3-70B-instruct-turbo` - meta llama 3.3 70B instruct
            turbo

            * `meta-llama-4-maverick` - meta llama 4 maverick

            * `claude-4-6-sonnet` - claude 4 6 sonnet
        brand:
          type: string
        category:
          type: string
          description: >-
            The category that best describes the type of product or service the
            brand offers
        attributes:
          type: array
          items:
            type: string
          maxItems: 6
          minItems: 3
        assets_ids:
          type: array
          items:
            type: string
            format: uuid
          maxItems: 10
          minItems: 1
        communication_type:
          enum:
            - Brand Taglines
            - Social Media Captions
            - Campaign Messaging
            - Email Campaign Copy
            - Landing Page Headlines
            - Product Descriptions
            - Blog Post
            - Press Release
            - Other Text Category
            - Campaign Visuals
            - Social Media Ads
            - Website Page
            - Product Feature Highlights
            - Display Banners
            - Not Specified Image
            - Social Media Shorts
            - Customer Testimonial
            - Campaign Ads
            - YouTube Video
            - User-Generated Content
            - Other Video Category
            - Campaign Materials
            - Social Media Content
            - Advertising & Promotions
            - Product & Feature Highlights
            - Website & Landing Pages
            - Customer & User Content
            - Editorial & Informational Content
            - Branding & Identity
          type: string
          x-spec-enum-id: e5b3ccb79fbae892
          description: >-
            Type of communication the asset is related to. An evaluation whose
            assets span more than one content type must use one of the mixed
            communication types.


            * `Brand Taglines` - Brand Taglines

            * `Social Media Captions` - Social Media Captions

            * `Campaign Messaging` - Campaign Messaging

            * `Email Campaign Copy` - Email Campaign Copy

            * `Landing Page Headlines` - Landing Page Headlines

            * `Product Descriptions` - Product Descriptions

            * `Blog Post` - Blog Post

            * `Press Release` - Press Release

            * `Other Text Category` - Other Text Category

            * `Campaign Visuals` - Campaign Visuals

            * `Social Media Ads` - Social Media Ads

            * `Website Page` - Website Page

            * `Product Feature Highlights` - Product Feature Highlights

            * `Display Banners` - Display Banners

            * `Not Specified Image` - Not Specified Image

            * `Social Media Shorts` - Social Media Shorts

            * `Customer Testimonial` - Customer Testimonial

            * `Campaign Ads` - Campaign Ads

            * `YouTube Video` - YouTube Video

            * `User-Generated Content` - User Generated Content

            * `Other Video Category` - Other Video Category

            * `Campaign Materials` - Campaign Materials

            * `Social Media Content` - Social Media Content

            * `Advertising & Promotions` - Advertising & Promotions

            * `Product & Feature Highlights` - Product & Feature Highlights

            * `Website & Landing Pages` - Website & Landing Pages

            * `Customer & User Content` - Customer & User Content

            * `Editorial & Informational Content` - Editorial & Informational
            Content

            * `Branding & Identity` - Branding & Identity
        content_type:
          enum:
            - image
            - text
            - video
            - null
          type: string
          x-spec-enum-id: 0343cca47d7cc465
          nullable: true
          description: >-
            DEPRECATED — superseded by `content_types`. When provided, every
            asset must match it.


            * `image` - image

            * `text` - text

            * `video` - video
        content_types:
          type: array
          items:
            enum:
              - image
              - text
              - video
            type: string
            description: |-
              * `image` - image
              * `text` - text
              * `video` - video
            x-spec-enum-id: 0343cca47d7cc465
          description: >-
            The distinct content types of the referenced assets, e.g. ['image',
            'video']. Derived server-side from `assets_ids`; when supplied it is
            validated against that derivation.
        persona:
          type: string
          description: >-
            Persona considered for the evaluation, example: '{age} {gender}
            {interest or habits}'
        description:
          type: string
        callback_url:
          type: string
          description: URL to send the evaluation result to
        tags:
          type: array
          items:
            type: string
            maxLength: 255
          description: Optional list of tags for the asset evaluation
      required:
        - assets_ids
        - attributes
        - brand
        - category
        - communication_type
        - name
        - source
    AssetEvaluation:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        content_types:
          type: array
          items:
            enum:
              - image
              - text
              - video
            type: string
            description: |-
              * `image` - image
              * `text` - text
              * `video` - video
            x-spec-enum-id: 0343cca47d7cc465
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Created
        created_by:
          type: string
          format: uuid
        workspace_id:
          type: string
          format: uuid
        status:
          enum:
            - pending
            - in_progress
            - completed
            - partial
            - failed
          type: string
          description: |-
            * `pending` - pending
            * `in_progress` - in progress
            * `completed` - completed
            * `partial` - partial
            * `failed` - failed
          x-spec-enum-id: 07c86065df656b0c
        name:
          type: string
          maxLength: 255
        source:
          enum:
            - gpt-3.5-turbo
            - gpt-4-turbo
            - gpt-4o
            - gpt-4o-mini-search
            - gpt-5
            - gpt-5.2
            - gpt-5.4-mini
            - gemini-1.5-pro
            - gemini-2.0-flash
            - gemini-2.5-flash-grounded
            - gemini-2.5-flash
            - gemini-2.5-flash-lite
            - gemini-3-flash-preview
            - meta-llama-3.1-70B-instruct-turbo
            - meta-llama-3.2-70B-instruct-turbo
            - meta-llama-3.3-70B-instruct-turbo
            - meta-llama-4-maverick
            - mistral-7B-instruct
            - claude-3-5-sonnet
            - claude-4-sonnet
            - claude-4-5-sonnet
            - claude-4-6-sonnet
            - deepseek-chat
            - deepseek-reasoner
            - deepseek-v3.2-maas
            - perplexity-sonar
            - rufus
            - google-ai-mode
          type: string
          description: >-
            * `gpt-3.5-turbo` - gpt 3.5 turbo

            * `gpt-4-turbo` - gpt 4 turbo

            * `gpt-4o` - gpt 4o

            * `gpt-4o-mini-search` - gpt 4o mini search

            * `gpt-5` - gpt 5

            * `gpt-5.2` - gpt 5.2

            * `gpt-5.4-mini` - gpt 5.4 mini

            * `gemini-1.5-pro` - gemini 1.5 pro

            * `gemini-2.0-flash` - gemini 2.0 flash

            * `gemini-2.5-flash-grounded` - gemini 2.5 flash grounded

            * `gemini-2.5-flash` - gemini 2.5 flash

            * `gemini-2.5-flash-lite` - gemini 2.5 flash lite

            * `gemini-3-flash-preview` - gemini 3 flash preview

            * `meta-llama-3.1-70B-instruct-turbo` - meta llama 3.1 70B instruct
            turbo

            * `meta-llama-3.2-70B-instruct-turbo` - meta llama 3.2 70B instruct
            turbo

            * `meta-llama-3.3-70B-instruct-turbo` - meta llama 3.3 70B instruct
            turbo

            * `meta-llama-4-maverick` - meta llama 4 maverick

            * `mistral-7B-instruct` - mistral 7B instruct

            * `claude-3-5-sonnet` - claude 3 5 sonnet

            * `claude-4-sonnet` - claude 4 sonnet

            * `claude-4-5-sonnet` - claude 4 5 sonnet

            * `claude-4-6-sonnet` - claude 4 6 sonnet

            * `deepseek-chat` - deepseek chat

            * `deepseek-reasoner` - deepseek reasoner

            * `deepseek-v3.2-maas` - deepseek v3.2 maas

            * `perplexity-sonar` - perplexity sonar

            * `rufus` - rufus

            * `google-ai-mode` - google ai mode
          x-spec-enum-id: 31229724ccbe9afa
        brand:
          type: string
          maxLength: 255
        category:
          type: string
          maxLength: 255
        persona:
          type: string
          maxLength: 255
        attributes:
          type: array
          items:
            type: string
            maxLength: 255
        description:
          type: string
        is_archived:
          type: boolean
        communication_type:
          type: string
          maxLength: 255
        tags:
          type: array
          items:
            type: string
            maxLength: 255
        generation_cost:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
      required:
        - brand
        - category
        - content_types
        - created_at
        - created_by
        - id
        - name
        - persona
        - source
        - workspace_id
  securitySchemes:
    Bearer:
      type: apiKey
      in: header
      name: Authorization

````