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

# Promote a verified fix to production

> Apply the verified staging changes to the PRODUCTION agent. Only a fix in AWAITING_PROMOTE can be promoted.

A snapshot of the production configuration is taken immediately before the write, so the promote is fully rollbackable. After the promote the staging shadow and its phone number are cleaned up.



## OpenAPI

````yaml /api-reference/openapi.documented.json post /v1/autoimprove/fix/{fixId}/promote
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 Template
  - name: Simulation Run Plan Job
  - name: Simulation Job
  - name: HTTP Request Definition
  - name: Webhook
  - name: Issue
  - name: Autoimprove
  - name: Knowledge Base
  - name: Config
  - name: CLI Auth
  - name: Call Analysis
  - name: Benchmark
  - name: Health
paths:
  /v1/autoimprove/fix/{fixId}/promote:
    post:
      tags:
        - Autoimprove
      summary: Promote a verified fix to production
      description: >-
        Apply the verified staging changes to the PRODUCTION agent. Only a fix
        in AWAITING_PROMOTE can be promoted.


        A snapshot of the production configuration is taken immediately before
        the write, so the promote is fully rollbackable. After the promote the
        staging shadow and its phone number are cleaned up.
      operationId: postV1AutoimproveFixByFixIdPromote
      parameters:
        - in: path
          name: fixId
          schema:
            type: string
            format: uuid
          required: true
      responses:
        '200':
          description: The verified changes are live on production.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AutoimproveFix'
                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: Autoimprove fix not found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Conflict error
              example:
                type: conflict
                code: resource_in_use
                message: The resource is in use and cannot be deleted
          description: Only a verified fix awaiting review can be promoted
        '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 response = await
            client.autoimproveFix.promote('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');


            console.log(response.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
            )
            response = client.autoimprove_fix.promote(
                "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
            )
            print(response.data)
components:
  schemas:
    AutoimproveFix:
      type: object
      properties:
        id:
          type: string
          format: uuid
        organizationId:
          type: string
          format: uuid
        projectId:
          type: string
          format: uuid
        agentId:
          type: string
          format: uuid
        stagingAgentId:
          type: string
          format: uuid
        stagingKind:
          type: string
          enum:
            - DESIGNATED
            - SHADOW
        customerIntegrationId:
          type: string
          format: uuid
        objectiveMetricDefinitionId:
          type: string
          format: uuid
        objectiveLabel:
          type: string
        targetValue:
          type: number
        baselineValue:
          type:
            - number
            - 'null'
        currentValue:
          type:
            - number
            - 'null'
        trigger:
          type: string
          enum:
            - ISSUE
            - RUN_THRESHOLD_FAILED
            - USER
            - DEGRADATION
        issueId:
          type:
            - string
            - 'null'
          format: uuid
        objectiveId:
          type:
            - string
            - 'null'
          format: uuid
        validationRunPlanId:
          type:
            - string
            - 'null'
          format: uuid
        status:
          type: string
          enum:
            - RUNNING
            - NEEDS_INPUT
            - PAUSED
            - AWAITING_PROMOTE
            - PROMOTED
            - NO_FIX
            - CANCELLED
            - FAILED
        workingMemory:
          type:
            - string
            - 'null'
        finalReport:
          type:
            - string
            - 'null'
        maxIterations:
          type: integer
        maxSimCalls:
          type: integer
        iterationCount:
          type: integer
        simCallsUsed:
          type: integer
        initiatedByUserId:
          type:
            - string
            - 'null'
          format: uuid
        concludedAt:
          type:
            - string
            - 'null'
          description: When the fix reached a terminal status (ISO 8601).
        createdAt:
          type: string
          description: When the fix was created (ISO 8601).
        updatedAt:
          type: string
          description: When the fix last changed (ISO 8601).
      required:
        - id
        - organizationId
        - projectId
        - agentId
        - stagingAgentId
        - stagingKind
        - customerIntegrationId
        - objectiveMetricDefinitionId
        - objectiveLabel
        - targetValue
        - baselineValue
        - currentValue
        - trigger
        - issueId
        - objectiveId
        - validationRunPlanId
        - status
        - workingMemory
        - finalReport
        - maxIterations
        - maxSimCalls
        - iterationCount
        - simCallsUsed
        - initiatedByUserId
        - concludedAt
        - createdAt
        - updatedAt
      description: >-
        One Autoimprove engagement: Roark autonomously improving one agent
        toward one objective metric. Roark only ever changes the staging agent
        (a shadow clone by default); production changes exactly once, when a
        verified fix is promoted.
    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

````