await autumn.track( { customerId: "cus_123", featureId: "api_calls", value: 1 }, { headers: { "Idempotency-Key": "request_abc123" } } // Retries with the same key are rejected with a 409);
await autumn.track({ customerId: "cus_123", featureId: "seats", value: -1 // Increases balance when removing a seat});
await autumn.track({ customerId: "cus_123", featureId: "ai_messages", value: 1, async: true // Returns 202 immediately; usage processed in the background});
How to handle usage that exceeds the available balance. "cap" (default) deducts only what fits, stopping at zero. "overflow" deducts the full value: the balance can go negative and usage limits do not clamp the deduction, though spend limits still apply.
Defaults to true: the event is queued and the response is a 202 with balance: null. Set to false to apply the usage before responding with a 200 and the updated balance.
Map of feature_id to updated balance for the tracked feature and any related features (e.g. linked credit systems). Value is null when the customer has no balance for that feature.
Per-balance breakdown of what this event deducted. A single event can consume from multiple balance rows when credit systems or rollovers are involved; this surfaces each one so callers can build per-feature usage views without polling.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Autumn","colors":{"primary":"#8838ff","light":"#9b5cff","dark":"#8838ff"},"logo":{"light":"https://mintcdn.com/autumn-b9b4c0fb/BOEMpWFJsAdGcii1/assets/logo/autumn-dark.svg?fit=max\u0026auto=format\u0026n=BOEMpWFJsAdGcii1\u0026q=85\u0026s=720bd2227c435e77f2c91cbfcbccd274","dark":"https://mintcdn.com/autumn-b9b4c0fb/BOEMpWFJsAdGcii1/assets/logo/autumn-light.svg?fit=max\u0026auto=format\u0026n=BOEMpWFJsAdGcii1\u0026q=85\u0026s=f700b862e5d0ada8c89a5976d27863fe"},"favicon":"https://mintcdn.com/autumn-b9b4c0fb/ihHX49Ug6NamJ10t/favicon.svg?fit=max\u0026auto=format\u0026n=ihHX49Ug6NamJ10t\u0026q=85\u0026s=b1fd8b3e3086e5a3855a8cf8c45dd57a","api":{"playground":{"display":"interactive"},"examples":{"languages":["typescript","python","bash"]}},"appearance":{"default":"system","strict":false},"background":{"color":{"light":"#FFFFFF","dark":"#0A0A0A"}},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://app.useautumn.com"}},"footer":{"socials":{"x":"https://x.com/autumnpricing","github":"https://github.com/useautumn","linkedin":"https://linkedin.com/company/useautumn"}},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Inter"}},"contextual":{"options":["copy","cursor","view"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Discord","icon":"discord","href":"https://discord.gg/STqxY92zuS"},{"anchor":"GitHub","icon":"github","href":"https://github.com/useautumn/autumn"},{"anchor":"Website","icon":"globe","href":"https://useautumn.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"autumn-b9b4c0fb","hasAudioNarration":false,"actualSubdomain":"autumn-b9b4c0fb","customDomains":["docs.useautumn.com"],"gitSource":{"type":"github","owner":"useautumn","repo":"autumn","deployBranch":"main","contentDirectory":"apps/docs/mintlify","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf70683d6319f7be04488b","collectionId":"51110cc0-1315-435c-8118-95f0c05e3ce4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf70683d6319f7be04488b"},"feedback":{"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adfc480ca1d3c49d2cf24bc","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"API Reference","count":101},{"language":"default","tag":"Documentation","count":64},{"language":"default","tag":"Billing","count":20},{"language":"default","tag":"Configure Pricing","count":19},{"language":"default","tag":"Additional Resources","count":16},{"language":"default","tag":"Customers","count":15},{"language":"default","tag":"Rewards \u0026 Referrals","count":13},{"language":"default","tag":"Balances","count":10},{"language":"default","tag":"Webhook Events","count":10},{"language":"default","tag":"Invoices","count":8}],"searchSettings":{"tuning":{"anchor":{"titleCoverageRelabel":true}}}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"language-tabs.css","content":""},{"filePath":"style.css","content":".prose>.api-section{display:none!important}"}],"page":{"pagePath":"api-reference/core/track","slug":"/api-reference/core/track","pageMetadata":{"title":"Track Usage","openapi":"openapi POST /v1/balances.track","description":"Records usage for a customer feature. Queued by default; pass async: false to apply it before responding with updated balances.\n\nUse this after an action happens to decrement usage, or send a negative value to credit balance back.","href":"/api-reference/core/track"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Records usage for a customer feature. Queued by default; pass async: false to apply it before responding with updated balances.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Use this after an action happens to decrement usage, or send a negative value to credit balance back.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const DynamicResponseExample=({json,statusCode=`200`})=>{const{CodeBlock,ResponseExample}=_provideComponents()||{};if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);const toCamelCase=str=>{return str.replace(/_([a-z])/g,(_,c)=>c.toUpperCase())};const convertKeysToCamelCase=obj=>{if(Array.isArray(obj)){return obj.map(item=>convertKeysToCamelCase(item))}if(obj!==null\u0026\u0026typeof obj===`object`){return Object.keys(obj).reduce((acc,key)=>{const camelKey=toCamelCase(key);acc[camelKey]=convertKeysToCamelCase(obj[key]);return acc},{})}return obj};const[isTypeScript,setIsTypeScript]=useState(()=>{if(typeof window!==`undefined`){try{const lang=localStorage.getItem(`code`);return JSON.parse(lang)===`typescript`}catch{return true}}return true});useEffect(()=>{const onMintlifyStorage=event=>{if(event.detail?.key===`code`){try{const value=JSON.parse(event.detail.value);setIsTypeScript(value===`typescript`)}catch{}}};const pollInterval=setInterval(()=>{try{const lang=localStorage.getItem(`code`);const value=JSON.parse(lang);setIsTypeScript(value===`typescript`)}catch{}},300);document.addEventListener(`mintlify-localstorage`,onMintlifyStorage);return()=>{document.removeEventListener(`mintlify-localstorage`,onMintlifyStorage);clearInterval(pollInterval)}},[]);const camelCaseJson=useMemo(()=>convertKeysToCamelCase(json),[json]);const snakeCaseString=JSON.stringify(json,null,2);const camelCaseString=JSON.stringify(camelCaseJson,null,2);return _jsx(ResponseExample,{children:isTypeScript?_jsx(CodeBlock,{language:`json`,filename:statusCode,children:camelCaseString}):_jsx(CodeBlock,{language:`json`,filename:statusCode,children:snakeCaseString})})};const DynamicResponseField=({children,name,...props})=>{const{ResponseField}=_provideComponents()||{};if(!ResponseField)_missingMdxReference(`ResponseField`,true);const convertToCamelCase=str=>{if(typeof str!==`string`)return str;return str.replace(/[_-](\\w)/g,(_,c)=>c.toUpperCase())};const[lang,setLang]=useState(()=>{if(typeof window!==`undefined`){const stored=localStorage.getItem(`code`);return stored||`\"typescript\"`}return`\"typescript\"`});useEffect(()=>{const onMintlifyStorage=event=>{const key=event.detail?.key;if(key===`code`){setLang(event.detail.value)}};const pollInterval=setInterval(()=>{const current=localStorage.getItem(`code`);if(current\u0026\u0026current!==lang){setLang(current)}},500);document.addEventListener(`mintlify-localstorage`,onMintlifyStorage);return()=>{document.removeEventListener(`mintlify-localstorage`,onMintlifyStorage);clearInterval(pollInterval)}},[lang]);const resolvedName=useMemo(()=>{try{const value=JSON.parse(lang);const useCamelCase=value===`typescript`;return useCamelCase?convertToCamelCase(name):name}catch{return name}},[name,lang]);return _jsx(ResponseField,{name:resolvedName,...props,children})};const DynamicParamField=({children,body,path,...props})=>{const{ParamField}=_provideComponents()||{};if(!ParamField)_missingMdxReference(`ParamField`,true);const convertToCamelCase=str=>{if(typeof str!==`string`)return str;return str.replace(/[_-](\\w)/g,(_,c)=>c.toUpperCase())};const[lang,setLang]=useState(()=>{if(typeof window!==`undefined`){const stored=localStorage.getItem(`code`);return stored||`\"typescript\"`}return`\"typescript\"`});useEffect(()=>{const onMintlifyStorage=event=>{const key=event.detail?.key;if(key===`code`){setLang(event.detail.value)}};const pollInterval=setInterval(()=>{const current=localStorage.getItem(`code`);if(current\u0026\u0026current!==lang){setLang(current)}},500);document.addEventListener(`mintlify-localstorage`,onMintlifyStorage);return()=>{document.removeEventListener(`mintlify-localstorage`,onMintlifyStorage);clearInterval(pollInterval)}},[lang]);const resolvedBody=useMemo(()=>{try{const value=JSON.parse(lang);const useCamelCase=value===`typescript`;return useCamelCase?convertToCamelCase(body):body}catch{return body}},[body,lang]);const resolvedPath=useMemo(()=>{try{const value=JSON.parse(lang);const useCamelCase=value===`typescript`;return useCamelCase?convertToCamelCase(path):path}catch{return path}},[path,lang]);return _jsx(ParamField,{body:resolvedBody,path:resolvedPath,...props,children})};function _createMdxContent(props){const _components={code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Expandable,Heading,Note,_MdxComponentBoundary}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsx(_components.p,{children:`Track records usage events to decrement a customer’s balance. Use this to meter feature consumption like API calls, messages sent, or credits used.`})}),`\n`,_jsx(Heading,{level:`3`,id:`common-use-cases`,children:`Common Use Cases`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Track single usage`,numberOfLines:`5`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` autumn`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`track`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` customerId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"cus_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` featureId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"ai_messages\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` value:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Track with idempotency`,numberOfLines:`8`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` autumn`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`track`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` customerId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"cus_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` featureId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"api_calls\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` value:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Idempotency-Key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"request_abc123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } } `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Retries with the same key are rejected with a 409`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Credit balance (negative value)`,numberOfLines:`5`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` autumn`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`track`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` customerId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"cus_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` featureId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"seats\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` value:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` -`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Increases balance when removing a seat`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Async (fire-and-forget)`,numberOfLines:`6`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` autumn`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`track`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` customerId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"cus_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` featureId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"ai_messages\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` value:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` async:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Returns 202 immediately; usage processed in the background`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`3`,id:`body-parameters`,children:`Body Parameters`}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`customer_id`,type:`string`,required:true,children:_jsx(_components.p,{children:`The ID of the customer.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature to track usage for. Required if event_name is not provided.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`entity_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the entity for entity-scoped balances (e.g., per-seat limits).`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`event_name`,type:`string`,children:_jsx(_components.p,{children:`Event name to track usage for. Use instead of feature_id when multiple features should be tracked from a single event.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`value`,type:`number`,children:_jsx(_components.p,{children:`The amount of usage to record. Defaults to 1. Use negative values to credit balance (e.g., when removing a seat).`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`properties`,type:`object`,children:_jsx(_components.p,{children:`Additional properties to attach to this usage event.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`timestamp`,type:`integer`,children:_jsx(_components.p,{children:`Unix timestamp in milliseconds to use for the usage event. Defaults to the current time.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`overage_behavior`,type:`'cap' | 'overflow'`,children:_jsx(_components.p,{children:`How to handle usage that exceeds the available balance. “cap” (default) deducts only what fits, stopping at zero. “overflow” deducts the full value: the balance can go negative and usage limits do not clamp the deduction, though spend limits still apply.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`async`,type:`boolean`,children:_jsx(_components.p,{children:`Defaults to true: the event is queued and the response is a 202 with balance: null. Set to false to apply the usage before responding with a 200 and the updated balance.`})})}),`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`customer_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the customer whose usage was tracked.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`entity_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the entity, if entity-scoped tracking was performed.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`event_name`,type:`string`,children:_jsx(_components.p,{children:`The event name that was tracked, if event_name was used instead of feature_id.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`value`,type:`number`,children:_jsx(_components.p,{children:`The amount of usage that was recorded.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`balance`,type:`object | null`,children:[_jsx(_components.p,{children:`The updated balance for the tracked feature. Null if tracking by event_name that affects multiple features.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this balance is for.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature`,type:`object`,children:[_jsx(_components.p,{children:`The full feature object if expanded.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier for this feature, used in /check and /track calls.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Human-readable name displayed in the dashboard and billing UI.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`type`,type:`'boolean' | 'metered' | 'credit_system' | 'ai_credit_system'`,children:_jsx(_components.p,{children:`Feature type: ‘boolean’ for on/off access, ‘metered’ for usage-tracked features, ‘credit_system’ for unified credit pools, ‘ai_credit_system’ for model-based token pricing.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`consumable`,type:`boolean`,children:_jsx(_components.p,{children:`For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`combine`,type:`'sum' | 'max' | 'min'`,children:_jsx(_components.p,{children:`How grants of this feature from several plans combine: ‘sum’ adds them up, ‘max’ / ‘min’ keep the highest / lowest grant among plan items with no price. Omitted when ‘sum’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`event_names`,type:`string[]`,children:_jsx(_components.p,{children:`Event names that trigger this feature’s balance. Allows multiple features to respond to a single event.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsx(_components.p,{children:`For classic credit systems: maps metered features to flat or graduated credit costs.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string | any`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for AI credit systems.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for AI credit systems. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider default markup percentages for AI credit systems.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object`,children:[_jsx(_components.p,{children:`Display names for the feature in billing UI and customer-facing components.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`singular`,type:`string | null`,children:_jsx(_components.p,{children:`Singular form for UI display (e.g., ‘API call’, ‘seat’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plural`,type:`string | null`,children:_jsx(_components.p,{children:`Plural form for UI display (e.g., ‘API calls’, ‘seats’).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`archived`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the feature is archived and hidden from the dashboard.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Processor mappings for this feature. Present when a Stripe product or meter is set.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`product_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe product ID this feature’s usage prices bill under.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`meter_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe meter ID used to create this feature’s metered price.`})})})]})})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`granted`,type:`number`,children:_jsx(_components.p,{children:`Total balance granted (included + prepaid).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`remaining`,type:`number`,children:_jsx(_components.p,{children:`Remaining balance available for use.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`usage`,type:`number`,children:_jsx(_components.p,{children:`Total usage consumed in the current period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this feature has unlimited usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`overage_allowed`,type:`boolean`,children:_jsx(_components.p,{children:`Whether usage beyond the granted balance is allowed (with overage charges).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum quantity that can be purchased as a top-up, or null for unlimited.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`next_reset_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the balance will reset, or null for no reset.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`breakdown`,type:`object[]`,children:[_jsx(_components.p,{children:`Detailed breakdown of balance sources when stacking multiple plans or grants.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier for this balance breakdown.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string | null`,children:_jsx(_components.p,{children:`The plan ID this balance originates from, or null for standalone and pooled balances.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included_grant`,type:`number`,children:_jsx(_components.p,{children:`Amount granted from the plan’s included usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`prepaid_grant`,type:`number`,children:_jsx(_components.p,{children:`Amount granted from prepaid purchases or top-ups.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`remaining`,type:`number`,children:_jsx(_components.p,{children:`Remaining balance available for use.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`usage`,type:`number`,children:_jsx(_components.p,{children:`Amount consumed in the current period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this balance has unlimited usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object | null`,children:[_jsx(_components.p,{children:`Reset configuration for this balance, or null if no reset.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`The reset interval (hour, day, week, month, etc.) or ‘multiple’ if combined from different intervals.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets (eg. 2 for bi-monthly).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`resets_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the balance will next reset.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Pricing configuration if this balance has usage-based pricing.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`The per-unit price amount.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`tiers`,type:`object[]`,children:[_jsx(_components.p,{children:`Tiered pricing configuration if applicable.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`'graduated' | 'volume'`,children:_jsx(_components.p,{children:`How tiers are applied: graduated (split across bands) or volume (flat rate for the matched tier).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`The number of units per billing increment (eg. $9 / 250 units).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`Whether usage is prepaid or billed pay-per-use.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum quantity that can be purchased, or null for unlimited.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expires_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when this balance expires, or null for no expiration.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`source`,type:`'customer' | 'entity'`,children:_jsx(_components.p,{children:`Where this row’s credits come from: shared at the customer level, or owned by the entity.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`allocation`,type:`object | null`,children:[_jsx(_components.p,{children:`Set when this row’s numbers are the entity’s allocated share of the customer’s credits.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`The amount allocated to this entity.`})})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`contributions`,type:`object`,children:[_jsxs(_components.p,{children:[`The plans funding this shared pooled balance, usually on the customer’s entities, and how much each adds this cycle and next. Present on pooled rows when expand includes `,_jsx(_components.code,{children:`pooled_contributions`}),`.`]}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`list`,type:`object[]`,children:[_jsx(_components.p,{children:`The first 10 plans contributing to the pool, competing shares first, then newest.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`entity_id`,type:`string | null`,children:_jsx(_components.p,{children:`Entity holding the contributing plan. Null for customer-level plans.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`entity_name`,type:`string | null`,children:_jsx(_components.p,{children:`Display name of the contributing entity.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string`,children:_jsx(_components.p,{children:`The plan contributing to the pool.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_name`,type:`string | null`,children:_jsx(_components.p,{children:`Display name of the contributing plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`current_contribution`,type:`number`,children:_jsx(_components.p,{children:`Amount this source contributes to the pool this cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`next_cycle_contribution`,type:`number`,children:_jsx(_components.p,{children:`Amount this source will contribute next cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`competes`,type:`boolean`,children:_jsx(_components.p,{children:`True when this source competes under a ‘max’ / ‘min’ feature: only the winning competing share counts, instead of adding up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`True when this source grants unlimited usage, either as a competing source or as an unlimited share riding a limited pool.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`created_at`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`total_count`,type:`number`,children:_jsx(_components.p,{children:`Total number of plans contributing to the pool.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`rollovers`,type:`object[]`,children:[_jsx(_components.p,{children:`Rollover balances carried over from previous periods.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`granted`,type:`number`,children:_jsx(_components.p,{children:`Amount originally rolled over from a previous period, before any of it was consumed.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`balance`,type:`number`,children:_jsx(_components.p,{children:`Amount of balance rolled over from a previous period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expires_at`,type:`number`,children:_jsx(_components.p,{children:`Timestamp when the rollover balance expires.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`allocated`,type:`number`,children:_jsx(_components.p,{children:`Shared credits held for entities by allocations; present only when the customer allocates this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unallocated`,type:`number`,children:_jsx(_components.p,{children:`Remaining shared credits no allocation holds; any entity may use them.`})})})]})]})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`balances.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Map of feature_id to updated balance for the tracked feature and any related features (e.g. linked credit systems). Value is null when the customer has no balance for that feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this balance is for.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature`,type:`object`,children:[_jsx(_components.p,{children:`The full feature object if expanded.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier for this feature, used in /check and /track calls.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Human-readable name displayed in the dashboard and billing UI.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`type`,type:`'boolean' | 'metered' | 'credit_system' | 'ai_credit_system'`,children:_jsx(_components.p,{children:`Feature type: ‘boolean’ for on/off access, ‘metered’ for usage-tracked features, ‘credit_system’ for unified credit pools, ‘ai_credit_system’ for model-based token pricing.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`consumable`,type:`boolean`,children:_jsx(_components.p,{children:`For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`combine`,type:`'sum' | 'max' | 'min'`,children:_jsx(_components.p,{children:`How grants of this feature from several plans combine: ‘sum’ adds them up, ‘max’ / ‘min’ keep the highest / lowest grant among plan items with no price. Omitted when ‘sum’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`event_names`,type:`string[]`,children:_jsx(_components.p,{children:`Event names that trigger this feature’s balance. Allows multiple features to respond to a single event.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsx(_components.p,{children:`For classic credit systems: maps metered features to flat or graduated credit costs.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string | any`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for AI credit systems.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for AI credit systems. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider default markup percentages for AI credit systems.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object`,children:[_jsx(_components.p,{children:`Display names for the feature in billing UI and customer-facing components.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`singular`,type:`string | null`,children:_jsx(_components.p,{children:`Singular form for UI display (e.g., ‘API call’, ‘seat’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plural`,type:`string | null`,children:_jsx(_components.p,{children:`Plural form for UI display (e.g., ‘API calls’, ‘seats’).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`archived`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the feature is archived and hidden from the dashboard.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Processor mappings for this feature. Present when a Stripe product or meter is set.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`product_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe product ID this feature’s usage prices bill under.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`meter_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe meter ID used to create this feature’s metered price.`})})})]})})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`granted`,type:`number`,children:_jsx(_components.p,{children:`Total balance granted (included + prepaid).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`remaining`,type:`number`,children:_jsx(_components.p,{children:`Remaining balance available for use.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`usage`,type:`number`,children:_jsx(_components.p,{children:`Total usage consumed in the current period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this feature has unlimited usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`overage_allowed`,type:`boolean`,children:_jsx(_components.p,{children:`Whether usage beyond the granted balance is allowed (with overage charges).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum quantity that can be purchased as a top-up, or null for unlimited.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`next_reset_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the balance will reset, or null for no reset.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`breakdown`,type:`object[]`,children:[_jsx(_components.p,{children:`Detailed breakdown of balance sources when stacking multiple plans or grants.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier for this balance breakdown.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string | null`,children:_jsx(_components.p,{children:`The plan ID this balance originates from, or null for standalone and pooled balances.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included_grant`,type:`number`,children:_jsx(_components.p,{children:`Amount granted from the plan’s included usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`prepaid_grant`,type:`number`,children:_jsx(_components.p,{children:`Amount granted from prepaid purchases or top-ups.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`remaining`,type:`number`,children:_jsx(_components.p,{children:`Remaining balance available for use.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`usage`,type:`number`,children:_jsx(_components.p,{children:`Amount consumed in the current period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this balance has unlimited usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object | null`,children:[_jsx(_components.p,{children:`Reset configuration for this balance, or null if no reset.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`The reset interval (hour, day, week, month, etc.) or ‘multiple’ if combined from different intervals.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets (eg. 2 for bi-monthly).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`resets_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the balance will next reset.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Pricing configuration if this balance has usage-based pricing.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`The per-unit price amount.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`tiers`,type:`object[]`,children:[_jsx(_components.p,{children:`Tiered pricing configuration if applicable.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`'graduated' | 'volume'`,children:_jsx(_components.p,{children:`How tiers are applied: graduated (split across bands) or volume (flat rate for the matched tier).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`The number of units per billing increment (eg. $9 / 250 units).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`Whether usage is prepaid or billed pay-per-use.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum quantity that can be purchased, or null for unlimited.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expires_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when this balance expires, or null for no expiration.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`source`,type:`'customer' | 'entity'`,children:_jsx(_components.p,{children:`Where this row’s credits come from: shared at the customer level, or owned by the entity.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`allocation`,type:`object | null`,children:[_jsx(_components.p,{children:`Set when this row’s numbers are the entity’s allocated share of the customer’s credits.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`The amount allocated to this entity.`})})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`contributions`,type:`object`,children:[_jsxs(_components.p,{children:[`The plans funding this shared pooled balance, usually on the customer’s entities, and how much each adds this cycle and next. Present on pooled rows when expand includes `,_jsx(_components.code,{children:`pooled_contributions`}),`.`]}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`list`,type:`object[]`,children:[_jsx(_components.p,{children:`The first 10 plans contributing to the pool, competing shares first, then newest.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`entity_id`,type:`string | null`,children:_jsx(_components.p,{children:`Entity holding the contributing plan. Null for customer-level plans.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`entity_name`,type:`string | null`,children:_jsx(_components.p,{children:`Display name of the contributing entity.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string`,children:_jsx(_components.p,{children:`The plan contributing to the pool.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_name`,type:`string | null`,children:_jsx(_components.p,{children:`Display name of the contributing plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`current_contribution`,type:`number`,children:_jsx(_components.p,{children:`Amount this source contributes to the pool this cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`next_cycle_contribution`,type:`number`,children:_jsx(_components.p,{children:`Amount this source will contribute next cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`competes`,type:`boolean`,children:_jsx(_components.p,{children:`True when this source competes under a ‘max’ / ‘min’ feature: only the winning competing share counts, instead of adding up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`True when this source grants unlimited usage, either as a competing source or as an unlimited share riding a limited pool.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`created_at`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`total_count`,type:`number`,children:_jsx(_components.p,{children:`Total number of plans contributing to the pool.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`rollovers`,type:`object[]`,children:[_jsx(_components.p,{children:`Rollover balances carried over from previous periods.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`granted`,type:`number`,children:_jsx(_components.p,{children:`Amount originally rolled over from a previous period, before any of it was consumed.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`balance`,type:`number`,children:_jsx(_components.p,{children:`Amount of balance rolled over from a previous period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expires_at`,type:`number`,children:_jsx(_components.p,{children:`Timestamp when the rollover balance expires.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`allocated`,type:`number`,children:_jsx(_components.p,{children:`Shared credits held for entities by allocations; present only when the customer allocates this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unallocated`,type:`number`,children:_jsx(_components.p,{children:`Remaining shared credits no allocation holds; any entity may use them.`})})})]})]})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`deductions`,type:`object[]`,children:[_jsx(_components.p,{children:`Per-balance breakdown of what this event deducted. A single event can consume from multiple balance rows when credit systems or rollovers are involved; this surfaces each one so callers can build per-feature usage views without polling.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`balance_id`,type:`string`,children:_jsx(_components.p,{children:`ID of the underlying balance row that was deducted from (customer_entitlement or rollover).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature this balance belongs to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string | null`,children:_jsx(_components.p,{children:`ID of the plan/product this balance belongs to. Null when the balance can’t be attributed to a single plan (e.g. it spans multiple).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object | null`,children:[_jsx(_components.p,{children:`Reset configuration for the balance this deduction came from, or null if the balance doesn’t reset.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`The reset interval (hour, day, week, month, etc.) or ‘multiple’ if combined from different intervals.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets (eg. 2 for bi-monthly).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`resets_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the balance will next reset.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`value`,type:`number`,children:_jsx(_components.p,{children:`Amount deducted from this balance. Positive when usage was consumed, negative when credit was restored (e.g. a refund via negative track value).`})})})]})]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{DynamicResponseExample,DynamicResponseField,DynamicParamField,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Track Usage","openapi":"openapi POST /v1/balances.track","description":"Records usage for a customer feature. Queued by default; pass async: false to apply it before responding with updated balances.\n\nUse this after an action happens to decrement usage, or send a negative value to credit balance back.","href":"/api-reference/core/track"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[158,4333,")=>null;const DynamicResponseField=()=>null;const DynamicParamField=()=>null;fun"],[4513,4517,"ResponseExample,_Mdx"],[4805,4820,"ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!_MdxComponentBo"],[64116,64606,",`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`200`,numberOfLines:`43`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`43`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"customer_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cus_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"balance\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"feature_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"messages\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"granted\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`100`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"remaining\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`72`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"usage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`28`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unlimited\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"overage_allowed\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"max_purchase\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"next_reset_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1773851121437`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"breakdown\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cus_ent_39qmLooixXLAqMywgXywjAz96rV\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"plan_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pro_plan\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"included_grant\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`100`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"prepaid_grant\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"remaining\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`72`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"usage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`28`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unlimited\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"reset\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"interval\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"month\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"resets_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1773851121437`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"expires_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"deductions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"balance_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cus_ent_3DdSDoyFmoA9Neecl2a2Gc507X2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"feature_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"messages\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"plan_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pro\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"reset\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"interval\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"month\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"resets_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1781288736881`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{DynamicResponseExample,DynamicResponseField,DynamicParamField,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}"]]},"mdxExtracts":{"tableOfContents":[{"title":"Common Use Cases","slug":"common-use-cases","depth":3,"children":[]},{"title":"Body Parameters","slug":"body-parameters","depth":3,"children":[]},{"title":"Response","slug":"response","depth":3,"children":[]}],"codeExamples":{"response":{"type":"ResponseExample","children":[{"filename":"200","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"43\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"customer_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"cus_123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"value\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"balance\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"feature_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"messages\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"granted\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">100\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"remaining\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">72\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"usage\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">28\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"unlimited\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"overage_allowed\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"max_purchase\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"next_reset_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1773851121437\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"breakdown\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"cus_ent_39qmLooixXLAqMywgXywjAz96rV\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"plan_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"pro_plan\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"included_grant\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">100\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"prepaid_grant\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"remaining\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">72\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"usage\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">28\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"unlimited\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"reset\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"interval\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"month\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"resets_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1773851121437\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"expires_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"deductions\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"balance_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"cus_ent_3DdSDoyFmoA9Neecl2a2Gc507X2\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"feature_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"messages\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"plan_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"pro\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"reset\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"interval\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"month\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"resets_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1781288736881\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"value\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}}},"jsLinks":["/_mintlify/custom/autumn-b9b4c0fb/d78b8c063824141d/dynamic-response.js"],"openApiReferenceData":{"operation":{"operationId":"track","description":"Records usage for a customer feature. Queued by default; pass async: false to apply it before responding with updated balances.\n\nUse this after an action happens to decrement usage, or send a negative value to credit balance back.","requestBody":"9544f5c1-e9f1-4e75-8bee-b25bfe9caf56","responses":{"200":"1036b39f-44f2-434d-b75d-3ac81bc2d9f7","202":"072ebdb9-3ac0-4820-9b58-fae6ac78faf9"},"x-speakeasy-name-override":"track","parameters":["734e82cf-e983-4d12-bd1b-abbc06ff1542"],"x-codeSamples":[{"lang":"typescript","label":"Typescript (SDK)","source":"import { Autumn } from 'autumn-js'\n\nconst autumn = new Autumn()\n\nconst result = await autumn.track({\n customerId: \"cus_123\",\n featureId: \"messages\",\n value: 1,\n});"},{"lang":"python","label":"Python (SDK)","source":"from autumn_sdk import Autumn\n\nautumn = Autumn(secret_key=\"am_sk_test...\")\n\nres = autumn.track(\n customer_id=\"cus_123\",\n feature_id=\"messages\",\n value=1,\n)"}],"method":"post","type":"path","servers":["fe6701f7-be5c-40aa-b244-1a6f83c52f58"],"security":["53876c4e-3cd5-4c7e-b82b-fb98671718cb"],"path":"/v1/balances.track","baseUrlOptions":["https://api.useautumn.com"],"title":"","codeSamples":[{"label":"Typescript (SDK)","lang":"typescript","source":"import { Autumn } from 'autumn-js'\n\nconst autumn = new Autumn()\n\nconst result = await autumn.track({\n customerId: \"cus_123\",\n featureId: \"messages\",\n value: 1,\n});"},{"label":"Python (SDK)","lang":"python","source":"from autumn_sdk import Autumn\n\nautumn = Autumn(secret_key=\"am_sk_test...\")\n\nres = autumn.track(\n customer_id=\"cus_123\",\n feature_id=\"messages\",\n value=1,\n)"}],"requestExampleLanguages":["typescript","python","bash"],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExamples":[{"dropdown":false,"language":"json","code":{"type":"pre","key":null,"ref":null,"props":{"className":"shiki shiki-themes github-light-default dark-plus","style":{"backgroundColor":"#ffffff","--shiki-dark-bg":"#0B0C0E","color":"#1f2328","--shiki-dark":"#D4D4D4"},"language":"json","children":{"type":"code","key":null,"ref":null,"props":{"language":"json","numberOfLines":"43","children":[{"type":"span","key":"0","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":"{"}}}},"\n",{"type":"span","key":"2","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"customer_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"cus_123\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"4","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"value\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"6","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"balance\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"8","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"feature_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"messages\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"10","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"granted\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"100"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"12","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"remaining\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"72"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"14","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"usage\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"28"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"16","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"unlimited\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"false"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"18","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"overage_allowed\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"false"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"20","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"max_purchase\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"22","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"next_reset_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1773851121437"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"24","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"breakdown\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": ["}}]}},"\n",{"type":"span","key":"26","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" {"}}}},"\n",{"type":"span","key":"28","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"cus_ent_39qmLooixXLAqMywgXywjAz96rV\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"30","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"plan_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"pro_plan\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"32","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"included_grant\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"100"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"34","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"prepaid_grant\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"0"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"36","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"remaining\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"72"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"38","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"usage\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"28"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"40","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"unlimited\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"false"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"42","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"reset\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"44","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"interval\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"month\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"46","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"resets_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1773851121437"}}]}},"\n",{"type":"span","key":"48","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"50","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"price\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"52","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"expires_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}}]}},"\n",{"type":"span","key":"54","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}}},"\n",{"type":"span","key":"56","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" ]"}}}},"\n",{"type":"span","key":"58","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"60","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"deductions\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": ["}}]}},"\n",{"type":"span","key":"62","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" {"}}}},"\n",{"type":"span","key":"64","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"balance_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"cus_ent_3DdSDoyFmoA9Neecl2a2Gc507X2\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"66","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"feature_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"messages\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"68","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"plan_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"pro\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"70","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"reset\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"72","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"interval\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"month\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"74","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"resets_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1781288736881"}}]}},"\n",{"type":"span","key":"76","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"78","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"value\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1"}}]}},"\n",{"type":"span","key":"80","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}}},"\n",{"type":"span","key":"82","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" ]"}}}},"\n",{"type":"span","key":"84","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":"}"}}}},"\n"]}}}},"filename":"200"}],"responseExampleType":"mdx"},"dependencies":{"parameters":{"734e82cf-e983-4d12-bd1b-abbc06ff1542":{"name":"x-api-version","in":"header","required":true,"schema":{"type":"string","default":"2.6.0","isRequired":true,"uniqueKey":"","typeLabel":"string"},"x-speakeasy-globals-hidden":true}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_id":{"type":"string","description":"The ID of the customer.","isRequired":true,"uniqueKey":"customer_id","typeLabel":"string"},"feature_id":{"type":"string","description":"The ID of the feature to track usage for. Required if event_name is not provided.","uniqueKey":"feature_id","typeLabel":"string"},"entity_id":{"type":"string","description":"The ID of the entity for entity-scoped balances (e.g., per-seat limits).","uniqueKey":"entity_id","typeLabel":"string"},"event_name":{"type":"string","minLength":1,"description":"Event name to track usage for. Use instead of feature_id when multiple features should be tracked from a single event.","uniqueKey":"event_name","typeLabel":"string"},"value":{"type":"number","description":"The amount of usage to record. Defaults to 1. Use negative values to credit balance (e.g., when removing a seat).","uniqueKey":"value","typeLabel":"number"},"properties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"properties.additionalProperties","typeLabel":"any"},"description":"Additional properties to attach to this usage event.","uniqueKey":"properties","typeLabel":"object"},"timestamp":{"type":"integer","minimum":0,"maximum":9007199254740991,"exclusiveMinimum":0,"description":"Unix timestamp in milliseconds to use for the usage event. Defaults to the current time.","uniqueKey":"timestamp","typeLabel":"integer"},"overage_behavior":{"description":"How to handle usage that exceeds the available balance. \"cap\" (default) deducts only what fits, stopping at zero. \"overflow\" deducts the full value: the balance can go negative and usage limits do not clamp the deduction, though spend limits still apply.","enum":["cap","overflow"],"type":"string","uniqueKey":"overage_behavior","typeLabel":"enum\u003cstring>"},"async":{"type":"boolean","description":"Defaults to true: the event is queued and the response is a 202 with balance: null. Set to false to apply the usage before responding with a 200 and the updated balance.","uniqueKey":"async","typeLabel":"boolean"}},"required":["customer_id"],"title":"TrackParams","examples":[{"customer_id":"cus_123","feature_id":"messages","value":1}],"uniqueKey":"","typeLabel":"TrackParams · object"},"example":{"customer_id":"cus_123","feature_id":"messages","value":1},"examples":{"Example":{"title":"Example","value":{"customer_id":"cus_123","feature_id":"messages","value":1}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"1036b39f-44f2-434d-b75d-3ac81bc2d9f7":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"customer_id":{"type":"string","description":"The ID of the customer whose usage was tracked.","isRequired":true,"uniqueKey":"customer_id","typeLabel":"string"},"value":{"type":"number","description":"The amount of usage that was recorded.","isRequired":true,"uniqueKey":"value","typeLabel":"number"},"balance":{"oneOf":[{"type":"object","description":"The updated balance for the tracked feature. Null if tracking by event_name that affects multiple features.","required":["feature_id","granted","remaining","usage","unlimited","overage_allowed","max_purchase","next_reset_at"],"example":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"properties":{"feature_id":{"type":"string","description":"The feature ID this balance is for.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature_id","typeLabel":"string"},"granted":{"type":"number","description":"Total balance granted (included + prepaid).","isRequired":true,"uniqueKey":"balance.oneOf.0.granted","typeLabel":"number"},"remaining":{"type":"number","minimum":0,"description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balance.oneOf.0.remaining","typeLabel":"number"},"usage":{"type":"number","description":"Total usage consumed in the current period.","isRequired":true,"uniqueKey":"balance.oneOf.0.usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this feature has unlimited usage.","isRequired":true,"uniqueKey":"balance.oneOf.0.unlimited","typeLabel":"boolean"},"overage_allowed":{"type":"boolean","description":"Whether usage beyond the granted balance is allowed (with overage charges).","isRequired":true,"uniqueKey":"balance.oneOf.0.overage_allowed","typeLabel":"boolean"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balance.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balance.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.max_purchase","typeLabel":"number | null"},"next_reset_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.next_reset_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.next_reset_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.next_reset_at","typeLabel":"number | null"},"feature":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this feature, used in /check and /track calls.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.id","typeLabel":"string"},"name":{"type":"string","description":"Human-readable name displayed in the dashboard and billing UI.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.name","typeLabel":"string"},"type":{"enum":["boolean","metered","credit_system","ai_credit_system"],"type":"string","description":"Feature type: 'boolean' for on/off access, 'metered' for usage-tracked features, 'credit_system' for unified credit pools, 'ai_credit_system' for model-based token pricing.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.type","typeLabel":"enum\u003cstring>"},"consumable":{"type":"boolean","description":"For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.consumable","typeLabel":"boolean"},"archived":{"type":"boolean","description":"Whether the feature is archived and hidden from the dashboard.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.archived","typeLabel":"boolean"},"combine":{"enum":["sum","max","min"],"type":"string","description":"How grants of this feature from several plans combine: 'sum' adds them up, 'max' / 'min' keep the highest / lowest grant among plan items with no price. Omitted when 'sum'.","uniqueKey":"balance.oneOf.0.feature.combine","typeLabel":"enum\u003cstring>"},"event_names":{"type":"array","items":{"type":"string","uniqueKey":"balance.oneOf.0.feature.event_names.items.[INDEX]","typeLabel":"string"},"description":"Event names that trigger this feature's balance. Allows multiple features to respond to a single event.","uniqueKey":"balance.oneOf.0.feature.event_names","typeLabel":"string[]"},"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"const":"","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"any"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For classic credit systems: maps metered features to flat or graduated credit costs.","uniqueKey":"balance.oneOf.0.feature.credit_schema","typeLabel":"object[]"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for AI credit systems.","uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.feature.model_markups","typeLabel":"object | null"},"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for AI credit systems. Use -100 to make usage free.","uniqueKey":"balance.oneOf.0.feature.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider default markup percentages for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"balance.oneOf.0.feature.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balance.oneOf.0.feature.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider default markup percentages for AI credit systems.","uniqueKey":"balance.oneOf.0.feature.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.feature.provider_markups","typeLabel":"object | null"},"display":{"type":"object","properties":{"singular":{"oneOf":[{"type":"string","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balance.oneOf.0.feature.display.singular.oneOf.0","typeLabel":"string"},{"type":"null","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balance.oneOf.0.feature.display.singular.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.feature.display.singular","typeLabel":"string | null"},"plural":{"oneOf":[{"type":"string","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balance.oneOf.0.feature.display.plural.oneOf.0","typeLabel":"string"},{"type":"null","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balance.oneOf.0.feature.display.plural.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.feature.display.plural","typeLabel":"string | null"}},"description":"Display names for the feature in billing UI and customer-facing components.","uniqueKey":"balance.oneOf.0.feature.display","typeLabel":"object"},"processors":{"type":"object","properties":{"stripe":{"type":"object","properties":{"product_id":{"type":"string","description":"Stripe product ID this feature's usage prices bill under.","uniqueKey":"balance.oneOf.0.feature.processors.stripe.product_id","typeLabel":"string"},"meter_id":{"type":"string","description":"Stripe meter ID used to create this feature's metered price.","uniqueKey":"balance.oneOf.0.feature.processors.stripe.meter_id","typeLabel":"string"}},"uniqueKey":"balance.oneOf.0.feature.processors.stripe","typeLabel":"object"}},"x-atmn-mapping":true,"description":"Processor mappings for this feature. Present when a Stripe product or meter is set.","uniqueKey":"balance.oneOf.0.feature.processors","typeLabel":"object"}},"required":["id","name","type","consumable","archived"],"description":"The full feature object if expanded.","uniqueKey":"balance.oneOf.0.feature","typeLabel":"object"},"breakdown":{"type":"array","items":{"type":"object","properties":{"plan_id":{"oneOf":[{"type":"string","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].plan_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].plan_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].plan_id","typeLabel":"string | null"},"included_grant":{"type":"number","description":"Amount granted from the plan's included usage.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].included_grant","typeLabel":"number"},"prepaid_grant":{"type":"number","description":"Amount granted from prepaid purchases or top-ups.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].prepaid_grant","typeLabel":"number"},"remaining":{"type":"number","description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].remaining","typeLabel":"number"},"usage":{"type":"number","description":"Amount consumed in the current period.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this balance has unlimited usage.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].unlimited","typeLabel":"boolean"},"reset":{"oneOf":[{"type":"object","description":"Reset configuration for this balance, or null if no reset.","required":["interval","resets_at"],"properties":{"interval":{"oneOf":[{"type":"string","description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","const":"multiple","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval","typeLabel":"enum\u003cstring> | any"},"resets_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at","typeLabel":"number | null"},"interval_count":{"type":"number","description":"Number of intervals between resets (eg. 2 for bi-monthly).","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval_count","typeLabel":"number"}},"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0","typeLabel":"object"},{"type":"null","description":"Reset configuration for this balance, or null if no reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset","typeLabel":"object | null"},"price":{"oneOf":[{"type":"object","description":"Pricing configuration if this balance has usage-based pricing.","required":["billing_units","billing_method","max_purchase"],"properties":{"billing_units":{"type":"number","description":"The number of units per billing increment (eg. $9 / 250 units).","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.billing_units","typeLabel":"number"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"Whether usage is prepaid or billed pay-per-use.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.billing_method","typeLabel":"enum\u003cstring>"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase","typeLabel":"number | null"},"amount":{"type":"number","description":"The per-unit price amount.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.amount","typeLabel":"number"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["to","amount"],"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing configuration if applicable.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers are applied: graduated (split across bands) or volume (flat rate for the matched tier).","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tier_behavior","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Pricing configuration if this balance has usage-based pricing.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price","typeLabel":"object | null"},"expires_at":{"oneOf":[{"type":"number","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].expires_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].expires_at","typeLabel":"number | null"},"id":{"type":"string","default":"","description":"The unique identifier for this balance breakdown.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].id","typeLabel":"string"},"source":{"enum":["customer","entity"],"type":"string","readOnly":true,"description":"Where this row's credits come from: shared at the customer level, or owned by the entity.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"allocation":{"oneOf":[{"type":"object","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","required":["amount"],"properties":{"amount":{"type":"number","description":"The amount allocated to this entity.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.0.amount","typeLabel":"number"}},"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.0","typeLabel":"object"},{"type":"null","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].allocation","typeLabel":"object | null"},"contributions":{"type":"object","properties":{"list":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].id","typeLabel":"string"},"entity_id":{"oneOf":[{"type":"string","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id","typeLabel":"string | null"},"entity_name":{"oneOf":[{"type":"string","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name","typeLabel":"string | null"},"plan_id":{"type":"string","description":"The plan contributing to the pool.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_id","typeLabel":"string"},"plan_name":{"oneOf":[{"type":"string","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name","typeLabel":"string | null"},"current_contribution":{"type":"number","description":"Amount this source contributes to the pool this cycle.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].current_contribution","typeLabel":"number"},"next_cycle_contribution":{"type":"number","description":"Amount this source will contribute next cycle.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].next_cycle_contribution","typeLabel":"number"},"competes":{"type":"boolean","description":"True when this source competes under a 'max' / 'min' feature: only the winning competing share counts, instead of adding up.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].competes","typeLabel":"boolean"},"unlimited":{"type":"boolean","description":"True when this source grants unlimited usage, either as a competing source or as an unlimited share riding a limited pool.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].unlimited","typeLabel":"boolean"},"created_at":{"type":"number","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].created_at","typeLabel":"number"}},"required":["id","entity_id","entity_name","plan_id","plan_name","current_contribution","next_cycle_contribution","competes","unlimited","created_at"],"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX]","typeLabel":"object"},"description":"The first 10 plans contributing to the pool, competing shares first, then newest.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list","typeLabel":"object[]"},"total_count":{"type":"number","description":"Total number of plans contributing to the pool.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.total_count","typeLabel":"number"}},"required":["list","total_count"],"description":"The plans funding this shared pooled balance, usually on the customer's entities, and how much each adds this cycle and next. Present on pooled rows when expand includes `pooled_contributions`.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions","typeLabel":"object"}},"required":["plan_id","included_grant","prepaid_grant","remaining","usage","unlimited","reset","price","expires_at"],"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX]","typeLabel":"object"},"description":"Detailed breakdown of balance sources when stacking multiple plans or grants.","uniqueKey":"balance.oneOf.0.breakdown","typeLabel":"object[]"},"rollovers":{"type":"array","items":{"type":"object","properties":{"granted":{"type":"number","description":"Amount originally rolled over from a previous period, before any of it was consumed.","isRequired":true,"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX].granted","typeLabel":"number"},"balance":{"type":"number","description":"Amount of balance rolled over from a previous period.","isRequired":true,"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX].balance","typeLabel":"number"},"expires_at":{"type":"number","description":"Timestamp when the rollover balance expires.","isRequired":true,"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX].expires_at","typeLabel":"number"}},"required":["granted","balance","expires_at"],"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX]","typeLabel":"object"},"description":"Rollover balances carried over from previous periods.","uniqueKey":"balance.oneOf.0.rollovers","typeLabel":"object[]"},"allocated":{"type":"number","readOnly":true,"description":"Shared credits held for entities by allocations; present only when the customer allocates this feature.","uniqueKey":"balance.oneOf.0.allocated","typeLabel":"number"},"unallocated":{"type":"number","readOnly":true,"description":"Remaining shared credits no allocation holds; any entity may use them.","uniqueKey":"balance.oneOf.0.unallocated","typeLabel":"number"}},"isRequired":true,"uniqueKey":"balance.oneOf.0","typeLabel":"object"},{"type":"null","description":"The updated balance for the tracked feature. Null if tracking by event_name that affects multiple features.","isRequired":true,"uniqueKey":"balance.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance","typeLabel":"object | null"},"entity_id":{"type":"string","description":"The ID of the entity, if entity-scoped tracking was performed.","uniqueKey":"entity_id","typeLabel":"string"},"event_name":{"type":"string","description":"The event name that was tracked, if event_name was used instead of feature_id.","uniqueKey":"event_name","typeLabel":"string"},"balances":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{"type":"object","required":["feature_id","granted","remaining","usage","unlimited","overage_allowed","max_purchase","next_reset_at"],"example":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"properties":{"feature_id":{"type":"string","description":"The feature ID this balance is for.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature_id","typeLabel":"string"},"granted":{"type":"number","description":"Total balance granted (included + prepaid).","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.granted","typeLabel":"number"},"remaining":{"type":"number","minimum":0,"description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.remaining","typeLabel":"number"},"usage":{"type":"number","description":"Total usage consumed in the current period.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this feature has unlimited usage.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.unlimited","typeLabel":"boolean"},"overage_allowed":{"type":"boolean","description":"Whether usage beyond the granted balance is allowed (with overage charges).","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.overage_allowed","typeLabel":"boolean"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.max_purchase","typeLabel":"number | null"},"next_reset_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.next_reset_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.next_reset_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.next_reset_at","typeLabel":"number | null"},"feature":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this feature, used in /check and /track calls.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.id","typeLabel":"string"},"name":{"type":"string","description":"Human-readable name displayed in the dashboard and billing UI.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.name","typeLabel":"string"},"type":{"enum":["boolean","metered","credit_system","ai_credit_system"],"type":"string","description":"Feature type: 'boolean' for on/off access, 'metered' for usage-tracked features, 'credit_system' for unified credit pools, 'ai_credit_system' for model-based token pricing.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.type","typeLabel":"enum\u003cstring>"},"consumable":{"type":"boolean","description":"For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.consumable","typeLabel":"boolean"},"archived":{"type":"boolean","description":"Whether the feature is archived and hidden from the dashboard.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.archived","typeLabel":"boolean"},"combine":{"enum":["sum","max","min"],"type":"string","description":"How grants of this feature from several plans combine: 'sum' adds them up, 'max' / 'min' keep the highest / lowest grant among plan items with no price. Omitted when 'sum'.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.combine","typeLabel":"enum\u003cstring>"},"event_names":{"type":"array","items":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.event_names.items.[INDEX]","typeLabel":"string"},"description":"Event names that trigger this feature's balance. Allows multiple features to respond to a single event.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.event_names","typeLabel":"string[]"},"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"const":"","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"any"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For classic credit systems: maps metered features to flat or graduated credit costs.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema","typeLabel":"object[]"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for AI credit systems.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups","typeLabel":"object | null"},"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for AI credit systems. Use -100 to make usage free.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider default markup percentages for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider default markup percentages for AI credit systems.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups","typeLabel":"object | null"},"display":{"type":"object","properties":{"singular":{"oneOf":[{"type":"string","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.singular.oneOf.0","typeLabel":"string"},{"type":"null","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.singular.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.singular","typeLabel":"string | null"},"plural":{"oneOf":[{"type":"string","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.plural.oneOf.0","typeLabel":"string"},{"type":"null","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.plural.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.plural","typeLabel":"string | null"}},"description":"Display names for the feature in billing UI and customer-facing components.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display","typeLabel":"object"},"processors":{"type":"object","properties":{"stripe":{"type":"object","properties":{"product_id":{"type":"string","description":"Stripe product ID this feature's usage prices bill under.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.processors.stripe.product_id","typeLabel":"string"},"meter_id":{"type":"string","description":"Stripe meter ID used to create this feature's metered price.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.processors.stripe.meter_id","typeLabel":"string"}},"uniqueKey":"balances.additionalProperties.oneOf.0.feature.processors.stripe","typeLabel":"object"}},"x-atmn-mapping":true,"description":"Processor mappings for this feature. Present when a Stripe product or meter is set.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.processors","typeLabel":"object"}},"required":["id","name","type","consumable","archived"],"description":"The full feature object if expanded.","uniqueKey":"balances.additionalProperties.oneOf.0.feature","typeLabel":"object"},"breakdown":{"type":"array","items":{"type":"object","properties":{"plan_id":{"oneOf":[{"type":"string","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].plan_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].plan_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].plan_id","typeLabel":"string | null"},"included_grant":{"type":"number","description":"Amount granted from the plan's included usage.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].included_grant","typeLabel":"number"},"prepaid_grant":{"type":"number","description":"Amount granted from prepaid purchases or top-ups.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].prepaid_grant","typeLabel":"number"},"remaining":{"type":"number","description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].remaining","typeLabel":"number"},"usage":{"type":"number","description":"Amount consumed in the current period.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this balance has unlimited usage.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].unlimited","typeLabel":"boolean"},"reset":{"oneOf":[{"type":"object","description":"Reset configuration for this balance, or null if no reset.","required":["interval","resets_at"],"properties":{"interval":{"oneOf":[{"type":"string","description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","const":"multiple","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval","typeLabel":"enum\u003cstring> | any"},"resets_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at","typeLabel":"number | null"},"interval_count":{"type":"number","description":"Number of intervals between resets (eg. 2 for bi-monthly).","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval_count","typeLabel":"number"}},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0","typeLabel":"object"},{"type":"null","description":"Reset configuration for this balance, or null if no reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset","typeLabel":"object | null"},"price":{"oneOf":[{"type":"object","description":"Pricing configuration if this balance has usage-based pricing.","required":["billing_units","billing_method","max_purchase"],"properties":{"billing_units":{"type":"number","description":"The number of units per billing increment (eg. $9 / 250 units).","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.billing_units","typeLabel":"number"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"Whether usage is prepaid or billed pay-per-use.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.billing_method","typeLabel":"enum\u003cstring>"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase","typeLabel":"number | null"},"amount":{"type":"number","description":"The per-unit price amount.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.amount","typeLabel":"number"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["to","amount"],"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing configuration if applicable.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers are applied: graduated (split across bands) or volume (flat rate for the matched tier).","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tier_behavior","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Pricing configuration if this balance has usage-based pricing.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price","typeLabel":"object | null"},"expires_at":{"oneOf":[{"type":"number","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].expires_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].expires_at","typeLabel":"number | null"},"id":{"type":"string","default":"","description":"The unique identifier for this balance breakdown.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].id","typeLabel":"string"},"source":{"enum":["customer","entity"],"type":"string","readOnly":true,"description":"Where this row's credits come from: shared at the customer level, or owned by the entity.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"allocation":{"oneOf":[{"type":"object","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","required":["amount"],"properties":{"amount":{"type":"number","description":"The amount allocated to this entity.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.0.amount","typeLabel":"number"}},"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.0","typeLabel":"object"},{"type":"null","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].allocation","typeLabel":"object | null"},"contributions":{"type":"object","properties":{"list":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].id","typeLabel":"string"},"entity_id":{"oneOf":[{"type":"string","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id","typeLabel":"string | null"},"entity_name":{"oneOf":[{"type":"string","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name","typeLabel":"string | null"},"plan_id":{"type":"string","description":"The plan contributing to the pool.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_id","typeLabel":"string"},"plan_name":{"oneOf":[{"type":"string","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name","typeLabel":"string | null"},"current_contribution":{"type":"number","description":"Amount this source contributes to the pool this cycle.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].current_contribution","typeLabel":"number"},"next_cycle_contribution":{"type":"number","description":"Amount this source will contribute next cycle.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].next_cycle_contribution","typeLabel":"number"},"competes":{"type":"boolean","description":"True when this source competes under a 'max' / 'min' feature: only the winning competing share counts, instead of adding up.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].competes","typeLabel":"boolean"},"unlimited":{"type":"boolean","description":"True when this source grants unlimited usage, either as a competing source or as an unlimited share riding a limited pool.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].unlimited","typeLabel":"boolean"},"created_at":{"type":"number","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].created_at","typeLabel":"number"}},"required":["id","entity_id","entity_name","plan_id","plan_name","current_contribution","next_cycle_contribution","competes","unlimited","created_at"],"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX]","typeLabel":"object"},"description":"The first 10 plans contributing to the pool, competing shares first, then newest.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list","typeLabel":"object[]"},"total_count":{"type":"number","description":"Total number of plans contributing to the pool.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.total_count","typeLabel":"number"}},"required":["list","total_count"],"description":"The plans funding this shared pooled balance, usually on the customer's entities, and how much each adds this cycle and next. Present on pooled rows when expand includes `pooled_contributions`.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions","typeLabel":"object"}},"required":["plan_id","included_grant","prepaid_grant","remaining","usage","unlimited","reset","price","expires_at"],"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX]","typeLabel":"object"},"description":"Detailed breakdown of balance sources when stacking multiple plans or grants.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown","typeLabel":"object[]"},"rollovers":{"type":"array","items":{"type":"object","properties":{"granted":{"type":"number","description":"Amount originally rolled over from a previous period, before any of it was consumed.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX].granted","typeLabel":"number"},"balance":{"type":"number","description":"Amount of balance rolled over from a previous period.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX].balance","typeLabel":"number"},"expires_at":{"type":"number","description":"Timestamp when the rollover balance expires.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX].expires_at","typeLabel":"number"}},"required":["granted","balance","expires_at"],"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX]","typeLabel":"object"},"description":"Rollover balances carried over from previous periods.","uniqueKey":"balances.additionalProperties.oneOf.0.rollovers","typeLabel":"object[]"},"allocated":{"type":"number","readOnly":true,"description":"Shared credits held for entities by allocations; present only when the customer allocates this feature.","uniqueKey":"balances.additionalProperties.oneOf.0.allocated","typeLabel":"number"},"unallocated":{"type":"number","readOnly":true,"description":"Remaining shared credits no allocation holds; any entity may use them.","uniqueKey":"balances.additionalProperties.oneOf.0.unallocated","typeLabel":"number"}},"uniqueKey":"balances.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"balances.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties","typeLabel":"object | null"},"description":"Map of feature_id to updated balance for the tracked feature and any related features (e.g. linked credit systems). Value is null when the customer has no balance for that feature.","uniqueKey":"balances","typeLabel":"object"},"deductions":{"type":"array","items":{"type":"object","properties":{"balance_id":{"type":"string","description":"ID of the underlying balance row that was deducted from (customer_entitlement or rollover).","isRequired":true,"uniqueKey":"deductions.items.[INDEX].balance_id","typeLabel":"string"},"feature_id":{"type":"string","description":"The feature this balance belongs to.","isRequired":true,"uniqueKey":"deductions.items.[INDEX].feature_id","typeLabel":"string"},"plan_id":{"oneOf":[{"type":"string","description":"ID of the plan/product this balance belongs to. Null when the balance can't be attributed to a single plan (e.g. it spans multiple).","isRequired":true,"uniqueKey":"deductions.items.[INDEX].plan_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"ID of the plan/product this balance belongs to. Null when the balance can't be attributed to a single plan (e.g. it spans multiple).","isRequired":true,"uniqueKey":"deductions.items.[INDEX].plan_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].plan_id","typeLabel":"string | null"},"reset":{"oneOf":[{"type":"object","description":"Reset configuration for the balance this deduction came from, or null if the balance doesn't reset.","required":["interval","resets_at"],"properties":{"interval":{"oneOf":[{"type":"string","description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","const":"multiple","isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.interval.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.interval","typeLabel":"enum\u003cstring> | any"},"resets_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.resets_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.resets_at","typeLabel":"number | null"},"interval_count":{"type":"number","description":"Number of intervals between resets (eg. 2 for bi-monthly).","uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.interval_count","typeLabel":"number"}},"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0","typeLabel":"object"},{"type":"null","description":"Reset configuration for the balance this deduction came from, or null if the balance doesn't reset.","isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset","typeLabel":"object | null"},"value":{"type":"number","description":"Amount deducted from this balance. Positive when usage was consumed, negative when credit was restored (e.g. a refund via negative track value).","isRequired":true,"uniqueKey":"deductions.items.[INDEX].value","typeLabel":"number"}},"required":["balance_id","feature_id","plan_id","reset","value"],"uniqueKey":"deductions.items.[INDEX]","typeLabel":"object"},"description":"Per-balance breakdown of what this event deducted. A single event can consume from multiple balance rows when credit systems or rollovers are involved; this surfaces each one so callers can build per-feature usage views without polling.","uniqueKey":"deductions","typeLabel":"object[]"}},"required":["customer_id","value","balance"],"examples":[{"customer_id":"cus_123","value":1,"balance":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"deductions":[{"balance_id":"cus_ent_3DdSDoyFmoA9Neecl2a2Gc507X2","feature_id":"messages","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":1}]}],"uniqueKey":"","typeLabel":"object"},"example":{"customer_id":"cus_123","value":1,"balance":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"deductions":[{"balance_id":"cus_ent_3DdSDoyFmoA9Neecl2a2Gc507X2","feature_id":"messages","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":1}]},"examples":{"Example":{"title":"Example","value":{"customer_id":"cus_123","value":1,"balance":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"deductions":[{"balance_id":"cus_ent_3DdSDoyFmoA9Neecl2a2Gc507X2","feature_id":"messages","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":1}]}}},"exampleType":"examples"}},"exampleType":"examples"},"072ebdb9-3ac0-4820-9b58-fae6ac78faf9":{"description":"Accepted. The event was queued and will be applied shortly, so balance is null. Returned by default unless async is false, and when Autumn is experiencing degraded service.","content":{"application/json":{"schema":{"type":"object","properties":{"customer_id":{"type":"string","description":"The ID of the customer whose usage was tracked.","isRequired":true,"uniqueKey":"customer_id","typeLabel":"string"},"value":{"type":"number","description":"The amount of usage that was recorded.","isRequired":true,"uniqueKey":"value","typeLabel":"number"},"balance":{"oneOf":[{"type":"object","description":"The updated balance for the tracked feature. Null if tracking by event_name that affects multiple features.","required":["feature_id","granted","remaining","usage","unlimited","overage_allowed","max_purchase","next_reset_at"],"example":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"properties":{"feature_id":{"type":"string","description":"The feature ID this balance is for.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature_id","typeLabel":"string"},"granted":{"type":"number","description":"Total balance granted (included + prepaid).","isRequired":true,"uniqueKey":"balance.oneOf.0.granted","typeLabel":"number"},"remaining":{"type":"number","minimum":0,"description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balance.oneOf.0.remaining","typeLabel":"number"},"usage":{"type":"number","description":"Total usage consumed in the current period.","isRequired":true,"uniqueKey":"balance.oneOf.0.usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this feature has unlimited usage.","isRequired":true,"uniqueKey":"balance.oneOf.0.unlimited","typeLabel":"boolean"},"overage_allowed":{"type":"boolean","description":"Whether usage beyond the granted balance is allowed (with overage charges).","isRequired":true,"uniqueKey":"balance.oneOf.0.overage_allowed","typeLabel":"boolean"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balance.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balance.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.max_purchase","typeLabel":"number | null"},"next_reset_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.next_reset_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.next_reset_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.next_reset_at","typeLabel":"number | null"},"feature":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this feature, used in /check and /track calls.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.id","typeLabel":"string"},"name":{"type":"string","description":"Human-readable name displayed in the dashboard and billing UI.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.name","typeLabel":"string"},"type":{"enum":["boolean","metered","credit_system","ai_credit_system"],"type":"string","description":"Feature type: 'boolean' for on/off access, 'metered' for usage-tracked features, 'credit_system' for unified credit pools, 'ai_credit_system' for model-based token pricing.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.type","typeLabel":"enum\u003cstring>"},"consumable":{"type":"boolean","description":"For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.consumable","typeLabel":"boolean"},"archived":{"type":"boolean","description":"Whether the feature is archived and hidden from the dashboard.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.archived","typeLabel":"boolean"},"combine":{"enum":["sum","max","min"],"type":"string","description":"How grants of this feature from several plans combine: 'sum' adds them up, 'max' / 'min' keep the highest / lowest grant among plan items with no price. Omitted when 'sum'.","uniqueKey":"balance.oneOf.0.feature.combine","typeLabel":"enum\u003cstring>"},"event_names":{"type":"array","items":{"type":"string","uniqueKey":"balance.oneOf.0.feature.event_names.items.[INDEX]","typeLabel":"string"},"description":"Event names that trigger this feature's balance. Allows multiple features to respond to a single event.","uniqueKey":"balance.oneOf.0.feature.event_names","typeLabel":"string[]"},"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"const":"","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"any"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"balance.oneOf.0.feature.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For classic credit systems: maps metered features to flat or graduated credit costs.","uniqueKey":"balance.oneOf.0.feature.credit_schema","typeLabel":"object[]"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for AI credit systems.","uniqueKey":"balance.oneOf.0.feature.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.feature.model_markups","typeLabel":"object | null"},"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for AI credit systems. Use -100 to make usage free.","uniqueKey":"balance.oneOf.0.feature.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider default markup percentages for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"balance.oneOf.0.feature.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"balance.oneOf.0.feature.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balance.oneOf.0.feature.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider default markup percentages for AI credit systems.","uniqueKey":"balance.oneOf.0.feature.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.feature.provider_markups","typeLabel":"object | null"},"display":{"type":"object","properties":{"singular":{"oneOf":[{"type":"string","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balance.oneOf.0.feature.display.singular.oneOf.0","typeLabel":"string"},{"type":"null","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balance.oneOf.0.feature.display.singular.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.feature.display.singular","typeLabel":"string | null"},"plural":{"oneOf":[{"type":"string","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balance.oneOf.0.feature.display.plural.oneOf.0","typeLabel":"string"},{"type":"null","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balance.oneOf.0.feature.display.plural.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.feature.display.plural","typeLabel":"string | null"}},"description":"Display names for the feature in billing UI and customer-facing components.","uniqueKey":"balance.oneOf.0.feature.display","typeLabel":"object"},"processors":{"type":"object","properties":{"stripe":{"type":"object","properties":{"product_id":{"type":"string","description":"Stripe product ID this feature's usage prices bill under.","uniqueKey":"balance.oneOf.0.feature.processors.stripe.product_id","typeLabel":"string"},"meter_id":{"type":"string","description":"Stripe meter ID used to create this feature's metered price.","uniqueKey":"balance.oneOf.0.feature.processors.stripe.meter_id","typeLabel":"string"}},"uniqueKey":"balance.oneOf.0.feature.processors.stripe","typeLabel":"object"}},"x-atmn-mapping":true,"description":"Processor mappings for this feature. Present when a Stripe product or meter is set.","uniqueKey":"balance.oneOf.0.feature.processors","typeLabel":"object"}},"required":["id","name","type","consumable","archived"],"description":"The full feature object if expanded.","uniqueKey":"balance.oneOf.0.feature","typeLabel":"object"},"breakdown":{"type":"array","items":{"type":"object","properties":{"plan_id":{"oneOf":[{"type":"string","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].plan_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].plan_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].plan_id","typeLabel":"string | null"},"included_grant":{"type":"number","description":"Amount granted from the plan's included usage.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].included_grant","typeLabel":"number"},"prepaid_grant":{"type":"number","description":"Amount granted from prepaid purchases or top-ups.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].prepaid_grant","typeLabel":"number"},"remaining":{"type":"number","description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].remaining","typeLabel":"number"},"usage":{"type":"number","description":"Amount consumed in the current period.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this balance has unlimited usage.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].unlimited","typeLabel":"boolean"},"reset":{"oneOf":[{"type":"object","description":"Reset configuration for this balance, or null if no reset.","required":["interval","resets_at"],"properties":{"interval":{"oneOf":[{"type":"string","description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","const":"multiple","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval","typeLabel":"enum\u003cstring> | any"},"resets_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at","typeLabel":"number | null"},"interval_count":{"type":"number","description":"Number of intervals between resets (eg. 2 for bi-monthly).","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval_count","typeLabel":"number"}},"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0","typeLabel":"object"},{"type":"null","description":"Reset configuration for this balance, or null if no reset.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].reset","typeLabel":"object | null"},"price":{"oneOf":[{"type":"object","description":"Pricing configuration if this balance has usage-based pricing.","required":["billing_units","billing_method","max_purchase"],"properties":{"billing_units":{"type":"number","description":"The number of units per billing increment (eg. $9 / 250 units).","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.billing_units","typeLabel":"number"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"Whether usage is prepaid or billed pay-per-use.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.billing_method","typeLabel":"enum\u003cstring>"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase","typeLabel":"number | null"},"amount":{"type":"number","description":"The per-unit price amount.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.amount","typeLabel":"number"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["to","amount"],"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing configuration if applicable.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers are applied: graduated (split across bands) or volume (flat rate for the matched tier).","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tier_behavior","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Pricing configuration if this balance has usage-based pricing.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].price","typeLabel":"object | null"},"expires_at":{"oneOf":[{"type":"number","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].expires_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].expires_at","typeLabel":"number | null"},"id":{"type":"string","default":"","description":"The unique identifier for this balance breakdown.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].id","typeLabel":"string"},"source":{"enum":["customer","entity"],"type":"string","readOnly":true,"description":"Where this row's credits come from: shared at the customer level, or owned by the entity.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"allocation":{"oneOf":[{"type":"object","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","required":["amount"],"properties":{"amount":{"type":"number","description":"The amount allocated to this entity.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.0.amount","typeLabel":"number"}},"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.0","typeLabel":"object"},{"type":"null","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].allocation","typeLabel":"object | null"},"contributions":{"type":"object","properties":{"list":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].id","typeLabel":"string"},"entity_id":{"oneOf":[{"type":"string","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id","typeLabel":"string | null"},"entity_name":{"oneOf":[{"type":"string","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name","typeLabel":"string | null"},"plan_id":{"type":"string","description":"The plan contributing to the pool.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_id","typeLabel":"string"},"plan_name":{"oneOf":[{"type":"string","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name","typeLabel":"string | null"},"current_contribution":{"type":"number","description":"Amount this source contributes to the pool this cycle.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].current_contribution","typeLabel":"number"},"next_cycle_contribution":{"type":"number","description":"Amount this source will contribute next cycle.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].next_cycle_contribution","typeLabel":"number"},"competes":{"type":"boolean","description":"True when this source competes under a 'max' / 'min' feature: only the winning competing share counts, instead of adding up.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].competes","typeLabel":"boolean"},"unlimited":{"type":"boolean","description":"True when this source grants unlimited usage, either as a competing source or as an unlimited share riding a limited pool.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].unlimited","typeLabel":"boolean"},"created_at":{"type":"number","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].created_at","typeLabel":"number"}},"required":["id","entity_id","entity_name","plan_id","plan_name","current_contribution","next_cycle_contribution","competes","unlimited","created_at"],"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX]","typeLabel":"object"},"description":"The first 10 plans contributing to the pool, competing shares first, then newest.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.list","typeLabel":"object[]"},"total_count":{"type":"number","description":"Total number of plans contributing to the pool.","isRequired":true,"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions.total_count","typeLabel":"number"}},"required":["list","total_count"],"description":"The plans funding this shared pooled balance, usually on the customer's entities, and how much each adds this cycle and next. Present on pooled rows when expand includes `pooled_contributions`.","uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX].contributions","typeLabel":"object"}},"required":["plan_id","included_grant","prepaid_grant","remaining","usage","unlimited","reset","price","expires_at"],"uniqueKey":"balance.oneOf.0.breakdown.items.[INDEX]","typeLabel":"object"},"description":"Detailed breakdown of balance sources when stacking multiple plans or grants.","uniqueKey":"balance.oneOf.0.breakdown","typeLabel":"object[]"},"rollovers":{"type":"array","items":{"type":"object","properties":{"granted":{"type":"number","description":"Amount originally rolled over from a previous period, before any of it was consumed.","isRequired":true,"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX].granted","typeLabel":"number"},"balance":{"type":"number","description":"Amount of balance rolled over from a previous period.","isRequired":true,"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX].balance","typeLabel":"number"},"expires_at":{"type":"number","description":"Timestamp when the rollover balance expires.","isRequired":true,"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX].expires_at","typeLabel":"number"}},"required":["granted","balance","expires_at"],"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX]","typeLabel":"object"},"description":"Rollover balances carried over from previous periods.","uniqueKey":"balance.oneOf.0.rollovers","typeLabel":"object[]"},"allocated":{"type":"number","readOnly":true,"description":"Shared credits held for entities by allocations; present only when the customer allocates this feature.","uniqueKey":"balance.oneOf.0.allocated","typeLabel":"number"},"unallocated":{"type":"number","readOnly":true,"description":"Remaining shared credits no allocation holds; any entity may use them.","uniqueKey":"balance.oneOf.0.unallocated","typeLabel":"number"}},"isRequired":true,"uniqueKey":"balance.oneOf.0","typeLabel":"object"},{"type":"null","description":"The updated balance for the tracked feature. Null if tracking by event_name that affects multiple features.","isRequired":true,"uniqueKey":"balance.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balance","typeLabel":"object | null"},"entity_id":{"type":"string","description":"The ID of the entity, if entity-scoped tracking was performed.","uniqueKey":"entity_id","typeLabel":"string"},"event_name":{"type":"string","description":"The event name that was tracked, if event_name was used instead of feature_id.","uniqueKey":"event_name","typeLabel":"string"},"balances":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{"type":"object","required":["feature_id","granted","remaining","usage","unlimited","overage_allowed","max_purchase","next_reset_at"],"example":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"properties":{"feature_id":{"type":"string","description":"The feature ID this balance is for.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature_id","typeLabel":"string"},"granted":{"type":"number","description":"Total balance granted (included + prepaid).","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.granted","typeLabel":"number"},"remaining":{"type":"number","minimum":0,"description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.remaining","typeLabel":"number"},"usage":{"type":"number","description":"Total usage consumed in the current period.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this feature has unlimited usage.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.unlimited","typeLabel":"boolean"},"overage_allowed":{"type":"boolean","description":"Whether usage beyond the granted balance is allowed (with overage charges).","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.overage_allowed","typeLabel":"boolean"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.max_purchase","typeLabel":"number | null"},"next_reset_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.next_reset_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.next_reset_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.next_reset_at","typeLabel":"number | null"},"feature":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this feature, used in /check and /track calls.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.id","typeLabel":"string"},"name":{"type":"string","description":"Human-readable name displayed in the dashboard and billing UI.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.name","typeLabel":"string"},"type":{"enum":["boolean","metered","credit_system","ai_credit_system"],"type":"string","description":"Feature type: 'boolean' for on/off access, 'metered' for usage-tracked features, 'credit_system' for unified credit pools, 'ai_credit_system' for model-based token pricing.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.type","typeLabel":"enum\u003cstring>"},"consumable":{"type":"boolean","description":"For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.consumable","typeLabel":"boolean"},"archived":{"type":"boolean","description":"Whether the feature is archived and hidden from the dashboard.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.archived","typeLabel":"boolean"},"combine":{"enum":["sum","max","min"],"type":"string","description":"How grants of this feature from several plans combine: 'sum' adds them up, 'max' / 'min' keep the highest / lowest grant among plan items with no price. Omitted when 'sum'.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.combine","typeLabel":"enum\u003cstring>"},"event_names":{"type":"array","items":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.event_names.items.[INDEX]","typeLabel":"string"},"description":"Event names that trigger this feature's balance. Allows multiple features to respond to a single event.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.event_names","typeLabel":"string[]"},"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"const":"","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"any"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For classic credit systems: maps metered features to flat or graduated credit costs.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.credit_schema","typeLabel":"object[]"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for AI credit systems.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.model_markups","typeLabel":"object | null"},"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for AI credit systems. Use -100 to make usage free.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider default markup percentages for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider default markup percentages for AI credit systems.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.provider_markups","typeLabel":"object | null"},"display":{"type":"object","properties":{"singular":{"oneOf":[{"type":"string","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.singular.oneOf.0","typeLabel":"string"},{"type":"null","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.singular.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.singular","typeLabel":"string | null"},"plural":{"oneOf":[{"type":"string","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.plural.oneOf.0","typeLabel":"string"},{"type":"null","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.plural.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.feature.display.plural","typeLabel":"string | null"}},"description":"Display names for the feature in billing UI and customer-facing components.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.display","typeLabel":"object"},"processors":{"type":"object","properties":{"stripe":{"type":"object","properties":{"product_id":{"type":"string","description":"Stripe product ID this feature's usage prices bill under.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.processors.stripe.product_id","typeLabel":"string"},"meter_id":{"type":"string","description":"Stripe meter ID used to create this feature's metered price.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.processors.stripe.meter_id","typeLabel":"string"}},"uniqueKey":"balances.additionalProperties.oneOf.0.feature.processors.stripe","typeLabel":"object"}},"x-atmn-mapping":true,"description":"Processor mappings for this feature. Present when a Stripe product or meter is set.","uniqueKey":"balances.additionalProperties.oneOf.0.feature.processors","typeLabel":"object"}},"required":["id","name","type","consumable","archived"],"description":"The full feature object if expanded.","uniqueKey":"balances.additionalProperties.oneOf.0.feature","typeLabel":"object"},"breakdown":{"type":"array","items":{"type":"object","properties":{"plan_id":{"oneOf":[{"type":"string","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].plan_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].plan_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].plan_id","typeLabel":"string | null"},"included_grant":{"type":"number","description":"Amount granted from the plan's included usage.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].included_grant","typeLabel":"number"},"prepaid_grant":{"type":"number","description":"Amount granted from prepaid purchases or top-ups.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].prepaid_grant","typeLabel":"number"},"remaining":{"type":"number","description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].remaining","typeLabel":"number"},"usage":{"type":"number","description":"Amount consumed in the current period.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this balance has unlimited usage.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].unlimited","typeLabel":"boolean"},"reset":{"oneOf":[{"type":"object","description":"Reset configuration for this balance, or null if no reset.","required":["interval","resets_at"],"properties":{"interval":{"oneOf":[{"type":"string","description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","const":"multiple","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval","typeLabel":"enum\u003cstring> | any"},"resets_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.resets_at","typeLabel":"number | null"},"interval_count":{"type":"number","description":"Number of intervals between resets (eg. 2 for bi-monthly).","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0.interval_count","typeLabel":"number"}},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.0","typeLabel":"object"},{"type":"null","description":"Reset configuration for this balance, or null if no reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].reset","typeLabel":"object | null"},"price":{"oneOf":[{"type":"object","description":"Pricing configuration if this balance has usage-based pricing.","required":["billing_units","billing_method","max_purchase"],"properties":{"billing_units":{"type":"number","description":"The number of units per billing increment (eg. $9 / 250 units).","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.billing_units","typeLabel":"number"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"Whether usage is prepaid or billed pay-per-use.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.billing_method","typeLabel":"enum\u003cstring>"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.max_purchase","typeLabel":"number | null"},"amount":{"type":"number","description":"The per-unit price amount.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.amount","typeLabel":"number"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["to","amount"],"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing configuration if applicable.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers are applied: graduated (split across bands) or volume (flat rate for the matched tier).","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0.tier_behavior","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Pricing configuration if this balance has usage-based pricing.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].price","typeLabel":"object | null"},"expires_at":{"oneOf":[{"type":"number","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].expires_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].expires_at","typeLabel":"number | null"},"id":{"type":"string","default":"","description":"The unique identifier for this balance breakdown.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].id","typeLabel":"string"},"source":{"enum":["customer","entity"],"type":"string","readOnly":true,"description":"Where this row's credits come from: shared at the customer level, or owned by the entity.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"allocation":{"oneOf":[{"type":"object","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","required":["amount"],"properties":{"amount":{"type":"number","description":"The amount allocated to this entity.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.0.amount","typeLabel":"number"}},"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.0","typeLabel":"object"},{"type":"null","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].allocation.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].allocation","typeLabel":"object | null"},"contributions":{"type":"object","properties":{"list":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].id","typeLabel":"string"},"entity_id":{"oneOf":[{"type":"string","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id","typeLabel":"string | null"},"entity_name":{"oneOf":[{"type":"string","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name","typeLabel":"string | null"},"plan_id":{"type":"string","description":"The plan contributing to the pool.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_id","typeLabel":"string"},"plan_name":{"oneOf":[{"type":"string","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name","typeLabel":"string | null"},"current_contribution":{"type":"number","description":"Amount this source contributes to the pool this cycle.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].current_contribution","typeLabel":"number"},"next_cycle_contribution":{"type":"number","description":"Amount this source will contribute next cycle.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].next_cycle_contribution","typeLabel":"number"},"competes":{"type":"boolean","description":"True when this source competes under a 'max' / 'min' feature: only the winning competing share counts, instead of adding up.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].competes","typeLabel":"boolean"},"unlimited":{"type":"boolean","description":"True when this source grants unlimited usage, either as a competing source or as an unlimited share riding a limited pool.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].unlimited","typeLabel":"boolean"},"created_at":{"type":"number","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX].created_at","typeLabel":"number"}},"required":["id","entity_id","entity_name","plan_id","plan_name","current_contribution","next_cycle_contribution","competes","unlimited","created_at"],"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list.items.[INDEX]","typeLabel":"object"},"description":"The first 10 plans contributing to the pool, competing shares first, then newest.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.list","typeLabel":"object[]"},"total_count":{"type":"number","description":"Total number of plans contributing to the pool.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions.total_count","typeLabel":"number"}},"required":["list","total_count"],"description":"The plans funding this shared pooled balance, usually on the customer's entities, and how much each adds this cycle and next. Present on pooled rows when expand includes `pooled_contributions`.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX].contributions","typeLabel":"object"}},"required":["plan_id","included_grant","prepaid_grant","remaining","usage","unlimited","reset","price","expires_at"],"uniqueKey":"balances.additionalProperties.oneOf.0.breakdown.items.[INDEX]","typeLabel":"object"},"description":"Detailed breakdown of balance sources when stacking multiple plans or grants.","uniqueKey":"balances.additionalProperties.oneOf.0.breakdown","typeLabel":"object[]"},"rollovers":{"type":"array","items":{"type":"object","properties":{"granted":{"type":"number","description":"Amount originally rolled over from a previous period, before any of it was consumed.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX].granted","typeLabel":"number"},"balance":{"type":"number","description":"Amount of balance rolled over from a previous period.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX].balance","typeLabel":"number"},"expires_at":{"type":"number","description":"Timestamp when the rollover balance expires.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX].expires_at","typeLabel":"number"}},"required":["granted","balance","expires_at"],"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX]","typeLabel":"object"},"description":"Rollover balances carried over from previous periods.","uniqueKey":"balances.additionalProperties.oneOf.0.rollovers","typeLabel":"object[]"},"allocated":{"type":"number","readOnly":true,"description":"Shared credits held for entities by allocations; present only when the customer allocates this feature.","uniqueKey":"balances.additionalProperties.oneOf.0.allocated","typeLabel":"number"},"unallocated":{"type":"number","readOnly":true,"description":"Remaining shared credits no allocation holds; any entity may use them.","uniqueKey":"balances.additionalProperties.oneOf.0.unallocated","typeLabel":"number"}},"uniqueKey":"balances.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"balances.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties","typeLabel":"object | null"},"description":"Map of feature_id to updated balance for the tracked feature and any related features (e.g. linked credit systems). Value is null when the customer has no balance for that feature.","uniqueKey":"balances","typeLabel":"object"},"deductions":{"type":"array","items":{"type":"object","properties":{"balance_id":{"type":"string","description":"ID of the underlying balance row that was deducted from (customer_entitlement or rollover).","isRequired":true,"uniqueKey":"deductions.items.[INDEX].balance_id","typeLabel":"string"},"feature_id":{"type":"string","description":"The feature this balance belongs to.","isRequired":true,"uniqueKey":"deductions.items.[INDEX].feature_id","typeLabel":"string"},"plan_id":{"oneOf":[{"type":"string","description":"ID of the plan/product this balance belongs to. Null when the balance can't be attributed to a single plan (e.g. it spans multiple).","isRequired":true,"uniqueKey":"deductions.items.[INDEX].plan_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"ID of the plan/product this balance belongs to. Null when the balance can't be attributed to a single plan (e.g. it spans multiple).","isRequired":true,"uniqueKey":"deductions.items.[INDEX].plan_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].plan_id","typeLabel":"string | null"},"reset":{"oneOf":[{"type":"object","description":"Reset configuration for the balance this deduction came from, or null if the balance doesn't reset.","required":["interval","resets_at"],"properties":{"interval":{"oneOf":[{"type":"string","description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","const":"multiple","isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.interval.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.interval","typeLabel":"enum\u003cstring> | any"},"resets_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.resets_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.resets_at","typeLabel":"number | null"},"interval_count":{"type":"number","description":"Number of intervals between resets (eg. 2 for bi-monthly).","uniqueKey":"deductions.items.[INDEX].reset.oneOf.0.interval_count","typeLabel":"number"}},"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.0","typeLabel":"object"},{"type":"null","description":"Reset configuration for the balance this deduction came from, or null if the balance doesn't reset.","isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"deductions.items.[INDEX].reset","typeLabel":"object | null"},"value":{"type":"number","description":"Amount deducted from this balance. Positive when usage was consumed, negative when credit was restored (e.g. a refund via negative track value).","isRequired":true,"uniqueKey":"deductions.items.[INDEX].value","typeLabel":"number"}},"required":["balance_id","feature_id","plan_id","reset","value"],"uniqueKey":"deductions.items.[INDEX]","typeLabel":"object"},"description":"Per-balance breakdown of what this event deducted. A single event can consume from multiple balance rows when credit systems or rollovers are involved; this surfaces each one so callers can build per-feature usage views without polling.","uniqueKey":"deductions","typeLabel":"object[]"}},"required":["customer_id","value","balance"],"examples":[{"customer_id":"cus_123","value":1,"balance":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"deductions":[{"balance_id":"cus_ent_3DdSDoyFmoA9Neecl2a2Gc507X2","feature_id":"messages","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":1}]}],"uniqueKey":"","typeLabel":"object"},"example":{"customer_id":"cus_123","value":1,"balance":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"deductions":[{"balance_id":"cus_ent_3DdSDoyFmoA9Neecl2a2Gc507X2","feature_id":"messages","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":1}]},"examples":{"Example":{"title":"Example","value":{"customer_id":"cus_123","value":1,"balance":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]},"deductions":[{"balance_id":"cus_ent_3DdSDoyFmoA9Neecl2a2Gc507X2","feature_id":"messages","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":1}]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"53876c4e-3cd5-4c7e-b82b-fb98671718cb":{"secretKey":{"type":"http","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"secretKey"}}},"servers":{"fe6701f7-be5c-40aa-b244-1a6f83c52f58":{"url":"https://api.useautumn.com","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"secretKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"secretKey","name":"Authorization"}],"title":"secretKey"}]},"originalFileLocation":"api/openapi.yml"},"subdomain":"autumn-b9b4c0fb","siteName":"Autumn","title":"Track Usage - Autumn","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T11:21:46.416Z","originalFileLocation":"api-reference/core/track.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=\"Records usage for a customer feature. Queued by default; pass async: false to apply it before responding with updated balances. Use this after an action happens to decrement usage, or send a negative value to credit balance back.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Autumn\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Track Usage - Autumn\">\u003cmeta data-mint-head property=\"og:description\" content=\"Records usage for a customer feature. Queued by default; pass async: false to apply it before responding with updated balances. Use this after an action happens to decrement usage, or send a negative value to credit balance back.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Autumn\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.useautumn.com/api-reference/core/track\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://autumn-b9b4c0fb.mintlify.app/_mintlify/api/og/v2?division=Balances\u0026amp;title=Track+Usage\u0026amp;description=Records+usage+for+a+customer+feature.+Queued+by+default%3B+pass+async%3A+false+to+apply+it+before+responding+with+updated+balances.%0A%0AUse+this+after+an+action+happen\u0026amp;theme=3bf7e6d15826cac91d0b643c\u0026amp;signature=c49221ee4b09c95f82e701689a3e6033640bf51c08914c1ce8c59ebe149c0d83\">\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=\"Track Usage - Autumn\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Records usage for a customer feature. Queued by default; pass async: false to apply it before responding with updated balances. Use this after an action happens to decrement usage, or send a negative value to credit balance back.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://autumn-b9b4c0fb.mintlify.app/_mintlify/api/og/v2?division=Balances\u0026amp;title=Track+Usage\u0026amp;description=Records+usage+for+a+customer+feature.+Queued+by+default%3B+pass+async%3A+false+to+apply+it+before+responding+with+updated+balances.%0A%0AUse+this+after+an+action+happen\u0026amp;theme=3bf7e6d15826cac91d0b643c\u0026amp;signature=c49221ee4b09c95f82e701689a3e6033640bf51c08914c1ce8c59ebe149c0d83\">\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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Autumn\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#8838ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.useautumn.com/api-reference/core/track\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/core/track.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.useautumn.com/#organization\",\"name\":\"Autumn\",\"url\":\"https://docs.useautumn.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/autumn-b9b4c0fb/BOEMpWFJsAdGcii1/assets/logo/autumn-dark.svg?fit=max\u0026auto=format\u0026n=BOEMpWFJsAdGcii1\u0026q=85\u0026s=720bd2227c435e77f2c91cbfcbccd274\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.useautumn.com#website\",\"name\":\"Autumn\",\"url\":\"https://docs.useautumn.com\",\"publisher\":{\"@id\":\"https://docs.useautumn.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.useautumn.com/api-reference/core/track#webpage\",\"url\":\"https://docs.useautumn.com/api-reference/core/track\",\"name\":\"Track Usage\",\"description\":\"Records usage for a customer feature. Queued by default; pass async: false to apply it before responding with updated balances. Use this after an action happens to decrement usage, or send a negative value to credit balance back.\",\"dateModified\":\"2026-10-26T11:21:46.416Z\",\"isPartOf\":{\"@id\":\"https://docs.useautumn.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.useautumn.com/api-reference/core/track#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.useautumn.com/api-reference/core/track#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Balances\",\"item\":\"https://docs.useautumn.com/api-reference/core/check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Track Usage\",\"item\":\"https://docs.useautumn.com/api-reference/core/track\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.useautumn.com/api-reference/core/track#apireference\",\"headline\":\"Track Usage\",\"name\":\"Track Usage\",\"description\":\"Records usage for a customer feature. Queued by default; pass async: false to apply it before responding with updated balances. Use this after an action happens to decrement usage, or send a negative value to credit balance back.\",\"url\":\"https://docs.useautumn.com/api-reference/core/track\",\"mainEntityOfPage\":{\"@id\":\"https://docs.useautumn.com/api-reference/core/track#webpage\"},\"dateModified\":\"2026-10-26T11:21:46.416Z\",\"publisher\":{\"@id\":\"https://docs.useautumn.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.useautumn.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Autumn\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Autumn","nav":{"global":{"anchors":[{"anchor":"Discord","icon":"discord","href":"https://discord.gg/STqxY92zuS"},{"anchor":"GitHub","icon":"github","href":"https://github.com/useautumn/autumn"},{"anchor":"Website","icon":"globe","href":"https://useautumn.com"}]},"tabs":[{"tab":"Documentation","icon":"folder-open","pages":[{"title":"Documentation","href":"/welcome"}]},{"tab":"Examples","icon":"graduation-cap","pages":[{"title":"Examples","href":"/examples/monetary-credits"}]},{"tab":"CLI","icon":"square-terminal","pages":[{"title":"CLI","href":"/cli/getting-started"}]},{"tab":"API Reference","icon":"display-code","groups":[{"group":"Billing","pages":[{"title":"Attach","openapi":"openapi POST /v1/billing.attach","href":"/api-reference/billing/attach"},{"title":"Update Subscription","openapi":"openapi POST /v1/billing.update","href":"/api-reference/billing/billingUpdate"},{"title":"Open Customer Portal","openapi":"openapi POST /v1/billing.open_customer_portal","href":"/api-reference/billing/openCustomerPortal"},{"title":"Setup Payment","openapi":"openapi POST /v1/billing.setup_payment","href":"/api-reference/billing/setupPayment"},{"title":"Multi Attach","openapi":"openapi POST /v1/billing.multi_attach","href":"/api-reference/billing/multiAttach"},{"title":"Multi Update","openapi":"openapi POST /v1/billing.multi_update","href":"/api-reference/billing/multiUpdate"},{"title":"Create Schedule","openapi":"openapi POST /v1/billing.create_schedule","href":"/api-reference/billing/createSchedule"},{"title":"Verify","openapi":"openapi POST /v1/billing.verify","href":"/api-reference/billing/verify"},{"title":"Import","openapi":"openapi POST /v1/billing.import","href":"/api-reference/billing/import"},{"group":"Previews","pages":[{"title":"Preview Attach","openapi":"openapi POST /v1/billing.preview_attach","href":"/api-reference/billing/previewAttach"},{"title":"Preview Update","openapi":"openapi POST /v1/billing.preview_update","href":"/api-reference/billing/previewUpdate"},{"title":"Preview Multi Attach","openapi":"openapi POST /v1/billing.preview_multi_attach","href":"/api-reference/billing/previewMultiAttach"},{"title":"Preview Multi Update","openapi":"openapi POST /v1/billing.preview_multi_update","href":"/api-reference/billing/previewMultiUpdate"}]},{"group":"Licenses","pages":[{"title":"Attach License","openapi":"openapi POST /v1/licenses.attach","href":"/api-reference/licenses/attachLicense"},{"title":"Release License","openapi":"openapi POST /v1/licenses.release","href":"/api-reference/licenses/releaseLicense"},{"title":"List Licenses","openapi":"openapi POST /v1/licenses.list","href":"/api-reference/licenses/listLicenses"},{"title":"List License Assignments","openapi":"openapi POST /v1/licenses.list_assignments","href":"/api-reference/licenses/listLicenseAssignments"}]}]},{"group":"Balances","pages":[{"title":"Check Permissions","openapi":"openapi POST /v1/balances.check","description":"Checks whether a customer currently has enough balance to use a feature.\n\nUse this to gate access before a feature action. Enable sendEvent when you want to check and consume balance atomically in one request.","href":"/api-reference/core/check"},{"title":"Track Usage","openapi":"openapi POST /v1/balances.track","href":"/api-reference/core/track"},{"title":"Batch Track Usage","openapi":"openapi POST /v1/balances.batch_track","description":"Enqueue up to 1000 usage events for asynchronous processing. Items are validated synchronously up front; validated items are then enqueued via SQS for background deduction by workers. The response returns 200 (or 202) immediately and does not include balance information. On partial enqueue failure (some items fail to enqueue, others succeed), the endpoint still returns 200 (or 202) and logs the failures server-side; clients should NOT retry, because retrying re-enqueues the already-succeeded items. A 503 is returned only when zero items were successfully enqueued (queue entirely unavailable) — that case is safe to retry.","href":"/api-reference/core/batchTrack"},{"title":"List Balances","openapi":"openapi POST /v1/balances.list","href":"/api-reference/balances/listBalances"},{"title":"Create Balance","openapi":"openapi POST /v1/balances.create","href":"/api-reference/balances/createBalance"},{"title":"Update Balance","openapi":"openapi POST /v1/balances.update","href":"/api-reference/balances/updateBalance"},{"title":"Delete Balance","openapi":"openapi POST /v1/balances.delete","href":"/api-reference/balances/deleteBalance"},{"title":"Finalize Lock","openapi":"openapi POST /v1/balances.finalize","href":"/api-reference/balances/finalizeLock"}]},{"group":"Customers","pages":[{"title":"Get or Create Customer","openapi":"openapi POST /v1/customers.get_or_create","href":"/api-reference/customers/getOrCreateCustomer"},{"title":"Get Customer","openapi":"openapi POST /v1/customers.get","href":"/api-reference/customers/getCustomer"},{"title":"List Customers","openapi":"openapi POST /v1/customers.list","href":"/api-reference/customers/listCustomers"},{"title":"List Subscriptions","openapi":"openapi POST /v1/subscriptions.list","href":"/api-reference/customers/listSubscriptions"},{"title":"List Purchases","openapi":"openapi POST /v1/purchases.list","href":"/api-reference/customers/listPurchases"},{"title":"Update Customer","openapi":"openapi POST /v1/customers.update","href":"/api-reference/customers/updateCustomer"},{"title":"Delete Customer","openapi":"openapi POST /v1/customers.delete","href":"/api-reference/customers/deleteCustomer"}]},{"group":"Invoices","pages":[{"title":"List Invoices","openapi":"openapi POST /v1/invoices.list","href":"/api-reference/invoices/listInvoices"},{"title":"Create Invoice","openapi":"openapi POST /v1/invoices.create","href":"/api-reference/invoices/createInvoice"},{"title":"Mark Invoice as Paid","openapi":"openapi POST /v1/invoices.pay","href":"/api-reference/invoices/payInvoice"},{"title":"Void Invoice","openapi":"openapi POST /v1/invoices.void","href":"/api-reference/invoices/voidInvoice"},{"title":"Reissue Invoice","openapi":"openapi POST /v1/invoices.reissue","href":"/api-reference/invoices/reissueInvoice"},{"title":"Issue Credit Note","openapi":"openapi POST /v1/invoices.issue_credit_note","href":"/api-reference/invoices/issueCreditNote"},{"title":"Backfill Invoices","openapi":"openapi POST /v1/invoices.insert","href":"/api-reference/invoices/insertInvoices"},{"title":"List Invoice Templates","openapi":"openapi POST /v1/invoices.listTemplates","href":"/api-reference/invoices/listInvoiceTemplates"}]},{"group":"Authorization","pages":[{"title":"Mint","openapi":"openapi POST /v1/keys.mint","href":"/api-reference/keys/mintKey"},{"title":"Refresh","openapi":"openapi POST /v1/keys.refresh","href":"/api-reference/keys/refreshKey"},{"title":"Revoke","openapi":"openapi POST /v1/keys.revoke","href":"/api-reference/keys/revokeKey"}]},{"group":"Events","pages":[{"title":"List Events","openapi":"openapi POST /v1/events.list","href":"/api-reference/events/listEvents"},{"title":"Aggregate Events","openapi":"openapi POST /v1/events.aggregate","href":"/api-reference/events/aggregateEvents"}]},{"group":"Logs","pages":[{"title":"Search Request Logs","openapi":"openapi POST /v1/logs.search","href":"/api-reference/logs/searchRequestLogs"}]},{"group":"Entities","pages":[{"title":"Get Entity","openapi":"openapi POST /v1/entities.get","href":"/api-reference/entities/getEntity"},{"title":"List Entities","openapi":"openapi POST /v1/entities.list","href":"/api-reference/entities/listEntities"},{"title":"Create Entity","openapi":"openapi POST /v1/entities.create","href":"/api-reference/entities/createEntity"},{"title":"Update Entity","openapi":"openapi POST /v1/entities.update","href":"/api-reference/entities/updateEntity"},{"title":"Delete Entity","openapi":"openapi POST /v1/entities.delete","href":"/api-reference/entities/deleteEntity"}]},{"group":"Accounts","pages":[{"title":"Get Account","openapi":"openapi POST /v1/accounts.get","href":"/api-reference/accounts/getAccount"},{"title":"Update Account","openapi":"openapi POST /v1/accounts.update","href":"/api-reference/accounts/updateAccount"}]},{"group":"Plans","pages":[{"title":"Get a plan","openapi":"openapi POST /v1/plans.get","href":"/api-reference/plans/getPlan"},{"title":"List all plans","openapi":"openapi POST /v1/plans.list","href":"/api-reference/plans/listPlans"},{"title":"Create a plan","openapi":"openapi POST /v1/plans.create","href":"/api-reference/plans/createPlan"},{"title":"Update a plan","openapi":"openapi POST /v1/plans.update","href":"/api-reference/plans/updatePlan"},{"title":"Delete a plan","openapi":"openapi POST /v1/plans.delete","href":"/api-reference/plans/deletePlan"}]},{"group":"Features","pages":[{"title":"Get Feature","openapi":"openapi POST /v1/features.get","href":"/api-reference/features/getFeature"},{"title":"List Features","openapi":"openapi POST /v1/features.list","href":"/api-reference/features/listFeatures"},{"title":"Create Feature","openapi":"openapi POST /v1/features.create","href":"/api-reference/features/createFeature"},{"title":"Update Feature","openapi":"openapi POST /v1/features.update","href":"/api-reference/features/updateFeature"},{"title":"Delete Feature","openapi":"openapi POST /v1/features.delete","href":"/api-reference/features/deleteFeature"}]},{"group":"Rewards \u0026 Referrals","pages":[{"title":"Create Referral Program","openapi":"openapi POST /v1/referral_programs.create","href":"/api-reference/referrals/createReferralProgram"},{"title":"List Referral Programs","openapi":"openapi POST /v1/referral_programs.list","href":"/api-reference/referrals/listReferralPrograms"},{"title":"Get Referral Program","openapi":"openapi POST /v1/referral_programs.get","href":"/api-reference/referrals/getReferralProgram"},{"title":"Update Referral Program","openapi":"openapi POST /v1/referral_programs.update","href":"/api-reference/referrals/updateReferralProgram"},{"title":"Delete Referral Program","openapi":"openapi POST /v1/referral_programs.delete","href":"/api-reference/referrals/deleteReferralProgram"},{"title":"Create Referral Code","openapi":"openapi POST /v1/referrals.create_code","href":"/api-reference/referrals/createReferralCode"},{"title":"Redeem Referral Code","openapi":"openapi POST /v1/referrals.redeem_code","href":"/api-reference/referrals/redeemReferralCode"},{"title":"Create Reward","openapi":"openapi POST /v1/rewards.create","href":"/api-reference/rewards/createReward"},{"title":"List Rewards","openapi":"openapi POST /v1/rewards.list","href":"/api-reference/rewards/listRewards"},{"title":"Get Reward","openapi":"openapi POST /v1/rewards.get","href":"/api-reference/rewards/getReward"},{"title":"Update Reward","openapi":"openapi POST /v1/rewards.update","href":"/api-reference/rewards/updateReward"},{"title":"Delete Reward","openapi":"openapi POST /v1/rewards.delete","href":"/api-reference/rewards/deleteReward"},{"title":"Redeem Reward Code","openapi":"openapi POST /v1/rewards.redeem","href":"/api-reference/rewards/redeemRewardCode"}]},{"group":"Webhooks","pages":[{"title":"Get Webhook","openapi":"openapi POST /v1/webhooks.get","href":"/api-reference/webhooks/getWebhook"},{"title":"List Webhooks","openapi":"openapi POST /v1/webhooks.list","href":"/api-reference/webhooks/listWebhooks"},{"title":"Create Webhook","openapi":"openapi POST /v1/webhooks.create","href":"/api-reference/webhooks/createWebhook"},{"title":"Update Webhook","openapi":"openapi POST /v1/webhooks.update","href":"/api-reference/webhooks/updateWebhook"},{"title":"Delete Webhook","openapi":"openapi POST /v1/webhooks.delete","href":"/api-reference/webhooks/deleteWebhook"},{"title":"Sync Webhooks","openapi":"openapi POST /v1/webhooks.sync","href":"/api-reference/webhooks/syncWebhooks"},{"group":"Previews","pages":[{"title":"Preview Sync Webhooks","openapi":"openapi POST /v1/webhooks.preview_sync","href":"/api-reference/webhooks/previewSyncWebhooks"}]}]},{"group":"Webhook Events","pages":[{"group":"Balances","pages":[{"title":"Usage Alert Triggered","openapi":"api/openapi.yml webhook balances.usage_alert_triggered","href":"/api-reference/webhooks/balancesUsageAlertTriggered"},{"title":"Limit Reached","openapi":"api/openapi.yml webhook balances.limit_reached","href":"/api-reference/webhooks/balancesLimitReached"}]},{"group":"Billing","pages":[{"title":"Auto Top-Up Failed","openapi":"api/openapi.yml webhook billing.auto_topup_failed","href":"/api-reference/webhooks/billingAutoTopupFailed"},{"title":"Auto Top-Up Succeeded","openapi":"api/openapi.yml webhook billing.auto_topup_succeeded","href":"/api-reference/webhooks/billingAutoTopupSucceeded"},{"title":"Plans Updated","openapi":"api/openapi.yml webhook billing.updated","href":"/api-reference/webhooks/billingUpdated"}]},{"group":"Invoice","pages":[{"title":"Invoice Finalized","openapi":"api/openapi.yml webhook invoice.finalized","href":"/api-reference/webhooks/invoiceFinalized"}]},{"group":"Vercel","pages":[{"title":"Resource Deleted","openapi":"api/openapi.yml webhook vercel.resources.deleted","href":"/api-reference/webhooks/vercelResourcesDeleted"},{"title":"Resource Provisioned","openapi":"api/openapi.yml webhook vercel.resources.provisioned","href":"/api-reference/webhooks/vercelResourcesProvisioned"},{"title":"Rotate Secrets","openapi":"api/openapi.yml webhook vercel.resources.rotate_secrets","href":"/api-reference/webhooks/vercelResourcesRotateSecrets"},{"title":"Webhook Event","openapi":"api/openapi.yml webhook vercel.webhooks.event","href":"/api-reference/webhooks/vercelWebhooksEvent"}]}]},{"group":"Platform (Beta)","pages":[{"title":"Overview","href":"/api-reference/platform/overview"},{"title":"Create Organization","openapi":"platform POST /platform/organizations","href":"/api-reference/platform/create-organization"},{"title":"Generate Stripe OAuth URL","openapi":"platform POST /platform/oauth_url","href":"/api-reference/platform/oauth-url"},{"title":"Get Stripe Connection","openapi":"openapi POST /v1/platform.get_stripe_connection","href":"/api-reference/platform/getStripeConnection"},{"title":"Disconnect Stripe","openapi":"openapi POST /v1/platform.disconnect_stripe","href":"/api-reference/platform/disconnectStripe"},{"title":"Update Connected Stripe Account","openapi":"platform POST /platform/organizations/stripe","href":"/api-reference/platform/update-stripe"},{"title":"List Users","openapi":"platform GET /platform/users","href":"/api-reference/platform/list-users"},{"title":"List Organizations","openapi":"platform GET /platform/organizations","href":"/api-reference/platform/list-orgs"}]}]},{"tab":"Changelog","icon":"list-ol","pages":[{"title":"Changelog","href":"/changelog/changelog"}]}]},"title":"Track Usage - Autumn","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}