---
title: "Create an observability destination"
method: POST
path: "/observability/destinations"
tags: ["Observability"]
---

# Create an observability destination

`POST /observability/destinations`

Create a new observability destination. A maximum of 5 destinations per type is allowed. Defaults to the authenticated entity's default workspace; use the `workspace_id` body field to scope to a different workspace. [Management key](/docs/guides/overview/auth/management-api-keys) required.

## Request body

- CreateObservabilityDestinationRequest
  - `api_key_hashes` string[], nullable — Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided.
  - `broadcast_generation_cost` boolean — When true, include cost and billing generation metadata.
  - `broadcast_generation_identity` boolean — When true, include identity generation metadata.
  - `broadcast_generation_request_context` boolean — When true, include request-context generation metadata.
  - `config` object, required — Provider-specific configuration. The shape depends on `type` and is validated server-side.
  - `enabled` boolean — Whether this destination should be enabled immediately.
  - `filter_rules` ObservabilityFilterRulesConfigNullable, nullable — Optional structured filter rules controlling which events are forwarded.
    - `enabled` boolean
    - `groups` ObservabilityFilterRuleGroup[], required
      - `logic` 'and' | 'or'
      - `rules` object[], required
        - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
        - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
        - `value` union
          - string
          - number
  - `name` string, required — Human-readable name for the destination.
  - `privacy_mode` boolean — When true, request/response bodies are not forwarded — only metadata.
  - `sampling_rate` number, double — Sampling rate between 0.0001 and 1 (1 = 100%).
  - `type` 'arize' | 'braintrust' | 'clickhouse' | 'datadog' | 'grafana' | 'langfuse' | 'langsmith' | 'newrelic' | 'opik' | 'otel-collector' | 'posthog' | 'ramp' | 's3' | 'sentry' | 'snowflake' | 'weave' | 'webhook', required — The destination type. Only stable destination types are accepted.
  - `workspace_id` string, uuid — Optional workspace ID. Defaults to the authenticated entity's default workspace.

## Response `201`

Destination created successfully

- CreateObservabilityDestinationResponse
  - `data` union, required
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `apiKey` string, required
        - `baseUrl` string
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `modelId` string, required — The name of the tracing project in Arize AX
        - `spaceKey` string, required
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'arize', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `apiKey` string, required
        - `baseUrl` string
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `projectId` string, required
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'braintrust', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `database` string, required
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `host` string, required
        - `password` string, required
        - `table` string
        - `username` string, required — If you have not set a specific username in ClickHouse, simply type in 'default' below.
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'clickhouse', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `apiKey` string, required — Datadog API key must have LLM Observability permissions. Create at:
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `mlApp` string, required — Name to identify your application in Datadog LLM Observability
        - `url` string — Datadog API URL for your region (e.g., https://api.datadoghq.com, https://api.us3.datadoghq.com, https://api.datadoghq.eu)
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'datadog', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `apiKey` string, required
        - `baseUrl` string
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `instanceId` string, required
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'grafana', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `baseUrl` string
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `publicKey` string, required
        - `secretKey` string, required
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'langfuse', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `apiKey` string, required
        - `endpoint` string
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `project` string — The name for this project, such as pr-openrouter-demo. Defaults to "main" if not set.
        - `workspaceId` string — Required for org-scoped API keys. Find this in your LangSmith workspace settings.
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'langsmith', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `licenseKey` string, required
        - `region` 'us' | 'eu'
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'newrelic', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `apiKey` string, required
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `projectName` string, required
        - `workspace` string, required
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'opik', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `endpoint` string, required
        - `headers` object — Custom HTTP headers as a JSON object. For Axiom, use {"Authorization": "Bearer xaat-xxx", "X-Axiom-Dataset": "your-dataset"}
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'otel-collector', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `apiKey` string, required
        - `endpoint` string
        - `headers` object — Custom HTTP headers to include in requests to this destination.
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'posthog', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `apiKey` string, required — Generate this in your Ramp integration settings.
        - `baseUrl` string
        - `headers` object — Custom HTTP headers to include in requests to Ramp.
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'ramp', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `accessKeyId` string, required
        - `bucketName` string, required
        - `endpoint` string, uri — Only for S3-compatible services like Cloudflare R2 (https://account-id.r2.cloudflarestorage.com) or MinIO. Leave blank for standard AWS S3.
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `pathTemplate` string — Template for S3 object path. The filename ({traceId}-{timestamp}.json) is automatically appended. Available variables: {prefix}, {date}, {year}, {month}, {day}, {apiKeyName}
        - `prefix` string
        - `region` string
        - `secretAccessKey` string, required
        - `sessionToken` string
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 's3', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `dsn` string, required
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `otlpEndpoint` string, required
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'sentry', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `account` string, required
        - `database` string
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `schema` string
        - `table` string
        - `token` string, required
        - `warehouse` string
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'snowflake', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `apiKey` string, required
        - `baseUrl` string
        - `entity` string, required
        - `headers` object — Custom HTTP headers to include in requests to this destination.
        - `project` string, required
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'weave', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.
    - object — The newly created observability destination.
      - `api_key_hashes` string[], nullable, required — Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys.
      - `broadcast_generation_cost` boolean, required — When true, include cost and billing generation metadata.
      - `broadcast_generation_identity` boolean, required — When true, include identity generation metadata.
      - `broadcast_generation_request_context` boolean, required — When true, include request-context generation metadata.
      - `config` object, required
        - `headers` object
        - `method` 'POST' | 'PUT'
        - `url` string, required
      - `created_at` string, required — ISO timestamp of when the destination was created.
      - `enabled` boolean, required — Whether this destination is currently enabled.
      - `filter_rules` ObservabilityFilterRulesConfig, nullable, required — Optional structured filter rules controlling which events are forwarded.
        - `enabled` boolean
        - `groups` ObservabilityFilterRuleGroup[], required
          - `logic` 'and' | 'or'
          - `rules` object[], required
            - `field` 'model' | 'provider' | 'session_id' | 'user_id' | 'api_key_name' | 'finish_reason' | 'input' | 'output' | 'total_cost' | 'total_tokens' | 'prompt_tokens' | 'completion_tokens', required
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'regex' | 'starts_with' | 'ends_with' | 'gt' | 'lt' | 'gte' | 'lte' | 'exists' | 'not_exists', required
            - `value` union
              - …
      - `id` string, uuid, required — Stable public identifier for this destination.
      - `name` string, nullable, required — Human-readable name for the destination.
      - `privacy_mode` boolean, required — When true, request/response bodies are not forwarded to this destination — only metadata.
      - `sampling_rate` number, double, required — Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%).
      - `type` 'webhook', required
      - `updated_at` string, required — ISO timestamp of when the destination was last updated.
      - `workspace_id` string, uuid, required — ID of the workspace this destination belongs to.

## Other responses

- `400` — Bad Request - Invalid request parameters or malformed input
- `401` — Unauthorized - Authentication required or invalid credentials
- `403` — Forbidden - Authentication successful but insufficient permissions
- `409` — Conflict - Resource conflict or concurrent modification
- `500` — Internal Server Error - Unexpected server error

---

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