diff --git a/.speakeasy/in.openapi.yaml b/.speakeasy/in.openapi.yaml index 01e4e3a..8828065 100644 --- a/.speakeasy/in.openapi.yaml +++ b/.speakeasy/in.openapi.yaml @@ -3450,6 +3450,182 @@ components: required: - unassigned_count type: object + BYOKKey: + example: + allowed_api_key_hashes: null + allowed_models: null + allowed_user_ids: null + created_at: '2025-08-24T10:30:00Z' + disabled: false + id: 11111111-2222-3333-4444-555555555555 + is_fallback: false + label: sk-...AbCd + name: Production OpenAI Key + provider: openai + sort_order: 0 + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + allowed_api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) that may use this credential. `null` means + no restriction. + example: + - f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 + items: + type: string + nullable: true + type: array + allowed_models: + description: Optional allowlist of model slugs this credential may be used for. `null` means no restriction. + example: null + items: + type: string + nullable: true + type: array + allowed_user_ids: + description: Optional allowlist of user IDs that may use this credential. `null` means no restriction. + example: null + items: + type: string + nullable: true + type: array + created_at: + description: ISO timestamp of when the credential was created. + example: '2025-08-24T10:30:00Z' + type: string + disabled: + description: Whether this credential is currently disabled. + example: false + type: boolean + id: + description: Stable public identifier for this BYOK credential. + example: 11111111-2222-3333-4444-555555555555 + format: uuid + type: string + is_fallback: + description: >- + Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider + have been tried. + example: false + type: boolean + label: + description: Short masked snippet of the key (e.g. the first/last few characters) used to identify it in the UI. + example: sk-...AbCd + type: string + name: + description: Optional human-readable name for the credential. + example: Production OpenAI Key + nullable: true + type: string + provider: + description: >- + The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, + `anthropic`, `amazon-bedrock`). + enum: + - ai21 + - aion-labs + - akashml + - alibaba + - amazon-bedrock + - amazon-nova + - ambient + - anthropic + - arcee-ai + - atlas-cloud + - avian + - azure + - baidu + - baseten + - black-forest-labs + - byteplus + - cerebras + - chutes + - cirrascale + - clarifai + - cloudflare + - cohere + - crusoe + - deepinfra + - deepseek + - dekallm + - featherless + - fireworks + - friendli + - gmicloud + - google-ai-studio + - google-vertex + - groq + - hyperbolic + - inception + - inceptron + - inference-net + - infermatic + - inflection + - io-net + - ionstream + - liquid + - mancer + - mara + - minimax + - mistral + - modelrun + - modular + - moonshotai + - morph + - ncompass + - nebius + - nex-agi + - nextbit + - novita + - nvidia + - open-inference + - openai + - parasail + - perceptron + - perplexity + - phala + - poolside + - recraft + - reka + - relace + - sambanova + - seed + - siliconflow + - sourceful + - stepfun + - streamlake + - switchpoint + - together + - upstage + - venice + - wandb + - xai + - xiaomi + - z-ai + example: openai + type: string + sort_order: + description: Position within the provider — credentials are tried in ascending sort order. + example: 0 + type: integer + workspace_id: + description: ID of the workspace this credential belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - provider + - workspace_id + - label + - disabled + - is_fallback + - allowed_models + - allowed_api_key_hashes + - allowed_user_ids + - sort_order + - created_at + type: object ChatAssistantImages: description: Generated images from image generation models example: @@ -6992,6 +7168,29 @@ components: required: - data type: object + GetBYOKKeyResponse: + example: + data: + allowed_api_key_hashes: null + allowed_models: null + allowed_user_ids: null + created_at: '2025-08-24T10:30:00Z' + disabled: false + id: 11111111-2222-3333-4444-555555555555 + is_fallback: false + label: sk-...AbCd + name: Production OpenAI Key + provider: openai + sort_order: 0 + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + data: + allOf: + - $ref: '#/components/schemas/BYOKKey' + - description: The BYOK credential. + required: + - data + type: object GetGuardrailResponse: example: data: @@ -7028,6 +7227,32 @@ components: required: - data type: object + GetObservabilityDestinationResponse: + example: + data: + api_key_hashes: null + config: + baseUrl: https://us.cloud.langfuse.com + publicKey: pk-l...EfGh + secretKey: sk-l...AbCd + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Langfuse + privacy_mode: false + sampling_rate: 1 + type: langfuse + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + data: + allOf: + - $ref: '#/components/schemas/ObservabilityDestination' + - description: The observability destination. + required: + - data + type: object GetWorkspaceResponse: example: data: @@ -7968,6 +8193,36 @@ components: required: - type type: object + ListBYOKKeysResponse: + example: + data: + - allowed_api_key_hashes: null + allowed_models: null + allowed_user_ids: null + created_at: '2025-08-24T10:30:00Z' + disabled: false + id: 11111111-2222-3333-4444-555555555555 + is_fallback: false + label: sk-...AbCd + name: Production OpenAI Key + provider: openai + sort_order: 0 + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + total_count: 1 + properties: + data: + description: List of BYOK credentials. + items: + $ref: '#/components/schemas/BYOKKey' + type: array + total_count: + description: Total number of BYOK credentials matching the filters. + example: 1 + type: integer + required: + - data + - total_count + type: object ListEndpointsResponse: description: List of available endpoints for a model example: @@ -8175,6 +8430,39 @@ components: - data - total_count type: object + ListObservabilityDestinationsResponse: + example: + data: + - api_key_hashes: null + config: + baseUrl: https://us.cloud.langfuse.com + publicKey: pk-l...EfGh + secretKey: sk-l...AbCd + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Langfuse + privacy_mode: false + sampling_rate: 1 + type: langfuse + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + total_count: 1 + properties: + data: + description: List of observability destinations. + items: + $ref: '#/components/schemas/ObservabilityDestination' + type: array + total_count: + description: Total number of destinations matching the filters. + example: 1 + type: integer + required: + - data + - total_count + type: object ListWorkspacesResponse: example: data: @@ -10297,6 +10585,1909 @@ components: - code - message type: object + ObservabilityArizeDestination: + example: + api_key_hashes: null + config: + apiKey: arize_...AbCd + baseUrl: https://otlp.arize.com + modelId: openrouter-prod + spaceKey: space_...EfGh + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Arize + privacy_mode: false + sampling_rate: 1 + type: arize + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + apiKey: + minLength: 1 + type: string + baseUrl: + default: https://otlp.arize.com + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + modelId: + minLength: 1 + type: string + spaceKey: + minLength: 1 + type: string + required: + - apiKey + - spaceKey + - modelId + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - arize + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityBraintrustDestination: + example: + api_key_hashes: null + config: + apiKey: sk-...AbCd + baseUrl: https://api.braintrust.dev + projectId: proj_... + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Braintrust + privacy_mode: false + sampling_rate: 1 + type: braintrust + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + apiKey: + minLength: 1 + type: string + baseUrl: + default: https://api.braintrust.dev + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + projectId: + minLength: 1 + type: string + required: + - apiKey + - projectId + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - braintrust + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityClickhouseDestination: + example: + api_key_hashes: null + config: + database: analytics + host: https://clickhouse.example.com:8123 + password: '********' + table: OPENROUTER_TRACES + username: default + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production ClickHouse + privacy_mode: false + sampling_rate: 1 + type: clickhouse + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + database: + minLength: 1 + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + host: + minLength: 1 + type: string + password: + minLength: 1 + type: string + table: + default: OPENROUTER_TRACES + type: string + username: + description: If you have not set a specific username in ClickHouse, simply type in 'default' below. + minLength: 1 + type: string + required: + - host + - database + - username + - password + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - clickhouse + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityDatadogDestination: + example: + api_key_hashes: null + config: + apiKey: '************...AbCd' + mlApp: my-llm-app + url: https://api.us5.datadoghq.com + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Datadog + privacy_mode: false + sampling_rate: 1 + type: datadog + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + apiKey: + description: 'Datadog API key must have LLM Observability permissions. Create at: ' + minLength: 1 + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + mlApp: + description: Name to identify your application in Datadog LLM Observability + minLength: 1 + type: string + url: + default: https://api.us5.datadoghq.com + description: >- + Datadog API URL for your region (e.g., https://api.datadoghq.com, https://api.us3.datadoghq.com, + https://api.datadoghq.eu) + type: string + required: + - apiKey + - mlApp + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - datadog + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityDestination: + discriminator: + mapping: + arize: '#/components/schemas/ObservabilityArizeDestination' + braintrust: '#/components/schemas/ObservabilityBraintrustDestination' + clickhouse: '#/components/schemas/ObservabilityClickhouseDestination' + datadog: '#/components/schemas/ObservabilityDatadogDestination' + grafana: '#/components/schemas/ObservabilityGrafanaDestination' + langfuse: '#/components/schemas/ObservabilityLangfuseDestination' + langsmith: '#/components/schemas/ObservabilityLangsmithDestination' + newrelic: '#/components/schemas/ObservabilityNewrelicDestination' + opik: '#/components/schemas/ObservabilityOpikDestination' + otel-collector: '#/components/schemas/ObservabilityOtelCollectorDestination' + posthog: '#/components/schemas/ObservabilityPosthogDestination' + ramp: '#/components/schemas/ObservabilityRampDestination' + s3: '#/components/schemas/ObservabilityS3Destination' + sentry: '#/components/schemas/ObservabilitySentryDestination' + snowflake: '#/components/schemas/ObservabilitySnowflakeDestination' + weave: '#/components/schemas/ObservabilityWeaveDestination' + webhook: '#/components/schemas/ObservabilityWebhookDestination' + propertyName: type + example: + api_key_hashes: null + config: + baseUrl: https://us.cloud.langfuse.com + publicKey: pk-l...EfGh + secretKey: sk-l...AbCd + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Langfuse + privacy_mode: false + sampling_rate: 1 + type: langfuse + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + oneOf: + - $ref: '#/components/schemas/ObservabilityArizeDestination' + - $ref: '#/components/schemas/ObservabilityBraintrustDestination' + - $ref: '#/components/schemas/ObservabilityClickhouseDestination' + - $ref: '#/components/schemas/ObservabilityDatadogDestination' + - $ref: '#/components/schemas/ObservabilityGrafanaDestination' + - $ref: '#/components/schemas/ObservabilityLangfuseDestination' + - $ref: '#/components/schemas/ObservabilityLangsmithDestination' + - $ref: '#/components/schemas/ObservabilityNewrelicDestination' + - $ref: '#/components/schemas/ObservabilityOpikDestination' + - $ref: '#/components/schemas/ObservabilityOtelCollectorDestination' + - $ref: '#/components/schemas/ObservabilityPosthogDestination' + - $ref: '#/components/schemas/ObservabilityRampDestination' + - $ref: '#/components/schemas/ObservabilityS3Destination' + - $ref: '#/components/schemas/ObservabilitySentryDestination' + - $ref: '#/components/schemas/ObservabilitySnowflakeDestination' + - $ref: '#/components/schemas/ObservabilityWeaveDestination' + - $ref: '#/components/schemas/ObservabilityWebhookDestination' + ObservabilityFilterRulesConfig: + description: Optional structured filter rules controlling which events are forwarded. + example: null + nullable: true + properties: + enabled: + default: true + type: boolean + groups: + items: + properties: + logic: + default: and + enum: + - and + - or + type: string + rules: + items: + properties: + field: + enum: + - model + - provider + - session_id + - user_id + - api_key_name + - finish_reason + - input + - output + - total_cost + - total_tokens + - prompt_tokens + - completion_tokens + type: string + operator: + enum: + - equals + - not_equals + - contains + - not_contains + - regex + - starts_with + - ends_with + - gt + - lt + - gte + - lte + - exists + - not_exists + type: string + value: + anyOf: + - type: string + - type: number + required: + - field + - operator + type: object + type: array + required: + - rules + type: object + type: array + required: + - groups + type: object + ObservabilityGrafanaDestination: + example: + api_key_hashes: null + config: + apiKey: glc_...AbCd + baseUrl: https://otlp-gateway-prod-us-west-0.grafana.net + instanceId: '123456' + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Grafana + privacy_mode: false + sampling_rate: 1 + type: grafana + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + apiKey: + minLength: 1 + type: string + baseUrl: + default: https://otlp-gateway-prod-us-west-0.grafana.net + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + instanceId: + minLength: 1 + type: string + required: + - apiKey + - instanceId + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - grafana + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityLangfuseDestination: + example: + api_key_hashes: null + config: + baseUrl: https://us.cloud.langfuse.com + publicKey: pk-l...EfGh + secretKey: sk-l...AbCd + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Langfuse + privacy_mode: false + sampling_rate: 1 + type: langfuse + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + baseUrl: + default: https://us.cloud.langfuse.com + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + publicKey: + minLength: 1 + type: string + secretKey: + minLength: 1 + type: string + required: + - secretKey + - publicKey + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - langfuse + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityLangsmithDestination: + example: + api_key_hashes: null + config: + apiKey: lsv2_...AbCd + endpoint: https://api.smith.langchain.com + project: main + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production LangSmith + privacy_mode: false + sampling_rate: 1 + type: langsmith + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + apiKey: + minLength: 1 + type: string + endpoint: + default: https://api.smith.langchain.com + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + project: + default: main + description: The name for this project, such as pr-openrouter-demo. Defaults to "main" if not set. + minLength: 1 + type: string + workspaceId: + description: Required for org-scoped API keys. Find this in your LangSmith workspace settings. + type: string + required: + - apiKey + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - langsmith + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityNewrelicDestination: + example: + api_key_hashes: null + config: + licenseKey: '****...AbCd' + region: US + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production New Relic + privacy_mode: false + sampling_rate: 1 + type: newrelic + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + licenseKey: + minLength: 1 + type: string + region: + default: us + enum: + - us + - eu + type: string + required: + - licenseKey + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - newrelic + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityOpikDestination: + example: + api_key_hashes: null + config: + apiKey: '****...AbCd' + projectName: openrouter-prod + workspace: my-workspace + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Opik + privacy_mode: false + sampling_rate: 1 + type: opik + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + apiKey: + minLength: 1 + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + projectName: + minLength: 1 + type: string + workspace: + minLength: 1 + type: string + required: + - apiKey + - workspace + - projectName + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - opik + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityOtelCollectorDestination: + example: + api_key_hashes: null + config: + endpoint: https://otel.example.com:4318 + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production OTel Collector + privacy_mode: false + sampling_rate: 1 + type: otel-collector + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + endpoint: + type: string + headers: + additionalProperties: + type: string + description: >- + Custom HTTP headers as a JSON object. For Axiom, use {"Authorization": "Bearer xaat-xxx", + "X-Axiom-Dataset": "your-dataset"} + type: object + required: + - endpoint + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - otel-collector + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityPosthogDestination: + example: + api_key_hashes: null + config: + apiKey: phc_...AbCd + endpoint: https://us.i.posthog.com + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production PostHog + privacy_mode: false + sampling_rate: 1 + type: posthog + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + apiKey: + minLength: 1 + type: string + endpoint: + default: https://us.i.posthog.com + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + required: + - apiKey + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - posthog + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityRampDestination: + example: + api_key_hashes: null + config: + apiKey: rmp_...AbCd + baseUrl: https://api.ramp.com/developer/v1/ai-usage/openrouter + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Ramp + privacy_mode: false + sampling_rate: 1 + type: ramp + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + apiKey: + description: Generate this in your Ramp integration settings. + minLength: 1 + type: string + baseUrl: + default: https://api.ramp.com/developer/v1/ai-usage/openrouter + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to Ramp. + type: object + required: + - apiKey + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - ramp + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityS3Destination: + example: + api_key_hashes: null + config: + accessKeyId: AKIA...AbCd + bucketName: openrouter-traces + secretAccessKey: '****...EfGh' + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production S3 + privacy_mode: false + sampling_rate: 1 + type: s3 + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + accessKeyId: + minLength: 1 + type: string + bucketName: + minLength: 1 + type: string + endpoint: + description: >- + Only for S3-compatible services like Cloudflare R2 (https://account-id.r2.cloudflarestorage.com) or + MinIO. Leave blank for standard AWS S3. + format: uri + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + pathTemplate: + default: '{prefix}/{date}' + description: >- + Template for S3 object path. The filename ({traceId}-{timestamp}.json) is automatically appended. + Available variables: {prefix}, {date}, {year}, {month}, {day}, {apiKeyName} + type: string + prefix: + default: openrouter-traces + type: string + region: + type: string + secretAccessKey: + minLength: 1 + type: string + sessionToken: + type: string + required: + - bucketName + - accessKeyId + - secretAccessKey + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - s3 + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilitySentryDestination: + example: + api_key_hashes: null + config: + otlpEndpoint: https://o0.ingest.sentry.io/api/0/otlp + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Sentry + privacy_mode: false + sampling_rate: 1 + type: sentry + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + dsn: + minLength: 1 + pattern: ^https:\/\/([^:@]+)(?::[^@]*)?@([^/]+)(?:\/[^/]+)*\/(\d+)\/?$ + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + otlpEndpoint: + type: string + required: + - otlpEndpoint + - dsn + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - sentry + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilitySnowflakeDestination: + example: + api_key_hashes: null + config: + account: xy12345.us-east-1 + token: '****...AbCd' + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Snowflake + privacy_mode: false + sampling_rate: 1 + type: snowflake + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + account: + minLength: 1 + type: string + database: + default: SNOWFLAKE_LEARNING_DB + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + schema: + default: PUBLIC + type: string + table: + default: OPENROUTER_TRACES + type: string + token: + minLength: 1 + type: string + warehouse: + default: COMPUTE_WH + type: string + required: + - account + - token + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - snowflake + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityWeaveDestination: + example: + api_key_hashes: null + config: + apiKey: '****...AbCd' + baseUrl: https://trace.wandb.ai + entity: my-team + project: openrouter-prod + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Weave + privacy_mode: false + sampling_rate: 1 + type: weave + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + apiKey: + minLength: 1 + type: string + baseUrl: + default: https://trace.wandb.ai + type: string + entity: + minLength: 1 + type: string + headers: + additionalProperties: + type: string + description: Custom HTTP headers to include in requests to this destination. + type: object + project: + minLength: 1 + type: string + required: + - apiKey + - entity + - project + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - weave + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object + ObservabilityWebhookDestination: + example: + api_key_hashes: null + config: + url: https://example.com/openrouter-events + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Webhook + privacy_mode: false + sampling_rate: 1 + type: webhook + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + properties: + api_key_hashes: + description: >- + Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this + destination. `null` means all keys. + example: null + items: + type: string + nullable: true + type: array + config: + properties: + headers: + additionalProperties: + type: string + type: object + method: + default: POST + enum: + - POST + - PUT + type: string + url: + type: string + required: + - url + type: object + created_at: + description: ISO timestamp of when the destination was created. + example: '2025-08-24T10:30:00Z' + type: string + enabled: + description: Whether this destination is currently enabled. + example: true + type: boolean + filter_rules: + $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + id: + description: Stable public identifier for this destination. + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + name: + description: Human-readable name for the destination. + example: Production Langfuse + nullable: true + type: string + privacy_mode: + description: When true, request/response bodies are not forwarded to this destination — only metadata. + example: false + type: boolean + sampling_rate: + description: Sampling rate for events sent to this destination, between 0 and 1 (1 = 100%). + example: 1 + format: double + type: number + type: + enum: + - webhook + type: string + updated_at: + description: ISO timestamp of when the destination was last updated. + example: '2025-08-24T15:45:00Z' + type: string + workspace_id: + description: ID of the workspace this destination belongs to. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + required: + - id + - workspace_id + - name + - enabled + - privacy_mode + - sampling_rate + - api_key_hashes + - filter_rules + - created_at + - updated_at + - type + - config + type: object OpenAIResponseCustomToolCall: example: call_id: call-abc123 @@ -17381,6 +19572,271 @@ paths: tags: - OAuth x-speakeasy-name-override: createAuthCode + /byok: + get: + description: >- + List the bring-your-own-key (BYOK) provider credentials for the authenticated entity's default workspace. Use + the `workspace_id` query parameter to scope the result to a different workspace, or the `provider` query + parameter to filter by upstream provider. [Management key](/docs/guides/overview/auth/management-api-keys) + required. + operationId: listBYOKKeys + parameters: + - description: Number of records to skip for pagination + in: query + name: offset + required: false + schema: + description: Number of records to skip for pagination + example: 0 + minimum: 0 + nullable: true + type: integer + - description: Maximum number of records to return (max 100) + in: query + name: limit + required: false + schema: + description: Maximum number of records to return (max 100) + example: 50 + maximum: 100 + minimum: 1 + type: integer + - description: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. + in: query + name: workspace_id + required: false + schema: + description: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + - description: Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). + in: query + name: provider + required: false + schema: + description: Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). + enum: + - ai21 + - aion-labs + - akashml + - alibaba + - amazon-bedrock + - amazon-nova + - ambient + - anthropic + - arcee-ai + - atlas-cloud + - avian + - azure + - baidu + - baseten + - black-forest-labs + - byteplus + - cerebras + - chutes + - cirrascale + - clarifai + - cloudflare + - cohere + - crusoe + - deepinfra + - deepseek + - dekallm + - featherless + - fireworks + - friendli + - gmicloud + - google-ai-studio + - google-vertex + - groq + - hyperbolic + - inception + - inceptron + - inference-net + - infermatic + - inflection + - io-net + - ionstream + - liquid + - mancer + - mara + - minimax + - mistral + - modelrun + - modular + - moonshotai + - morph + - ncompass + - nebius + - nex-agi + - nextbit + - novita + - nvidia + - open-inference + - openai + - parasail + - perceptron + - perplexity + - phala + - poolside + - recraft + - reka + - relace + - sambanova + - seed + - siliconflow + - sourceful + - stepfun + - streamlake + - switchpoint + - together + - upstage + - venice + - wandb + - xai + - xiaomi + - z-ai + example: openai + type: string + responses: + '200': + content: + application/json: + example: + data: + - allowed_api_key_hashes: null + allowed_models: null + allowed_user_ids: null + created_at: '2025-08-24T10:30:00Z' + disabled: false + id: 11111111-2222-3333-4444-555555555555 + is_fallback: false + label: sk-...AbCd + name: Production OpenAI Key + provider: openai + sort_order: 0 + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + total_count: 1 + schema: + $ref: '#/components/schemas/ListBYOKKeysResponse' + description: List of BYOK credentials + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List BYOK provider credentials + tags: + - BYOK + x-speakeasy-name-override: list + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit + /byok/{id}: + get: + description: >- + Get a single bring-your-own-key (BYOK) provider credential by its `id`. Defaults to the authenticated entity's + default workspace; use the `workspace_id` query parameter to scope to a different workspace. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: getBYOKKey + parameters: + - description: The BYOK credential ID (UUID). + in: path + name: id + required: true + schema: + description: The BYOK credential ID (UUID). + example: 11111111-2222-3333-4444-555555555555 + format: uuid + type: string + - description: Optional workspace ID. Defaults to the authenticated entity's default workspace. + in: query + name: workspace_id + required: false + schema: + description: Optional workspace ID. Defaults to the authenticated entity's default workspace. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + responses: + '200': + content: + application/json: + example: + data: + allowed_api_key_hashes: null + allowed_models: null + allowed_user_ids: null + created_at: '2025-08-24T10:30:00Z' + disabled: false + id: 11111111-2222-3333-4444-555555555555 + is_fallback: false + label: sk-...AbCd + name: Production OpenAI Key + provider: openai + sort_order: 0 + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + schema: + $ref: '#/components/schemas/GetBYOKKeyResponse' + description: BYOK credential details + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Get a BYOK provider credential + tags: + - BYOK + x-speakeasy-name-override: get /chat/completions: post: description: >- @@ -21701,6 +24157,187 @@ paths: tags: - Models x-speakeasy-name-override: listForUser + /observability/destinations: + get: + description: >- + List the observability destinations configured for the authenticated entity's default workspace. Use the + `workspace_id` query parameter to scope the result to a different workspace. Only destinations with stable + release status are surfaced — destinations of other types are excluded. [Management + key](/docs/guides/overview/auth/management-api-keys) required. + operationId: listObservabilityDestinations + parameters: + - description: Number of records to skip for pagination + in: query + name: offset + required: false + schema: + description: Number of records to skip for pagination + example: 0 + minimum: 0 + nullable: true + type: integer + - description: Maximum number of records to return (max 100) + in: query + name: limit + required: false + schema: + description: Maximum number of records to return (max 100) + example: 50 + maximum: 100 + minimum: 1 + type: integer + - description: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. + in: query + name: workspace_id + required: false + schema: + description: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + responses: + '200': + content: + application/json: + example: + data: + - api_key_hashes: null + config: + baseUrl: https://us.cloud.langfuse.com + publicKey: pk-l...EfGh + secretKey: sk-l...AbCd + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Langfuse + privacy_mode: false + sampling_rate: 1 + type: langfuse + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + total_count: 1 + schema: + $ref: '#/components/schemas/ListObservabilityDestinationsResponse' + description: List of observability destinations + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: List observability destinations + tags: + - Observability + x-speakeasy-name-override: list + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit + /observability/destinations/{id}: + get: + description: >- + Fetch a single observability destination by its UUID. Defaults to the authenticated entity's default workspace — + use `workspace_id` to override. [Management key](/docs/guides/overview/auth/management-api-keys) required. + operationId: getObservabilityDestination + parameters: + - description: The destination ID (UUID). + in: path + name: id + required: true + schema: + description: The destination ID (UUID). + example: 99999999-aaaa-bbbb-cccc-dddddddddddd + format: uuid + type: string + - description: Optional workspace ID. Defaults to the authenticated entity's default workspace. + in: query + name: workspace_id + required: false + schema: + description: Optional workspace ID. Defaults to the authenticated entity's default workspace. + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + responses: + '200': + content: + application/json: + example: + data: + api_key_hashes: null + config: + baseUrl: https://us.cloud.langfuse.com + publicKey: pk-l...EfGh + secretKey: sk-l...AbCd + created_at: '2025-08-24T10:30:00Z' + enabled: true + filter_rules: null + id: 99999999-aaaa-bbbb-cccc-dddddddddddd + name: Production Langfuse + privacy_mode: false + sampling_rate: 1 + type: langfuse + updated_at: '2025-08-24T15:45:00Z' + workspace_id: 550e8400-e29b-41d4-a716-446655440000 + schema: + $ref: '#/components/schemas/GetObservabilityDestinationResponse' + description: The observability destination + '401': + content: + application/json: + example: + error: + code: 401 + message: Missing Authentication header + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + description: Unauthorized - Authentication required or invalid credentials + '404': + content: + application/json: + example: + error: + code: 404 + message: Resource not found + schema: + $ref: '#/components/schemas/NotFoundResponse' + description: Not Found - Resource does not exist + '500': + content: + application/json: + example: + error: + code: 500 + message: Internal Server Error + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: Internal Server Error - Unexpected server error + summary: Get an observability destination + tags: + - Observability + x-speakeasy-name-override: get /organization/members: get: description: >- @@ -23848,6 +26485,8 @@ tags: name: Analytics - description: Anthropic Messages endpoints name: Anthropic Messages + - description: BYOK endpoints + name: BYOK - description: Chat completion endpoints name: Chat - description: Credit management endpoints @@ -23864,6 +26503,8 @@ tags: name: Models - description: OAuth authentication endpoints name: OAuth + - description: Observability endpoints + name: Observability - description: Organization endpoints name: Organization - description: Provider information endpoints