The decision’s current objective revision in the calling key’s environment: which mistakes matter and how much, and its target. revision and objective are null when none was set, which means balanced losses. Previews are judged by it (loss_report). Compare objective_hash with the decision file’s objective to see whether the stored copy is current. 404 when the decision doesn’t exist (no structure registered or evaluated).
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.
Outcomes the objective names that the decision's most recently registered structure can't produce. Their entries will be left out of scoring; check for a typo or a renamed outcome. Empty when that structure's result is a value, with no outcomes to check against.
{"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/objective/get-what-a-decision-optimizes-for","slug":"/api-reference/objective/get-what-a-decision-optimizes-for","pageMetadata":{"title":"Get what a decision optimizes for","description":"The decision's current objective revision in the calling key's environment: which mistakes matter and how much, and its target. `revision` and `objective` are null when none was set, which means balanced losses. Previews are judged by it (`loss_report`). Compare `objective_hash` with the decision file's objective to see whether the stored copy is current. 404 when the decision doesn't exist (no structure registered or evaluated).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/objective","href":"/api-reference/objective/get-what-a-decision-optimizes-for","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: [\"The decision’s current objective revision in the calling key’s environment: which mistakes matter and how much, and its target. \", _jsx(_components.code, {\n children: \"revision\"\n }), \" and \", _jsx(_components.code, {\n children: \"objective\"\n }), \" are null when none was set, which means balanced losses. Previews are judged by it (\", _jsx(_components.code, {\n children: \"loss_report\"\n }), \"). Compare \", _jsx(_components.code, {\n children: \"objective_hash\"\n }), \" with the decision file’s objective to see whether the stored copy is current. 404 when the decision doesn’t exist (no structure registered or evaluated).\"]\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 what a decision optimizes for","description":"The decision's current objective revision in the calling key's environment: which mistakes matter and how much, and its target. `revision` and `objective` are null when none was set, which means balanced losses. Previews are judged by it (`loss_report`). Compare `objective_hash` with the decision file's objective to see whether the stored copy is current. 404 when the decision doesn't exist (no structure registered or evaluated).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/objective","href":"/api-reference/objective/get-what-a-decision-optimizes-for","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getObjective","x-mcp-annotations":{"readOnlyHint":true,"openWorldHint":false},"tags":["objective"],"security":["b3a018cf-bd0c-46f3-b029-e936b1fe0edd"],"summary":"Get what a decision optimizes for","description":"The decision's current objective revision in the calling key's environment: which mistakes matter and how much, and its target. `revision` and `objective` are null when none was set, which means balanced losses. Previews are judged by it (`loss_report`). Compare `objective_hash` with the decision file's objective to see whether the stored copy is current. 404 when the decision doesn't exist (no structure registered or evaluated).","parameters":["467fbf3e-9064-4bdd-a551-fa95ddca9ad4"],"responses":{"200":"2172e490-30c1-4409-ac54-28ff96cca09e","400":"92311eda-3e54-46b5-9dc0-3226e24b5dc4","401":"c865b6cd-5ad0-48a7-95b1-24ea24214d7c","403":"3939563d-dfce-483e-8ca9-d014ec340315","404":"3490b3d2-5a15-4b4a-b5c4-644211e98ced","429":"39c8bc71-eb5e-4863-af9a-001565e70054","503":"26304992-77cb-4af0-9fc5-a264b81c85fc"},"method":"get","type":"path","servers":["5199a294-99c0-440b-a171-e6a2ae5671e1"],"path":"/v1/decisions/{decision_id}/objective","baseUrlOptions":["https://api.moonbounce.ai"],"title":"Get what a decision optimizes for","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"467fbf3e-9064-4bdd-a551-fa95ddca9ad4":{"schema":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"name":"decision_id","in":"path"}},"responses":{"2172e490-30c1-4409-ac54-28ff96cca09e":{"description":"The current objective","content":{"application/json":{"schema":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"decision_id","typeLabel":"string"},"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>"},"revision":{"oneOf":[{"type":"integer","minimum":1,"description":"The objective revision. Null when none was ever set here, which means balanced losses.","isRequired":true,"uniqueKey":"revision.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The objective revision. Null when none was ever set here, which means balanced losses.","isRequired":true,"uniqueKey":"revision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"revision","typeLabel":"integer | null"},"objective":{"oneOf":[{"type":"object","properties":{"fallback":{"type":"string","minLength":1,"maxLength":200,"description":"The safe outcome. Sending a case there when it belonged elsewhere is `minor`, unless that mistake is listed.","uniqueKey":"objective.oneOf.0.fallback","typeLabel":"string"},"mistakes":{"type":"array","items":{"oneOf":[{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","severity"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.expected","typeLabel":"string"},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.got","typeLabel":"string"},"severity":{"type":"string","enum":["minor","normal","costly","severe"],"description":"How bad a mistake is: `minor` weighs 0.5, `normal` 1, `costly` 3 and `severe` 10.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.severity","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","loss"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.expected","typeLabel":"string"},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.got","typeLabel":"string"},"loss":{"type":"number","minimum":0,"maximum":1000000,"description":"A direct loss in place of a severity. At least 10 counts as severe.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.loss","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX]","typeLabel":"object"},"maxItems":400,"uniqueKey":"objective.oneOf.0.mistakes","typeLabel":"object[]"},"target":{"type":"object","properties":{"max_loss_per_case":{"type":"number","minimum":0,"description":"The loss per case at which the decision is good enough.","isRequired":true,"uniqueKey":"objective.oneOf.0.target.max_loss_per_case","typeLabel":"number"}},"required":["max_loss_per_case"],"additionalProperties":true,"description":"Optional. The refine loop stops when the loss per case reaches it; without one, the owner decides.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"objective.oneOf.0.target","typeLabel":"object"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"With `priority`: the outcome the two-outcome shortcut is about.","uniqueKey":"objective.oneOf.0.outcome","typeLabel":"string"},"priority":{"type":"string","enum":["catch_all","be_sure","balanced"],"description":"With `outcome`, the shortcut: `catch_all` makes missing `outcome` costly and a false alarm normal, `be_sure` the reverse, `balanced` both normal. A listed mistake overrides the shortcut's entry for it.","uniqueKey":"objective.oneOf.0.priority","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"description":"The stored objective. Null means balanced losses: each outcome's mistakes weigh the same in total.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"objective.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"fallback":{"type":"string","minLength":1,"maxLength":200,"description":"The safe outcome. Sending a case there when it belonged elsewhere is `minor`, unless that mistake is listed."},"mistakes":{"type":"array","items":{"oneOf":[{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","severity"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had."},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead."},"severity":{"type":"string","enum":["minor","normal","costly","severe"],"description":"How bad a mistake is: `minor` weighs 0.5, `normal` 1, `costly` 3 and `severe` 10."}},"additionalProperties":true},{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","loss"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had."},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead."},"loss":{"type":"number","minimum":0,"maximum":1000000,"description":"A direct loss in place of a severity. At least 10 counts as severe."}},"additionalProperties":true}]},"maxItems":400},"target":{"type":"object","properties":{"max_loss_per_case":{"type":"number","minimum":0,"description":"The loss per case at which the decision is good enough."}},"required":["max_loss_per_case"],"additionalProperties":true,"description":"Optional. The refine loop stops when the loss per case reaches it; without one, the owner decides.","x-moonbounce-sdk-known-fields":true},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"With `priority`: the outcome the two-outcome shortcut is about."},"priority":{"type":"string","enum":["catch_all","be_sure","balanced"],"description":"With `outcome`, the shortcut: `catch_all` makes missing `outcome` costly and a false alarm normal, `be_sure` the reverse, `balanced` both normal. A listed mistake overrides the shortcut's entry for it."}},"additionalProperties":true,"description":"The stored objective. Null means balanced losses: each outcome's mistakes weigh the same in total.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"objective.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"objective","typeLabel":"object | null"},"objective_hash":{"oneOf":[{"type":"string","description":"The objective's hash, as loop status and previews report it. Null with `objective`. Compare it with the decision file's to see drift.","isRequired":true,"uniqueKey":"objective_hash.oneOf.0","typeLabel":"string"},{"type":"null","description":"The objective's hash, as loop status and previews report it. Null with `objective`. Compare it with the decision file's to see drift.","isRequired":true,"uniqueKey":"objective_hash.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"objective_hash","typeLabel":"string | null"},"unknown_outcomes":{"type":"array","items":{"type":"string","uniqueKey":"unknown_outcomes.items.[INDEX]","typeLabel":"string"},"description":"Outcomes the objective names that the decision's most recently registered structure can't produce. Their entries will be left out of scoring; check for a typo or a renamed outcome. Empty when that structure's result is a value, with no outcomes to check against.","isRequired":true,"uniqueKey":"unknown_outcomes","typeLabel":"string[]"},"created_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"created_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time> | null"}},"required":["decision_id","environment","revision","objective","objective_hash","unknown_outcomes","created_at"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"decision_id":"\u003cstring>","environment":"production","revision":2,"objective":{"fallback":"\u003cstring>","mistakes":[{"expected":"\u003cstring>","got":"\u003cstring>","severity":"minor"}],"target":{"max_loss_per_case":1},"outcome":"\u003cstring>","priority":"catch_all"},"objective_hash":"\u003cstring>","unknown_outcomes":["\u003cstring>"],"created_at":"2023-11-07T05:31:56Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"92311eda-3e54-46b5-9dc0-3226e24b5dc4":{"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"},"c865b6cd-5ad0-48a7-95b1-24ea24214d7c":{"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"},"3939563d-dfce-483e-8ca9-d014ec340315":{"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"},"3490b3d2-5a15-4b4a-b5c4-644211e98ced":{"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 (`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"},"39c8bc71-eb5e-4863-af9a-001565e70054":{"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"},"26304992-77cb-4af0-9fc5-a264b81c85fc":{"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":{"b3a018cf-bd0c-46f3-b029-e936b1fe0edd":{"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":"Get what a decision optimizes for - Moonbounce Decisions API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T00:56:41.194Z","originalFileLocation":"api-reference/objective/get-what-a-decision-optimizes-for.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=\"The decision\u0026#x27;s current objective revision in the calling key\u0026#x27;s environment: which mistakes matter and how much, and its target. revision and objective are null when none was set, which means balanced losses. Previews are judged by it (loss_report). Compare objective_hash with the decision file\u0026#x27;s objective to see whether the stored copy is current. 404 when the decision doesn\u0026#x27;t exist (no structure registered or evaluated).\">\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=\"Get what a decision optimizes for - Moonbounce Decisions API\">\u003cmeta data-mint-head property=\"og:description\" content=\"The decision\u0026#x27;s current objective revision in the calling key\u0026#x27;s environment: which mistakes matter and how much, and its target. revision and objective are null when none was set, which means balanced losses. Previews are judged by it (loss_report). Compare objective_hash with the decision file\u0026#x27;s objective to see whether the stored copy is current. 404 when the decision doesn\u0026#x27;t exist (no structure registered or evaluated).\">\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/objective/get-what-a-decision-optimizes-for\">\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=objective\u0026amp;title=Get+what+a+decision+optimizes+for\u0026amp;description=The+decision%27s+current+objective+revision+in+the+calling+key%27s+environment%3A+which+mistakes+matter+and+how+much%2C+and+its+target.+%60revision%60+and+%60objective%60+are+n\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=95f514c7b0e450ca442b4a7f4edebf466c10428bc626560f6a4f12853a6c9ff5\">\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 what a decision optimizes for - Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The decision\u0026#x27;s current objective revision in the calling key\u0026#x27;s environment: which mistakes matter and how much, and its target. revision and objective are null when none was set, which means balanced losses. Previews are judged by it (loss_report). Compare objective_hash with the decision file\u0026#x27;s objective to see whether the stored copy is current. 404 when the decision doesn\u0026#x27;t exist (no structure registered or evaluated).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moonbounce.mintlify.app/_mintlify/api/og/v2?division=objective\u0026amp;title=Get+what+a+decision+optimizes+for\u0026amp;description=The+decision%27s+current+objective+revision+in+the+calling+key%27s+environment%3A+which+mistakes+matter+and+how+much%2C+and+its+target.+%60revision%60+and+%60objective%60+are+n\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=95f514c7b0e450ca442b4a7f4edebf466c10428bc626560f6a4f12853a6c9ff5\">\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/objective/get-what-a-decision-optimizes-for\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/objective/get-what-a-decision-optimizes-for.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/objective/get-what-a-decision-optimizes-for#webpage\",\"url\":\"https://docs.moonbounce.ai/api-reference/objective/get-what-a-decision-optimizes-for\",\"name\":\"Get what a decision optimizes for\",\"description\":\"The decision's current objective revision in the calling key's environment: which mistakes matter and how much, and its target. revision and objective are null when none was set, which means balanced losses. Previews are judged by it (loss_report). Compare objective_hash with the decision file's objective to see whether the stored copy is current. 404 when the decision doesn't exist (no structure registered or evaluated).\",\"dateModified\":\"2026-11-06T00:56:41.194Z\",\"isPartOf\":{\"@id\":\"https://docs.moonbounce.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/objective/get-what-a-decision-optimizes-for#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.moonbounce.ai/api-reference/objective/get-what-a-decision-optimizes-for#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.moonbounce.ai/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"objective\",\"item\":\"https://docs.moonbounce.ai/api-reference/objective/judge-results-under-a-decisions-objective\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get what a decision optimizes for\",\"item\":\"https://docs.moonbounce.ai/api-reference/objective/get-what-a-decision-optimizes-for\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.moonbounce.ai/api-reference/objective/get-what-a-decision-optimizes-for#apireference\",\"headline\":\"Get what a decision optimizes for\",\"name\":\"Get what a decision optimizes for\",\"description\":\"The decision's current objective revision in the calling key's environment: which mistakes matter and how much, and its target. revision and objective are null when none was set, which means balanced losses. Previews are judged by it (loss_report). Compare objective_hash with the decision file's objective to see whether the stored copy is current. 404 when the decision doesn't exist (no structure registered or evaluated).\",\"url\":\"https://docs.moonbounce.ai/api-reference/objective/get-what-a-decision-optimizes-for\",\"mainEntityOfPage\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/objective/get-what-a-decision-optimizes-for#webpage\"},\"dateModified\":\"2026-11-06T00:56:41.194Z\",\"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","description":"Judges one version's labeled results under the decision's objective and, with a `base`, compares the two on the same items: the loss report a preview returns. Each mistake's loss is its severity under the objective (every mistake `normal` when none is set), weighted so each expected outcome counts equally however many items it has; `loss_per_case` is their mean. `accepted` (lower loss per case, no new severe mistake on a human-labeled case) and `reasons` say whether the candidate is better. Each side is runs by `run_ids` (from evaluate with `items`, one structure per side) or `results` passed inline with their `structure` or `structure_hash`. Items match by `item_id`; the candidate's labels are used; unlabeled items, outcomes neither version can produce, items the base lacks and retryable failures on either side are left out and counted in `excluded`; a permanent failure counts as a mistake. List a resend's run beside the original: an item's result that didn't fail replaces its failed one. The report lists the worst mistakes, with example ids on every roll-up row. Send `cases` to page through each item's loss: `filter.kind` is `all`, `wrong` (default), `right`, `failed`, `severe`, `changed`, `cell`, `question`, `near_cut` or `missing_criterion`. Runs no engine and spends nothing; the word is loss, not money. An unknown or expired run is 404 RUN_UNKNOWN. A version whose result is a value, not outcomes, is 400 OUTCOMES_INVALID.","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","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":"Get what a decision optimizes for - 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"]}