---
title: "Update Custom Metric"
method: PUT
path: "/v1/update-metric/{metric_id}"
tags: ["Custom Metrics"]
---

# Update Custom Metric

`PUT /v1/update-metric/{metric_id}`

Update a specific custom metric by ID.

## Path parameters

- `metric_id` string, uuid, required

## Headers

- `X-API-Key` string, required

## Request body

- UpdateMetricRequest — Request model for updating a custom metric
  - `bluejay_as_code_id` string, nullable — Stable code-addressable identifier
  - `name` string, nullable — Name of the custom metric
  - `prompt` string, nullable — LLM-judge system prompt for this metric (legacy alias: description)
  - `summary` string, nullable — Short plain-English description of the metric (LLM-generated)
  - `metric_type` string, nullable — Specific metric kind (llm_judge, tool_call, audio_*, vocal_fry); legacy alias: type
  - `settings` object, nullable — Type-specific config (e.g. tool_call: {tool_names: [...]})
  - `eval_segment` 'agent' | 'user' | 'all', nullable — Which side of the conversation is evaluated
  - `scope` 'observability' | 'simulations' | 'all', nullable — Which pipeline runs this metric
  - `response_type` 'pass_fail' | 'yes_no' | 'qualitative' | 'quantitative' | 'json' | 'enum' | 'int' | 'float' | 'boolean' | 'tool_call' — Enum representing the possible response types for custom metrics.
  - `agent_ids` integer[], nullable — List of agent IDs to associate this metric with (replaces existing associations)
  - `min_value` number, nullable — Minimum value for quantitative metrics
  - `max_value` number, nullable — Maximum value for quantitative metrics
  - `category` string, nullable — Category for organizing metrics
  - `tags` string[], nullable — Tags for categorizing the metric
  - `scoring_guidance` string, nullable — Guidance on how to score this metric
  - `eval_modality` 'AUDIO' | 'TEXT' | 'AUTO' — Enum representing the evaluation route of a call.
  - `model` string, nullable — Model to use for text evaluation of the metric
  - `audio_model` string, nullable — Model to use for audio evaluation of the metric
  - `temperature` number, nullable — Temperature for evaluating the metric
  - `enum_options` string[], nullable — Options for enum metrics
  - `tool_names` string[], nullable — Expected tool names for tool_call metrics
  - `json_schema` object, nullable — JSON Schema describing the object the judge must return (required for json metrics)
  - `allow_not_applicable` boolean, nullable — Whether this metric allows 'not applicable' responses.

## Response `200`

Successful Response

- MetricResponse — Response model for custom metric operations
  - `id` string, required — Unique identifier for the custom metric
  - `bluejay_as_code_id` string, nullable — Stable code-addressable identifier (same as id for custom metrics)
  - `name` string, required — Name of the custom metric
  - `prompt` string, nullable — LLM-judge system prompt for this metric (null for non-judge types)
  - `description` string, nullable — Deprecated: same value as prompt
  - `summary` string, nullable — Short plain-English description of the metric (LLM-generated)
  - `metric_type` string — Specific metric kind
  - `eval_method` string — Evaluation category (llm_judge|statistical|ml_model|deterministic)
  - `settings` object — Type-specific config
  - `eval_segment` string — Which side of the conversation is evaluated (agent|user|all)
  - `scope` string — Which pipeline runs this metric (observability|simulations|all)
  - `response_type` 'pass_fail' | 'yes_no' | 'qualitative' | 'quantitative' | 'json' | 'enum' | 'int' | 'float' | 'boolean' | 'tool_call', required — Enum representing the possible response types for custom metrics.
  - `agent_ids` integer[] — List of agent IDs this metric belongs to
  - `min_value` number, nullable — Minimum value for quantitative metrics
  - `max_value` number, nullable — Maximum value for quantitative metrics
  - `category` string, nullable — Category for organizing metrics
  - `tags` string[], nullable — Tags for categorizing the metric
  - `scoring_guidance` string, nullable — Guidance on how to score this metric
  - `created_at` string, date-time, required — When this metric was created
  - `updated_at` string, date-time, nullable — When this metric was last updated
  - `updated_by` string, nullable — User who last updated this metric
  - `created_by` string, nullable — User who created this metric
  - `eval_modality` 'AUDIO' | 'TEXT' | 'AUTO' — Enum representing the evaluation route of a call.
  - `model` string, nullable — Model to use for text evaluation of the metric
  - `audio_model` string, nullable — Model to use for audio evaluation of the metric
  - `temperature` number, nullable — Temperature for evaluating the metric
  - `enum_options` string[], nullable — Options for enum metrics
  - `tool_names` string[], nullable — Deprecated: mirror of settings.tool_names for tool_call metrics
  - `json_schema` object, nullable — JSON Schema describing the object the judge must return (json metrics only)
  - `allow_not_applicable` boolean — Whether this metric allows 'not applicable' responses.
  - `eval_modality_auto_selected` boolean — Deprecated: always false (column removed).
  - `template_id` string, nullable — Library template this metric was created from

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/getbluejay/apis/bluejay-api.md) · [All operations](https://skmtc.net/getbluejay/apis/bluejay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getbluejay/bluejay-api/versions/f48cef80963f/schema)
