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

# Create a metric variant

> Add a configuration of this metric for your organization, seeded from its Default. Edit it with
PUT to change what it measures, then pin it where you want it used.

Threshold metrics have no variants: their configuration comes from the metric they derive from.
Metrics in a package that manages its own variants reject this too.



## OpenAPI

````yaml /api-reference/openapi.documented.json post /v1/metric/definitions/{idOrSlug}/variants
openapi: 3.1.0
info:
  title: Roark Analytics API
  description: >-
    The Roark Analytics API gives you access to the same API that powers the
    award winning Roark Analytics platform.
  version: 1.0.0
servers:
  - description: Production
    url: https://api.roark.ai
security:
  - Bearer: []
tags:
  - name: Agent
  - name: Agent Endpoint
  - name: Call
  - name: Chat
  - name: Metric
  - name: Metric Policy
  - name: Metric Collection Job
  - name: Customer Flow
  - name: Customer Flow Edge Case
  - name: Simulation
  - name: Simulation Persona
  - name: Simulation Environment
  - name: Simulation Scenario
  - name: Simulation Run Plan
  - name: Simulation Run Plan Job
  - name: Simulation Job
  - name: HTTP Request Definition
  - name: Webhook
  - name: Issue
  - name: Knowledge Base
  - name: Config
  - name: CLI Auth
  - name: Call Analysis
  - name: Health
paths:
  /v1/metric/definitions/{idOrSlug}/variants:
    post:
      tags:
        - Metric
      summary: Create a metric variant
      description: >-
        Add a configuration of this metric for your organization, seeded from
        its Default. Edit it with

        PUT to change what it measures, then pin it where you want it used.


        Threshold metrics have no variants: their configuration comes from the
        metric they derive from.

        Metrics in a package that manages its own variants reject this too.
      operationId: postV1MetricDefinitionsByIdOrSlugVariants
      parameters:
        - name: idOrSlug
          in: path
          required: true
          description: Metric definition UUID or its stable slug.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMetricVariantInput'
      responses:
        '201':
          description: The created variant
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/MetricVariantResponse'
                required:
                  - data
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Validation error
              example:
                type: validation
                code: invalid_parameter
                message: The request was invalid
                param: email
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Authentication error
              example:
                type: authentication
                code: unauthorized
                message: Authentication required
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Permission error
              example:
                type: forbidden
                code: permission_denied
                message: You do not have permission to access this resource
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Not found error
              example:
                type: not_found
                code: resource_not_found
                message: The requested resource could not be found
          description: Not Found
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Rate limit error
              example:
                type: rate_limit
                code: too_many_requests
                message: Rate limit exceeded
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Server error
              example:
                type: internal
                code: internal_error
                message: Internal server error
          description: Internal Server Error
      x-codeSamples:
        - lang: JavaScript
          source: >-
            import Roark from '@roarkanalytics/sdk';


            const client = new Roark({
              bearerToken: process.env['ROARK_API_BEARER_TOKEN'], // This is the default and can be omitted
            });


            const metricVariant = await client.metricVariant.create('idOrSlug',
            { name: 'Strict' });


            console.log(metricVariant.data);
        - lang: Python
          source: |-
            import os
            from roark_analytics import Roark

            client = Roark(
                bearer_token=os.environ.get("ROARK_API_BEARER_TOKEN"),  # This is the default and can be omitted
            )
            metric_variant = client.metric_variant.create(
                id_or_slug="idOrSlug",
                name="Strict",
            )
            print(metric_variant.data)
components:
  schemas:
    CreateMetricVariantInput:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 100
          description: >-
            Name for the new variant. Must be unique for this metric within your
            organization and cannot be `Default`.
          example: Strict
      required:
        - name
      additionalProperties: false
      description: >-
        Create a variant, seeded from the metric's Default configuration. Edit
        it afterwards with PUT to change what it measures.
      example:
        name: Strict
    MetricVariantResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the variant.
        metricDefinitionId:
          type: string
          format: uuid
          description: The metric this variant configures.
        name:
          type: string
          description: >-
            Name of the variant. "Default" is the one a metric is scored with
            unless something pins another.
        versionId:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            The variant's current version: an immutable snapshot of its
            configuration. Editing the variant advances this. Null only for a
            variant left without one, which cannot be scored until it is
            configured.
        isSystem:
          type: boolean
          description: >-
            True for Roark's own variant, shared by every organization. Editing
            one forks it for yours; the original is left alone.
        isDefault:
          type: boolean
          description: >-
            Whether this is the variant a metric is scored with when nothing
            pins another.
        createdAt:
          type: string
          description: When the variant was created.
        updatedAt:
          type: string
          description: When the variant was last changed.
      required:
        - id
        - metricDefinitionId
        - name
        - versionId
        - isSystem
        - isDefault
        - createdAt
        - updatedAt
      description: One named configuration of a metric.
    ErrorResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - validation
            - authentication
            - forbidden
            - not_found
            - conflict
            - payment_required
            - rate_limit
            - internal
          description: The error type category
          examples:
            - validation
            - authentication
        code:
          type: string
          description: Machine-readable error code identifier
          examples:
            - invalid_parameter
            - missing_required_field
            - unauthorized
        message:
          type: string
          description: Human-readable error message
          examples:
            - The request was invalid
            - Authentication required
        param:
          type: string
          description: The parameter that caused the error (if applicable)
          examples:
            - email
            - user_id
        details:
          description: Additional error context information
      required:
        - type
        - code
        - message
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````