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

# Add metrics

> Add metrics to a deployment



## OpenAPI

````yaml post /v2/deployments/{id}/metrics
openapi: 3.1.0
info:
  title: orq.ai API
  version: '2.0'
  description: orq.ai API documentation
servers:
  - url: https://api.orq.ai
security:
  - ApiKey: []
tags:
  - name: Guardrail Rules
  - name: Policies
  - name: Routing Rules
  - name: Files
    description: File upload and retrieval operations.
  - name: FilesService
  - name: Projects
    description: Projects organize resources within a workspace
  - name: ProjectsService
  - name: Skills
    description: >-
      Skills are modular instructions you can use to codify processes and
      conventions
  - name: SkillsService
  - name: Responses
  - description: >-
      Run agents on a cadence — cron, interval, or one-off. Minimum firing
      interval is 1 hour.
    name: Agent Schedules
  - name: Reporting
    description: >-
      GenAI reporting API over canonical analytics rollups. Accepts a metric
      name, time range, grain, group-by, and filters; returns a typed time
      series and optional totals.
  - name: ReportingService
    description: |-
      ReportingService exposes a single QueryReport RPC that maps allowlisted
       analytics payloads onto safe rollup queries. Callers never send SQL;
       the backend picks the rollup family and grain from the metric
       catalogue, the requested range, and the requested grouping.
externalDocs:
  url: https://docs.orq.ai
  description: orq.ai Documentation
paths:
  /v2/deployments/{id}/metrics:
    post:
      tags:
        - Deployments
      summary: Add metrics
      description: Add metrics to a deployment
      operationId: DeploymentCreateMetric
      parameters:
        - schema:
            type: string
            description: Deployment ID
          required: true
          description: Deployment ID
          name: id
          in: path
      requestBody:
        required: true
        description: The deployment request payload
        content:
          application/json:
            schema:
              type: object
              properties:
                metadata:
                  type: object
                  additionalProperties: {}
                  description: >-
                    Your own custom key-value pairs can be attached to the logs.
                    This is useful for storing additional information related to
                    your interactions with the LLM providers or specifics within
                    your application.
                usage:
                  type: object
                  properties:
                    prompt_tokens:
                      type: number
                      description: Number of tokens in the prompt.
                    completion_tokens:
                      type: number
                      description: Number of tokens in the generated completion.
                    total_tokens:
                      type: number
                      description: >-
                        Total number of tokens used in the request (prompt +
                        completion).
                  required:
                    - prompt_tokens
                    - completion_tokens
                  description: Usage statistics to add to the deployment
                performance:
                  type: object
                  properties:
                    latency:
                      type: number
                      description: >-
                        Total time in milliseconds of the request to the LLM
                        provider API.
                    time_to_first_token:
                      type: number
                      description: >-
                        Total time in milliseconds to generate the first token
                        of the completion.
                  required:
                    - latency
                messages:
                  type: array
                  items:
                    oneOf:
                      - type: object
                        properties:
                          role:
                            type: string
                            enum:
                              - system
                            description: >-
                              The role of the messages author, in this case
                              `system`.
                          content:
                            anyOf:
                              - type: string
                                description: The contents of the system message.
                              - type: array
                                items:
                                  $ref: '#/components/schemas/TextContentPartSchema'
                                minItems: 1
                                description: >-
                                  An array of content parts with a defined type.
                                  For system messages, only type `text` is
                                  supported.
                            description: The contents of the system message.
                          name:
                            type: string
                            description: >-
                              An optional name for the participant. Provides the
                              model information to differentiate between
                              participants of the same role.
                        required:
                          - role
                          - content
                        title: System message
                        description: >-
                          Developer-provided instructions that the model should
                          follow, regardless of messages sent by the user.
                      - type: object
                        properties:
                          role:
                            type: string
                            enum:
                              - developer
                            description: >-
                              The role of the messages author, in this case 
                              `developer`.
                          content:
                            anyOf:
                              - type: string
                                description: The contents of the system message.
                              - type: array
                                items:
                                  $ref: '#/components/schemas/TextContentPartSchema'
                                minItems: 1
                                description: >-
                                  An array of content parts with a defined type.
                                  For system messages, only type `text` is
                                  supported.
                            description: The contents of the developer message.
                          name:
                            type: string
                            description: >-
                              An optional name for the participant. Provides the
                              model information to differentiate between
                              participants of the same role.
                        required:
                          - role
                          - content
                        title: Developer message
                      - type: object
                        properties:
                          role:
                            type: string
                            enum:
                              - user
                            description: >-
                              The role of the messages author, in this case
                              `user`.
                          name:
                            type: string
                            description: >-
                              An optional name for the participant. Provides the
                              model information to differentiate between
                              participants of the same role.
                          content:
                            anyOf:
                              - type: string
                                description: The text contents of the message.
                              - type: array
                                items:
                                  oneOf:
                                    - $ref: >-
                                        #/components/schemas/TextContentPartSchema
                                    - $ref: >-
                                        #/components/schemas/ImageContentPartSchema
                                    - $ref: >-
                                        #/components/schemas/AudioContentPartSchema
                                    - type: object
                                      properties:
                                        type:
                                          type: string
                                          enum:
                                            - file
                                          description: >-
                                            The type of the content part. Always
                                            `file`.
                                        cache_control:
                                          type: object
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                                - ephemeral
                                              description: >-
                                                Create a cache control breakpoint at
                                                this content block. Accepts only the
                                                value "ephemeral".
                                            ttl:
                                              type: string
                                              enum:
                                                - 5m
                                                - 1h
                                              default: 5m
                                              description: >-
                                                The time-to-live for the cache control
                                                breakpoint. This may be one of the
                                                following values:


                                                - `5m`: 5 minutes

                                                - `1h`: 1 hour


                                                Defaults to `5m`. Only supported by
                                                `Anthropic` Claude models.
                                          required:
                                            - type
                                        file:
                                          $ref: >-
                                            #/components/schemas/FileContentPartSchema
                                      required:
                                        - type
                                        - file
                                description: >-
                                  An array of content parts with a defined type.
                                  Supported options differ based on the model
                                  being used to generate the response. Can
                                  contain text, image, or audio inputs.
                            description: The contents of the user message.
                        required:
                          - role
                          - content
                        title: User message
                      - type: object
                        properties:
                          content:
                            anyOf:
                              - type: string
                                description: The contents of the assistant message.
                              - type: array
                                items:
                                  oneOf:
                                    - $ref: >-
                                        #/components/schemas/TextContentPartSchema
                                    - $ref: '#/components/schemas/RefusalPartSchema'
                                    - $ref: '#/components/schemas/ReasoningPartSchema'
                                    - $ref: >-
                                        #/components/schemas/RedactedReasoningPartSchema
                                  discriminator:
                                    propertyName: type
                                    mapping:
                                      text:
                                        $ref: >-
                                          #/components/schemas/TextContentPartSchema
                                      refusal:
                                        $ref: '#/components/schemas/RefusalPartSchema'
                                      reasoning:
                                        $ref: '#/components/schemas/ReasoningPartSchema'
                                      redacted_reasoning:
                                        $ref: >-
                                          #/components/schemas/RedactedReasoningPartSchema
                                description: >-
                                  An array of content parts with a defined type.
                                  Can be one or more of type `text`, or exactly
                                  one of type `refusal`.
                              - type: 'null'
                            description: >-
                              The contents of the assistant message. Required
                              unless `tool_calls` or `function_call` is
                              specified.
                          refusal:
                            type:
                              - string
                              - 'null'
                            description: The refusal message by the assistant.
                          role:
                            type: string
                            enum:
                              - assistant
                            description: >-
                              The role of the messages author, in this case
                              `assistant`.
                          name:
                            type: string
                            description: >-
                              An optional name for the participant. Provides the
                              model information to differentiate between
                              participants of the same role.
                          audio:
                            type:
                              - object
                              - 'null'
                            properties:
                              id:
                                type: string
                                description: >-
                                  Unique identifier for a previous audio
                                  response from the model.
                            required:
                              - id
                            description: >-
                              Data about a previous audio response from the
                              model. 
                          tool_calls:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  description: The ID of the tool call.
                                type:
                                  type: string
                                  enum:
                                    - function
                                  description: >-
                                    The type of the tool. Currently, only
                                    `function` is supported.
                                function:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                      description: The name of the function to call.
                                    arguments:
                                      type: string
                                      description: >-
                                        The arguments to call the function with,
                                        as generated by the model in JSON
                                        format. Note that the model does not
                                        always generate valid JSON, and may
                                        hallucinate parameters not defined by
                                        your function schema. Validate the
                                        arguments in your code before calling
                                        your function.
                                thought_signature:
                                  type: string
                                  description: >-
                                    Encrypted representation of the model
                                    internal reasoning state during function
                                    calling. Required by Gemini 3 models when
                                    continuing a conversation after a tool call.
                              required:
                                - id
                                - type
                                - function
                            description: >-
                              The tool calls generated by the model, such as
                              function calls.
                        required:
                          - role
                        title: Assistant message
                      - type: object
                        properties:
                          role:
                            type: string
                            enum:
                              - tool
                            description: >-
                              The role of the messages author, in this case
                              tool.
                          content:
                            anyOf:
                              - type: string
                              - type: array
                                items:
                                  oneOf:
                                    - $ref: >-
                                        #/components/schemas/TextContentPartSchema
                                  discriminator:
                                    propertyName: type
                                    mapping:
                                      text:
                                        $ref: >-
                                          #/components/schemas/TextContentPartSchema
                            description: The contents of the tool message.
                          tool_call_id:
                            type:
                              - string
                              - 'null'
                            description: Tool call that this message is responding to.
                          cache_control:
                            type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - ephemeral
                                description: >-
                                  Create a cache control breakpoint at this
                                  content block. Accepts only the value
                                  "ephemeral".
                              ttl:
                                type: string
                                enum:
                                  - 5m
                                  - 1h
                                default: 5m
                                description: >-
                                  The time-to-live for the cache control
                                  breakpoint. This may be one of the following
                                  values:


                                  - `5m`: 5 minutes

                                  - `1h`: 1 hour


                                  Defaults to `5m`. Only supported by
                                  `Anthropic` Claude models.
                            required:
                              - type
                        required:
                          - role
                          - content
                          - tool_call_id
                        title: Tool message
                  description: A list of messages sent to the model.
                choices:
                  type: array
                  items:
                    oneOf:
                      - type: object
                        properties:
                          role:
                            type: string
                            enum:
                              - system
                            description: >-
                              The role of the messages author, in this case
                              `system`.
                          content:
                            anyOf:
                              - type: string
                                description: The contents of the system message.
                              - type: array
                                items:
                                  $ref: '#/components/schemas/TextContentPartSchema'
                                minItems: 1
                                description: >-
                                  An array of content parts with a defined type.
                                  For system messages, only type `text` is
                                  supported.
                            description: The contents of the system message.
                          name:
                            type: string
                            description: >-
                              An optional name for the participant. Provides the
                              model information to differentiate between
                              participants of the same role.
                        required:
                          - role
                          - content
                        title: System message
                        description: >-
                          Developer-provided instructions that the model should
                          follow, regardless of messages sent by the user.
                      - type: object
                        properties:
                          role:
                            type: string
                            enum:
                              - developer
                            description: >-
                              The role of the messages author, in this case 
                              `developer`.
                          content:
                            anyOf:
                              - type: string
                                description: The contents of the system message.
                              - type: array
                                items:
                                  $ref: '#/components/schemas/TextContentPartSchema'
                                minItems: 1
                                description: >-
                                  An array of content parts with a defined type.
                                  For system messages, only type `text` is
                                  supported.
                            description: The contents of the developer message.
                          name:
                            type: string
                            description: >-
                              An optional name for the participant. Provides the
                              model information to differentiate between
                              participants of the same role.
                        required:
                          - role
                          - content
                        title: Developer message
                      - type: object
                        properties:
                          role:
                            type: string
                            enum:
                              - user
                            description: >-
                              The role of the messages author, in this case
                              `user`.
                          name:
                            type: string
                            description: >-
                              An optional name for the participant. Provides the
                              model information to differentiate between
                              participants of the same role.
                          content:
                            anyOf:
                              - type: string
                                description: The text contents of the message.
                              - type: array
                                items:
                                  oneOf:
                                    - $ref: >-
                                        #/components/schemas/TextContentPartSchema
                                    - $ref: >-
                                        #/components/schemas/ImageContentPartSchema
                                    - $ref: >-
                                        #/components/schemas/AudioContentPartSchema
                                    - type: object
                                      properties:
                                        type:
                                          type: string
                                          enum:
                                            - file
                                          description: >-
                                            The type of the content part. Always
                                            `file`.
                                        cache_control:
                                          type: object
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                                - ephemeral
                                              description: >-
                                                Create a cache control breakpoint at
                                                this content block. Accepts only the
                                                value "ephemeral".
                                            ttl:
                                              type: string
                                              enum:
                                                - 5m
                                                - 1h
                                              default: 5m
                                              description: >-
                                                The time-to-live for the cache control
                                                breakpoint. This may be one of the
                                                following values:


                                                - `5m`: 5 minutes

                                                - `1h`: 1 hour


                                                Defaults to `5m`. Only supported by
                                                `Anthropic` Claude models.
                                          required:
                                            - type
                                        file:
                                          $ref: >-
                                            #/components/schemas/FileContentPartSchema
                                      required:
                                        - type
                                        - file
                                description: >-
                                  An array of content parts with a defined type.
                                  Supported options differ based on the model
                                  being used to generate the response. Can
                                  contain text, image, or audio inputs.
                            description: The contents of the user message.
                        required:
                          - role
                          - content
                        title: User message
                      - type: object
                        properties:
                          content:
                            anyOf:
                              - type: string
                                description: The contents of the assistant message.
                              - type: array
                                items:
                                  oneOf:
                                    - $ref: >-
                                        #/components/schemas/TextContentPartSchema
                                    - $ref: '#/components/schemas/RefusalPartSchema'
                                    - $ref: '#/components/schemas/ReasoningPartSchema'
                                    - $ref: >-
                                        #/components/schemas/RedactedReasoningPartSchema
                                  discriminator:
                                    propertyName: type
                                    mapping:
                                      text:
                                        $ref: >-
                                          #/components/schemas/TextContentPartSchema
                                      refusal:
                                        $ref: '#/components/schemas/RefusalPartSchema'
                                      reasoning:
                                        $ref: '#/components/schemas/ReasoningPartSchema'
                                      redacted_reasoning:
                                        $ref: >-
                                          #/components/schemas/RedactedReasoningPartSchema
                                description: >-
                                  An array of content parts with a defined type.
                                  Can be one or more of type `text`, or exactly
                                  one of type `refusal`.
                              - type: 'null'
                            description: >-
                              The contents of the assistant message. Required
                              unless `tool_calls` or `function_call` is
                              specified.
                          refusal:
                            type:
                              - string
                              - 'null'
                            description: The refusal message by the assistant.
                          role:
                            type: string
                            enum:
                              - assistant
                            description: >-
                              The role of the messages author, in this case
                              `assistant`.
                          name:
                            type: string
                            description: >-
                              An optional name for the participant. Provides the
                              model information to differentiate between
                              participants of the same role.
                          audio:
                            type:
                              - object
                              - 'null'
                            properties:
                              id:
                                type: string
                                description: >-
                                  Unique identifier for a previous audio
                                  response from the model.
                            required:
                              - id
                            description: >-
                              Data about a previous audio response from the
                              model. 
                          tool_calls:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  description: The ID of the tool call.
                                type:
                                  type: string
                                  enum:
                                    - function
                                  description: >-
                                    The type of the tool. Currently, only
                                    `function` is supported.
                                function:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                      description: The name of the function to call.
                                    arguments:
                                      type: string
                                      description: >-
                                        The arguments to call the function with,
                                        as generated by the model in JSON
                                        format. Note that the model does not
                                        always generate valid JSON, and may
                                        hallucinate parameters not defined by
                                        your function schema. Validate the
                                        arguments in your code before calling
                                        your function.
                                thought_signature:
                                  type: string
                                  description: >-
                                    Encrypted representation of the model
                                    internal reasoning state during function
                                    calling. Required by Gemini 3 models when
                                    continuing a conversation after a tool call.
                              required:
                                - id
                                - type
                                - function
                            description: >-
                              The tool calls generated by the model, such as
                              function calls.
                        required:
                          - role
                        title: Assistant message
                      - type: object
                        properties:
                          role:
                            type: string
                            enum:
                              - tool
                            description: >-
                              The role of the messages author, in this case
                              tool.
                          content:
                            anyOf:
                              - type: string
                              - type: array
                                items:
                                  oneOf:
                                    - $ref: >-
                                        #/components/schemas/TextContentPartSchema
                                  discriminator:
                                    propertyName: type
                                    mapping:
                                      text:
                                        $ref: >-
                                          #/components/schemas/TextContentPartSchema
                            description: The contents of the tool message.
                          tool_call_id:
                            type:
                              - string
                              - 'null'
                            description: Tool call that this message is responding to.
                          cache_control:
                            type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - ephemeral
                                description: >-
                                  Create a cache control breakpoint at this
                                  content block. Accepts only the value
                                  "ephemeral".
                              ttl:
                                type: string
                                enum:
                                  - 5m
                                  - 1h
                                default: 5m
                                description: >-
                                  The time-to-live for the cache control
                                  breakpoint. This may be one of the following
                                  values:


                                  - `5m`: 5 minutes

                                  - `1h`: 1 hour


                                  Defaults to `5m`. Only supported by
                                  `Anthropic` Claude models.
                            required:
                              - type
                        required:
                          - role
                          - content
                          - tool_call_id
                        title: Tool message
                  description: >-
                    A list of completion choices. If you are using a
                    `completion` model then you must provide the `completion
                    content` with the chat completion format
                feedback:
                  type: object
                  properties:
                    score:
                      type: integer
                      minimum: 0
                      maximum: 100
                      description: >-
                        The feedback score. This allow you to come with specific
                        logic on what a `score` number means
                  required:
                    - score
                  description: Feedback from the user on the completion
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Whether the request was successful
                required:
                  - success
        '400':
          description: Bad Request
        '401':
          description: Unauthorized.
      deprecated: true
components:
  schemas:
    TextContentPartSchema:
      type: object
      properties:
        type:
          type: string
          enum:
            - text
          description: The type of the content part.
        text:
          type: string
          description: The text content.
        cache_control:
          type: object
          properties:
            type:
              type: string
              enum:
                - ephemeral
              description: >-
                Create a cache control breakpoint at this content block. Accepts
                only the value "ephemeral".
            ttl:
              type: string
              enum:
                - 5m
                - 1h
              default: 5m
              description: >-
                The time-to-live for the cache control breakpoint. This may be
                one of the following values:


                - `5m`: 5 minutes

                - `1h`: 1 hour


                Defaults to `5m`. Only supported by `Anthropic` Claude models.
          required:
            - type
      required:
        - type
        - text
      title: Text content part
      description: The type of the content part.
    ImageContentPartSchema:
      type: object
      properties:
        type:
          type: string
          enum:
            - image_url
        image_url:
          type: object
          properties:
            url:
              type: string
              description: Either a URL of the image or the base64 encoded image data.
            detail:
              type: string
              enum:
                - low
                - high
                - auto
              description: Specifies the detail level of the image.
          required:
            - url
        cache_control:
          type: object
          properties:
            type:
              type: string
              enum:
                - ephemeral
              description: >-
                Create a cache control breakpoint at this content block. Accepts
                only the value "ephemeral".
            ttl:
              type: string
              enum:
                - 5m
                - 1h
              default: 5m
              description: >-
                The time-to-live for the cache control breakpoint. This may be
                one of the following values:


                - `5m`: 5 minutes

                - `1h`: 1 hour


                Defaults to `5m`. Only supported by `Anthropic` Claude models.
          required:
            - type
      required:
        - type
        - image_url
      title: Image content part
      description: An image content part
    AudioContentPartSchema:
      type: object
      properties:
        type:
          type: string
          enum:
            - input_audio
        input_audio:
          type: object
          properties:
            data:
              type: string
              description: Base64 encoded audio data.
            format:
              type: string
              enum:
                - mp3
                - wav
              description: >-
                The format of the encoded audio data. Currently supports `wav`
                and `mp3`.
          required:
            - data
            - format
      required:
        - type
        - input_audio
      title: Audio content part
      description: An audio content part
    FileContentPartSchema:
      type: object
      properties:
        file_data:
          type: string
          description: >-
            The file data as a data URI string in the format
            'data:<mime-type>;base64,<base64-encoded-data>'. Example:
            'data:image/png;base64,iVBORw0KGgoAAAANS...'
        uri:
          type: string
          description: >-
            URL to the file. Only supported by Anthropic Claude models for PDF
            files.
        mimeType:
          type: string
          description: MIME type of the file (e.g., application/pdf, image/png)
        filename:
          type: string
          description: >-
            The name of the file, used when passing the file to the model as a
            string.
      description: >-
        File data for the content part. Must contain either file_data or uri,
        but not both.
    RefusalPartSchema:
      type: object
      properties:
        type:
          type: string
          enum:
            - refusal
          description: The type of the content part. Always `refusal`.
        refusal:
          type: string
          description: The refusal message generated by the model.
      required:
        - type
      title: Refusal part
      description: A message part containing a refusal message.
    ReasoningPartSchema:
      type: object
      properties:
        type:
          type: string
          enum:
            - reasoning
          description: The type of the content part. Always `reasoning`.
        reasoning:
          type: string
          description: >-
            The reasoning or thought process behind the response. Used for
            chain-of-thought or extended thinking.
        signature:
          type: string
          description: >-
            Optional cryptographic signature to verify the authenticity and
            integrity of the reasoning content
      required:
        - type
        - reasoning
        - signature
      title: Reasoning Part
      description: A message part containing reasoning or chain-of-thought content
    RedactedReasoningPartSchema:
      type: object
      properties:
        type:
          type: string
          enum:
            - redacted_reasoning
          description: The type of the content part. Always `reasoning`.
        data:
          type: string
          description: >-
            The encrypted reasoning or thought process behind the response. Used
            for chain-of-thought or extended thinking.
      required:
        - type
        - data
      title: Reasoning Part
      description: A message part containing reasoning or chain-of-thought content
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: JWT

````