Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded.
Definitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing yet. This answers that before you commit: which spans matched, what values they’d contribute, and how many distinct labels the metric would carry.
Samples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass workforce_id to make the sample representative of the agent you’re actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it.
Because it returns trace content, project_id doubles as the permission target: omit it and the sample spans the whole org, which needs alarms.manage; set it and the sample is capped to that project, which needs projects.alarms.manage there. A caller scoped to one project must therefore pass it.
Sample runs from one agent/workflow (OrgsApps.id). Strongly
recommended: it makes the sample representative of what you're
filtering, instead of whatever the org ran most recently.
Per-label aggregates, exactly as they'd land in Metrics. More than a
handful of entries here means label_source: span_name over a
high-cardinality predicate — every label is another bin per minute.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Timbal","colors":{"primary":"#000000","light":"#ffffff","dark":"#000000"},"logo":{"light":"https://mintcdn.com/timbaltechsl/pt3LfpScmY2Go19A/logo/light-small-1.svg?fit=max\u0026auto=format\u0026n=pt3LfpScmY2Go19A\u0026q=85\u0026s=fd26b0ce39e9e46d6dd08d81b611a9ea","dark":"https://mintcdn.com/timbaltechsl/pt3LfpScmY2Go19A/logo/dark-small-1.svg?fit=max\u0026auto=format\u0026n=pt3LfpScmY2Go19A\u0026q=85\u0026s=5739e93ab19cd4f38a7794d947cb547f"},"favicon":"https://mintcdn.com/timbaltechsl/SFKYoQkLzl5EA6mF/favicon.png?fit=max\u0026auto=format\u0026n=SFKYoQkLzl5EA6mF\u0026q=85\u0026s=426b0689f2269536b56cad9d7b4a8b2f","api":{"openapi":"api-reference/openapi.json"},"navbar":{"primary":{"type":"github","href":"https://github.com/timbal-ai/timbal"}},"footer":{"socials":{"website":"https://timbal.ai","github":"https://github.com/timbal-ai","linkedin":"https://linkedin.com/company/timbal-ai"}},"styling":{"codeblocks":"dark","latex":false},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"timbaltechsl","hasAudioNarration":false,"actualSubdomain":"timbaltechsl","customDomains":["docs.timbal.ai"],"gitSource":{"type":"github","owner":"timbal-ai","repo":"timbal","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ade6798f569cc6b3d4acf7e","collectionId":"be3351cf-9024-42b3-b592-146aa9c7992e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ade6798f569cc6b3d4acf7e"},"entitlements":{},"buildId":"6ade6798f569cc6b3d4acf7e","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"API Reference","count":210},{"language":"default","tag":"Docs","count":56},{"language":"default","tag":"Organizations","count":54},{"language":"default","tag":"Projects","count":45},{"language":"default","tag":"Knowledge Bases","count":36},{"language":"default","tag":"Agents","count":31},{"language":"default","tag":"Examples","count":29},{"language":"default","tag":"Model Reference","count":28},{"language":"default","tag":"Connectors","count":26},{"language":"default","tag":"Evals","count":22}]},"assistantConfig":{"enableStarterQuestions":false},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/alarms/metrics/definitions/preview","slug":"/api-reference/alarms/metrics/definitions/preview","pageMetadata":{"title":"Preview Metric Definition","openapi":"POST /orgs/{org_id}/metrics/definitions/preview","description":"Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded.\n\nDefinitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing *yet*. This answers that before you commit: which spans matched, what values they'd contribute, and how many distinct labels the metric would carry.\n\nSamples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass `workforce_id` to make the sample representative of the agent you're actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it.\n\nBecause it returns trace content, `project_id` doubles as the permission target: omit it and the sample spans the whole org, which needs `alarms.manage`; set it and the sample is capped to that project, which needs `projects.alarms.manage` there. A caller scoped to one project must therefore pass it.","href":"/api-reference/alarms/metrics/definitions/preview"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n em: \"em\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Definitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing \", _jsx(_components.em, {\n children: \"yet\"\n }), \". This answers that before you commit: which spans matched, what values they’d contribute, and how many distinct labels the metric would carry.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Samples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass \", _jsx(_components.code, {\n children: \"workforce_id\"\n }), \" to make the sample representative of the agent you’re actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Because it returns trace content, \", _jsx(_components.code, {\n children: \"project_id\"\n }), \" doubles as the permission target: omit it and the sample spans the whole org, which needs \", _jsx(_components.code, {\n children: \"alarms.manage\"\n }), \"; set it and the sample is capped to that project, which needs \", _jsx(_components.code, {\n children: \"projects.alarms.manage\"\n }), \" there. A caller scoped to one project must therefore pass it.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Preview Metric Definition","openapi":"POST /orgs/{org_id}/metrics/definitions/preview","description":"Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded.\n\nDefinitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing *yet*. This answers that before you commit: which spans matched, what values they'd contribute, and how many distinct labels the metric would carry.\n\nSamples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass `workforce_id` to make the sample representative of the agent you're actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it.\n\nBecause it returns trace content, `project_id` doubles as the permission target: omit it and the sample spans the whole org, which needs `alarms.manage`; set it and the sample is capped to that project, which needs `projects.alarms.manage` there. A caller scoped to one project must therefore pass it.","href":"/api-reference/alarms/metrics/definitions/preview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["alarms"],"summary":"Dry-run a custom metric definition","description":"Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded.\n\nDefinitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing *yet*. This answers that before you commit: which spans matched, what values they'd contribute, and how many distinct labels the metric would carry.\n\nSamples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass `workforce_id` to make the sample representative of the agent you're actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it.\n\nBecause it returns trace content, `project_id` doubles as the permission target: omit it and the sample spans the whole org, which needs `alarms.manage`; set it and the sample is capped to that project, which needs `projects.alarms.manage` there. A caller scoped to one project must therefore pass it.","operationId":"preview_org_metric_definition","parameters":["645feed3-047e-4308-9bc7-b61dcd192816"],"requestBody":"3a0c237e-5e80-4fd3-bdff-b7843a827610","responses":{"200":"69ca3170-104b-415e-accc-7e974a21a418","400":"e203365a-9ff5-4666-a5dd-a6edab3610e4","403":"10137bc1-05eb-49b6-b7d9-cab58dae59fd"},"security":["39e33ea4-f8d6-441d-86bb-e6b326cc2b61"],"method":"post","type":"path","servers":["063e6282-8e14-477c-a715-c7b30ccd340b","a9adc882-01d3-4459-9489-6baa7c24677b"],"path":"/orgs/{org_id}/metrics/definitions/preview","baseUrlOptions":["https://api.timbal.ai","https://api.dev.timbal.ai"],"title":"Dry-run a custom metric definition","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"645feed3-047e-4308-9bc7-b61dcd192816":{"name":"org_id","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Body for **POST** `/orgs/{org_id}/metrics/definitions/preview`.\n\nThe same predicate fields as create, minus everything about persistence.","properties":{"has_error":{"oneOf":[{"type":"boolean","uniqueKey":"has_error.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"has_error.oneOf.1","typeLabel":"null"}],"uniqueKey":"has_error","typeLabel":"boolean | null"},"label_source":{"type":"string","uniqueKey":"label_source","typeLabel":"string"},"limit":{"oneOf":[{"type":"integer","format":"int64","description":"Runs to inspect, newest first. Default 20, max 50.","uniqueKey":"limit.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","format":"int64","description":"Runs to inspect, newest first. Default 20, max 50.","uniqueKey":"limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"limit","typeLabel":"integer\u003cint64> | null"},"min_duration_ms":{"oneOf":[{"type":"integer","format":"int32","uniqueKey":"min_duration_ms.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","format":"int32","uniqueKey":"min_duration_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"min_duration_ms","typeLabel":"integer\u003cint32> | null"},"project_id":{"oneOf":[{"type":"string","description":"Sample runs from one project only.","uniqueKey":"project_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Sample runs from one project only.","uniqueKey":"project_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"project_id","typeLabel":"string | null"},"span_name":{"oneOf":[{"type":"string","uniqueKey":"span_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"span_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"span_name","typeLabel":"string | null"},"span_name_prefix":{"oneOf":[{"type":"string","uniqueKey":"span_name_prefix.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"span_name_prefix.oneOf.1","typeLabel":"null"}],"uniqueKey":"span_name_prefix","typeLabel":"string | null"},"status_code":{"oneOf":[{"type":"string","uniqueKey":"status_code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"status_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"status_code","typeLabel":"string | null"},"value_source":{"type":"string","uniqueKey":"value_source","typeLabel":"string"},"workforce_id":{"oneOf":[{"type":"string","description":"Sample runs from one agent/workflow (`OrgsApps.id`). Strongly\nrecommended: it makes the sample representative of what you're\nfiltering, instead of whatever the org ran most recently.","uniqueKey":"workforce_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Sample runs from one agent/workflow (`OrgsApps.id`). Strongly\nrecommended: it makes the sample representative of what you're\nfiltering, instead of whatever the org ran most recently.","uniqueKey":"workforce_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"workforce_id","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Per-step latency":{"title":"Per-step latency","value":{"workforce_id":"42","value_source":"duration_ms","label_source":"span_name"}},"Which tools are failing":{"title":"Which tools are failing","value":{"workforce_id":"42","has_error":true,"value_source":"count","label_source":"span_name"}}},"exampleType":"examples"}},"required":true,"exampleType":"examples"},"responses":{"69ca3170-104b-415e-accc-7e974a21a418":{"description":"What the definition would record","content":{"application/json":{"schema":{"type":"object","required":["runs_sampled","runs_matched","observations","labels","samples"],"properties":{"labels":{"type":"array","items":{"type":"object","description":"What the filter would have recorded for one label.","required":["count","sum","min","max"],"properties":{"count":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"labels.items.[INDEX].count","typeLabel":"integer\u003cint64>"},"max":{"type":"number","format":"double","isRequired":true,"uniqueKey":"labels.items.[INDEX].max","typeLabel":"number\u003cdouble>"},"min":{"type":"number","format":"double","isRequired":true,"uniqueKey":"labels.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"sum":{"type":"number","format":"double","isRequired":true,"uniqueKey":"labels.items.[INDEX].sum","typeLabel":"number\u003cdouble>"},"label":{"oneOf":[{"type":"string","description":"`null` when `label_source` is `none`.","uniqueKey":"labels.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","description":"`null` when `label_source` is `none`.","uniqueKey":"labels.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"uniqueKey":"labels.items.[INDEX].label","typeLabel":"string | null"}},"uniqueKey":"labels.items.[INDEX]","typeLabel":"object"},"description":"Per-label aggregates, exactly as they'd land in `Metrics`. More than a\nhandful of entries here means `label_source: span_name` over a\nhigh-cardinality predicate — every label is another bin per minute.","isRequired":true,"uniqueKey":"labels","typeLabel":"object[]"},"observations":{"type":"integer","format":"int64","description":"Total matching spans across the sample.","isRequired":true,"uniqueKey":"observations","typeLabel":"integer\u003cint64>"},"runs_matched":{"type":"integer","format":"int64","description":"Of those, how many produced at least one observation.","isRequired":true,"uniqueKey":"runs_matched","typeLabel":"integer\u003cint64>"},"runs_sampled":{"type":"integer","format":"int64","description":"Runs with a trace that were actually inspected.","isRequired":true,"uniqueKey":"runs_sampled","typeLabel":"integer\u003cint64>"},"samples":{"type":"array","items":{"type":"object","description":"One matched span, for eyeballing that the predicate hit what was intended.","required":["run_id","span_name","value"],"properties":{"run_id":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"samples.items.[INDEX].run_id","typeLabel":"integer\u003cint64>"},"span_name":{"type":"string","isRequired":true,"uniqueKey":"samples.items.[INDEX].span_name","typeLabel":"string"},"value":{"type":"number","format":"double","isRequired":true,"uniqueKey":"samples.items.[INDEX].value","typeLabel":"number\u003cdouble>"}},"uniqueKey":"samples.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"samples","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"labels":[{"count":123,"max":123,"min":123,"sum":123,"label":"\u003cstring>"}],"observations":123,"runs_matched":123,"runs_sampled":123,"samples":[{"run_id":123,"span_name":"\u003cstring>","value":123}]}}},"exampleType":"generated"}},"exampleType":"generated"},"e203365a-9ff5-4666-a5dd-a6edab3610e4":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code (e.g. `ALREADY_EXISTS`, `BAD_REQUEST`).","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"10137bc1-05eb-49b6-b7d9-cab58dae59fd":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code (e.g. `ALREADY_EXISTS`, `BAD_REQUEST`).","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable description.","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"39e33ea4-f8d6-441d-86bb-e6b326cc2b61":{"bearer_auth":{"type":"http","scheme":"bearer","description":"Timbal API key. Obtain your API key from the Timbal platform settings. See [Authentication](/api-reference/authentication) for more information.","scopes":[]}}},"servers":{"063e6282-8e14-477c-a715-c7b30ccd340b":{"url":"https://api.timbal.ai","description":"Production"},"a9adc882-01d3-4459-9489-6baa7c24677b":{"url":"https://api.dev.timbal.ai","description":"Development"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Timbal API key. Obtain your API key from the Timbal platform settings. See [Authentication](/api-reference/authentication) for more information.","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Timbal API key. Obtain your API key from the Timbal platform settings. See [Authentication](/api-reference/authentication) for more information.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearer_auth","name":"Authorization"}],"title":"bearer_auth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"timbaltechsl","siteName":"Timbal","title":"Preview Metric Definition - Timbal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-28T10:40:38.567Z","originalFileLocation":"api-reference/alarms/metrics/definitions/preview.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded. Definitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing yet. This answers that before you commit: which spans matched, what values they\u0026#x27;d contribute, and how many distinct labels the metric would carry. Samples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass workforce_id to make the sample representative of the agent you\u0026#x27;re actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it. Because it returns trace content, project_id doubles as the permission target: omit it and the sample spans the whole org, which needs alarms.manage; set it and the sample is capped to that project, which needs projects.alarms.manage there. A caller scoped to one project must therefore pass it.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Timbal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Preview Metric Definition - Timbal\">\u003cmeta data-mint-head property=\"og:description\" content=\"Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded. Definitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing yet. This answers that before you commit: which spans matched, what values they\u0026#x27;d contribute, and how many distinct labels the metric would carry. Samples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass workforce_id to make the sample representative of the agent you\u0026#x27;re actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it. Because it returns trace content, project_id doubles as the permission target: omit it and the sample spans the whole org, which needs alarms.manage; set it and the sample is capped to that project, which needs projects.alarms.manage there. A caller scoped to one project must therefore pass it.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Timbal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://timbaltechsl.mintlify.app/_mintlify/api/og/v2?division=Definitions\u0026amp;title=Preview+Metric+Definition\u0026amp;description=Run+a+candidate+predicate+against+recent+stored+traces+without+saving+it%2C+and+see+what+it+would+have+recorded.%0A%0ADefinitions+are+not+retroactive%2C+so+a+saved+pred\u0026amp;theme=259c386eb829de58cc6638f3\u0026amp;signature=ce8b31465101583a2c420931e3e62ead8869ff53e17f4483ba328e1c8390c113\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Preview Metric Definition - Timbal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded. Definitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing yet. This answers that before you commit: which spans matched, what values they\u0026#x27;d contribute, and how many distinct labels the metric would carry. Samples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass workforce_id to make the sample representative of the agent you\u0026#x27;re actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it. Because it returns trace content, project_id doubles as the permission target: omit it and the sample spans the whole org, which needs alarms.manage; set it and the sample is capped to that project, which needs projects.alarms.manage there. A caller scoped to one project must therefore pass it.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://timbaltechsl.mintlify.app/_mintlify/api/og/v2?division=Definitions\u0026amp;title=Preview+Metric+Definition\u0026amp;description=Run+a+candidate+predicate+against+recent+stored+traces+without+saving+it%2C+and+see+what+it+would+have+recorded.%0A%0ADefinitions+are+not+retroactive%2C+so+a+saved+pred\u0026amp;theme=259c386eb829de58cc6638f3\u0026amp;signature=ce8b31465101583a2c420931e3e62ead8869ff53e17f4483ba328e1c8390c113\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/timbaltechsl/HA5uMpfE6Se4k3W2/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Timbal\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/alarms/metrics/definitions/preview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.timbal.ai/#organization\",\"name\":\"Timbal\",\"url\":\"https://docs.timbal.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/timbaltechsl/pt3LfpScmY2Go19A/logo/light-small-1.svg?fit=max\u0026auto=format\u0026n=pt3LfpScmY2Go19A\u0026q=85\u0026s=fd26b0ce39e9e46d6dd08d81b611a9ea\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.timbal.ai#website\",\"name\":\"Timbal\",\"url\":\"https://docs.timbal.ai\",\"publisher\":{\"@id\":\"https://docs.timbal.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview#webpage\",\"url\":\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview\",\"name\":\"Preview Metric Definition\",\"description\":\"Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded. Definitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing yet. This answers that before you commit: which spans matched, what values they'd contribute, and how many distinct labels the metric would carry. Samples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass workforce_id to make the sample representative of the agent you're actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it. Because it returns trace content, project_id doubles as the permission target: omit it and the sample spans the whole org, which needs alarms.manage; set it and the sample is capped to that project, which needs projects.alarms.manage there. A caller scoped to one project must therefore pass it.\",\"dateModified\":\"2026-07-28T10:40:38.567Z\",\"isPartOf\":{\"@id\":\"https://docs.timbal.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Alarms\",\"item\":\"https://docs.timbal.ai/api-reference/alarms/list\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Metrics\",\"item\":\"https://docs.timbal.ai/api-reference/alarms/metrics/query\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Definitions\",\"item\":\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/list\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Preview Metric Definition\",\"item\":\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview#apireference\",\"headline\":\"Preview Metric Definition\",\"name\":\"Preview Metric Definition\",\"description\":\"Run a candidate predicate against recent stored traces without saving it, and see what it would have recorded. Definitions are not retroactive, so a saved predicate that matches nothing looks identical to one that matches nothing yet. This answers that before you commit: which spans matched, what values they'd contribute, and how many distinct labels the metric would carry. Samples the newest runs (20 by default, 50 max) — enough to tell a working predicate from a broken one, not a measurement of the true rate. Pass workforce_id to make the sample representative of the agent you're actually matching. This is the only endpoint that reads stored traces, which is why it is capped; do not poll it. Because it returns trace content, project_id doubles as the permission target: omit it and the sample spans the whole org, which needs alarms.manage; set it and the sample is capped to that project, which needs projects.alarms.manage there. A caller scoped to one project must therefore pass it.\",\"url\":\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.timbal.ai/api-reference/alarms/metrics/definitions/preview#webpage\"},\"dateModified\":\"2026-07-28T10:40:38.567Z\",\"publisher\":{\"@id\":\"https://docs.timbal.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.timbal.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Timbal\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Timbal","nav":{"global":null,"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":""}]},{"tab":"Examples","pages":[{"title":"Examples","href":"/examples"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Errors","href":"/api-reference/errors"},{"title":"Pagination","href":"/api-reference/pagination"},{"title":"Upload file (temporary)","openapi":"POST /files","href":"/api-reference/files/upload"}]},{"group":"Me","pages":[{"title":"List Organizations","openapi":"GET /me/orgs","href":"/api-reference/me/list-orgs"},{"title":"Update Profile","openapi":"PATCH /me","href":"/api-reference/me/update"},{"group":"Profile Photo","pages":[{"title":"Upload Profile Photo","openapi":"PUT /me/photo","href":"/api-reference/me/photo/upload"},{"title":"Delete Profile Photo","openapi":"DELETE /me/photo","href":"/api-reference/me/photo/delete"}]},{"group":"API Tokens","pages":[{"title":"List API Tokens","openapi":"GET /me/tokens","href":"/api-reference/me/tokens/list"},{"title":"Create API Token","openapi":"POST /me/tokens","href":"/api-reference/me/tokens/create"},{"title":"Revoke API Token","openapi":"DELETE /me/tokens/{token_id}","href":"/api-reference/me/tokens/revoke"}]}]},{"group":"Organizations","pages":[{"title":"Create Organization","openapi":"POST /orgs","href":"/api-reference/orgs/create"},{"title":"Get Organization","openapi":"GET /orgs/{org_id}","href":"/api-reference/orgs/get"},{"title":"Update Organization","openapi":"PATCH /orgs/{org_id}","href":"/api-reference/orgs/update"},{"title":"List Account Contacts","openapi":"GET /orgs/{org_id}/contacts","href":"/api-reference/orgs/contacts/list"},{"title":"List Embedding Models","openapi":"GET /orgs/{org_id}/embedding-models","href":"/api-reference/orgs/embedding-models/list"},{"group":"Analytics","pages":[{"title":"Org Analytics — Costs","openapi":"GET /orgs/{org_id}/analytics/costs","href":"/api-reference/orgs/analytics/costs"},{"title":"Org Analytics — Usage","openapi":"GET /orgs/{org_id}/analytics/usage","href":"/api-reference/orgs/analytics/usage"},{"title":"Org Analytics — Users","openapi":"GET /orgs/{org_id}/analytics/users","href":"/api-reference/orgs/analytics/users"}]},{"group":"Billing","pages":[{"title":"Get Overage Summary","openapi":"GET /orgs/{org_id}/billing/overage","href":"/api-reference/orgs/billing/overage-summary"},{"title":"Update Overage Billing","openapi":"POST /orgs/{org_id}/billing/overage","href":"/api-reference/orgs/billing/overage"},{"title":"Get Credit Budgets","openapi":"GET /orgs/{org_id}/billing/budgets","href":"/api-reference/orgs/billing/budgets/get"},{"title":"Replace Credit Budgets","openapi":"PUT /orgs/{org_id}/billing/budgets","href":"/api-reference/orgs/billing/budgets/replace"},{"title":"Patch Credit Budgets","openapi":"PATCH /orgs/{org_id}/billing/budgets","href":"/api-reference/orgs/billing/budgets/patch"},{"title":"Get Compute Billing","openapi":"GET /orgs/{org_id}/billing/compute","href":"/api-reference/orgs/billing/compute/get"},{"title":"Set Compute Billing","openapi":"PUT /orgs/{org_id}/billing/compute","href":"/api-reference/orgs/billing/compute/put"}]},{"group":"Content","pages":[{"title":"Sign Content URL","openapi":"POST /orgs/{org_id}/content/sign","href":"/api-reference/orgs/content/sign"}]},{"group":"Organization Logo","pages":[{"title":"Upload Organization Logo","openapi":"PUT /orgs/{org_id}/photo","href":"/api-reference/orgs/photo/upload"},{"title":"Delete Organization Logo","openapi":"DELETE /orgs/{org_id}/photo","href":"/api-reference/orgs/photo/delete"}]},{"group":"Credit Grants","pages":[{"title":"List Credit Grants","openapi":"GET /orgs/{org_id}/credit-grants","href":"/api-reference/orgs/credit-grants/list"}]},{"group":"Model Policies","pages":[{"title":"List Model Policies","openapi":"GET /orgs/{org_id}/models/policies","href":"/api-reference/orgs/models/policies/list"},{"title":"Create Model Policy","openapi":"POST /orgs/{org_id}/models/policies","href":"/api-reference/orgs/models/policies/create"},{"title":"Delete Model Policy","openapi":"DELETE /orgs/{org_id}/models/policies/{policy_id}","href":"/api-reference/orgs/models/policies/delete"}]},{"group":"Templates","pages":[{"title":"List Templates","openapi":"GET /orgs/{org_id}/templates","href":"/api-reference/orgs/templates/list"}]},{"group":"Domains","pages":[{"title":"List Domains","openapi":"GET /orgs/{org_id}/domains","href":"/api-reference/orgs/domains/list"},{"title":"Create Domain","openapi":"POST /orgs/{org_id}/domains","href":"/api-reference/orgs/domains/create"},{"title":"Get Domain","openapi":"GET /orgs/{org_id}/domains/{domain_id}","href":"/api-reference/orgs/domains/get"},{"title":"Delete Domain","openapi":"DELETE /orgs/{org_id}/domains/{domain_id}","href":"/api-reference/orgs/domains/delete"}]},{"group":"IAM","pages":[{"title":"List IAM Actions","openapi":"GET /orgs/{org_id}/iam/actions","href":"/api-reference/orgs/iam/actions/list"},{"title":"List Users by Action","openapi":"GET /orgs/{org_id}/iam/actions/{action}/users","href":"/api-reference/orgs/iam/actions/users"},{"title":"List Users by Resource","openapi":"GET /orgs/{org_id}/iam/resources/{resource}/users","href":"/api-reference/orgs/iam/resources/users"},{"title":"Check IAM Permissions","openapi":"POST /orgs/{org_id}/iam/check","href":"/api-reference/orgs/iam/check"},{"group":"Roles","pages":[{"title":"List Organization Roles","openapi":"GET /orgs/{org_id}/iam/roles","href":"/api-reference/orgs/roles/list"},{"title":"Create Organization Role","openapi":"POST /orgs/{org_id}/iam/roles","href":"/api-reference/orgs/roles/create"},{"title":"Get Organization Role","openapi":"GET /orgs/{org_id}/iam/roles/{role_id}","href":"/api-reference/orgs/roles/get"},{"title":"Update Organization Role","openapi":"PATCH /orgs/{org_id}/iam/roles/{role_id}","href":"/api-reference/orgs/roles/update"},{"title":"Delete Organization Role","openapi":"DELETE /orgs/{org_id}/iam/roles/{role_id}","href":"/api-reference/orgs/roles/delete"}]},{"group":"Users","pages":[{"title":"List Users","openapi":"GET /orgs/{org_id}/iam/users","href":"/api-reference/orgs/users/list"},{"title":"Add User","openapi":"POST /orgs/{org_id}/iam/users","href":"/api-reference/orgs/users/add"},{"title":"Remove User","openapi":"DELETE /orgs/{org_id}/iam/users","href":"/api-reference/orgs/users/delete"},{"title":"Update User Roles","openapi":"PUT /orgs/{org_id}/iam/users/{user_id}/roles","href":"/api-reference/orgs/users/update"},{"title":"Batch Update User Roles","openapi":"PUT /orgs/{org_id}/iam/users/roles","href":"/api-reference/orgs/iam/users/batch-roles"},{"title":"Get User Effective Grants","openapi":"GET /orgs/{org_id}/iam/users/{user_id}/effective-grants","href":"/api-reference/orgs/iam/users/effective-grants"}]}]},{"group":"Identity Providers","pages":[{"title":"List Identity Providers","openapi":"GET /orgs/{org_id}/identity-providers","href":"/api-reference/orgs/identity-providers/list"},{"title":"Create Identity Provider","openapi":"POST /orgs/{org_id}/identity-providers","href":"/api-reference/orgs/identity-providers/create"},{"title":"Get a single SSO connection (secret masked)","openapi":"GET /orgs/{org_id}/identity-providers/{provider_id}","href":"/api-reference/orgs/identity-providers/get"},{"title":"Update Identity Provider","openapi":"PATCH /orgs/{org_id}/identity-providers/{provider_id}","href":"/api-reference/orgs/identity-providers/update"},{"title":"Delete an SSO connection (cascades to its group mappings)","openapi":"DELETE /orgs/{org_id}/identity-providers/{provider_id}","href":"/api-reference/orgs/identity-providers/delete"},{"title":"Default Role","openapi":"PUT /orgs/{org_id}/identity-providers/{provider_id}/default-role","href":"/api-reference/orgs/identity-providers/default-role"},{"title":"List external-group to role mappings for a connection","openapi":"GET /orgs/{org_id}/identity-providers/{provider_id}/group-mappings","href":"/api-reference/orgs/identity-providers/group-mappings/list"},{"title":"Map an external IdP group to a role for this connection","openapi":"POST /orgs/{org_id}/identity-providers/{provider_id}/group-mappings","href":"/api-reference/orgs/identity-providers/group-mappings/create"},{"title":"Delete a group-to-role mapping","openapi":"DELETE /orgs/{org_id}/identity-providers/{provider_id}/group-mappings/{mapping_id}","href":"/api-reference/orgs/identity-providers/group-mappings/delete"}]},{"group":"SCIM","pages":[{"title":"List SCIM Tokens","openapi":"GET /orgs/{org_id}/scim-tokens","href":"/api-reference/orgs/scim-tokens/list"},{"title":"Create SCIM Token","openapi":"POST /orgs/{org_id}/scim-tokens","href":"/api-reference/orgs/scim-tokens/create"},{"title":"Revoke SCIM Token","openapi":"DELETE /orgs/{org_id}/scim-tokens/{token_id}","href":"/api-reference/orgs/scim-tokens/revoke"}]}]},{"group":"Projects","pages":[{"title":"List Projects","openapi":"GET /orgs/{org_id}/projects","href":"/api-reference/projects/list"},{"title":"Create Project","openapi":"POST /orgs/{org_id}/projects","href":"/api-reference/projects/create"},{"title":"Get Project","openapi":"GET /orgs/{org_id}/projects/{project_id}","href":"/api-reference/projects/get"},{"title":"Update Project","openapi":"PATCH /orgs/{org_id}/projects/{project_id}","href":"/api-reference/projects/update"},{"title":"Delete Project","openapi":"DELETE /orgs/{org_id}/projects/{project_id}","href":"/api-reference/projects/delete"},{"title":"Duplicate Project","openapi":"POST /orgs/{org_id}/projects/{project_id}/duplicate","href":"/api-reference/projects/duplicate"},{"title":"Link Knowledge Base","openapi":"PUT /orgs/{org_id}/projects/{project_id}/k2","href":"/api-reference/projects/link-knowledge-base"},{"title":"Unlink Knowledge Base","openapi":"DELETE /orgs/{org_id}/projects/{project_id}/k2","href":"/api-reference/projects/unlink-knowledge-base"},{"group":"App Auth","pages":[{"title":"Get App Auth Settings","openapi":"GET /orgs/{org_id}/projects/{project_id}/auth","href":"/api-reference/projects/auth/get"},{"title":"Update App Auth Settings","openapi":"PATCH /orgs/{org_id}/projects/{project_id}/auth","href":"/api-reference/projects/auth/update"},{"title":"Update Auth Provider","openapi":"PUT /orgs/{org_id}/projects/{project_id}/auth/providers/{provider}","href":"/api-reference/projects/auth/providers/update"}]},{"group":"Analytics","pages":[{"title":"Cost Analytics","openapi":"GET /orgs/{org_id}/projects/{project_id}/analytics/credits","href":"/api-reference/projects/analytics/credits"},{"title":"Usage Analytics","sidebarTitle":"General Analytics","openapi":"GET /orgs/{org_id}/projects/{project_id}/analytics/usage","href":"/api-reference/projects/analytics/usage"},{"title":"User Analytics","openapi":"GET /orgs/{org_id}/projects/{project_id}/analytics/users","href":"/api-reference/projects/analytics/users"}]},{"group":"Environments","pages":[{"title":"List Environments","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs","href":"/api-reference/projects/environments/list"},{"title":"Create Environment","openapi":"POST /orgs/{org_id}/projects/{project_id}/envs","href":"/api-reference/projects/environments/create"},{"title":"Delete Environment","openapi":"DELETE /orgs/{org_id}/projects/{project_id}/envs/{env_id}","href":"/api-reference/projects/environments/delete"},{"title":"Update Branch","openapi":"PATCH /orgs/{org_id}/projects/{project_id}/envs/{env_id}/branch","href":"/api-reference/projects/environments/update-branch"},{"title":"Update Config","openapi":"PATCH /orgs/{org_id}/projects/{project_id}/envs/{env_id}/config","href":"/api-reference/projects/environments/update-config"},{"title":"Deploy","openapi":"POST /orgs/{org_id}/projects/{project_id}/envs/{env_id}/deploy","href":"/api-reference/projects/environments/deploy"},{"title":"Update Domain","openapi":"PATCH /orgs/{org_id}/projects/{project_id}/envs/{env_id}/domain","href":"/api-reference/projects/environments/update-domain"},{"title":"Get Metrics","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/metrics/{metric_type}","href":"/api-reference/projects/environments/get-metrics"},{"title":"Stop","openapi":"POST /orgs/{org_id}/projects/{project_id}/envs/{env_id}/stop","href":"/api-reference/projects/environments/stop"},{"title":"List Environment Deployments","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/deployments","href":"/api-reference/projects/environments/deployments/list"},{"title":"Get Environment Logs","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/logs","href":"/api-reference/projects/environments/logs"}]},{"group":"Runs","pages":[{"title":"List Runs","openapi":"GET /orgs/{org_id}/projects/{project_id}/runs","href":"/api-reference/projects/runs/list"},{"title":"Get Run","openapi":"GET /orgs/{org_id}/projects/{project_id}/runs/{run_id}","href":"/api-reference/projects/runs/get"},{"title":"List Reactions","openapi":"GET /orgs/{org_id}/projects/{project_id}/runs/{run_id}/reactions","href":"/api-reference/projects/runs/reactions-list"},{"title":"Add Reaction","openapi":"POST /orgs/{org_id}/projects/{project_id}/runs/{run_id}/reactions","href":"/api-reference/projects/runs/reactions-add"}]},{"group":"Variables","pages":[{"title":"List Variables","openapi":"GET /orgs/{org_id}/projects/{project_id}/vars","href":"/api-reference/projects/vars/list"},{"title":"Create Variable","openapi":"POST /orgs/{org_id}/projects/{project_id}/vars","href":"/api-reference/projects/vars/create"},{"title":"Batch Create Variables","openapi":"POST /orgs/{org_id}/projects/{project_id}/vars/batch","href":"/api-reference/projects/vars/batch-create"},{"title":"Get Variable","openapi":"GET /orgs/{org_id}/projects/{project_id}/vars/{var_id}","href":"/api-reference/projects/vars/get"},{"title":"Delete Variable","openapi":"DELETE /orgs/{org_id}/projects/{project_id}/vars/{var_id}","href":"/api-reference/projects/vars/delete"},{"title":"Update Variable","openapi":"PATCH /orgs/{org_id}/projects/{project_id}/vars/{var_id}","href":"/api-reference/projects/vars/update"}]},{"group":"Channels","pages":[{"title":"Upsert Channel","openapi":"PUT /orgs/{org_id}/projects/{project_id}/channels/{workforce}/{provider}","href":"/api-reference/projects/channels/put"},{"title":"Delete Channel","openapi":"DELETE /orgs/{org_id}/projects/{project_id}/channels/{workforce}/{provider}","href":"/api-reference/projects/channels/delete"}]},{"group":"Workforce","pages":[{"title":"List Workforce","openapi":"GET /orgs/{org_id}/projects/{project_id}/workforce","href":"/api-reference/projects/workforce/list"},{"title":"Create Workforce","openapi":"POST /orgs/{org_id}/projects/{project_id}/workforce","href":"/api-reference/projects/workforce/create"},{"title":"Delete Workforce","openapi":"DELETE /orgs/{org_id}/projects/{project_id}/workforce","href":"/api-reference/projects/workforce/delete"},{"title":"Call Workforce","openapi":"POST /orgs/{org_id}/projects/{project_id}/workforce/{workforce}/{*path}","href":"/api-reference/projects/workforce/call"},{"title":"Call Workforce (GET)","openapi":"GET /orgs/{org_id}/projects/{project_id}/workforce/{workforce}/{*path}","href":"/api-reference/projects/workforce/call-get"},{"title":"Call Workforce (PUT)","openapi":"PUT /orgs/{org_id}/projects/{project_id}/workforce/{workforce}/{*path}","href":"/api-reference/projects/workforce/call-put"},{"title":"Call Workforce (PATCH)","openapi":"PATCH /orgs/{org_id}/projects/{project_id}/workforce/{workforce}/{*path}","href":"/api-reference/projects/workforce/call-patch"},{"title":"Call Workforce (DELETE)","openapi":"DELETE /orgs/{org_id}/projects/{project_id}/workforce/{workforce}/{*path}","href":"/api-reference/projects/workforce/call-delete"}]}]},{"group":"Knowledge Bases","pages":[{"title":"List Knowledge Bases","openapi":"GET /orgs/{org_id}/k2","href":"/api-reference/knowledge-bases/list"},{"title":"Create Knowledge Base","openapi":"POST /orgs/{org_id}/k2","href":"/api-reference/knowledge-bases/create"},{"title":"Get Knowledge Base","openapi":"GET /orgs/{org_id}/k2/{kb_id}","href":"/api-reference/knowledge-bases/get"},{"title":"Edit Knowledge Base","openapi":"PATCH /orgs/{org_id}/k2/{kb_id}","href":"/api-reference/knowledge-bases/update"},{"title":"Delete Knowledge Base","openapi":"DELETE /orgs/{org_id}/k2/{kb_id}","href":"/api-reference/knowledge-bases/delete"},{"title":"Query","openapi":"POST /orgs/{org_id}/k2/{kb_id}/query","href":"/api-reference/knowledge-bases/query"},{"title":"Get Schema","openapi":"GET /orgs/{org_id}/k2/{kb_id}/schema","href":"/api-reference/knowledge-bases/schema"},{"title":"Upload Data","openapi":"POST /orgs/{org_id}/k2/{kb_id}/upload","href":"/api-reference/knowledge-bases/upload"},{"group":"Policies","pages":[{"title":"List Policies","openapi":"GET /orgs/{org_id}/k2/{kb_id}/policies","href":"/api-reference/knowledge-bases/policies/list"},{"title":"Create Policy","openapi":"POST /orgs/{org_id}/k2/{kb_id}/policies","href":"/api-reference/knowledge-bases/policies/create"},{"title":"Get Policy","openapi":"GET /orgs/{org_id}/k2/{kb_id}/policies/{policy_id}","href":"/api-reference/knowledge-bases/policies/get"},{"title":"Update Policy","openapi":"PATCH /orgs/{org_id}/k2/{kb_id}/policies/{policy_id}","href":"/api-reference/knowledge-bases/policies/update"},{"title":"Delete Policy","openapi":"DELETE /orgs/{org_id}/k2/{kb_id}/policies/{policy_id}","href":"/api-reference/knowledge-bases/policies/delete"},{"title":"Set Governance Mode","openapi":"PUT /orgs/{org_id}/k2/{kb_id}/policies/governance-mode","href":"/api-reference/knowledge-bases/policies/governance-mode"},{"group":"Assignments","pages":[{"title":"List Policy Assignments","openapi":"GET /orgs/{org_id}/k2/{kb_id}/policies/{policy_id}/assignments","href":"/api-reference/knowledge-bases/policies/assignments/list"},{"title":"Create Policy Assignment","openapi":"POST /orgs/{org_id}/k2/{kb_id}/policies/{policy_id}/assignments","href":"/api-reference/knowledge-bases/policies/assignments/create"},{"title":"Get Policy Assignment","openapi":"GET /orgs/{org_id}/k2/{kb_id}/policies/{policy_id}/assignments/{assignment_id}","href":"/api-reference/knowledge-bases/policies/assignments/get"},{"title":"Delete Policy Assignment","openapi":"DELETE /orgs/{org_id}/k2/{kb_id}/policies/{policy_id}/assignments/{assignment_id}","href":"/api-reference/knowledge-bases/policies/assignments/delete"}]}]},{"group":"Backups","pages":[{"title":"List Backups","openapi":"GET /orgs/{org_id}/k2/{kb_id}/backups","href":"/api-reference/knowledge-bases/backups/list"},{"title":"Create Backup","openapi":"POST /orgs/{org_id}/k2/{kb_id}/backups","href":"/api-reference/knowledge-bases/backups/create"},{"title":"Get Backup","openapi":"GET /orgs/{org_id}/k2/{kb_id}/backups/{backup_id}","href":"/api-reference/knowledge-bases/backups/get"},{"title":"List Restores","openapi":"GET /orgs/{org_id}/k2/{kb_id}/restores","href":"/api-reference/knowledge-bases/restores/list"},{"title":"Restore","openapi":"POST /orgs/{org_id}/k2/{kb_id}/restores","href":"/api-reference/knowledge-bases/restores/create"},{"title":"Get Restore","openapi":"GET /orgs/{org_id}/k2/{kb_id}/restores/{restore_id}","href":"/api-reference/knowledge-bases/restores/get"}]},{"group":"Files","pages":[{"title":"List Files","openapi":"GET /orgs/{org_id}/k2/{kb_id}/files","href":"/api-reference/knowledge-bases/files/list"},{"title":"Add File","openapi":"POST /orgs/{org_id}/k2/{kb_id}/files","href":"/api-reference/knowledge-bases/files/add"},{"title":"Create Directory","openapi":"POST /orgs/{org_id}/k2/{kb_id}/directories","href":"/api-reference/knowledge-bases/files/create-dir"},{"title":"Get File","openapi":"GET /orgs/{org_id}/k2/{kb_id}/files/{file_id}","href":"/api-reference/knowledge-bases/files/get"},{"title":"Delete File","openapi":"DELETE /orgs/{org_id}/k2/{kb_id}/files/{file_id}","href":"/api-reference/knowledge-bases/files/delete"},{"group":"Chunks","pages":[{"title":"List Chunks","openapi":"GET /orgs/{org_id}/k2/{kb_id}/files/{file_id}/chunks","href":"/api-reference/knowledge-bases/files/chunks/list"},{"title":"Insert Chunk","openapi":"POST /orgs/{org_id}/k2/{kb_id}/files/{file_id}/chunks","href":"/api-reference/knowledge-bases/files/chunks/insert"},{"title":"Get Chunk","openapi":"GET /orgs/{org_id}/k2/{kb_id}/files/{file_id}/chunks/{chunk_uid}","href":"/api-reference/knowledge-bases/files/chunks/get"},{"title":"Update Chunk","openapi":"PATCH /orgs/{org_id}/k2/{kb_id}/files/{file_id}/chunks/{chunk_uid}","href":"/api-reference/knowledge-bases/files/chunks/update"},{"title":"Delete Chunk","openapi":"DELETE /orgs/{org_id}/k2/{kb_id}/files/{file_id}/chunks/{chunk_uid}","href":"/api-reference/knowledge-bases/files/chunks/delete"}]}]}]},{"group":"Evals","pages":[{"title":"List Eval Definitions","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/definitions","href":"/api-reference/evals/definitions"},{"group":"Jobs","pages":[{"title":"List Eval Jobs","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/jobs","href":"/api-reference/evals/jobs/list"},{"title":"Get Eval Job","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/jobs/{job_uid}","href":"/api-reference/evals/jobs/get"},{"title":"Create Eval Job","openapi":"POST /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/jobs","href":"/api-reference/evals/jobs/create"}]},{"group":"Runs","pages":[{"title":"List Eval Runs","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/runs","href":"/api-reference/evals/runs/list"},{"title":"Get Eval Run","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/runs/{eval_run_id}","href":"/api-reference/evals/runs/get"},{"title":"Stream Eval Run Events","openapi":"GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/runs/{eval_run_id}/events","href":"/api-reference/evals/runs/events"},{"title":"Create Eval Run","openapi":"POST /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/runs","href":"/api-reference/evals/runs/create"},{"title":"Delete Eval Run","openapi":"DELETE /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/runs/{eval_run_id}","href":"/api-reference/evals/runs/delete"}]}]},{"group":"ACE","tag":"Pro","pages":[{"title":"Create from Agent","openapi":"POST /orgs/{org_id}/projects/{project_id}/workforce/{workforce}/ace","href":"/api-reference/ace/create-from-workforce"},{"title":"Link to Agent","openapi":"PUT /orgs/{org_id}/projects/{project_id}/workforce/{workforce}/ace","href":"/api-reference/ace/link"},{"title":"Unlink from Agent","openapi":"DELETE /orgs/{org_id}/projects/{project_id}/workforce/{workforce}/ace","href":"/api-reference/ace/unlink"},{"title":"List Policies","openapi":"GET /ace/{ace_uid}/policies","href":"/api-reference/ace/list-policies"},{"title":"List Context Variables","openapi":"GET /ace/{ace_uid}/vars","href":"/api-reference/ace/list-context-vars"},{"title":"Chat Completions","openapi":"POST /ace/{ace_uid}/v1/chat/completions","href":"/api-reference/ace/chat-completions"},{"group":"Jobs","pages":[{"title":"List Jobs","openapi":"GET /ace/{ace_uid}/jobs","href":"/api-reference/ace/jobs/list"},{"title":"Enqueue Job","openapi":"POST /ace/{ace_uid}/jobs","href":"/api-reference/ace/jobs/create"},{"title":"Get Job","openapi":"GET /ace/{ace_uid}/jobs/{job_uid}","href":"/api-reference/ace/jobs/get"},{"title":"Cancel Job","openapi":"POST /ace/{ace_uid}/jobs/{job_uid}/cancel","href":"/api-reference/ace/jobs/cancel"},{"title":"Retry Job","openapi":"POST /ace/{ace_uid}/jobs/{job_uid}/retry","href":"/api-reference/ace/jobs/retry"}]}]},{"group":"Alarms","pages":[{"title":"List Alarms","openapi":"GET /orgs/{org_id}/alarms","href":"/api-reference/alarms/list"},{"title":"Create Alarm","openapi":"POST /orgs/{org_id}/alarms","href":"/api-reference/alarms/create"},{"title":"Get Alarm","openapi":"GET /orgs/{org_id}/alarms/{alarm_id}","href":"/api-reference/alarms/get"},{"title":"Update Alarm","openapi":"PATCH /orgs/{org_id}/alarms/{alarm_id}","href":"/api-reference/alarms/update"},{"title":"Delete Alarm","openapi":"DELETE /orgs/{org_id}/alarms/{alarm_id}","href":"/api-reference/alarms/delete"},{"title":"Alarms Health","openapi":"GET /orgs/{org_id}/alarms/health","href":"/api-reference/alarms/health"},{"title":"Alarm History","openapi":"GET /orgs/{org_id}/alarms/{alarm_id}/history","href":"/api-reference/alarms/history"},{"title":"Attach Channel to Alarm","openapi":"POST /orgs/{org_id}/alarms/{alarm_id}/channels","href":"/api-reference/alarms/attach-channel"},{"title":"Detach Channel from Alarm","openapi":"DELETE /orgs/{org_id}/alarms/{alarm_id}/channels/{channel_id}","href":"/api-reference/alarms/detach-channel"},{"group":"Channels","pages":[{"title":"List Channels","openapi":"GET /orgs/{org_id}/channels","href":"/api-reference/alarms/channels/list"},{"title":"Create Channel","openapi":"POST /orgs/{org_id}/channels","href":"/api-reference/alarms/channels/create"},{"title":"Delete Channel","openapi":"DELETE /orgs/{org_id}/channels/{channel_id}","href":"/api-reference/alarms/channels/delete"}]},{"group":"Metrics","pages":[{"title":"Query Metric","openapi":"GET /orgs/{org_id}/metrics","href":"/api-reference/alarms/metrics/query"},{"title":"Metrics Catalog","openapi":"GET /orgs/{org_id}/metrics/catalog","href":"/api-reference/alarms/metrics/catalog"},{"group":"Definitions","pages":[{"title":"List Metric Definitions","openapi":"GET /orgs/{org_id}/metrics/definitions","href":"/api-reference/alarms/metrics/definitions/list"},{"title":"Create Metric Definition","openapi":"POST /orgs/{org_id}/metrics/definitions","description":"Define a metric of your own, emitted as runs land. Once it exists it behaves like any platform metric: readable through `GET /orgs/{org_id}/metrics`, listed in the catalog with `origin: custom`, and alarmable with no extra setup.\n\nThe definition is a span predicate over each completed run's trace. Span paths are `{workforce}.{step}` and matching is on the **leaf**: use `llm` or `get_address`, not the full path. Predicate fields AND together and all are optional — omitting every one matches every non-root span.\n\n`metric_name` is forced under the reserved `trace.` prefix so a definition cannot shadow a platform series. Set `label_source` to `span_name` to break the metric out per step, then point an alarm at a single step with `dims.label`.\n\nDefinitions are **not retroactive**: matching happens as runs arrive, so a new definition only sees traces written after it. Dry-run it against stored traces first with `POST /orgs/{org_id}/metrics/definitions/preview`. Note also that only sum/count/avg/min/max are available on the result — percentiles are not derivable from metric bins.\n\nSet `project_id` to scope the definition to one project, which also makes it editable by holders of `projects.alarms.manage` there. Leaving it out defines an org-wide metric that runs against every project's traces, and needs `alarms.manage`.","href":"/api-reference/alarms/metrics/definitions/create"},{"title":"Preview Metric Definition","openapi":"POST /orgs/{org_id}/metrics/definitions/preview","href":"/api-reference/alarms/metrics/definitions/preview"},{"title":"Update Metric Definition","openapi":"PATCH /orgs/{org_id}/metrics/definitions/{definition_id}","description":"Only the name and the enabled flag are mutable. The predicate and destination metric are fixed at creation: changing them would splice two different meanings into one series with nothing marking the seam, so a changed definition should be a new definition.\n\nDisabling stops new observations within one flush interval (~10s). Bins already written stay and age out with normal metric retention.\n\nThe owning project is not mutable either, so the permission needed here is fixed: `alarms.manage` for an org-wide definition, `projects.alarms.manage` on the owner for a project one.","href":"/api-reference/alarms/metrics/definitions/update"},{"title":"Delete Metric Definition","openapi":"DELETE /orgs/{org_id}/metrics/definitions/{definition_id}","href":"/api-reference/alarms/metrics/definitions/delete"}]}]}]},{"group":"Connectors","pages":[{"title":"List Connectors","openapi":"GET /orgs/{org_id}/connectors","href":"/api-reference/connectors/list"},{"title":"Get Connector","openapi":"GET /orgs/{org_id}/connectors/{connector_id}","href":"/api-reference/connectors/get"},{"title":"Update Connector","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/update","href":"/api-reference/connectors/update"},{"title":"Push Local Config","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/local-config","href":"/api-reference/connectors/local-config"},{"title":"Query Connector","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/query","href":"/api-reference/connectors/query"},{"title":"Rebind Connector","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/rebind","href":"/api-reference/connectors/rebind"},{"title":"Revoke Connector","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/revoke","href":"/api-reference/connectors/revoke"},{"title":"Copy Filesystem to Knowledge Base","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/filesystems/copy","href":"/api-reference/connectors/filesystems/copy"},{"group":"Enrollment Tokens","pages":[{"title":"Create Enrollment Token","openapi":"POST /orgs/{org_id}/connectors/enrollment-tokens","href":"/api-reference/connectors/enrollment-tokens/create"}]},{"group":"Jobs","pages":[{"title":"List Connector Jobs","openapi":"GET /orgs/{org_id}/connectors/jobs","href":"/api-reference/connectors/jobs/list"},{"title":"Create Connector Job","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/jobs","href":"/api-reference/connectors/jobs/create"},{"title":"Stop Connector Job","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/jobs/{job_id}/stop","href":"/api-reference/connectors/jobs/stop"}]},{"group":"Syncs","pages":[{"title":"List Connector Syncs","openapi":"GET /orgs/{org_id}/connectors/syncs","href":"/api-reference/connectors/syncs/list"},{"title":"Create Connector Sync","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/syncs","href":"/api-reference/connectors/syncs/create"},{"title":"Get Connector Sync","openapi":"GET /orgs/{org_id}/connectors/{connector_id}/syncs/{sync_id}","href":"/api-reference/connectors/syncs/get"},{"title":"Update Connector Sync","openapi":"PATCH /orgs/{org_id}/connectors/{connector_id}/syncs/{sync_id}","href":"/api-reference/connectors/syncs/update"},{"title":"Delete Connector Sync","openapi":"DELETE /orgs/{org_id}/connectors/{connector_id}/syncs/{sync_id}","href":"/api-reference/connectors/syncs/delete"},{"title":"Run Sync Now","openapi":"POST /orgs/{org_id}/connectors/{connector_id}/syncs/{sync_id}/run","href":"/api-reference/connectors/syncs/run"}]},{"group":"Browse","pages":[{"title":"Browse Connections","openapi":"GET /orgs/{org_id}/connectors/{connector_id}/browse/connections","href":"/api-reference/connectors/browse/connections"},{"title":"Browse Tables","openapi":"GET /orgs/{org_id}/connectors/{connector_id}/browse/tables","href":"/api-reference/connectors/browse/tables"},{"title":"Browse Table","openapi":"GET /orgs/{org_id}/connectors/{connector_id}/browse/table","href":"/api-reference/connectors/browse/table"},{"title":"Browse Columns","openapi":"GET /orgs/{org_id}/connectors/{connector_id}/browse/columns","href":"/api-reference/connectors/browse/columns"},{"group":"Filesystems","pages":[{"title":"List Filesystems","openapi":"GET /orgs/{org_id}/connectors/{connector_id}/browse/filesystems","href":"/api-reference/connectors/browse/filesystems/list"},{"title":"List Filesystem Entries","openapi":"GET /orgs/{org_id}/connectors/{connector_id}/browse/filesystems/entries","href":"/api-reference/connectors/browse/filesystems/entries"},{"title":"Search Filesystem","openapi":"GET /orgs/{org_id}/connectors/{connector_id}/browse/filesystems/search","href":"/api-reference/connectors/browse/filesystems/search"},{"title":"Summarize Filesystem","openapi":"GET /orgs/{org_id}/connectors/{connector_id}/browse/filesystems/summary","href":"/api-reference/connectors/browse/filesystems/summary"}]}]}]}]},{"tab":"Model Reference","pages":[{"title":"Model Reference","href":"/models/overview"}]},{"tab":"MCP Integration","pages":[{"title":"MCP Integration","href":"/mcp-integration"}]}]},"title":"Preview Metric Definition - Timbal","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}