Customer-facing ingestion pipeline health (TRU-167)
Returns ingest reliability signals (success/error rate, top error
categories, DLQ depth, ingest lag percentiles, last-span timestamp,
redaction match count) scoped to the authenticated tenant so
customers can self-diagnose pipeline issues.
GET
/
v1
/
ingestion-health
Customer-facing ingestion pipeline health (TRU-167)
Inclusive ISO-8601 / RFC 3339 lower bound on the report window.
Must be supplied together with to. When both are present the
explicit range overrides the window enum (TRU-393). Bucket
granularity in the response scales with the requested span:
≤ 2h → 5m, ≤ 48h → 1h, > 48h → 1d.
Echoes the window query param. Informational only when an
explicit from/to pair was supplied — the response's
from/to fields are the source of truth for the time bounds
actually used.
Bucket granularity that scales with the report's requested
range: ≤ 2h → 5m, ≤ 48h → 1h, > 48h → 1d (TRU-393).
Frontends that build time-series charts on top of this
endpoint should consume this value rather than re-deriving it.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"TruLayer","colors":{"primary":"#6366F1","light":"#818CF8","dark":"#4F46E5"},"logo":{"light":"https://mintcdn.com/omnimodallc/Rc1rbNUGtX5WgsQI/logo/light.svg?fit=max\u0026auto=format\u0026n=Rc1rbNUGtX5WgsQI\u0026q=85\u0026s=533179b80c872f3f958c07a10a75b7ad","dark":"https://mintcdn.com/omnimodallc/Rc1rbNUGtX5WgsQI/logo/dark.svg?fit=max\u0026auto=format\u0026n=Rc1rbNUGtX5WgsQI\u0026q=85\u0026s=35f9b77cef986807c7a3f678adcfdb5e"},"favicon":"https://mintcdn.com/omnimodallc/xJho_XGKhESQfqYR/favicon.svg?fit=max\u0026auto=format\u0026n=xJho_XGKhESQfqYR\u0026q=85\u0026s=73c2634e0d88e4b01d70635608f04159","navbar":{"links":[{"href":"mailto:support@trulayer.ai","label":"Support"}],"primary":{"type":"button","label":"Sign up","href":"https://app.trulayer.ai/sign-up"}},"footer":{"socials":{"x":"https://x.com/trulayer_ai","github":"https://github.com/trulayer","linkedin":"https://linkedin.com/company/trulayer"}},"seo":{"metatags":{"canonical":"https://docs.trulayer.ai"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Dashboard","icon":"chart-line","href":"https://app.trulayer.ai"},{"anchor":"Status","icon":"signal","href":"https://status.trulayer.ai"},{"anchor":"GitHub","icon":"github","href":"https://github.com/trulayer"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"omnimodallc","hasAudioNarration":false,"actualSubdomain":"omnimodallc","customDomains":["docs.trulayer.ai"],"gitSource":{"type":"github","owner":"trulayer","repo":"docs","deployBranch":"main","isPrivate":false,"contentDirectory":"","mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a5d9860526179ec9eda3322","collectionId":"4240f09b-0968-4af5-aa3a-375dde840b29","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6a5d9860526179ec9eda3322"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a5d9860526179ec9eda3322:success","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"API Reference","count":110},{"language":"default","tag":"Endpoints","count":109},{"language":"default","tag":"Guides","count":87},{"language":"default","tag":"Dashboard","count":16},{"language":"default","tag":"Integrations","count":12},{"language":"default","tag":"control","count":9},{"language":"default","tag":"Go SDK","count":8},{"language":"default","tag":"datasets","count":8},{"language":"default","tag":"Python SDK","count":7},{"language":"default","tag":"TypeScript SDK","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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/metrics/customer-facing-ingestion-pipeline-health-tru-167","slug":"/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167","pageMetadata":{"title":"Customer-facing ingestion pipeline health (TRU-167)","description":"Returns ingest reliability signals (success/error rate, top error\ncategories, DLQ depth, ingest lag percentiles, last-span timestamp,\nredaction match count) scoped to the authenticated tenant so\ncustomers can self-diagnose pipeline issues.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/ingestion-health","href":"/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Returns ingest reliability signals (success/error rate, top error\\ncategories, DLQ depth, ingest lag percentiles, last-span timestamp,\\nredaction match count) scoped to the authenticated tenant so\\ncustomers can self-diagnose pipeline issues.\"\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":{"config":{},"pageMetadata":{"title":"Customer-facing ingestion pipeline health (TRU-167)","description":"Returns ingest reliability signals (success/error rate, top error\ncategories, DLQ depth, ingest lag percentiles, last-span timestamp,\nredaction match count) scoped to the authenticated tenant so\ncustomers can self-diagnose pipeline issues.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/ingestion-health","href":"/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getIngestionHealth","tags":["metrics"],"summary":"Customer-facing ingestion pipeline health (TRU-167)","description":"Returns ingest reliability signals (success/error rate, top error\ncategories, DLQ depth, ingest lag percentiles, last-span timestamp,\nredaction match count) scoped to the authenticated tenant so\ncustomers can self-diagnose pipeline issues.\n","parameters":["31172fb8-8704-428d-bc2b-235273e64241","e68919bb-b2cf-41ea-8f41-bf7bbbef59cf","ccfc9698-d163-4b31-bba3-d08d7fc3e2e8","220a120a-1bf2-46ce-9642-f94a01202f97"],"responses":{"200":"a4d9c957-b542-4b57-afc9-2ef3362b15e3","400":"e4afdfd9-6708-451b-8632-80c25904c4f8","401":"d0f725dd-34f0-478b-8dc8-4f3591c2bfc6"},"method":"get","type":"path","servers":["1fdfbe09-f60b-4dc4-876c-fd3c921de961","da4a1cd5-feab-463f-b8fb-4dc46866de30"],"security":["1a2e7257-0f54-402e-987e-25adc8adddab"],"path":"/v1/ingestion-health","baseUrlOptions":["https://api.trulayer.ai","http://localhost:8080"],"title":"Customer-facing ingestion pipeline health (TRU-167)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"31172fb8-8704-428d-bc2b-235273e64241":{"name":"project_id","in":"query","description":"Filter to a single project. Omit for all projects in the tenant.","schema":{"type":"string","format":"uuid","description":"Filter to a single project. Omit for all projects in the tenant.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"e68919bb-b2cf-41ea-8f41-bf7bbbef59cf":{"name":"window","in":"query","description":"Rolling time window. Defaults to `24h`. Ignored when both `from`\nand `to` are supplied (TRU-393).\n","schema":{"type":"string","enum":["1h","24h","7d"],"default":"24h","description":"Rolling time window. Defaults to `24h`. Ignored when both `from`\nand `to` are supplied (TRU-393).\n","uniqueKey":"","typeLabel":"enum\u003cstring>"}},"ccfc9698-d163-4b31-bba3-d08d7fc3e2e8":{"name":"from","in":"query","description":"Inclusive ISO-8601 / RFC 3339 lower bound on the report window.\nMust be supplied together with `to`. When both are present the\nexplicit range overrides the `window` enum (TRU-393). Bucket\ngranularity in the response scales with the requested span:\n≤ 2h → `5m`, ≤ 48h → `1h`, > 48h → `1d`.\n","schema":{"type":"string","format":"date-time","description":"Inclusive ISO-8601 / RFC 3339 lower bound on the report window.\nMust be supplied together with `to`. When both are present the\nexplicit range overrides the `window` enum (TRU-393). Bucket\ngranularity in the response scales with the requested span:\n≤ 2h → `5m`, ≤ 48h → `1h`, > 48h → `1d`.\n","uniqueKey":"","typeLabel":"string\u003cdate-time>"}},"220a120a-1bf2-46ce-9642-f94a01202f97":{"name":"to","in":"query","description":"Inclusive ISO-8601 / RFC 3339 upper bound on the report window.\nMust be supplied together with `from`. `to` must not precede\n`from`.\n","schema":{"type":"string","format":"date-time","description":"Inclusive ISO-8601 / RFC 3339 upper bound on the report window.\nMust be supplied together with `from`. `to` must not precede\n`from`.\n","uniqueKey":"","typeLabel":"string\u003cdate-time>"}}},"responses":{"a4d9c957-b542-4b57-afc9-2ef3362b15e3":{"description":"Ingestion-health report","content":{"application/json":{"schema":{"type":"object","required":["window","from","to","bucket_interval","success_rate","error_rate","top_errors","dlq_depth","ingest_lag_ms","redaction_match_count"],"properties":{"window":{"type":"string","enum":["1h","24h","7d"],"description":"Echoes the `window` query param. Informational only when an\nexplicit `from`/`to` pair was supplied — the response's\n`from`/`to` fields are the source of truth for the time bounds\nactually used.\n","isRequired":true,"uniqueKey":"window","typeLabel":"enum\u003cstring>"},"from":{"type":"string","format":"date-time","description":"Inclusive lower bound the report was computed over (TRU-393).","isRequired":true,"uniqueKey":"from","typeLabel":"string\u003cdate-time>"},"to":{"type":"string","format":"date-time","description":"Inclusive upper bound the report was computed over (TRU-393).","isRequired":true,"uniqueKey":"to","typeLabel":"string\u003cdate-time>"},"bucket_interval":{"type":"string","enum":["5m","1h","1d"],"description":"Bucket granularity that scales with the report's requested\nrange: ≤ 2h → `5m`, ≤ 48h → `1h`, > 48h → `1d` (TRU-393).\nFrontends that build time-series charts on top of this\nendpoint should consume this value rather than re-deriving it.\n","isRequired":true,"uniqueKey":"bucket_interval","typeLabel":"enum\u003cstring>"},"success_rate":{"type":"number","description":"Fraction 0–1 of traces without an error. 1.0 when no traffic in the window.","isRequired":true,"uniqueKey":"success_rate","typeLabel":"number"},"error_rate":{"type":"number","description":"Fraction 0–1 of traces with a non-empty error.","isRequired":true,"uniqueKey":"error_rate","typeLabel":"number"},"top_errors":{"type":"array","items":{"type":"object","required":["category","count"],"properties":{"category":{"type":"string","description":"Coarse error category (first 64 chars of the error text)","isRequired":true,"uniqueKey":"top_errors.items.[INDEX].category","typeLabel":"string"},"count":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"top_errors.items.[INDEX].count","typeLabel":"integer\u003cint64>"}},"uniqueKey":"top_errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"top_errors","typeLabel":"object[]"},"dlq_depth":{"type":"object","required":["traces","evals"],"properties":{"traces":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"dlq_depth.traces","typeLabel":"integer\u003cint64>"},"evals":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"dlq_depth.evals","typeLabel":"integer\u003cint64>"}},"isRequired":true,"uniqueKey":"dlq_depth","typeLabel":"object"},"ingest_lag_ms":{"type":"object","required":["p50","p95","p99"],"properties":{"p50":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"ingest_lag_ms.p50","typeLabel":"integer\u003cint64>"},"p95":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"ingest_lag_ms.p95","typeLabel":"integer\u003cint64>"},"p99":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"ingest_lag_ms.p99","typeLabel":"integer\u003cint64>"}},"isRequired":true,"uniqueKey":"ingest_lag_ms","typeLabel":"object"},"redaction_match_count":{"type":"integer","format":"int64","description":"Zero until redaction instrumentation lands.","isRequired":true,"uniqueKey":"redaction_match_count","typeLabel":"integer\u003cint64>"},"project_id":{"oneOf":[{"type":"string","format":"uuid","description":"Echoes the `project_id` query param when set; omitted for tenant-wide reports.","uniqueKey":"project_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Echoes the `project_id` query param when set; omitted for tenant-wide reports.","uniqueKey":"project_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"project_id","typeLabel":"string\u003cuuid> | null"},"last_successful_span_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"last_successful_span_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"last_successful_span_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"last_successful_span_at","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"window":"1h","from":"2023-11-07T05:31:56Z","to":"2023-11-07T05:31:56Z","bucket_interval":"5m","success_rate":123,"error_rate":123,"top_errors":[{"category":"\u003cstring>","count":123}],"dlq_depth":{"traces":123,"evals":123},"ingest_lag_ms":{"p50":123,"p95":123,"p99":123},"redaction_match_count":123,"project_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","last_successful_span_at":"2023-11-07T05:31:56Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"e4afdfd9-6708-451b-8632-80c25904c4f8":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"d0f725dd-34f0-478b-8dc8-4f3591c2bfc6":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"1a2e7257-0f54-402e-987e-25adc8adddab":{"BearerAuth":{"type":"http","scheme":"bearer","description":"SDK API key (`tl_...`) or Clerk session JWT","scopes":[]}}},"servers":{"1fdfbe09-f60b-4dc4-876c-fd3c921de961":{"url":"https://api.trulayer.ai","description":"Production"},"da4a1cd5-feab-463f-b8fb-4dc46866de30":{"url":"http://localhost:8080","description":"Local development"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"SDK API key (`tl_...`) or Clerk session JWT","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"SDK API key (`tl_...`) or Clerk session JWT","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"omnimodallc","siteName":"TruLayer","title":"Customer-facing ingestion pipeline health (TRU-167) - TruLayer","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-14T06:32:49.834Z","originalFileLocation":"api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167.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=\"Returns ingest reliability signals (success/error rate, top error categories, DLQ depth, ingest lag percentiles, last-span timestamp, redaction match count) scoped to the authenticated tenant so customers can self-diagnose pipeline issues.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TruLayer\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_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/omnimodallc/IO9_gQbDt9V1gpMF/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Customer-facing ingestion pipeline health (TRU-167) - TruLayer\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns ingest reliability signals (success/error rate, top error categories, DLQ depth, ingest lag percentiles, last-span timestamp, redaction match count) scoped to the authenticated tenant so customers can self-diagnose pipeline issues.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TruLayer\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://omnimodallc.mintlify.app/_mintlify/api/og/v2?division=metrics\u0026amp;title=Customer-facing+ingestion+pipeline+health+%28TRU-167%29\u0026amp;description=Returns+ingest+reliability+signals+%28success%2Ferror+rate%2C+top+error%0Acategories%2C+DLQ+depth%2C+ingest+lag+percentiles%2C+last-span+timestamp%2C%0Aredaction+match+count%29+sco\u0026amp;theme=f30cc050865b51b401e85f73\u0026amp;signature=8137ad3add591cd8c5cac2a03ac25e2441093474639e440fc8cf11e6dba3a5f6\">\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=\"Customer-facing ingestion pipeline health (TRU-167) - TruLayer\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns ingest reliability signals (success/error rate, top error categories, DLQ depth, ingest lag percentiles, last-span timestamp, redaction match count) scoped to the authenticated tenant so customers can self-diagnose pipeline issues.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://omnimodallc.mintlify.app/_mintlify/api/og/v2?division=metrics\u0026amp;title=Customer-facing+ingestion+pipeline+health+%28TRU-167%29\u0026amp;description=Returns+ingest+reliability+signals+%28success%2Ferror+rate%2C+top+error%0Acategories%2C+DLQ+depth%2C+ingest+lag+percentiles%2C+last-span+timestamp%2C%0Aredaction+match+count%29+sco\u0026amp;theme=f30cc050865b51b401e85f73\u0026amp;signature=8137ad3add591cd8c5cac2a03ac25e2441093474639e440fc8cf11e6dba3a5f6\">\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/omnimodallc/IO9_gQbDt9V1gpMF/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TruLayer\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366F1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trulayer.ai/#organization\",\"name\":\"TruLayer\",\"url\":\"https://docs.trulayer.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/omnimodallc/Rc1rbNUGtX5WgsQI/logo/light.svg?fit=max\u0026auto=format\u0026n=Rc1rbNUGtX5WgsQI\u0026q=85\u0026s=533179b80c872f3f958c07a10a75b7ad\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trulayer.ai#website\",\"name\":\"TruLayer\",\"url\":\"https://docs.trulayer.ai\",\"publisher\":{\"@id\":\"https://docs.trulayer.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167#webpage\",\"url\":\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167\",\"name\":\"Customer-facing ingestion pipeline health (TRU-167)\",\"description\":\"Returns ingest reliability signals (success/error rate, top error categories, DLQ depth, ingest lag percentiles, last-span timestamp, redaction match count) scoped to the authenticated tenant so customers can self-diagnose pipeline issues.\",\"dateModified\":\"2026-05-14T06:32:49.834Z\",\"isPartOf\":{\"@id\":\"https://docs.trulayer.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.trulayer.ai/api-reference/health/liveness-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"metrics\",\"item\":\"https://docs.trulayer.ai/api-reference/metrics/aggregate-metrics-error-rate-latency-percentiles-cost\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Customer-facing ingestion pipeline health (TRU-167)\",\"item\":\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167#apireference\",\"headline\":\"Customer-facing ingestion pipeline health (TRU-167)\",\"name\":\"Customer-facing ingestion pipeline health (TRU-167)\",\"description\":\"Returns ingest reliability signals (success/error rate, top error categories, DLQ depth, ingest lag percentiles, last-span timestamp, redaction match count) scoped to the authenticated tenant so customers can self-diagnose pipeline issues.\",\"url\":\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trulayer.ai/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167#webpage\"},\"dateModified\":\"2026-05-14T06:32:49.834Z\",\"publisher\":{\"@id\":\"https://docs.trulayer.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trulayer.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TruLayer\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TruLayer","nav":{"global":{"anchors":[{"anchor":"Dashboard","icon":"chart-line","href":"https://app.trulayer.ai"},{"anchor":"Status","icon":"signal","href":"https://status.trulayer.ai"},{"anchor":"GitHub","icon":"github","href":"https://github.com/trulayer"}]},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"Introduction","href":"/api-reference/introduction"}]},{"group":"Endpoints","pages":[{"group":"health","pages":[{"title":"Liveness check","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /health","href":"/api-reference/health/liveness-check"}]},{"group":"ingest","pages":[{"title":"Ingest a single trace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/ingest","href":"/api-reference/ingest/ingest-a-single-trace"},{"title":"Ingest a batch of traces (max 100)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/ingest/batch","href":"/api-reference/ingest/ingest-a-batch-of-traces-max-100"}]},{"group":"otlp","pages":[{"title":"OTLP/HTTP ingest endpoint (OTel GenAI semconv v1.29.0)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/otlp/traces","href":"/api-reference/otlp/otlphttp-ingest-endpoint-otel-genai-semconv-v1290"},{"title":"Export traces in OTLP/HTTP JSON format","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/otlp/export","href":"/api-reference/otlp/export-traces-in-otlphttp-json-format"}]},{"group":"traces","pages":[{"title":"List traces with cursor-based pagination","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/traces","href":"/api-reference/traces/list-traces-with-cursor-based-pagination"},{"title":"Get trace detail with spans and events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/traces/{id}","href":"/api-reference/traces/get-trace-detail-with-spans-and-events"},{"title":"Get the remediation chain for a trace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/traces/{id}/remediations","href":"/api-reference/traces/get-the-remediation-chain-for-a-trace"},{"title":"Stream the spans of a single trace as CSV or JSONL (sync export)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/traces/export","href":"/api-reference/traces/stream-the-spans-of-a-single-trace-as-csv-or-jsonl-sync-export"},{"title":"Server-Sent Events stream of live trace events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/traces/live","href":"/api-reference/traces/server-sent-events-stream-of-live-trace-events"}]},{"group":"deprecations","pages":[{"title":"List currently deprecated v1 fields and endpoints","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/deprecations","href":"/api-reference/deprecations/list-currently-deprecated-v1-fields-and-endpoints"}]},{"group":"metrics","pages":[{"title":"Aggregate metrics (error rate, latency percentiles, cost)","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/metrics","href":"/api-reference/metrics/aggregate-metrics-error-rate-latency-percentiles-cost"},{"title":"Customer-facing ingestion pipeline health (TRU-167)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/ingestion-health","href":"/api-reference/metrics/customer-facing-ingestion-pipeline-health-tru-167"}]},{"group":"audit","pages":[{"title":"Verify a daily audit-log head-hash anchor (TRU-163)","description":"Returns the recorded daily head-hash checkpoint for\n`(tenant_id, date)` as written by the anchoring job. The\nmanifest itself is stored in S3 Object Lock (WORM) and is\nsigned with an Ed25519 key; this endpoint returns the mirror\nstored in Postgres. Third-party auditors can cross-check the\n`head_hash` against the signed S3 manifest (verifying the\nsignature locally) and, optionally, supply their own\n`expected_head_hash` to get an immediate boolean match.\n\nUnauthenticated by design — the anchors are public evidence.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/audit/verify","href":"/api-reference/audit/verify-a-daily-audit-log-head-hash-anchor-tru-163"}]},{"group":"compliance","pages":[{"title":"Public sub-processor registry (TRU-52)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/subprocessors","href":"/api-reference/compliance/public-sub-processor-registry-tru-52"},{"title":"Subscribe an email to sub-processor change notifications (TRU-52)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/subprocessors/subscribe","href":"/api-reference/compliance/subscribe-an-email-to-sub-processor-change-notifications-tru-52"},{"title":"Unsubscribe an email from sub-processor change notifications (TRU-52)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/subprocessors/unsubscribe","href":"/api-reference/compliance/unsubscribe-an-email-from-sub-processor-change-notifications-tru-52"}]},{"group":"dsr","pages":[{"title":"List Data Subject Requests for the authenticated tenant (TRU-57)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/dsr","href":"/api-reference/dsr/list-data-subject-requests-for-the-authenticated-tenant-tru-57"},{"title":"Submit a Data Subject Request (TRU-57)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/dsr","href":"/api-reference/dsr/submit-a-data-subject-request-tru-57"},{"title":"Fetch a single DSR request (TRU-57)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/dsr/{id}","href":"/api-reference/dsr/fetch-a-single-dsr-request-tru-57"}]},{"group":"policies","pages":[{"title":"List Control Loop Policies (TRU-67 Phase 1)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/policies","href":"/api-reference/policies/list-control-loop-policies-tru-67-phase-1"},{"title":"Create a Control Loop Policy (TRU-67 Phase 1)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/policies","href":"/api-reference/policies/create-a-control-loop-policy-tru-67-phase-1"},{"title":"Fetch a single policy (TRU-67 Phase 1)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/policies/{id}","href":"/api-reference/policies/fetch-a-single-policy-tru-67-phase-1"},{"title":"Archive a policy (TRU-67 Phase 1)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/policies/{id}","href":"/api-reference/policies/archive-a-policy-tru-67-phase-1"},{"title":"Update a policy (TRU-67 Phase 1)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/policies/{id}","href":"/api-reference/policies/update-a-policy-tru-67-phase-1"}]},{"group":"saved-filters","pages":[{"title":"List team-shared saved filters (TRU-216)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/saved-filters","href":"/api-reference/saved-filters/list-team-shared-saved-filters-tru-216"},{"title":"Create a saved filter (TRU-216)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/saved-filters","href":"/api-reference/saved-filters/create-a-saved-filter-tru-216"},{"title":"Delete a saved filter (TRU-216)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/saved-filters/{id}","href":"/api-reference/saved-filters/delete-a-saved-filter-tru-216"},{"title":"Update a saved filter (TRU-216)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/saved-filters/{id}","href":"/api-reference/saved-filters/update-a-saved-filter-tru-216"}]},{"group":"feedback","pages":[{"title":"List feedback for the tenant with cursor-based pagination","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/feedback","href":"/api-reference/feedback/list-feedback-for-the-tenant-with-cursor-based-pagination"},{"title":"Submit user feedback on a trace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/feedback","href":"/api-reference/feedback/submit-user-feedback-on-a-trace"}]},{"group":"failures","pages":[{"title":"Group error traces by message prefix and return failure clusters","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/failures/clusters","href":"/api-reference/failures/group-error-traces-by-message-prefix-and-return-failure-clusters"}]},{"group":"evals","pages":[{"title":"List evaluations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval","href":"/api-reference/evals/list-evaluations"},{"title":"Trigger an evaluation run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/eval","href":"/api-reference/evals/trigger-an-evaluation-run"},{"title":"Get evaluation result","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval/{id}","href":"/api-reference/evals/get-evaluation-result"},{"title":"Stream evaluations as CSV or JSONL (sync export)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval/export","href":"/api-reference/evals/stream-evaluations-as-csv-or-jsonl-sync-export"},{"title":"Get time-bucketed eval score averages per metric","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval/trends","href":"/api-reference/evals/get-time-bucketed-eval-score-averages-per-metric"},{"title":"Get score distribution histogram for a metric","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval/histogram","href":"/api-reference/evals/get-score-distribution-histogram-for-a-metric"},{"title":"Compare eval metrics between two time windows","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval/compare","href":"/api-reference/evals/compare-eval-metrics-between-two-time-windows"}]},{"group":"eval","pages":[{"title":"List pre-built LLM evaluators available for use","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval-catalog","href":"/api-reference/eval/list-pre-built-llm-evaluators-available-for-use"}]},{"group":"eval-rules","pages":[{"title":"List eval rules for the tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval-rules","href":"/api-reference/eval-rules/list-eval-rules-for-the-tenant"},{"title":"Create an eval rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/eval-rules","href":"/api-reference/eval-rules/create-an-eval-rule"},{"title":"Delete an eval rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/eval-rules/{id}","href":"/api-reference/eval-rules/delete-an-eval-rule"},{"title":"Update an eval rule (partial update)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/eval-rules/{id}","href":"/api-reference/eval-rules/update-an-eval-rule-partial-update"}]},{"group":"failure-rules","pages":[{"title":"List failure detection rules for the tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/failure-rules","href":"/api-reference/failure-rules/list-failure-detection-rules-for-the-tenant"},{"title":"Create a failure detection rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/failure-rules","href":"/api-reference/failure-rules/create-a-failure-detection-rule"},{"title":"Get a single failure detection rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/failure-rules/{id}","href":"/api-reference/failure-rules/get-a-single-failure-detection-rule"},{"title":"Delete a failure detection rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/failure-rules/{id}","href":"/api-reference/failure-rules/delete-a-failure-detection-rule"},{"title":"Update a failure detection rule (partial update)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/failure-rules/{id}","href":"/api-reference/failure-rules/update-a-failure-detection-rule-partial-update"}]},{"group":"control","pages":[{"title":"Execute a control action (retry, fallback model, or prompt modification)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/control/execute","href":"/api-reference/control/execute-a-control-action-retry-fallback-model-or-prompt-modification"},{"title":"List control actions for the tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/control/actions","href":"/api-reference/control/list-control-actions-for-the-tenant"},{"title":"Get the per-trace remediation diff for a control action","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/control/actions/{id}/diff","href":"/api-reference/control/get-the-per-trace-remediation-diff-for-a-control-action"},{"title":"List control actions parked for human approval (owner-only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/control/actions/pending","href":"/api-reference/control/list-control-actions-parked-for-human-approval-owner-only"},{"title":"Approve a pending_approval control action (owner-only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/control/actions/{id}/approve","href":"/api-reference/control/approve-a-pending_approval-control-action-owner-only"},{"title":"Reject a pending_approval control action (owner-only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/control/actions/{id}/reject","href":"/api-reference/control/reject-a-pending_approval-control-action-owner-only"},{"title":"Get the tenant's control-loop kill-switch state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/control/killswitch","href":"/api-reference/control/get-the-tenants-control-loop-kill-switch-state"},{"title":"Enable the control-loop kill-switch (owner-only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/control/killswitch/enable","href":"/api-reference/control/enable-the-control-loop-kill-switch-owner-only"},{"title":"Disable the control-loop kill-switch (owner-only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/control/killswitch/disable","href":"/api-reference/control/disable-the-control-loop-kill-switch-owner-only"}]},{"group":"prompts","pages":[{"title":"List closed-loop prompt-improvement deployments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/prompts/deployments","href":"/api-reference/prompts/list-closed-loop-prompt-improvement-deployments"},{"title":"Get a single prompt deployment by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/prompts/deployments/{id}","href":"/api-reference/prompts/get-a-single-prompt-deployment-by-id"},{"title":"Approve a prompt deployment for ship (owner-only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/prompts/deployments/{id}/approve","href":"/api-reference/prompts/approve-a-prompt-deployment-for-ship-owner-only"},{"title":"Reject a non-terminal prompt deployment (owner-only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/prompts/deployments/{id}/reject","href":"/api-reference/prompts/reject-a-non-terminal-prompt-deployment-owner-only"},{"title":"Roll a shipped or monitoring/regressed prompt deployment back (owner-only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/prompts/deployments/{id}/rollback","href":"/api-reference/prompts/roll-a-shipped-or-monitoringregressed-prompt-deployment-back-owner-only"}]},{"group":"apikeys","pages":[{"title":"List API keys for the tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/apikeys","href":"/api-reference/apikeys/list-api-keys-for-the-tenant"},{"title":"Create an API key (owner or member; requires Clerk auth)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/apikeys","href":"/api-reference/apikeys/create-an-api-key-owner-or-member;-requires-clerk-auth"},{"title":"Revoke an API key (owner only; requires Clerk auth)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/apikeys/{id}","href":"/api-reference/apikeys/revoke-an-api-key-owner-only;-requires-clerk-auth"},{"title":"Rotate an API key (owner or member; requires Clerk auth)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/apikeys/{id}/rotate","href":"/api-reference/apikeys/rotate-an-api-key-owner-or-member;-requires-clerk-auth"}]},{"group":"projects","pages":[{"title":"List projects for the authenticated tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects","href":"/api-reference/projects/list-projects-for-the-authenticated-tenant"},{"title":"Create a new project (owner or member; requires Clerk auth)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects","href":"/api-reference/projects/create-a-new-project-owner-or-member;-requires-clerk-auth"},{"title":"Update a project (rename or adjust retention override)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/projects/{id}","href":"/api-reference/projects/update-a-project-rename-or-adjust-retention-override"},{"title":"Archive a project (owner only; requires Clerk auth)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects/{id}/archive","href":"/api-reference/projects/archive-a-project-owner-only;-requires-clerk-auth"},{"title":"Unarchive a previously-archived project (owner only; requires Clerk auth)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects/{id}/unarchive","href":"/api-reference/projects/unarchive-a-previously-archived-project-owner-only;-requires-clerk-auth"},{"title":"Read a single project-scoped metric (TRU-362)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/metrics","href":"/api-reference/projects/read-a-single-project-scoped-metric-tru-362"}]},{"group":"datasets","pages":[{"title":"List datasets for the authenticated tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets","href":"/api-reference/datasets/list-datasets-for-the-authenticated-tenant"},{"title":"Create a new dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/datasets","href":"/api-reference/datasets/create-a-new-dataset"},{"title":"Get a single dataset by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}","href":"/api-reference/datasets/get-a-single-dataset-by-id"},{"title":"Delete a dataset and its items","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/datasets/{id}","href":"/api-reference/datasets/delete-a-dataset-and-its-items"},{"title":"List items for a dataset with cursor-based pagination","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}/items","href":"/api-reference/datasets/list-items-for-a-dataset-with-cursor-based-pagination"},{"title":"Add an item to a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/datasets/{id}/items","href":"/api-reference/datasets/add-an-item-to-a-dataset"},{"title":"Stream dataset items as CSV or JSONL (sync export)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}/export","href":"/api-reference/datasets/stream-dataset-items-as-csv-or-jsonl-sync-export"},{"title":"Update a dataset item's label","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/datasets/{id}/items/{itemId}","href":"/api-reference/datasets/update-a-dataset-items-label"}]},{"group":"model-routes","pages":[{"title":"List model routes for the tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/model-routes","href":"/api-reference/model-routes/list-model-routes-for-the-tenant"},{"title":"Create a model route","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/model-routes","href":"/api-reference/model-routes/create-a-model-route"},{"title":"Delete a model route","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/model-routes/{id}","href":"/api-reference/model-routes/delete-a-model-route"},{"title":"Update a model route (partial update)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/model-routes/{id}","href":"/api-reference/model-routes/update-a-model-route-partial-update"}]},{"group":"search","pages":[{"title":"Free-text semantic search over span embeddings (server-side embed)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/search/spans","href":"/api-reference/search/free-text-semantic-search-over-span-embeddings-server-side-embed"},{"title":"Find spans semantically similar to a query vector","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/search/spans","href":"/api-reference/search/find-spans-semantically-similar-to-a-query-vector"}]},{"group":"webhooks","pages":[{"title":"List webhooks for the tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/webhooks","href":"/api-reference/webhooks/list-webhooks-for-the-tenant"},{"title":"Create a webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/webhooks","href":"/api-reference/webhooks/create-a-webhook"},{"title":"Delete a webhook (owner only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/webhooks/{id}","href":"/api-reference/webhooks/delete-a-webhook-owner-only"},{"title":"Send a synthetic ping event to verify a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/webhooks/{id}/test","href":"/api-reference/webhooks/send-a-synthetic-ping-event-to-verify-a-webhook-endpoint"}]},{"group":"anomaly","pages":[{"title":"List detected anomalies for the tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/anomalies","href":"/api-reference/anomaly/list-detected-anomalies-for-the-tenant"},{"title":"Get a single anomaly by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/anomalies/{id}","href":"/api-reference/anomaly/get-a-single-anomaly-by-id"}]},{"group":"eval-runs","pages":[{"title":"List eval versions for a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}/versions","href":"/api-reference/eval-runs/list-eval-versions-for-a-dataset"},{"title":"Create an eval version for a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/datasets/{id}/versions","href":"/api-reference/eval-runs/create-an-eval-version-for-a-dataset"},{"title":"List eval runs for a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}/runs","href":"/api-reference/eval-runs/list-eval-runs-for-a-dataset"},{"title":"Schedule an eval run against a dataset version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/datasets/{id}/runs","href":"/api-reference/eval-runs/schedule-an-eval-run-against-a-dataset-version"},{"title":"Get eval run status and progress","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval-runs/{id}","href":"/api-reference/eval-runs/get-eval-run-status-and-progress"},{"title":"Export eval run results","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval-runs/{id}/export","href":"/api-reference/eval-runs/export-eval-run-results"},{"title":"Score diff between two eval runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/eval-runs/{id}/diff","href":"/api-reference/eval-runs/score-diff-between-two-eval-runs"}]},{"group":"eval-keys","pages":[{"title":"List active BYOK keys for premium eval models","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/settings/eval-keys","href":"/api-reference/eval-keys/list-active-byok-keys-for-premium-eval-models"},{"title":"Create or replace the BYOK key for a provider","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/settings/eval-keys","href":"/api-reference/eval-keys/create-or-replace-the-byok-key-for-a-provider"},{"title":"Revoke the BYOK key for a provider","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/settings/eval-keys/{provider}","href":"/api-reference/eval-keys/revoke-the-byok-key-for-a-provider"}]},{"group":"billing","pages":[{"title":"Create a Stripe Checkout session for a plan upgrade","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/settings/billing/checkout","href":"/api-reference/billing/create-a-stripe-checkout-session-for-a-plan-upgrade"},{"title":"Create a Stripe Billing Portal session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/settings/billing/portal","href":"/api-reference/billing/create-a-stripe-billing-portal-session"},{"title":"List recent Stripe invoices for the tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/settings/invoices","href":"/api-reference/billing/list-recent-stripe-invoices-for-the-tenant"}]},{"group":"ci","pages":[{"title":"Evaluate an eval run against a CI policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/ci/gate","href":"/api-reference/ci/evaluate-an-eval-run-against-a-ci-policy"}]},{"group":"members","pages":[{"title":"Count active API keys created by a member","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/members/{id}/key-count","href":"/api-reference/members/count-active-api-keys-created-by-a-member"},{"title":"Remove the authenticated user from the current organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/members/me","href":"/api-reference/members/remove-the-authenticated-user-from-the-current-organization"}]}]}]}]},"title":"Customer-facing ingestion pipeline health (TRU-167) - TruLayer","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"]}