Records AI token usage for a customer and returns the updated AI credit balance.
Use this after an LLM request when you have input and output token counts. Autumn converts token usage to a dollar amount using the configured model pricing and markup, then tracks that value against the customer’s AI credit system.
POST
/
v1
/
balances.track_tokens
Typescript (SDK)
import { Autumn } from 'autumn-js'
const autumn = new Autumn()
const result = await autumn.trackTokens({
customerId: "cus_123",
featureId: "ai_credits",
modelId: "anthropic/claude-sonnet-4-20250514",
inputTokens: 1000,
outputTokens: 500,
});
from autumn_sdk import Autumn
autumn = Autumn(secret_key="am_sk_test...")
res = autumn.track_tokens(
customer_id="cus_123",
model_id="anthropic/claude-sonnet-4-20250514",
input_tokens=1000,
output_tokens=500,
feature_id="ai_credits",
)
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
x-api-version
string
default:2.6.0
required
Body
application/json
customer_id
string
required
The ID of the customer.
model_id
string
required
The AI model as '[provider]/[model]' (e.g. 'anthropic/claude-opus-4-8', 'openrouter/openai/gpt-4o'). The provider is the first path segment and must match a provider + model key in models.dev.
input_tokens
integer
required
Number of non-cached text input tokens consumed. Exclusive of cache and audio token pools.
Required range: 0 <= x <= 9007199254740991
output_tokens
integer
required
Number of text output tokens consumed. Exclusive of the reasoning and audio output pools.
Required range: 0 <= x <= 9007199254740991
entity_id
string
The ID of the entity for entity-scoped balances.
feature_id
string
The ID of the AI credit system feature. Auto-detected from the customer's entitlements if omitted — only required when a customer has multiple AI credit systems.
cache_read_tokens
integer
Number of cached input tokens read.
Required range: 0 <= x <= 9007199254740991
cache_write_tokens
integer
Number of input tokens written to the cache.
Required range: 0 <= x <= 9007199254740991
audio_input_tokens
integer
Number of audio input tokens consumed.
Required range: 0 <= x <= 9007199254740991
audio_output_tokens
integer
Number of audio output tokens generated.
Required range: 0 <= x <= 9007199254740991
reasoning_tokens
integer
Number of reasoning tokens generated.
Required range: 0 <= x <= 9007199254740991
properties
object
Additional properties to attach to this usage event.
Show child attributes
timestamp
integer
Unix timestamp in milliseconds to use for the usage event. Defaults to the current time.
Required range: 0 < x <= 9007199254740991
overage_behavior
enum<string>
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.
Available options:
cap,
overflow
async
boolean
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.
Response
OK
customer_id
string
required
The ID of the customer whose usage was tracked.
value
number
required
The amount of usage that was recorded.
balance
object | null
required
The updated balance for the tracked feature. Null if tracking by event_name that affects multiple features.
The ID of the entity, if entity-scoped tracking was performed.
event_name
string
The event name that was tracked, if event_name was used instead of feature_id.
balances
object
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.
Show child attributes
deductions
object[]
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","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":"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":""},"feedback":{"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af767b5fdfd9a78271c801a","clientVersion":"0.0.4131","searchFilterCounts":[{"language":"default","tag":"API Reference","count":107},{"language":"default","tag":"Documentation","count":61},{"language":"default","tag":"Billing","count":21},{"language":"default","tag":"Configure Pricing","count":19},{"language":"default","tag":"Lakehouse","count":18},{"language":"default","tag":"Customers","count":16},{"language":"default","tag":"Rewards \u0026 Referrals","count":13},{"language":"default","tag":"Additional Resources","count":13},{"language":"default","tag":"Balances","count":12},{"language":"default","tag":"Webhook Events","count":10}],"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":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"language-tabs.css","content":"[data-testid=\"code-sample-language-select\"],.code-sample-language-select,[aria-haspopup=\"listbox\"]{}"},{"filePath":"style.css","content":".prose>.api-section{display:none!important}"}],"page":{"pagePath":"api-reference/core/trackTokens","slug":"/api-reference/core/trackTokens","pageMetadata":{"title":"Track Tokens","openapi":"openapi POST /v1/balances.track_tokens","description":"Records AI token usage for a customer and returns the updated AI credit balance.\n\nUse this after an LLM request when you have input and output token counts. Autumn converts token usage to a dollar amount using the configured model pricing and markup, then tracks that value against the customer's AI credit system.","href":"/api-reference/core/trackTokens"},"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 AI token usage for a customer and returns the updated AI credit balance.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Use this after an LLM request when you have input and output token counts. Autumn converts token usage to a dollar amount using the configured model pricing and markup, then tracks that value against the customer’s AI credit system.\"\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`,..._provideComponents(),...props.components},{Expandable,Heading,_MdxComponentBoundary}=_components;if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_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:`entity_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the entity for entity-scoped balances.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the AI credit system feature. Auto-detected from the customer’s entitlements if omitted — only required when a customer has multiple AI credit systems.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`model_id`,type:`string`,required:true,children:_jsx(_components.p,{children:`The AI model as ‘[provider]/[model]’ (e.g. ‘anthropic/claude-opus-4-8’, ‘openrouter/openai/gpt-4o’). The provider is the first path segment and must match a provider + model key in models.dev.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`input_tokens`,type:`integer`,required:true,children:_jsx(_components.p,{children:`Number of non-cached text input tokens consumed. Exclusive of cache and audio token pools.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`output_tokens`,type:`integer`,required:true,children:_jsx(_components.p,{children:`Number of text output tokens consumed. Exclusive of the reasoning and audio output pools.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`cache_read_tokens`,type:`integer`,children:_jsx(_components.p,{children:`Number of cached input tokens read.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`cache_write_tokens`,type:`integer`,children:_jsx(_components.p,{children:`Number of input tokens written to the cache.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`audio_input_tokens`,type:`integer`,children:_jsx(_components.p,{children:`Number of audio input tokens consumed.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`audio_output_tokens`,type:`integer`,children:_jsx(_components.p,{children:`Number of audio output tokens generated.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`reasoning_tokens`,type:`integer`,children:_jsx(_components.p,{children:`Number of reasoning tokens generated.`})})}),`\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:`id`,type:`string`,children:_jsx(_components.p,{children:`ID of this rollover. Matches balance_id in track and events.list deductions that drew from it.`})})}),_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:`id`,type:`string`,children:_jsx(_components.p,{children:`ID of this rollover. Matches balance_id in track and events.list deductions that drew from it.`})})}),_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 Tokens","openapi":"openapi POST /v1/balances.track_tokens","description":"Records AI token usage for a customer and returns the updated AI credit balance.\n\nUse this after an LLM request when you have input and output token counts. Autumn converts token usage to a dollar amount using the configured model pricing and markup, then tracks that value against the customer's AI credit system.","href":"/api-reference/core/trackTokens"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[158,4333,")=>null;const DynamicResponseField=()=>null;const DynamicParamField=()=>null;fun"],[4401,4500,"pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,ResponseExample,_MdxComponentBoundary}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true)"],[4609,4624,"ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!_MdxComponentBo"],[55883,56373,",`\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:`0.006`}),_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:`\"ai_credits\"`}),_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:`10`}),_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:`9.994`}),_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:`0.006`}),_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:`\"ai_credits\"`}),_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:`0.006`})]}),`\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":"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\">0.006\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\">\"ai_credits\"\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\">10\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\">9.994\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\">0.006\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\">\"ai_credits\"\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\">0.006\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":"trackTokens","description":"Records AI token usage for a customer and returns the updated AI credit balance.\n\nUse this after an LLM request when you have input and output token counts. Autumn converts token usage to a dollar amount using the configured model pricing and markup, then tracks that value against the customer's AI credit system.","requestBody":"e6844e3c-8b78-4e2c-9549-104b47424557","responses":{"200":"6966645d-1335-450f-ac4b-9bbff4ea43bb","202":"58958174-323b-439b-a2f7-4b17241b969e"},"x-speakeasy-name-override":"trackTokens","parameters":["1b6e070c-a611-4754-8c46-b42825f18166"],"x-codeSamples":[{"lang":"typescript","label":"Typescript (SDK)","source":"import { Autumn } from 'autumn-js'\n\nconst autumn = new Autumn()\n\nconst result = await autumn.trackTokens({\n customerId: \"cus_123\",\n featureId: \"ai_credits\",\n modelId: \"anthropic/claude-sonnet-4-20250514\",\n inputTokens: 1000,\n outputTokens: 500,\n});"},{"lang":"python","label":"Python (SDK)","source":"from autumn_sdk import Autumn\n\nautumn = Autumn(secret_key=\"am_sk_test...\")\n\nres = autumn.track_tokens(\n customer_id=\"cus_123\",\n model_id=\"anthropic/claude-sonnet-4-20250514\",\n input_tokens=1000,\n output_tokens=500,\n feature_id=\"ai_credits\",\n)"}],"method":"post","type":"path","servers":["b9fee243-0982-4b51-8fd6-8c1f2e4bbf8c"],"security":["9f880561-074d-4109-814c-8263d4520527"],"path":"/v1/balances.track_tokens","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.trackTokens({\n customerId: \"cus_123\",\n featureId: \"ai_credits\",\n modelId: \"anthropic/claude-sonnet-4-20250514\",\n inputTokens: 1000,\n outputTokens: 500,\n});"},{"label":"Python (SDK)","lang":"python","source":"from autumn_sdk import Autumn\n\nautumn = Autumn(secret_key=\"am_sk_test...\")\n\nres = autumn.track_tokens(\n customer_id=\"cus_123\",\n model_id=\"anthropic/claude-sonnet-4-20250514\",\n input_tokens=1000,\n output_tokens=500,\n feature_id=\"ai_credits\",\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":"0.006"}},{"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":"\"ai_credits\""}},{"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":"10"}},{"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":"9.994"}},{"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":"0.006"}},{"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":"\"ai_credits\""}},{"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":"0.006"}}]}},"\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":{"1b6e070c-a611-4754-8c46-b42825f18166":{"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"},"model_id":{"type":"string","description":"The AI model as '[provider]/[model]' (e.g. 'anthropic/claude-opus-4-8', 'openrouter/openai/gpt-4o'). The provider is the first path segment and must match a provider + model key in models.dev.","isRequired":true,"uniqueKey":"model_id","typeLabel":"string"},"input_tokens":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of non-cached text input tokens consumed. Exclusive of cache and audio token pools.","isRequired":true,"uniqueKey":"input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of text output tokens consumed. Exclusive of the reasoning and audio output pools.","isRequired":true,"uniqueKey":"output_tokens","typeLabel":"integer"},"entity_id":{"type":"string","description":"The ID of the entity for entity-scoped balances.","uniqueKey":"entity_id","typeLabel":"string"},"feature_id":{"type":"string","description":"The ID of the AI credit system feature. Auto-detected from the customer's entitlements if omitted — only required when a customer has multiple AI credit systems.","uniqueKey":"feature_id","typeLabel":"string"},"cache_read_tokens":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of cached input tokens read.","uniqueKey":"cache_read_tokens","typeLabel":"integer"},"cache_write_tokens":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of input tokens written to the cache.","uniqueKey":"cache_write_tokens","typeLabel":"integer"},"audio_input_tokens":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of audio input tokens consumed.","uniqueKey":"audio_input_tokens","typeLabel":"integer"},"audio_output_tokens":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of audio output tokens generated.","uniqueKey":"audio_output_tokens","typeLabel":"integer"},"reasoning_tokens":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of reasoning tokens generated.","uniqueKey":"reasoning_tokens","typeLabel":"integer"},"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","model_id","input_tokens","output_tokens"],"title":"TrackTokensParams","examples":[{"customer_id":"cus_123","feature_id":"ai_credits","model_id":"anthropic/claude-sonnet-4-20250514","input_tokens":1000,"output_tokens":500}],"uniqueKey":"","typeLabel":"TrackTokensParams · object"},"example":{"customer_id":"cus_123","feature_id":"ai_credits","model_id":"anthropic/claude-sonnet-4-20250514","input_tokens":1000,"output_tokens":500},"examples":{"Example":{"title":"Example","value":{"customer_id":"cus_123","feature_id":"ai_credits","model_id":"anthropic/claude-sonnet-4-20250514","input_tokens":1000,"output_tokens":500}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"6966645d-1335-450f-ac4b-9bbff4ea43bb":{"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":{"id":{"type":"string","description":"ID of this rollover. Matches balance_id in track and events.list deductions that drew from it.","isRequired":true,"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX].id","typeLabel":"string"},"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":["id","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":{"id":{"type":"string","description":"ID of this rollover. Matches balance_id in track and events.list deductions that drew from it.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX].id","typeLabel":"string"},"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":["id","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":0.006,"balance":{"feature_id":"ai_credits","granted":10,"remaining":9.994,"usage":0.006,"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":"ai_credits","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":0.006}]}],"uniqueKey":"","typeLabel":"object"},"example":{"customer_id":"cus_123","value":0.006,"balance":{"feature_id":"ai_credits","granted":10,"remaining":9.994,"usage":0.006,"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":"ai_credits","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":0.006}]},"examples":{"Example":{"title":"Example","value":{"customer_id":"cus_123","value":0.006,"balance":{"feature_id":"ai_credits","granted":10,"remaining":9.994,"usage":0.006,"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":"ai_credits","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":0.006}]}}},"exampleType":"examples"}},"exampleType":"examples"},"58958174-323b-439b-a2f7-4b17241b969e":{"description":"Accepted. The token usage 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":{"id":{"type":"string","description":"ID of this rollover. Matches balance_id in track and events.list deductions that drew from it.","isRequired":true,"uniqueKey":"balance.oneOf.0.rollovers.items.[INDEX].id","typeLabel":"string"},"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":["id","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":{"id":{"type":"string","description":"ID of this rollover. Matches balance_id in track and events.list deductions that drew from it.","isRequired":true,"uniqueKey":"balances.additionalProperties.oneOf.0.rollovers.items.[INDEX].id","typeLabel":"string"},"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":["id","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":0.006,"balance":{"feature_id":"ai_credits","granted":10,"remaining":9.994,"usage":0.006,"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":"ai_credits","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":0.006}]}],"uniqueKey":"","typeLabel":"object"},"example":{"customer_id":"cus_123","value":0.006,"balance":{"feature_id":"ai_credits","granted":10,"remaining":9.994,"usage":0.006,"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":"ai_credits","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":0.006}]},"examples":{"Example":{"title":"Example","value":{"customer_id":"cus_123","value":0.006,"balance":{"feature_id":"ai_credits","granted":10,"remaining":9.994,"usage":0.006,"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":"ai_credits","plan_id":"pro","reset":{"interval":"month","resets_at":1781288736881},"value":0.006}]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"9f880561-074d-4109-814c-8263d4520527":{"secretKey":{"type":"http","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"secretKey"}}},"servers":{"b9fee243-0982-4b51-8fd6-8c1f2e4bbf8c":{"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 Tokens - Autumn","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-13T19:30:20.402Z","originalFileLocation":"api-reference/core/trackTokens.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 AI token usage for a customer and returns the updated AI credit balance. Use this after an LLM request when you have input and output token counts. Autumn converts token usage to a dollar amount using the configured model pricing and markup, then tracks that value against the customer\u0026#x27;s AI credit system.\">\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 Tokens - Autumn\">\u003cmeta data-mint-head property=\"og:description\" content=\"Records AI token usage for a customer and returns the updated AI credit balance. Use this after an LLM request when you have input and output token counts. Autumn converts token usage to a dollar amount using the configured model pricing and markup, then tracks that value against the customer\u0026#x27;s AI credit system.\">\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/trackTokens\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://autumn-b9b4c0fb.mintlify.site/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Track+Tokens\u0026amp;description=Records+AI+token+usage+for+a+customer+and+returns+the+updated+AI+credit+balance.%0A%0AUse+this+after+an+LLM+request+when+you+have+input+and+output+token+counts.+Aut\u0026amp;theme=b0d9fe0672df3d1498e7d4e9\u0026amp;signature=7c8694b072adcf1698dc6665774cb598f1c41579f2bce626a91bd1e1a3885c5f\">\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 Tokens - Autumn\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Records AI token usage for a customer and returns the updated AI credit balance. Use this after an LLM request when you have input and output token counts. Autumn converts token usage to a dollar amount using the configured model pricing and markup, then tracks that value against the customer\u0026#x27;s AI credit system.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://autumn-b9b4c0fb.mintlify.site/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Track+Tokens\u0026amp;description=Records+AI+token+usage+for+a+customer+and+returns+the+updated+AI+credit+balance.%0A%0AUse+this+after+an+LLM+request+when+you+have+input+and+output+token+counts.+Aut\u0026amp;theme=b0d9fe0672df3d1498e7d4e9\u0026amp;signature=7c8694b072adcf1698dc6665774cb598f1c41579f2bce626a91bd1e1a3885c5f\">\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/trackTokens\">\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/trackTokens.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Autumn\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Autumn\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/core/trackTokens.md","siteName":"Autumn","nav":{"global":{"anchors":[{"anchor":"Discord","icon":"discord","href":"https://discord.gg/STqxY92zuS"},{"anchor":"Website","icon":"globe","href":"https://useautumn.com"}]},"tabs":[{"tab":"Documentation","icon":"folder-open","groups":[{"group":" ","pages":[{"title":"Welcome to Autumn","sidebarTitle":"Introduction","href":"/welcome"},{"group":"Concepts","pages":[{"title":"How It Works","sidebarTitle":"Overview","href":"/documentation/concepts/overview"},{"title":"Plans","href":"/documentation/concepts/plans"},{"title":"Features","href":"/documentation/concepts/features"},{"title":"Plan Items","href":"/documentation/concepts/plan-items"},{"title":"Subscriptions","href":"/documentation/concepts/subscriptions"},{"title":"Balances","href":"/documentation/concepts/balances"},{"title":"Stripe Sync","href":"/documentation/concepts/stripe"}]},{"title":"Migrating to Autumn","href":"/documentation/getting-started/migration"},{"title":"MCP Server","sidebarTitle":"Agents \u0026 MCP","href":"/documentation/mcp"}]},{"group":"Getting Started","pages":[{"title":"Setup and payments","href":"/documentation/getting-started/setup"},{"title":"Checking and tracking","href":"/documentation/getting-started/gating"},{"title":"Build your billing page","href":"/documentation/getting-started/display-billing"},{"title":"Deploy to production","href":"/documentation/getting-started/deploy"}]},{"group":"Configure Pricing","pages":[{"title":"Recurring Plans","href":"/documentation/modelling-pricing/recurring"},{"title":"Plan Variants","href":"/documentation/modelling-pricing/plan-variants"},{"title":"One-Off Purchases","href":"/documentation/modelling-pricing/one-off-purchases"},{"title":"Free Plans","href":"/documentation/modelling-pricing/free-plans"},{"title":"Credit Systems","href":"/documentation/modelling-pricing/credit-systems"},{"title":"Dimensions \u0026 Rate Cards","href":"/documentation/modelling-pricing/dimensions"},{"title":"Prepaid Pricing","href":"/documentation/modelling-pricing/prepaid-pricing"},{"title":"Usage-Based Pricing","href":"/documentation/modelling-pricing/usage-based-pricing"},{"title":"Per-Unit Pricing","href":"/documentation/modelling-pricing/per-unit-pricing"},{"title":"Rollovers","href":"/documentation/modelling-pricing/rollovers"},{"title":"Proration","href":"/documentation/modelling-pricing/proration"},{"title":"Trials","href":"/documentation/modelling-pricing/trials"},{"title":"Auto Top-Ups","href":"/documentation/modelling-pricing/auto-top-ups"},{"title":"Spend Limits \u0026 Usage Alerts","href":"/documentation/modelling-pricing/spend-limits"},{"title":"Add-Ons","href":"/documentation/modelling-pricing/add-ons"},{"title":"Graduated Pricing","href":"/documentation/modelling-pricing/graduated-pricing"},{"title":"Volume-Based Tiers","href":"/documentation/modelling-pricing/volume-based-tiers"},{"title":"Entity Plans","href":"/documentation/modelling-pricing/entity-plans"},{"title":"Rewards and Referrals","href":"/documentation/modelling-pricing/rewards"}]},{"group":"Billing \u0026 Subscriptions","pages":[{"title":"Payment Flow","href":"/documentation/customers/payment-flow"},{"title":"Subscription Lifecycle","href":"/documentation/customers/subscription-lifecycle"},{"title":"Updating Subscriptions","href":"/documentation/customers/updating-subscriptions"},{"title":"Tax","href":"/documentation/customers/tax"},{"title":"Custom Plans","href":"/documentation/customers/custom-plans"},{"title":"Versioning Plans","href":"/documentation/customers/versioning"},{"title":"Billing Reliability","href":"/documentation/customers/edge-cases"}]},{"group":"Customers","pages":[{"title":"Creating Customers","href":"/documentation/customers/creating-customers"},{"title":"Managing Customers","href":"/documentation/customers/managing-customers"},{"title":"Checking access","href":"/documentation/customers/check"},{"title":"Tracking usage","href":"/documentation/customers/tracking-usage"},{"title":"Balance Locking","href":"/documentation/customers/balance-locking"},{"title":"Managing Balances","href":"/documentation/customers/managing-balances"},{"title":"Billing Controls","href":"/documentation/customers/billing-controls"},{"title":"Entities","href":"/documentation/customers/feature-entities"}]},{"group":"Additional Resources","pages":[{"title":"Webhooks","href":"/documentation/webhooks"},{"title":"Slack and Discord Notifications","href":"/documentation/slack-discord-notifications"},{"title":"Approval Rules","href":"/documentation/approval-rules"},{"title":"Fail-Open Defaults","href":"/documentation/fail-open"},{"title":"Edge cache","href":"/documentation/edge-cache"},{"title":"Migrating to autumn-js 1.6","href":"/documentation/autumn-js-1-6"},{"title":"Rate Limits","href":"/documentation/rate-limits"},{"title":"Query your data with SQL","sidebarTitle":"Query with SQL","href":"/documentation/query-with-sql"},{"title":"Query events with SQL","sidebarTitle":"Query events with SQL","href":"/documentation/query-events-with-sql"},{"title":"Vercel AI SDK","href":"/documentation/external-providers/ai-sdk"},{"title":"OpenRouter","href":"/documentation/external-providers/openrouter"},{"title":"RevenueCat","href":"/documentation/external-providers/revenuecat"},{"title":"Vercel Marketplace","href":"/documentation/external-providers/vercel-marketplace"}]}]},{"tab":"Examples","icon":"graduation-cap","pages":[{"title":"Monetary credits","href":"/examples/monetary-credits"},{"title":"One-time top ups","href":"/examples/prepaid"},{"title":"Per-seat pricing","href":"/examples/per-seat"},{"title":"Pay-as-you-go overages","href":"/examples/pay-as-you-go-overages"},{"title":"Entity-level balances","href":"/examples/entity-balances"},{"title":"Trial - card required","href":"/examples/trial-card-required"},{"title":"Trial - card not required","href":"/examples/trial-card-not-required"}]},{"tab":"CLI","icon":"square-terminal","pages":[{"title":"Getting started","href":"/cli/getting-started"},{"title":"Configuration reference","href":"/cli/config"},{"title":"Command reference","href":"/cli/commands"}]},{"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":"Transfer Plan","openapi":"openapi POST /v1/billing.transfer","href":"/api-reference/billing/billingTransfer"},{"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","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","href":"/api-reference/core/batchTrack"},{"title":"List Balances","openapi":"openapi POST /v1/balances.list","href":"/api-reference/balances/listBalances"},{"title":"List Balance Ledger","openapi":"openapi POST /v1/balances.list_ledger","href":"/api-reference/balances/listBalanceLedger"},{"title":"Aggregate Balance Ledger","openapi":"openapi POST /v1/balances.aggregate_ledger","href":"/api-reference/balances/aggregateBalanceLedger"},{"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"},{"title":"Swap Customer IDs","openapi":"openapi POST /v1/customers.swap","href":"/api-reference/customers/swapCustomers"}]},{"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":"Analytics","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"},{"title":"Query events in SQL","openapi":"openapi POST /v1/events.query","href":"/api-reference/events/queryEvents"},{"title":"Query data in SQL","openapi":"openapi POST /v1/analytics.query","href":"/api-reference/analytics/queryAnalytics"}]},{"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":"Lakehouse","icon":"database","dropdowns":[{"dropdown":"v2.6 (latest)","icon":"database","groups":[{"group":"Lakehouse","pages":[{"title":"Lakehouse Overview","sidebarTitle":"Overview","href":"/documentation/lakehouse/v2-6/overview"},{"title":"Connecting","sidebarTitle":"Connecting","href":"/documentation/lakehouse/v2-6/connecting"},{"title":"Schema Reference","sidebarTitle":"Schema Reference","href":"/documentation/lakehouse/v2-6/schema"},{"title":"Migrating from v2.3","sidebarTitle":"Migrating from v2.3","href":"/documentation/lakehouse/v2-6/migrating-from-v2-3"}]},{"group":"Guides","pages":[{"title":"Working with balances","sidebarTitle":"Working with balances","href":"/documentation/lakehouse/v2-6/balances"},{"title":"Working with invoices","sidebarTitle":"Working with invoices","href":"/documentation/lakehouse/v2-6/working-with-invoices"},{"title":"Querying","sidebarTitle":"Querying","href":"/documentation/lakehouse/v2-6/querying"},{"title":"Rebuild a customer or entity","sidebarTitle":"Rebuild a customer or entity","href":"/documentation/lakehouse/v2-6/rebuild-customer-and-entity"}]}]},{"dropdown":"v2.3 (legacy)","icon":"clock-rotate-left","groups":[{"group":"Lakehouse v2.3 (legacy)","pages":[{"title":"Lakehouse Overview","sidebarTitle":"Overview","href":"/documentation/lakehouse/v2-3/overview"},{"title":"Connecting","sidebarTitle":"Connecting","href":"/documentation/lakehouse/v2-3/connecting"},{"title":"Schema Reference","sidebarTitle":"Schema Reference","href":"/documentation/lakehouse/v2-3/schema"},{"title":"Working with balances","sidebarTitle":"Working with balances","href":"/documentation/lakehouse/v2-3/balance-semantics"},{"title":"Working with invoices","sidebarTitle":"Working with invoices","href":"/documentation/lakehouse/v2-3/working-with-invoices"},{"title":"Querying","sidebarTitle":"Querying","href":"/documentation/lakehouse/v2-3/querying"}]}]}]},{"tab":"Changelog","icon":"list-ol","pages":[{"title":"Changelog","mode":"center","href":"/changelog/changelog"}]}]},"basePath":"","title":"Track Tokens - Autumn","buildId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","deploymentId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DPDWPCdE.js","utils-DyjUHyLo.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BWYE1cdS.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-COAzxpEw.js","snippetPresets-DNiD_S52.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-CjwVt80x.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ByHQMk7z.js","shallow-CaZuw1AO.js","getApiPlaygroundDisplay-DPVPOknm.js","CodeSnippet-B31CH-Mp.js","CodeSnippets-BxTYZWz6.js","Page-DDHbuAIY.js","getPastedJson-DhoAwiNO.js","icon-Dhq8z75J.js","MethodPill-DLXmKOwr.js","DuplicateIcon-jzdVwyRU.js","createIcon-eD0b3klN.js","DynamicMarkdown-BfddVCX7.js","SectionHeading-2pSCIo17.js","axios-vUo_bRtp.js","Markdown-DsWjhwJ4.js","clsx-B2t_mZQG.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CUljsAY7.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Cf70306N.js"]}