Metrics
POST
/api/v1/metrics

Create a new metric.

Supports flat metrics, parent "category" metrics (set selection_mode), and child sub-metrics (set parent_metric_id). Name uniqueness is scoped to (organization_id, workspace_id, parent_metric_id) so the same label can exist in multiple workspaces (and under multiple parents).

Scope:

  • scope="workspace" (default) stamps the metric with the active X-Workspace-Id (existing behavior).
  • scope="organization" stamps workspace_id=NULL so the metric appears in every workspace of the caller's org.

Children always inherit their parent's scope (workspace UUID or NULL) - we override the request's workspace + scope when parent_metric_id is set so a stale UI can't accidentally split a tree across workspaces or scopes.

Authorization

AuthorizationBearer <token>

JWT access token. Use: Authorization: Bearer .

In: header

Header Parameters

X-Workspace-Id?string|null
Authorization?string|null
X-API-Key?string|null
X-EFFICIENTAI-API-KEY?string|null

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Schema for creating a metric.

Hierarchy:

  • parent_metric_id set => this is a child sub-metric. metric_type is forced to boolean server-side; selection_mode must be None.
  • selection_mode set => this is a parent category metric. parent_metric_id must be None (max depth = 2).

Scope:

  • scope="workspace" (default) stamps the metric with the active X-Workspace-Id so it only shows up inside that workspace.
  • scope="organization" stamps workspace_id=NULL so the metric is visible in every workspace of the org. Children always inherit their parent's scope; setting scope on a child request body is ignored server-side.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/metrics" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",  "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9",  "scope": "workspace",  "name": "string",  "description": "string",  "example": "string",  "metric_type": "number",  "metric_category": "quality",  "trigger": "always",  "enabled": true,  "is_default": true,  "metric_origin": "string",  "supported_surfaces": [    "string"  ],  "enabled_surfaces": [    "string"  ],  "custom_data_type": "string",  "custom_config": {},  "tags": [    "string"  ],  "capture_rationale": false,  "parent_metric_id": "a4a6359f-6ade-48cb-af32-ccbc80976b98",  "selection_mode": "single_choice",  "allow_discovery": false,  "compare_transcripts": false,  "lifecycle": "active",  "promoted_from_draft_at": "2019-08-24T14:15:22Z",  "studio_notes": "string",  "children": [    {}  ],  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "created_by": "string"}

Community & contact

  1. Found a bug or have a feature request? Open a GitHub issue.
  2. Join our Discord for faster replies!