Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after threshold reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key’s environment only: a test key’s reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production’s).
An API key, sent as Authorization: Bearer <key>. Each operation lists the scope its key needs: decisions:evaluate (evaluate and read evaluations), decisions:feedback (your app's feedback) or decisions:develop (everything else, including owner feedback and the review queue). An operation listing no scope takes any scoped key. A key with no scope, or without the operation's, gets 403 INSUFFICIENT_SCOPE.
The environment of the key that made the call: production or test. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Moonbounce Decisions API","colors":{"primary":"#4f46e5"},"banner":{"content":"Looking for the Clavata policy and labeling API? Those docs are at [docs.clavata.ai](https://docs.clavata.ai). You are on the docs for the Moonbounce decisions platform.","dismissible":true,"type":"info"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"moonbounce","hasAudioNarration":false,"actualSubdomain":"moonbounce","customDomains":[],"gitSource":{"type":"github","owner":"clavataai","repo":"decisions-platform","deployBranch":"main","contentDirectory":"docs/site","isPrivate":true,"mountPath":"","label":"","_id":"6ae8f7a905e268646b31d443"},"chroma":{"latestBuiltDeploymentHistoryId":"6ae8f896f8277f19c7cc79c9","collectionId":"f756780d-07b6-4802-bb88-e6a9d392f388","liveDeploymentHistoryId":"6ae8f896f8277f19c7cc79c9","schemaVersion":"v3"},"entitlements":{},"buildId":"6ae8f896f8277f19c7cc79c9","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"API reference","count":34},{"language":"default","tag":"Endpoints","count":33},{"language":"default","tag":"Guides","count":14},{"language":"default","tag":"review","count":9},{"language":"default","tag":"suggestions","count":6},{"language":"default","tag":"specs","count":5},{"language":"default","tag":"Improve a decision","count":4},{"language":"default","tag":"feedback","count":4},{"language":"default","tag":"Get started","count":3},{"language":"default","tag":"engines","count":3}]},"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":"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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"turbopuffer-dual-write","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},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/suggestions/get-the-improvement-loops-status","slug":"/api-reference/suggestions/get-the-improvement-loops-status","pageMetadata":{"title":"Get the improvement loop's status","description":"Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after `threshold` reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key's environment only: a test key's reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production's).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/loop","href":"/api-reference/suggestions/get-the-improvement-loops-status","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after \", _jsx(_components.code, {\n children: \"threshold\"\n }), \" reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key’s environment only: a test key’s reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production’s).\"]\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":"Get the improvement loop's status","description":"Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after `threshold` reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key's environment only: a test key's reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production's).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/loop","href":"/api-reference/suggestions/get-the-improvement-loops-status","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getLoopStatus","tags":["suggestions"],"security":["7e090b12-8cdf-430d-bac7-08e170d84657"],"summary":"Get the improvement loop's status","description":"Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after `threshold` reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key's environment only: a test key's reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production's).","parameters":["4da51dbd-e56b-4f70-bac0-a56d2f9fcb0b"],"responses":{"200":"99665645-7341-41e7-85b0-0f641d96ab78","400":"fe811a28-a911-464c-8ecb-93f3f1ac2ff8","401":"485b07d5-24d5-4fd3-9c48-21e6f475d0c6","403":"bcf096fe-4353-47e4-824e-4203ec8eca44","404":"c7c875b2-905c-4a1f-bfec-91cfb4051aca","429":"1852f499-fae2-4389-8ee3-650bd7290a84","503":"eeb14d05-a25b-4288-8f56-c830889366de"},"method":"get","type":"path","servers":["9e61324b-4cc4-430d-a8d9-fa0221e50db5"],"path":"/v1/decisions/{decision_id}/loop","baseUrlOptions":["https://api.moonbounce.ai"],"title":"Get the improvement loop's status","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"4da51dbd-e56b-4f70-bac0-a56d2f9fcb0b":{"schema":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"name":"decision_id","in":"path"}},"responses":{"99665645-7341-41e7-85b0-0f641d96ab78":{"description":"The loop status","content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"environment","typeLabel":"enum\u003cstring>"},"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"decision_id","typeLabel":"string"},"accepted":{"type":"array","items":{"type":"object","properties":{"suggestion_id":{"type":"string","pattern":"^sug_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"accepted.items.[INDEX].suggestion_id","typeLabel":"string"},"evaluation_id":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"accepted.items.[INDEX].evaluation_id","typeLabel":"string"},"accepted_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"accepted.items.[INDEX].accepted_at","typeLabel":"string\u003cdate-time>"},"evidence_label":{"type":"string","enum":["starting_examples","training_cases","holdout"],"isRequired":true,"uniqueKey":"accepted.items.[INDEX].evidence_label","typeLabel":"enum\u003cstring>"},"holdout_win":{"type":"boolean","uniqueKey":"accepted.items.[INDEX].holdout_win","typeLabel":"boolean"}},"required":["suggestion_id","evaluation_id","accepted_at","evidence_label"],"additionalProperties":false,"uniqueKey":"accepted.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"accepted","typeLabel":"object[]"},"reviews":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"reviews","typeLabel":"integer"},"random_lane":{"type":"object","properties":{"n":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"random_lane.n","typeLabel":"integer"},"agree":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"random_lane.agree","typeLabel":"integer"},"nonresponse":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"random_lane.nonresponse","typeLabel":"number"},"changed_after_reveal":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"random_lane.changed_after_reveal","typeLabel":"integer"}},"required":["n","agree","nonresponse","changed_after_reveal"],"additionalProperties":false,"isRequired":true,"uniqueKey":"random_lane","typeLabel":"object"},"stop_check":{"type":"object","properties":{"reviews":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"stop_check.reviews","typeLabel":"integer"},"threshold":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"stop_check.threshold","typeLabel":"integer"},"any_holdout_win":{"type":"boolean","isRequired":true,"uniqueKey":"stop_check.any_holdout_win","typeLabel":"boolean"}},"required":["reviews","threshold","any_holdout_win"],"additionalProperties":false,"isRequired":true,"uniqueKey":"stop_check","typeLabel":"object"},"spot_check":{"oneOf":[{"type":"object","required":["before","after"],"properties":{"before":{"type":"object","properties":{"n":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"spot_check.oneOf.0.before.n","typeLabel":"integer"},"agree":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"spot_check.oneOf.0.before.agree","typeLabel":"integer"}},"required":["n","agree"],"additionalProperties":false,"isRequired":true,"uniqueKey":"spot_check.oneOf.0.before","typeLabel":"object"},"after":{"type":"object","properties":{"n":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"spot_check.oneOf.0.after.n","typeLabel":"integer"},"agree":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"spot_check.oneOf.0.after.agree","typeLabel":"integer"}},"required":["n","agree"],"additionalProperties":false,"isRequired":true,"uniqueKey":"spot_check.oneOf.0.after","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"spot_check.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"spot_check.oneOf.1","typeLabel":"null"}],"uniqueKey":"spot_check","typeLabel":"object | null"}},"required":["environment","decision_id","accepted","reviews","random_lane","stop_check"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"environment":"production","decision_id":"\u003cstring>","accepted":[{"suggestion_id":"\u003cstring>","evaluation_id":"\u003cstring>","accepted_at":"2023-11-07T05:31:56Z","evidence_label":"starting_examples","holdout_win":true}],"reviews":1,"random_lane":{"n":1,"agree":1,"nonresponse":0.5,"changed_after_reveal":1},"stop_check":{"reviews":1,"threshold":2,"any_holdout_win":true},"spot_check":{"before":{"n":1,"agree":1},"after":{"n":1,"agree":1}}}}},"exampleType":"generated"}},"exampleType":"generated"},"fe811a28-a911-464c-8ecb-93f3f1ac2ff8":{"description":"Invalid request: `param` names the field at fault when one applies","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`subject.0.text`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"485b07d5-24d5-4fd3-9c48-21e6f475d0c6":{"description":"Missing or invalid API key (reason KEY_INVALID)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`subject.0.text`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"bcf096fe-4353-47e4-824e-4203ec8eca44":{"description":"The key may not do this","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`subject.0.text`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"c7c875b2-905c-4a1f-bfec-91cfb4051aca":{"description":"Not found, or not in this key's organization and environment","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`subject.0.text`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"1852f499-fae2-4389-8ee3-650bd7290a84":{"description":"RATE_LIMITED: retry after Retry-After seconds; QUOTA_EXCEEDED: details.reset_at gives the daily reset time (no Retry-After), or details.too_large asks for a smaller request","headers":{"Retry-After":{"schema":{"type":"string","description":"Seconds to wait before retrying, when waiting helps."},"required":false,"description":"Seconds to wait before retrying, when waiting helps."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`subject.0.text`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"eeb14d05-a25b-4288-8f56-c830889366de":{"description":"Temporarily unavailable, with Retry-After (for example reason AUTH_UNAVAILABLE, ENGINE_UNAVAILABLE or STORE_UNAVAILABLE): retry with the same Idempotency-Key","headers":{"Retry-After":{"schema":{"type":"string","description":"Seconds to wait before retrying, when waiting helps."},"required":true,"description":"Seconds to wait before retrying, when waiting helps."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`subject.0.text`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"7e090b12-8cdf-430d-bac7-08e170d84657":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key, sent as `Authorization: Bearer \u003ckey>`. Each operation lists the scope its key needs: `decisions:evaluate` (evaluate and read evaluations), `decisions:feedback` (your app's feedback) or `decisions:develop` (everything else, including owner feedback and the review queue). An operation listing no scope takes any scoped key. A key with no scope, or without the operation's, gets 403 INSUFFICIENT_SCOPE.","scopes":["decisions:develop"],"schemeName":"bearerAuth"}}},"servers":{"9e61324b-4cc4-430d-a8d9-fa0221e50db5":{"url":"https://api.moonbounce.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"An API key, sent as `Authorization: Bearer \u003ckey>`. Each operation lists the scope its key needs: `decisions:evaluate` (evaluate and read evaluations), `decisions:feedback` (your app's feedback) or `decisions:develop` (everything else, including owner feedback and the review queue). An operation listing no scope takes any scoped key. A key with no scope, or without the operation's, gets 403 INSUFFICIENT_SCOPE.","scopes":["decisions:develop"],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"An API key, sent as `Authorization: Bearer \u003ckey>`. Each operation lists the scope its key needs: `decisions:evaluate` (evaluate and read evaluations), `decisions:feedback` (your app's feedback) or `decisions:develop` (everything else, including owner feedback and the review queue). An operation listing no scope takes any scoped key. A key with no scope, or without the operation's, gets 403 INSUFFICIENT_SCOPE.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"moonbounce","siteName":"Moonbounce Decisions API","title":"Get the improvement loop's status - Moonbounce Decisions API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T20:55:04.155Z","originalFileLocation":"api-reference/suggestions/get-the-improvement-loops-status.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=\"Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after threshold reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key\u0026#x27;s environment only: a test key\u0026#x27;s reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production\u0026#x27;s).\">\u003cmeta data-mint-head name=\"application-name\" content=\"Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/moonbounce/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/moonbounce/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/moonbounce/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/moonbounce/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get the improvement loop\u0026#x27;s status - Moonbounce Decisions API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after threshold reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key\u0026#x27;s environment only: a test key\u0026#x27;s reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production\u0026#x27;s).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Moonbounce Decisions API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://moonbounce.mintlify.app/_mintlify/api/og/v2?division=suggestions\u0026amp;title=Get+the+improvement+loop%27s+status\u0026amp;description=Accepted+suggestions+with+their+evidence+labels%2C+review+counts%2C+spot-check+agreement+%28on+the+version+that+last+served+production+before+the+first+acceptance+vs+\u0026amp;theme=6d67371419b6cc4f4d7d2b27\u0026amp;signature=cb5a9b2472ed118df0f361ac8ea2beac2d991cc9eb729fa89f6b0cf540f704df\">\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=\"Get the improvement loop\u0026#x27;s status - Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after threshold reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key\u0026#x27;s environment only: a test key\u0026#x27;s reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production\u0026#x27;s).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moonbounce.mintlify.app/_mintlify/api/og/v2?division=suggestions\u0026amp;title=Get+the+improvement+loop%27s+status\u0026amp;description=Accepted+suggestions+with+their+evidence+labels%2C+review+counts%2C+spot-check+agreement+%28on+the+version+that+last+served+production+before+the+first+acceptance+vs+\u0026amp;theme=6d67371419b6cc4f4d7d2b27\u0026amp;signature=cb5a9b2472ed118df0f361ac8ea2beac2d991cc9eb729fa89f6b0cf540f704df\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/moonbounce/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4f46e5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/suggestions/get-the-improvement-loops-status.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://moonbounce.mintlify.app/#organization\",\"name\":\"Moonbounce Decisions API\",\"url\":\"https://moonbounce.mintlify.app\"},{\"@type\":\"WebSite\",\"@id\":\"https://moonbounce.mintlify.app#website\",\"name\":\"Moonbounce Decisions API\",\"url\":\"https://moonbounce.mintlify.app\",\"publisher\":{\"@id\":\"https://moonbounce.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status#webpage\",\"url\":\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status\",\"name\":\"Get the improvement loop's status\",\"description\":\"Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after threshold reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key's environment only: a test key's reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production's).\",\"dateModified\":\"2026-11-02T20:55:04.155Z\",\"isPartOf\":{\"@id\":\"https://moonbounce.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://moonbounce.mintlify.app/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"suggestions\",\"item\":\"https://moonbounce.mintlify.app/api-reference/suggestions/list-suggestions-for-a-decision\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get the improvement loop's status\",\"item\":\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status#apireference\",\"headline\":\"Get the improvement loop's status\",\"name\":\"Get the improvement loop's status\",\"description\":\"Accepted suggestions with their evidence labels, review counts, spot-check agreement (on the version that last served production before the first acceptance vs on accepted candidates, by the version that served each production review) and the stop check: after threshold reviews with no suggestion beating the original on held-out cases, stop and rethink. Counts the key's environment only: a test key's reviews, random stratum and suggestions, with no accepted suggestions and so no spot check (acceptance is production's).\",\"url\":\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status\",\"mainEntityOfPage\":{\"@id\":\"https://moonbounce.mintlify.app/api-reference/suggestions/get-the-improvement-loops-status#webpage\"},\"dateModified\":\"2026-11-02T20:55:04.155Z\",\"publisher\":{\"@id\":\"https://moonbounce.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://moonbounce.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Moonbounce Decisions API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Moonbounce Decisions API","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API reference overview","href":"/reference/overview"}]},{"group":"Endpoints","pages":[{"group":"health","pages":[{"title":"Health check","deprecated":null,"version":null,"openapi":"/openapi.json get /health","href":"/api-reference/health/health-check"}]},{"group":"specs","pages":[{"title":"Hash a decision spec","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/specs/hash","href":"/api-reference/specs/hash-a-decision-spec"},{"title":"List registered structures","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/structures","href":"/api-reference/specs/list-registered-structures"},{"title":"Register a spec structure","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/structures","href":"/api-reference/specs/register-a-spec-structure"},{"title":"Get a registered structure and its spec","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/structures/{structure}","href":"/api-reference/specs/get-a-registered-structure-and-its-spec"},{"title":"List decisions in this environment","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions","href":"/api-reference/specs/list-decisions-in-this-environment"}]},{"group":"engines","pages":[{"title":"List the engines a decision can run on","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/engines","href":"/api-reference/engines/list-the-engines-a-decision-can-run-on"},{"title":"Get the engine a decision runs on","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/binding","href":"/api-reference/engines/get-the-engine-a-decision-runs-on"},{"title":"Choose the engine a decision runs on","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/binding/revisions","href":"/api-reference/engines/choose-the-engine-a-decision-runs-on"}]},{"group":"evaluate","pages":[{"title":"Evaluate an item against a decision","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/evaluate","href":"/api-reference/evaluate/evaluate-an-item-against-a-decision"},{"title":"Get a past evaluation","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/evaluations/{evaluation_id}","href":"/api-reference/evaluate/get-a-past-evaluation"},{"title":"List a decision's evaluations","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/evaluations","href":"/api-reference/evaluate/list-a-decisions-evaluations"}]},{"group":"feedback","pages":[{"title":"Submit feedback on an evaluation or item","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/feedback","href":"/api-reference/feedback/submit-feedback-on-an-evaluation-or-item"},{"title":"Get a feedback submission as stored","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/feedback/{feedback_id}","href":"/api-reference/feedback/get-a-feedback-submission-as-stored"},{"title":"Export a decision's feedback as training data","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/feedback","href":"/api-reference/feedback/export-a-decisions-feedback-as-training-data"},{"title":"Seed a decision with labeled examples","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/seeds","href":"/api-reference/feedback/seed-a-decision-with-labeled-examples"}]},{"group":"review","pages":[{"title":"List review items","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items","href":"/api-reference/review/list-review-items"},{"title":"Get a review item","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items/{item_id}","href":"/api-reference/review/get-a-review-item"},{"title":"Get the structure and weights a review item was decided with","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items/{item_id}/configuration","href":"/api-reference/review/get-the-structure-and-weights-a-review-item-was-decided-with"},{"title":"Mark a review item as shown","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{item_id}/shown","href":"/api-reference/review/mark-a-review-item-as-shown"},{"title":"Submit a review","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{item_id}/submit","href":"/api-reference/review/submit-a-review"},{"title":"Withdraw a review answer","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{item_id}/withdraw","href":"/api-reference/review/withdraw-a-review-answer"},{"title":"Change your own earlier review answer","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{item_id}/change","href":"/api-reference/review/change-your-own-earlier-review-answer"},{"title":"Skip a review item","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{item_id}/skip","href":"/api-reference/review/skip-a-review-item"},{"title":"Add the reason for a blind disagreement","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{item_id}/reason","href":"/api-reference/review/add-the-reason-for-a-blind-disagreement"}]},{"group":"suggestions","pages":[{"title":"List suggestions for a decision","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/suggestions","href":"/api-reference/suggestions/list-suggestions-for-a-decision"},{"title":"Generate a suggestion on demand","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/suggestions","href":"/api-reference/suggestions/generate-a-suggestion-on-demand"},{"title":"Get a suggestion","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/suggestions/{suggestion_id}","href":"/api-reference/suggestions/get-a-suggestion"},{"title":"Mark a suggestion pulled or rejected","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/suggestions/{suggestion_id}/status","href":"/api-reference/suggestions/mark-a-suggestion-pulled-or-rejected"},{"title":"Preview a spec change against past feedback","description":"Replays a spec change over past cases with feedback: it spends engine calls, stores a run, and burns the held-out cases it lists. Not a dry run of evaluate. Replays a local spec (with its weights pin and cut points) and its base over the decision's reviewed and seeded cases in the key's environment (a test key previews against test cases only), and returns fixes, breaks, the action mix at the cut points and an evidence label. Writes an eval run only: never an evaluation, never traffic, never acceptance. A preview does not register the candidate: before evaluating by its structure hash, register the spec with POST /v1/decisions/{decision_id}/structures (or send the spec inline on evaluate once). Holdout cases it lists individually (fixes and breaks) are burned (they count as training from then on); unlisted holdout cases are only scored. `evidence.by_split.holdout.holdout_uses` counts preview runs that scored held-out cases, not burns. The base, in order: the base of `suggestion_id` when it is sent (then `base` is ignored), else `base`, else the version serving primary traffic in the key's environment, else the latest version seeded there, else none. With `suggestion_id`, `hashes_match` says whether the spec is that suggestion's candidate; another environment's suggestion is 404. The evidence replays only cases with an outcome from the owner, reviewers or seeds; the action mix replays a sample of the environment's recent primary traffic. For features the candidate changes, `before` is a fresh re-run of the base feature (the fair baseline), so engine nondeterminism can move it between previews; unchanged features replay cached answers when available. `noise_rate` measures outcome flips from that re-run against the cached baseline, not score drift. Holdout burns and use counts are per environment, and a test key's preview neither reads nor fills the shared cache of engine answers. A decision nothing was registered, evaluated or seeded under is 404.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/previews","href":"/api-reference/suggestions/preview-a-spec-change-against-past-feedback"},{"title":"Get the improvement loop's status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/loop","href":"/api-reference/suggestions/get-the-improvement-loops-status"}]},{"group":"usage","pages":[{"title":"Engine and model cost for a decision, per evaluation and in total","description":"Engine cost of one decision's evaluations and previews over a window; reads only. What the decision's evaluations cost over a window, for the key's organization and environment. Amounts are US dollars in micros (`usd_micros`: millionths of a dollar). Costs are what our engines reported, priced by each adapter from the vendor's published price, plus an estimate for calls we couldn't price from a vendor report (no usage reported, or a suggestion-writer model with no listed price), broken out as `estimated_usd_micros`; cache hits cost nothing. Evaluations that never committed and suggestion generation (its replays and model call) are in `other_spend`, outside the per-evaluation numbers, and `total` adds everything recorded. Per-request `cost` on evaluate and seeds is reported cost only. `since` (inclusive) and `until` (exclusive) are read to the millisecond and default to the last 30 days ending now; the window may span at most 366 days. A decision with no traffic in the window answers 200 with empty groups. The web session may not read it (403).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/usage","href":"/api-reference/usage/engine-and-model-cost-for-a-decision-per-evaluation-and-in-total"}]},{"group":"keys","pages":[{"title":"Identify the calling key or sign-in","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/whoami","href":"/api-reference/keys/identify-the-calling-key-or-sign-in"}]}]}]}]},"basePath":"","title":"Get the improvement loop's status - Moonbounce Decisions API","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-DHaG7hr_.js","dist-DKZWslLH.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-BIWXJmsZ.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","AssistantPageLink-UDqbR6xh.js"]}