Reads only. The decision’s labeled cases in the key’s environment, newest label first: the cases a preview replays, one per item group, each with its evaluation_id, label (expected) and where it came from (label_source, consensus, feedback_source), its split, the version it ran under and what it gave then, the expected_answer corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in excluded, by reason. Filters: outcomes (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as outcome_not_in_result, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as attribute_inputs_unavailable, when its versions leave that attribute’s default unchanged. structure_hash (the version it ran under) and since (inclusive) and until (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and excluded counts only those evaluations. label_source then narrows the cases; total counts the cases after every filter. Content is left out unless include=content, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.
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.
Evaluations with feedback that are not cases, by reason: withdrawn (all feedback withdrawn), retired (feedback older than the last policy change), excluded (flagged input_broken), contested (reviewers disagree), no_consensus (no feedback that decides an outcome), no_outcome (feedback rules outcomes out without naming one), outcome_not_in_result (expected outcome not in outcomes), no_deciding_ballot, attribute_inputs_unavailable (stored before attribute inputs were kept, with a default that can't be read back), no_split (not yet in a split group), duplicate_group (another evaluation of the same item group counts instead).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Moonbounce Decisions API","colors":{"primary":"#1D5AB5","light":"#74A8F0","dark":"#478EF0"},"logo":{"light":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/lockup-light.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=367a5dedb5799a16c5737d136af68dc5","dark":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/lockup-dark.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=3b3e891bc9f1e5b26bee272f878ecd4f","href":"https://moonbounce.ai"},"favicon":{"light":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/symbol-light.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=78644bdbff4fda3f026238ea5135e647","dark":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/symbol-dark.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=946e0ccec72a87a3d707728e895639e1"},"background":{"color":{"light":"#FFFEEE","dark":"#000000"}},"navbar":{"primary":{"type":"button","label":"Request access","href":"https://app.moonbounce.ai"}},"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","color":{"light":"#1D5AB5","dark":"#1D5AB5"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"moonbounce","hasAudioNarration":false,"actualSubdomain":"moonbounce","customDomains":["docs.moonbounce.ai"],"gitSource":{"type":"github","owner":"clavataai","repo":"decisions-platform","deployBranch":"main","contentDirectory":"docs/site","isPrivate":true,"mountPath":"","label":"","_id":"6ae8f7a905e268646b31d443"},"chroma":{"latestBuiltDeploymentHistoryId":"6aeca9a037327199c83cec33","collectionId":"e9c425b7-eb17-41bc-adf6-390226fcaa59","liveDeploymentHistoryId":"6aeca9a037327199c83cec33","schemaVersion":"v3"},"entitlements":{},"buildId":"6aed2b7f7f86d585254780fd","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"API reference","count":39},{"language":"default","tag":"Endpoints","count":38},{"language":"default","tag":"Guides","count":14},{"language":"default","tag":"review","count":10},{"language":"default","tag":"suggestions","count":6},{"language":"default","tag":"feedback","count":5},{"language":"default","tag":"structures","count":5},{"language":"default","tag":"Get started","count":3},{"language":"default","tag":"Build a decision","count":3},{"language":"default","tag":"Improve a decision","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":"rbac-expansion","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":"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":"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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"brand.css","content":":root{--mb-font-sans: \"Helvetica Neue\", Helvetica, Arial, sans-serif;--mb-font-mono: ui-monospace, \"SF Mono\", Menlo, Consolas, monospace;--mb-rule: rgb(225, 230, 240);--mb-rule-strong: rgb(134, 134, 134)}.dark{--mb-rule: rgb(68, 69, 74);--mb-rule-strong: rgb(134, 134, 134)}body{font-family:var(--mb-font-sans)}h1,h2,h3,h4,h5,h6{font-family:var(--mb-font-sans);font-weight:600;letter-spacing:-0.011em}#page-title{letter-spacing:-0.03em;line-height:1.05}code,pre,kbd,samp{font-family:var(--mb-font-mono)}#navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"]>span.absolute{background:rgb(0, 0, 0);border-radius:999px}#navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] .text-white,#navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] svg{color:rgb(255, 254, 238)}.dark #navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"]>span.absolute{background:rgb(255, 254, 238)}.dark #navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] .text-white,.dark #navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] svg{color:rgb(0, 0, 0)}.card,.callout,.code-block,.accordion,table{border-radius:0;box-shadow:none}.card{border:1px solid var(--mb-rule)}.card:hover{border-color:var(--mb-rule-strong)}"}],"page":{"pagePath":"api-reference/feedback/list-a-decisions-labeled-cases","slug":"/api-reference/feedback/list-a-decisions-labeled-cases","pageMetadata":{"title":"List a decision's labeled cases","description":"Reads only. The decision's labeled cases in the key's environment, newest label first: the cases a preview replays, one per item group, each with its `evaluation_id`, label (`expected`) and where it came from (`label_source`, `consensus`, `feedback_source`), its split, the version it ran under and what it gave then, the `expected_answer` corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in `excluded`, by reason. Filters: `outcomes` (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as `outcome_not_in_result`, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as `attribute_inputs_unavailable`, when its versions leave that attribute's default unchanged. `structure_hash` (the version it ran under) and `since` (inclusive) and `until` (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and `excluded` counts only those evaluations. `label_source` then narrows the cases; `total` counts the cases after every filter. Content is left out unless `include=content`, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/cases","href":"/api-reference/feedback/list-a-decisions-labeled-cases","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: [\"Reads only. The decision’s labeled cases in the key’s environment, newest label first: the cases a preview replays, one per item group, each with its \", _jsx(_components.code, {\n children: \"evaluation_id\"\n }), \", label (\", _jsx(_components.code, {\n children: \"expected\"\n }), \") and where it came from (\", _jsx(_components.code, {\n children: \"label_source\"\n }), \", \", _jsx(_components.code, {\n children: \"consensus\"\n }), \", \", _jsx(_components.code, {\n children: \"feedback_source\"\n }), \"), its split, the version it ran under and what it gave then, the \", _jsx(_components.code, {\n children: \"expected_answer\"\n }), \" corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in \", _jsx(_components.code, {\n children: \"excluded\"\n }), \", by reason. Filters: \", _jsx(_components.code, {\n children: \"outcomes\"\n }), \" (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as \", _jsx(_components.code, {\n children: \"outcome_not_in_result\"\n }), \", as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as \", _jsx(_components.code, {\n children: \"attribute_inputs_unavailable\"\n }), \", when its versions leave that attribute’s default unchanged. \", _jsx(_components.code, {\n children: \"structure_hash\"\n }), \" (the version it ran under) and \", _jsx(_components.code, {\n children: \"since\"\n }), \" (inclusive) and \", _jsx(_components.code, {\n children: \"until\"\n }), \" (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and \", _jsx(_components.code, {\n children: \"excluded\"\n }), \" counts only those evaluations. \", _jsx(_components.code, {\n children: \"label_source\"\n }), \" then narrows the cases; \", _jsx(_components.code, {\n children: \"total\"\n }), \" counts the cases after every filter. Content is left out unless \", _jsx(_components.code, {\n children: \"include=content\"\n }), \", which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.\"]\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":"List a decision's labeled cases","description":"Reads only. The decision's labeled cases in the key's environment, newest label first: the cases a preview replays, one per item group, each with its `evaluation_id`, label (`expected`) and where it came from (`label_source`, `consensus`, `feedback_source`), its split, the version it ran under and what it gave then, the `expected_answer` corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in `excluded`, by reason. Filters: `outcomes` (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as `outcome_not_in_result`, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as `attribute_inputs_unavailable`, when its versions leave that attribute's default unchanged. `structure_hash` (the version it ran under) and `since` (inclusive) and `until` (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and `excluded` counts only those evaluations. `label_source` then narrows the cases; `total` counts the cases after every filter. Content is left out unless `include=content`, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/cases","href":"/api-reference/feedback/list-a-decisions-labeled-cases","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"listCases","x-mcp-annotations":{"readOnlyHint":true,"openWorldHint":false},"tags":["feedback"],"security":["2b2bc20d-8917-4937-aa03-6f9ecb739919"],"summary":"List a decision's labeled cases","description":"Reads only. The decision's labeled cases in the key's environment, newest label first: the cases a preview replays, one per item group, each with its `evaluation_id`, label (`expected`) and where it came from (`label_source`, `consensus`, `feedback_source`), its split, the version it ran under and what it gave then, the `expected_answer` corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in `excluded`, by reason. Filters: `outcomes` (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as `outcome_not_in_result`, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as `attribute_inputs_unavailable`, when its versions leave that attribute's default unchanged. `structure_hash` (the version it ran under) and `since` (inclusive) and `until` (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and `excluded` counts only those evaluations. `label_source` then narrows the cases; `total` counts the cases after every filter. Content is left out unless `include=content`, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.","parameters":["0e56c742-dd78-4cb5-a3c5-49d83db8693e","49d0d10e-6ead-4a14-8d29-b3470365d869","62e39629-d1f9-4e58-ae3e-0d2e2ee96261","59d90ee6-8397-46d3-9acf-26c8f0f253a3","8aaf18b5-37de-4972-9239-e630ca5965de","7a184335-7cc3-47e8-a599-9220f9a8c746","d36b83d7-637e-4e90-9485-409adcd5c367","8e65e803-0f51-4d7d-ae93-ea010606b5d7","b6baebf1-763a-4665-bdeb-5dd299b3eaf3"],"responses":{"200":"d69ee42c-3ca9-4b8b-aa5e-cdcaa6e1e463","400":"b437a2f9-e6c1-47f0-acb9-c9d8e12e9ed2","401":"2233b258-1781-4df5-8372-1fb15e2a659f","403":"3add3aee-bd53-4233-bc43-e7043eaa111f","429":"8d96c38b-a837-4e3d-b4c5-8e75e160d00f","503":"c8605526-2bc9-4296-bd49-932a9b803553"},"method":"get","type":"path","servers":["5199a294-99c0-440b-a171-e6a2ae5671e1"],"path":"/v1/decisions/{decision_id}/cases","baseUrlOptions":["https://api.moonbounce.ai"],"title":"List a decision's labeled cases","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"0e56c742-dd78-4cb5-a3c5-49d83db8693e":{"schema":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"name":"decision_id","in":"path"},"49d0d10e-6ead-4a14-8d29-b3470365d869":{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50,"isRequired":false,"uniqueKey":"","typeLabel":"integer"},"required":false,"name":"limit","in":"query"},"62e39629-d1f9-4e58-ae3e-0d2e2ee96261":{"schema":{"type":"string","minLength":1,"maxLength":1024,"isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"name":"cursor","in":"query"},"59d90ee6-8397-46d3-9acf-26c8f0f253a3":{"schema":{"type":"string","minLength":1,"maxLength":4096,"description":"Outcome names, comma-separated (no spaces) or as a JSON array (`[\"refund, partial\",\"deny\"]`). Only cases labeled one of them are listed.","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Outcome names, comma-separated (no spaces) or as a JSON array (`[\"refund, partial\",\"deny\"]`). Only cases labeled one of them are listed.","name":"outcomes","in":"query"},"8aaf18b5-37de-4972-9239-e630ca5965de":{"schema":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"name":"structure_hash","in":"query"},"7a184335-7cc3-47e8-a599-9220f9a8c746":{"schema":{"type":"string","enum":["human","synthetic","unknown"],"description":"Where the label came from: `human`, `synthetic` (an agent made it) or `unknown`. Only `human` counts toward the no-new-severe-mistake rule.","isRequired":false,"uniqueKey":"","typeLabel":"enum\u003cstring>"},"required":false,"description":"Where the label came from: `human`, `synthetic` (an agent made it) or `unknown`. Only `human` counts toward the no-new-severe-mistake rule.","name":"label_source","in":"query"},"d36b83d7-637e-4e90-9485-409adcd5c367":{"schema":{"type":"string","format":"date-time","isRequired":false,"uniqueKey":"","typeLabel":"string\u003cdate-time>"},"required":false,"name":"since","in":"query"},"8e65e803-0f51-4d7d-ae93-ea010606b5d7":{"schema":{"type":"string","format":"date-time","isRequired":false,"uniqueKey":"","typeLabel":"string\u003cdate-time>"},"required":false,"name":"until","in":"query"},"b6baebf1-763a-4665-bdeb-5dd299b3eaf3":{"schema":{"type":"string","enum":["content"],"isRequired":false,"uniqueKey":"","typeLabel":"enum\u003cstring>"},"required":false,"name":"include","in":"query"}},"responses":{"d69ee42c-3ca9-4b8b-aa5e-cdcaa6e1e463":{"description":"A page of cases","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"},"cases":{"type":"array","items":{"type":"object","properties":{"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}$","description":"The evaluation the label is about (getEvaluation reads it).","isRequired":true,"uniqueKey":"cases.items.[INDEX].evaluation_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"cases.items.[INDEX].item_id","typeLabel":"string"},"assignment_mode":{"type":"string","enum":["primary","example"],"isRequired":true,"uniqueKey":"cases.items.[INDEX].assignment_mode","typeLabel":"enum\u003cstring>"},"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The label: the outcome the feedback settled on.","isRequired":true,"uniqueKey":"cases.items.[INDEX].expected","typeLabel":"string"},"label_source":{"type":"string","enum":["human","synthetic","unknown"],"description":"Where the label came from: `human`, `synthetic` (an agent made it) or `unknown`. Only `human` counts toward the no-new-severe-mistake rule.","isRequired":true,"uniqueKey":"cases.items.[INDEX].label_source","typeLabel":"enum\u003cstring>"},"consensus":{"type":"string","enum":["owner","majority","example"],"description":"How the label was decided: the owner's feedback, a reviewer majority, or an imported example's label.","isRequired":true,"uniqueKey":"cases.items.[INDEX].consensus","typeLabel":"enum\u003cstring>"},"feedback_source":{"type":"string","enum":["owner","reviewer","import","synthetic_review"],"description":"The source of the feedback that decided the label (`import` is an imported example).","isRequired":true,"uniqueKey":"cases.items.[INDEX].feedback_source","typeLabel":"enum\u003cstring>"},"split":{"type":"string","enum":["example","train"],"isRequired":true,"uniqueKey":"cases.items.[INDEX].split","typeLabel":"enum\u003cstring>"},"ran":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"cases.items.[INDEX].ran.structure_hash","typeLabel":"string"},"engine_profile":{"type":"string","description":"The engine and model each question ran on, as an evaluate run reports it.","isRequired":true,"uniqueKey":"cases.items.[INDEX].ran.engine_profile","typeLabel":"string"},"status":{"type":"string","enum":["computed","decided","abstained"],"description":"The evaluation's status then.","isRequired":true,"uniqueKey":"cases.items.[INDEX].ran.status","typeLabel":"enum\u003cstring>"},"outcome":{"oneOf":[{"type":"string","minLength":1,"maxLength":200,"description":"The outcome it gave then; null when it gave none.","isRequired":true,"uniqueKey":"cases.items.[INDEX].ran.outcome.oneOf.0","typeLabel":"string"},{"type":"null","minLength":1,"maxLength":200,"description":"The outcome it gave then; null when it gave none.","isRequired":true,"uniqueKey":"cases.items.[INDEX].ran.outcome.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cases.items.[INDEX].ran.outcome","typeLabel":"string | null"}},"required":["structure_hash","engine_profile","status","outcome"],"description":"The evaluation the label is about: the version it ran under and what it gave.","isRequired":true,"uniqueKey":"cases.items.[INDEX].ran","typeLabel":"object"},"answer_corrections":{"type":"array","items":{"type":"object","properties":{"question_hash":{"type":"string","isRequired":true,"uniqueKey":"cases.items.[INDEX].answer_corrections.items.[INDEX].question_hash","typeLabel":"string"},"questions":{"type":"array","items":{"type":"string","uniqueKey":"cases.items.[INDEX].answer_corrections.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"description":"The question's names in the structure the case ran under.","isRequired":true,"uniqueKey":"cases.items.[INDEX].answer_corrections.items.[INDEX].questions","typeLabel":"string[]"},"expected":{"type":"boolean","description":"The answer the feedback says the question should have given.","isRequired":true,"uniqueKey":"cases.items.[INDEX].answer_corrections.items.[INDEX].expected","typeLabel":"boolean"}},"required":["question_hash","questions","expected"],"uniqueKey":"cases.items.[INDEX].answer_corrections.items.[INDEX]","typeLabel":"object"},"description":"The `expected_answer` corrections in the case's feedback (owner, reviewers or an imported example), by question hash, resolved as previews read them.","isRequired":true,"uniqueKey":"cases.items.[INDEX].answer_corrections","typeLabel":"object[]"},"reasons":{"type":"array","items":{"type":"object","properties":{"feedback_id":{"type":"string","pattern":"^fbk_[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":"cases.items.[INDEX].reasons.items.[INDEX].feedback_id","typeLabel":"string"},"text":{"type":"string","isRequired":true,"uniqueKey":"cases.items.[INDEX].reasons.items.[INDEX].text","typeLabel":"string"}},"required":["feedback_id","text"],"uniqueKey":"cases.items.[INDEX].reasons.items.[INDEX]","typeLabel":"object"},"description":"What the feedback's authors wrote (owner, reviewers or an imported example), oldest first: often the best clue for a rewrite.","isRequired":true,"uniqueKey":"cases.items.[INDEX].reasons","typeLabel":"object[]"},"feedback_ids":{"type":"array","items":{"type":"string","pattern":"^fbk_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","uniqueKey":"cases.items.[INDEX].feedback_ids.items.[INDEX]","typeLabel":"string"},"description":"The live feedback on the case, oldest first.","isRequired":true,"uniqueKey":"cases.items.[INDEX].feedback_ids","typeLabel":"string[]"},"deciding_feedback_id":{"type":"string","pattern":"^fbk_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"The feedback whose claims decided the label (getFeedback reads it).","isRequired":true,"uniqueKey":"cases.items.[INDEX].deciding_feedback_id","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","description":"When the evaluation ran.","isRequired":true,"uniqueKey":"cases.items.[INDEX].created_at","typeLabel":"string\u003cdate-time>"},"labeled_at":{"type":"string","format":"date-time","description":"When the deciding feedback was sent. Cases are listed newest label first.","isRequired":true,"uniqueKey":"cases.items.[INDEX].labeled_at","typeLabel":"string\u003cdate-time>"},"content":{"type":"object","properties":{"state":{"oneOf":[{}],"uniqueKey":"cases.items.[INDEX].content.state","typeLabel":"any"},"attribute_values":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":200,"uniqueKey":"cases.items.[INDEX].content.attribute_values.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"cases.items.[INDEX].content.attribute_values.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"cases.items.[INDEX].content.attribute_values.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"cases.items.[INDEX].content.attribute_values.additionalProperties","typeLabel":"string | number | boolean"},"uniqueKey":"cases.items.[INDEX].content.attribute_values","typeLabel":"object"}},"description":"Only with `include=content`: the stored state and the attribute values the caller supplied (defaults not applied).","uniqueKey":"cases.items.[INDEX].content","typeLabel":"object"}},"required":["evaluation_id","item_id","assignment_mode","expected","label_source","consensus","feedback_source","split","ran","answer_corrections","reasons","feedback_ids","deciding_feedback_id","created_at","labeled_at"],"uniqueKey":"cases.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"cases","typeLabel":"object[]"},"total":{"type":"integer","minimum":0,"description":"Cases that match the filters, across every page.","isRequired":true,"uniqueKey":"total","typeLabel":"integer"},"excluded":{"type":"object","properties":{"withdrawn":{"type":"integer","minimum":1,"uniqueKey":"excluded.withdrawn","typeLabel":"integer"},"retired":{"type":"integer","minimum":1,"uniqueKey":"excluded.retired","typeLabel":"integer"},"excluded":{"type":"integer","minimum":1,"uniqueKey":"excluded.excluded","typeLabel":"integer"},"contested":{"type":"integer","minimum":1,"uniqueKey":"excluded.contested","typeLabel":"integer"},"no_consensus":{"type":"integer","minimum":1,"uniqueKey":"excluded.no_consensus","typeLabel":"integer"},"no_outcome":{"type":"integer","minimum":1,"uniqueKey":"excluded.no_outcome","typeLabel":"integer"},"outcome_not_in_result":{"type":"integer","minimum":1,"uniqueKey":"excluded.outcome_not_in_result","typeLabel":"integer"},"no_deciding_ballot":{"type":"integer","minimum":1,"uniqueKey":"excluded.no_deciding_ballot","typeLabel":"integer"},"attribute_inputs_unavailable":{"type":"integer","minimum":1,"uniqueKey":"excluded.attribute_inputs_unavailable","typeLabel":"integer"},"no_split":{"type":"integer","minimum":1,"uniqueKey":"excluded.no_split","typeLabel":"integer"},"duplicate_group":{"type":"integer","minimum":1,"uniqueKey":"excluded.duplicate_group","typeLabel":"integer"}},"description":"Evaluations with feedback that are not cases, by reason: `withdrawn` (all feedback withdrawn), `retired` (feedback older than the last policy change), `excluded` (flagged input_broken), `contested` (reviewers disagree), `no_consensus` (no feedback that decides an outcome), `no_outcome` (feedback rules outcomes out without naming one), `outcome_not_in_result` (expected outcome not in `outcomes`), `no_deciding_ballot`, `attribute_inputs_unavailable` (stored before attribute inputs were kept, with a default that can't be read back), `no_split` (not yet in a split group), `duplicate_group` (another evaluation of the same item group counts instead).","isRequired":true,"uniqueKey":"excluded","typeLabel":"object"},"next_cursor":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"next_cursor.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"next_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"next_cursor","typeLabel":"string | null"},"has_more":{"type":"boolean","isRequired":true,"uniqueKey":"has_more","typeLabel":"boolean"}},"required":["environment","decision_id","cases","total","excluded","next_cursor","has_more"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"environment":"production","decision_id":"\u003cstring>","cases":[{"evaluation_id":"\u003cstring>","item_id":"\u003cstring>","assignment_mode":"primary","expected":"\u003cstring>","label_source":"human","consensus":"owner","feedback_source":"owner","split":"example","ran":{"structure_hash":"\u003cstring>","engine_profile":"\u003cstring>","status":"computed","outcome":"\u003cstring>"},"answer_corrections":[{"question_hash":"\u003cstring>","questions":["\u003cstring>"],"expected":true}],"reasons":[{"feedback_id":"\u003cstring>","text":"\u003cstring>"}],"feedback_ids":["\u003cstring>"],"deciding_feedback_id":"\u003cstring>","created_at":"2023-11-07T05:31:56Z","labeled_at":"2023-11-07T05:31:56Z","content":{"state":"\u003cunknown>","attribute_values":{}}}],"total":1,"excluded":{"withdrawn":2,"retired":2,"excluded":2,"contested":2,"no_consensus":2,"no_outcome":2,"outcome_not_in_result":2,"no_deciding_ballot":2,"attribute_inputs_unavailable":2,"no_split":2,"duplicate_group":2},"next_cursor":"\u003cstring>","has_more":true}}},"exampleType":"generated"}},"exampleType":"generated"},"b437a2f9-e6c1-47f0-acb9-c9d8e12e9ed2":{"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 (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"2233b258-1781-4df5-8372-1fb15e2a659f":{"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 (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"3add3aee-bd53-4233-bc43-e7043eaa111f":{"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 (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"8d96c38b-a837-4e3d-b4c5-8e75e160d00f":{"description":"RATE_LIMITED: retry after Retry-After seconds; QUOTA_EXCEEDED: details.reset_at gives the daily reset time (no Retry-After)","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 (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"c8605526-2bc9-4296-bd49-932a9b803553":{"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 (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"2b2bc20d-8917-4937-aa03-6f9ecb739919":{"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":{"5199a294-99c0-440b-a171-e6a2ae5671e1":{"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":"List a decision's labeled cases - Moonbounce Decisions API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T00:56:41.180Z","originalFileLocation":"api-reference/feedback/list-a-decisions-labeled-cases.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=\"Reads only. The decision\u0026#x27;s labeled cases in the key\u0026#x27;s environment, newest label first: the cases a preview replays, one per item group, each with its evaluation_id, label (expected) and where it came from (label_source, consensus, feedback_source), its split, the version it ran under and what it gave then, the expected_answer corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in excluded, by reason. Filters: outcomes (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as outcome_not_in_result, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as attribute_inputs_unavailable, when its versions leave that attribute\u0026#x27;s default unchanged. structure_hash (the version it ran under) and since (inclusive) and until (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and excluded counts only those evaluations. label_source then narrows the cases; total counts the cases after every filter. Content is left out unless include=content, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_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/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_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/moonbounce/Pq6Jhs_BrzDTLcf2/_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/moonbounce/Pq6Jhs_BrzDTLcf2/_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/moonbounce/Pq6Jhs_BrzDTLcf2/_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/moonbounce/Pq6Jhs_BrzDTLcf2/_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/moonbounce/Pq6Jhs_BrzDTLcf2/_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/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List a decision\u0026#x27;s labeled cases - Moonbounce Decisions API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Reads only. The decision\u0026#x27;s labeled cases in the key\u0026#x27;s environment, newest label first: the cases a preview replays, one per item group, each with its evaluation_id, label (expected) and where it came from (label_source, consensus, feedback_source), its split, the version it ran under and what it gave then, the expected_answer corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in excluded, by reason. Filters: outcomes (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as outcome_not_in_result, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as attribute_inputs_unavailable, when its versions leave that attribute\u0026#x27;s default unchanged. structure_hash (the version it ran under) and since (inclusive) and until (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and excluded counts only those evaluations. label_source then narrows the cases; total counts the cases after every filter. Content is left out unless include=content, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Moonbounce Decisions API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases\">\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=feedback\u0026amp;title=List+a+decision%27s+labeled+cases\u0026amp;description=Reads+only.+The+decision%27s+labeled+cases+in+the+key%27s+environment%2C+newest+label+first%3A+the+cases+a+preview+replays%2C+one+per+item+group%2C+each+with+its+%60evaluatio\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=7ad2902bb43682675e8a7b6d7f2a954ec916073148542fa8c2fd9639f59f6991\">\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=\"List a decision\u0026#x27;s labeled cases - Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Reads only. The decision\u0026#x27;s labeled cases in the key\u0026#x27;s environment, newest label first: the cases a preview replays, one per item group, each with its evaluation_id, label (expected) and where it came from (label_source, consensus, feedback_source), its split, the version it ran under and what it gave then, the expected_answer corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in excluded, by reason. Filters: outcomes (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as outcome_not_in_result, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as attribute_inputs_unavailable, when its versions leave that attribute\u0026#x27;s default unchanged. structure_hash (the version it ran under) and since (inclusive) and until (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and excluded counts only those evaluations. label_source then narrows the cases; total counts the cases after every filter. Content is left out unless include=content, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moonbounce.mintlify.app/_mintlify/api/og/v2?division=feedback\u0026amp;title=List+a+decision%27s+labeled+cases\u0026amp;description=Reads+only.+The+decision%27s+labeled+cases+in+the+key%27s+environment%2C+newest+label+first%3A+the+cases+a+preview+replays%2C+one+per+item+group%2C+each+with+its+%60evaluatio\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=7ad2902bb43682675e8a7b6d7f2a954ec916073148542fa8c2fd9639f59f6991\">\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/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1D5AB5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/feedback/list-a-decisions-labeled-cases.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.moonbounce.ai/#organization\",\"name\":\"Moonbounce Decisions API\",\"url\":\"https://docs.moonbounce.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/lockup-light.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=367a5dedb5799a16c5737d136af68dc5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.moonbounce.ai#website\",\"name\":\"Moonbounce Decisions API\",\"url\":\"https://docs.moonbounce.ai\",\"publisher\":{\"@id\":\"https://docs.moonbounce.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases#webpage\",\"url\":\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases\",\"name\":\"List a decision's labeled cases\",\"description\":\"Reads only. The decision's labeled cases in the key's environment, newest label first: the cases a preview replays, one per item group, each with its evaluation_id, label (expected) and where it came from (label_source, consensus, feedback_source), its split, the version it ran under and what it gave then, the expected_answer corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in excluded, by reason. Filters: outcomes (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as outcome_not_in_result, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as attribute_inputs_unavailable, when its versions leave that attribute's default unchanged. structure_hash (the version it ran under) and since (inclusive) and until (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and excluded counts only those evaluations. label_source then narrows the cases; total counts the cases after every filter. Content is left out unless include=content, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.\",\"dateModified\":\"2026-11-06T00:56:41.180Z\",\"isPartOf\":{\"@id\":\"https://docs.moonbounce.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.moonbounce.ai/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"List a decision's labeled cases\",\"item\":\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases#apireference\",\"headline\":\"List a decision's labeled cases\",\"name\":\"List a decision's labeled cases\",\"description\":\"Reads only. The decision's labeled cases in the key's environment, newest label first: the cases a preview replays, one per item group, each with its evaluation_id, label (expected) and where it came from (label_source, consensus, feedback_source), its split, the version it ran under and what it gave then, the expected_answer corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in excluded, by reason. Filters: outcomes (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as outcome_not_in_result, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as attribute_inputs_unavailable, when its versions leave that attribute's default unchanged. structure_hash (the version it ran under) and since (inclusive) and until (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and excluded counts only those evaluations. label_source then narrows the cases; total counts the cases after every filter. Content is left out unless include=content, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled cases.\",\"url\":\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases\",\"mainEntityOfPage\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/feedback/list-a-decisions-labeled-cases#webpage\"},\"dateModified\":\"2026-11-06T00:56:41.180Z\",\"publisher\":{\"@id\":\"https://docs.moonbounce.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.moonbounce.ai#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":"structures","pages":[{"title":"Validate and hash a decision structure","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/structures/hash","href":"/api-reference/structures/validate-and-hash-a-decision-structure"},{"title":"List registered structures","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/structures","href":"/api-reference/structures/list-registered-structures"},{"title":"Register a decision structure","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/structures","href":"/api-reference/structures/register-a-decision-structure"},{"title":"Get a registered structure","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/structures/{structure_hash}","href":"/api-reference/structures/get-a-registered-structure"},{"title":"List decisions in this environment","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions","href":"/api-reference/structures/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":"objective","pages":[{"title":"Judge results under a decision's objective","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/loss-reports","href":"/api-reference/objective/judge-results-under-a-decisions-objective"},{"title":"Get what a decision optimizes for","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/objective","href":"/api-reference/objective/get-what-a-decision-optimizes-for"},{"title":"Set what a decision optimizes for","description":"Stores the decision file's `objective` as a new revision for the calling key's environment, so previews and optimizers judge changes by it (a preview's `loss_report`, and whether a candidate is accepted). Push it whenever the file's objective changes; each environment keeps its own. `mistakes` set a loss per mistake by severity (`minor` 0.5, `normal` 1, `costly` 3, `severe` 10) or directly (`loss`), and an unlisted mistake is `normal`; `fallback` makes sending a case to the safe outcome `minor`; `target` is the loss per case that is good enough; `outcome` with `priority` is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset's mix doesn't change the score. There are no limits on an outcome's share, recall or precision: an objective with `limits` is refused. `{\"objective\": null}` clears it, back to balanced losses. The objective is not part of the structure and never changes `structure_hash`. 201 with the new revision; 200 and no new revision when the body matches the current one. `unknown_outcomes` lists outcomes the decision's most recently registered structure (in any environment) can't produce. 404 when the decision doesn't exist (register a structure first). An Idempotency-Key covers the body as sent.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/objective/revisions","href":"/api-reference/objective/set-what-a-decision-optimizes-for"}]},{"group":"feedback","pages":[{"title":"List a decision's labeled cases","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/cases","href":"/api-reference/feedback/list-a-decisions-labeled-cases"},{"title":"Submit feedback on evaluations or items","description":"Say what the right answer was: the one way a label becomes evidence. Send one submission, or many as `submissions` (up to 200, each exactly as one call would send it): every submission is checked first, then all are stored in one transaction, or none are (a refusal's `param` starts `submissions.\u003ci>`); the response then lists each one's result in `results`. The sources that count toward an evaluation's consensus, which previews and suggestions learn from, are `owner` (through this route), reviewers answering through the review routes (the Review app), and imported examples; `app_native` and `app_resolution` provide supporting feedback only. Use `source: \"owner\"` for your own judgment as the decision's owner: its expected_outcome or verdict claim decides the consensus; expected_answer claims alone decide nothing. All owner feedback through this route is the decision owner's single voice, whoever sent it (the latest owner submission with an end-level claim decides, replacing earlier ones); agreement between people is only kept for reviewers on the review routes. Use `app_native` or `app_resolution` for your app's own feedback (a user approved or reverted the outcome, an appeal settled it): they never decide a consensus, but the first feedback on an item's group, from any source, fixes its split for good, their reasons can reach the suggestion generator, and their `input_broken` claims set the evaluation aside. See `source`. Records claims about an evaluation in the key's environment, or about an item's latest primary evaluation, at two levels: `expected_answer` (what one question's answer should have been) and `expected_outcome` or `verdict` (what the decision should have produced, or approve/reject of the outcome it returned), plus `input_broken`. Claims are checked against that evaluation (400 with `param`): an expected_answer names a question of its structure (`claims.\u003ci>.question`), one per question; an expected_outcome is one of the outcomes the result can produce (`claims.\u003ci>.value`); at most one end-level claim, never verdict and expected_outcome together; a result that is a value (a number) takes no end-level claim; and verdicts only on primary evaluations that decided an outcome (shown, and not abstained). `supersedes` must name a submission by the same actor on the same evaluation that nothing has superseded yet (409). `owner` feedback cannot name an `actor` (403). Owner feedback, and superseding an owner submission, need the `decisions:develop` scope (403 INSUFFICIENT_SCOPE); integration sources need `decisions:feedback`. Read a submission back with `GET /v1/feedback/{feedback_id}`. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/feedback","href":"/api-reference/feedback/submit-feedback-on-evaluations-or-items"},{"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":"Import labeled examples","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/examples","href":"/api-reference/feedback/import-labeled-examples"}]},{"group":"evaluate","pages":[{"title":"Evaluate an item, or run a version over many items","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/evaluate","href":"/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items"},{"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":"review","pages":[{"title":"Fill the review queue","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/fill","href":"/api-reference/review/fill-the-review-queue"},{"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/{review_item_id}","href":"/api-reference/review/get-a-review-item"},{"title":"Get the structure a review item was decided with","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items/{review_item_id}/configuration","href":"/api-reference/review/get-the-structure-a-review-item-was-decided-with"},{"title":"Mark a review item as shown","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_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/{review_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/{review_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/{review_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/{review_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/{review_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 structure change against past feedback","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/previews","href":"/api-reference/suggestions/preview-a-structure-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":"Get a decision's engine cost, per evaluation and in total","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/usage","href":"/api-reference/usage/get-a-decisions-engine-cost-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":"List a decision's labeled cases - Moonbounce Decisions API","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-B2eHeXx_.js","dist-Dt1IougW.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-DptzKFCt.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-B5zPa4Vr.js","utils-CVjrr8Yd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DTgURWzl.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DxTHtkdZ.js","snippetPresets-Cx47o5Vx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-4Fr6y9N_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Dq2ElbEk.js","shallow-BfYl9r69.js","getApiPlaygroundDisplay-Ch3xc7i1.js","CodeSnippet-BsBxuJ1v.js","CodeSnippets-CetzeDL8.js","Page-CYZot51e.js","getPastedJson-BxPKFSJx.js","icon-o0J1Ochb.js","MethodPill-Du3usO5m.js","DuplicateIcon-DJypyMzl.js","createIcon-YMA6N8KJ.js","DynamicMarkdown-CWvhfcZc.js","SectionHeading-BdLVaXCd.js","axios-vUo_bRtp.js","Markdown-C4Ez6OeV.js","AssistantPageLink-CZ6Wt2Vb.js"]}