Reports a batch of license balance readings. Each reading names its license by code and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.
An array of balance readings. Each names its license by code and carries the customer, moment, total, and an optional payload.
Required array length: 1 - 10000 elements
Show child attributes
Response
The request was successfully processed.
The response is of type object.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Aira","colors":{"primary":"#7048E8","light":"#B197FC","dark":"#6741D9"},"logo":{"light":"https://mintcdn.com/aira-e93056c6/NIoErVFaJlphCKFi/logo/light.svg?fit=max\u0026auto=format\u0026n=NIoErVFaJlphCKFi\u0026q=85\u0026s=d222c0199c2a89d6e27d97ba6ef28275","dark":"https://mintcdn.com/aira-e93056c6/NIoErVFaJlphCKFi/logo/dark.svg?fit=max\u0026auto=format\u0026n=NIoErVFaJlphCKFi\u0026q=85\u0026s=5ccb5cfecbe2f539cba0bffdece168a1"},"favicon":"https://mintcdn.com/aira-e93056c6/NIoErVFaJlphCKFi/favicon.svg?fit=max\u0026auto=format\u0026n=NIoErVFaJlphCKFi\u0026q=85\u0026s=824a706ab0a0bbf9242b5b7f152905b1","api":{"mdx":{"server":["https://api.useaira.com"]}},"navbar":{"links":[{"href":"mailto:contato@useaira.com","label":"Suporte"}],"primary":{"type":"button","label":"Login","href":"https://app.useaira.com"}},"footer":{"socials":{"linkedin":"https://linkedin.com/company/useaira"}},"search":{},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Dashboard","icon":"browser","href":"https://app.useaira.com"},{"anchor":"Fale com a equipe","icon":"message-check","href":"mailto:contato@useaira.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"aira-e93056c6","hasAudioNarration":false,"actualSubdomain":"aira-e93056c6","customDomains":["docs.useaira.com"],"gitSource":{"type":"github","owner":"aira-dev","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4a14ec2eaceb0e3450243","collectionId":"17ec787c-d89b-4bc1-8a5a-26a033d989de","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4a14ec2eaceb0e3450243"},"entitlements":{},"buildId":"6ae4a14ec2eaceb0e3450243","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Referência da API","count":116},{"language":"default","tag":"Guias","count":80},{"language":"default","tag":"Invoices","count":19},{"language":"default","tag":"Integrações","count":13},{"language":"default","tag":"Contracts","count":9},{"language":"default","tag":"Customers","count":9},{"language":"default","tag":"Faturas","count":8},{"language":"default","tag":"Contratos","count":6},{"language":"default","tag":"Pagamentos","count":5},{"language":"default","tag":"ERP e Contabilidade","count":5}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/licenses/report-license-balances","slug":"/api-reference/licenses/report-license-balances","pageMetadata":{"title":"Report license balances","description":"Reports a batch of license balance readings. Each reading names its license by `code` and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/licenses/report-balances","href":"/api-reference/licenses/report-license-balances","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Reports a batch of license balance readings. Each reading names its license by \", _jsx(_components.code, {\n children: \"code\"\n }), \" and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Report license balances","description":"Reports a batch of license balance readings. Each reading names its license by `code` and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/licenses/report-balances","href":"/api-reference/licenses/report-license-balances","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Report license balances","tags":["Licenses"],"description":"Reports a batch of license balance readings. Each reading names its license by `code` and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.","requestBody":"04951a2f-e273-4dad-83e3-2f2acea513f5","x-public-api":true,"responses":{"204":"ea411af0-b574-499a-b4e9-4eef501df030","400":"ed42b28b-7c72-4d13-a2a6-7903b49eab1d"},"method":"post","type":"path","servers":["1c395852-a9dd-476f-91e9-cc3daa4a9bef"],"security":["fd4029c5-5bbc-45d6-8970-947d3829a55d"],"path":"/v1/licenses/report-balances","baseUrlOptions":["https://api.useaira.com"],"title":"Report license balances","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"balances":{"description":"An array of balance readings. Each names its license by code and carries the customer, moment, total, and an optional payload.","type":"array","items":{"type":"object","description":"One balance reading: the state of a license for a customer at a moment.","properties":{"code":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","description":"Code of the license this reading belongs to.","isRequired":true,"uniqueKey":"balances.items.[INDEX].code","typeLabel":"string"},"customerExternalId":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","description":"External identifier of the customer.","isRequired":true,"uniqueKey":"balances.items.[INDEX].customerExternalId","typeLabel":"string"},"occurredAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of the moment this reading describes.","isRequired":true,"uniqueKey":"balances.items.[INDEX].occurredAt","typeLabel":"string\u003cdate-time>"},"total":{"type":"number","minimum":0,"multipleOf":1,"description":"How many, at that moment.","isRequired":true,"uniqueKey":"balances.items.[INDEX].total","typeLabel":"number"},"payload":{"type":"array","description":"Itemized breakdown behind the total, one item per unit. Optional: omit it to report only the total. When sent, its length must equal the total.","items":{"type":"object","description":"One unit behind the total, such as an active user. Any extra keys are kept as-is.","properties":{"id":{"type":"string","minLength":1,"description":"Identifier of the unit.","isRequired":true,"uniqueKey":"balances.items.[INDEX].payload.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","description":"Human-readable label for the unit.","uniqueKey":"balances.items.[INDEX].payload.items.[INDEX].name","typeLabel":"string"}},"required":["id"],"additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"balances.items.[INDEX].payload.items.[INDEX].additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"balances.items.[INDEX].payload.items.[INDEX].additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"balances.items.[INDEX].payload.items.[INDEX].additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"balances.items.[INDEX].payload.items.[INDEX].additionalProperties","typeLabel":"string | number | boolean"},"uniqueKey":"balances.items.[INDEX].payload.items.[INDEX]","typeLabel":"object"},"uniqueKey":"balances.items.[INDEX].payload","typeLabel":"object[]"}},"required":["code","customerExternalId","occurredAt","total"],"additionalProperties":false,"uniqueKey":"balances.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":10000,"isRequired":true,"uniqueKey":"balances","typeLabel":"object[]"}},"required":["balances"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"balances":[{"code":"\u003cstring>","customerExternalId":"\u003cstring>","occurredAt":"2023-11-07T05:31:56Z","total":1,"payload":[{"id":"\u003cstring>","name":"\u003cstring>"}]}]}}},"exampleType":"generated"}},"required":true,"description":"An object containing an array of license balance readings to report.","exampleType":"generated"},"responses":{"ea411af0-b574-499a-b4e9-4eef501df030":{"description":"The request was successfully processed.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"},"ed42b28b-7c72-4d13-a2a6-7903b49eab1d":{"description":"Invalid request; when any reading fails validation none are recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable error message explaining why the report failed.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Error code identifying the type of failure.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"details":{"type":"array","description":"List of failed readings and their specific errors.","items":{"type":"object","properties":{"code":{"type":"string","description":"The license code of the failed reading.","uniqueKey":"details.items.[INDEX].code","typeLabel":"string"},"customerExternalId":{"type":"string","uniqueKey":"details.items.[INDEX].customerExternalId","typeLabel":"string"},"occurredAt":{"type":"string","uniqueKey":"details.items.[INDEX].occurredAt","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["license_code_not_found","license_balance_payload_total_mismatch","future_license_balance_moment","duplicated_license_balance_key"],"isRequired":true,"uniqueKey":"details.items.[INDEX].errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"details.items.[INDEX].errors.items.[INDEX].message","typeLabel":"string"}},"required":["code","message"],"uniqueKey":"details.items.[INDEX].errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"details.items.[INDEX].errors","typeLabel":"object[]"}},"additionalProperties":true,"uniqueKey":"details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"details","typeLabel":"object[]"}},"required":["message","code"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","details":[{"code":"\u003cstring>","customerExternalId":"\u003cstring>","occurredAt":"\u003cstring>","errors":[{"code":"license_code_not_found","message":"\u003cstring>"}]}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"fd4029c5-5bbc-45d6-8970-947d3829a55d":{"ApiKey":{"type":"apiKey","description":"API Key Authentication.","name":"X-API-KEY","in":"header","scopes":[],"schemeName":"ApiKey"}}},"servers":{"1c395852-a9dd-476f-91e9-cc3daa4a9bef":{"url":"https://api.useaira.com","description":"API base URL"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","description":"API Key Authentication.","name":"X-API-KEY","in":"header","scopes":[],"schemeName":"ApiKey"},"schema":{"title":"X-API-KEY","type":"string","description":"API Key Authentication.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKey","name":"X-API-KEY"}],"title":"ApiKey"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"aira-e93056c6","siteName":"Aira","title":"Report license balances - Aira","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T13:53:29.879Z","originalFileLocation":"api-reference/licenses/report-license-balances.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=\"Reports a batch of license balance readings. Each reading names its license by code and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Aira\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/aira-e93056c6/rFHNG1I4T4E6tM9X/_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/aira-e93056c6/rFHNG1I4T4E6tM9X/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/aira-e93056c6/rFHNG1I4T4E6tM9X/_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/aira-e93056c6/rFHNG1I4T4E6tM9X/_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/aira-e93056c6/rFHNG1I4T4E6tM9X/_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/aira-e93056c6/rFHNG1I4T4E6tM9X/_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/aira-e93056c6/rFHNG1I4T4E6tM9X/_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/aira-e93056c6/rFHNG1I4T4E6tM9X/_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/aira-e93056c6/rFHNG1I4T4E6tM9X/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Report license balances - Aira\">\u003cmeta data-mint-head property=\"og:description\" content=\"Reports a batch of license balance readings. Each reading names its license by code and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Aira\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.useaira.com/api-reference/licenses/report-license-balances\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://aira-e93056c6.mintlify.app/_mintlify/api/og/v2?division=Licenses\u0026amp;title=Report+license+balances\u0026amp;description=Reports+a+batch+of+license+balance+readings.+Each+reading+names+its+license+by+%60code%60+and+is+identified+by+%28code%2C+customer%2C+moment%29%3A+the+first+reading+for+a+slo\u0026amp;theme=0ae7a9d759c44fd627c18b79\u0026amp;signature=7690341244825b8a9391e961aee3800dbe858cb2bf71ea8b4d7d0b204338d687\">\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=\"Report license balances - Aira\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Reports a batch of license balance readings. Each reading names its license by code and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://aira-e93056c6.mintlify.app/_mintlify/api/og/v2?division=Licenses\u0026amp;title=Report+license+balances\u0026amp;description=Reports+a+batch+of+license+balance+readings.+Each+reading+names+its+license+by+%60code%60+and+is+identified+by+%28code%2C+customer%2C+moment%29%3A+the+first+reading+for+a+slo\u0026amp;theme=0ae7a9d759c44fd627c18b79\u0026amp;signature=7690341244825b8a9391e961aee3800dbe858cb2bf71ea8b4d7d0b204338d687\">\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/aira-e93056c6/rFHNG1I4T4E6tM9X/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Aira\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7048E8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.useaira.com/api-reference/licenses/report-license-balances\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/licenses/report-license-balances.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.useaira.com/#organization\",\"name\":\"Aira\",\"url\":\"https://docs.useaira.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/aira-e93056c6/NIoErVFaJlphCKFi/logo/light.svg?fit=max\u0026auto=format\u0026n=NIoErVFaJlphCKFi\u0026q=85\u0026s=d222c0199c2a89d6e27d97ba6ef28275\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.useaira.com#website\",\"name\":\"Aira\",\"url\":\"https://docs.useaira.com\",\"publisher\":{\"@id\":\"https://docs.useaira.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.useaira.com/api-reference/licenses/report-license-balances#webpage\",\"url\":\"https://docs.useaira.com/api-reference/licenses/report-license-balances\",\"name\":\"Report license balances\",\"description\":\"Reports a batch of license balance readings. Each reading names its license by code and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.\",\"dateModified\":\"2026-10-30T13:53:29.879Z\",\"isPartOf\":{\"@id\":\"https://docs.useaira.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.useaira.com/api-reference/licenses/report-license-balances#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.useaira.com/api-reference/licenses/report-license-balances#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Referência da API\",\"item\":\"https://docs.useaira.com/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Report license balances\",\"item\":\"https://docs.useaira.com/api-reference/licenses/report-license-balances\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.useaira.com/api-reference/licenses/report-license-balances#apireference\",\"headline\":\"Report license balances\",\"name\":\"Report license balances\",\"description\":\"Reports a batch of license balance readings. Each reading names its license by code and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload is optional; when sent, its length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.\",\"url\":\"https://docs.useaira.com/api-reference/licenses/report-license-balances\",\"mainEntityOfPage\":{\"@id\":\"https://docs.useaira.com/api-reference/licenses/report-license-balances#webpage\"},\"dateModified\":\"2026-10-30T13:53:29.879Z\",\"publisher\":{\"@id\":\"https://docs.useaira.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.useaira.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Aira\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Aira","nav":{"global":{"anchors":[{"anchor":"Dashboard","icon":"browser","href":"https://app.useaira.com"},{"anchor":"Fale com a equipe","icon":"message-check","href":"mailto:contato@useaira.com"}]},"tabs":[{"tab":"Guias","pages":[{"title":"Guias","href":"/comece-aqui/visao-geral"}]},{"tab":"Referência da API","groups":[{"group":"Referência da API","pages":[{"title":"Referência da API","sidebarTitle":"Introdução","icon":"square-terminal","iconType":"regular","href":"/api-reference/introduction"},{"title":"Autenticação","sidebarTitle":"Autenticação","icon":"key","iconType":"regular","href":"/api-reference/autenticacao"},{"title":"Webhooks","sidebarTitle":"Webhooks","icon":"webhook","iconType":"regular","href":"/api-reference/webhooks"},{"title":"Respostas de erro","sidebarTitle":"Respostas de erro","icon":"triangle-exclamation","iconType":"regular","href":"/api-reference/error-responses"},{"group":"Customers","pages":[{"title":"List customers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/customers/","href":"/api-reference/customers/list-customers"},{"title":"Create customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/customers/","href":"/api-reference/customers/create-customer"},{"title":"Fetch customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/customers/{id}","href":"/api-reference/customers/fetch-customer"},{"title":"Update customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/customers/{id}","href":"/api-reference/customers/update-customer"},{"title":"Delete customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/customers/{id}","href":"/api-reference/customers/delete-customer"},{"title":"Fetch customer by external ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/customers/by-external-id/{externalId}","href":"/api-reference/customers/fetch-customer-by-external-id"},{"title":"Update customer by external ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/customers/by-external-id/{externalId}","href":"/api-reference/customers/update-customer-by-external-id"},{"title":"Delete customer by external ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/customers/by-external-id/{externalId}","href":"/api-reference/customers/delete-customer-by-external-id"},{"title":"List customer subsidiaries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/customers/{id}/subsidiaries","href":"/api-reference/customers/list-customer-subsidiaries"}]},{"group":"Resources","pages":[{"title":"Fetch resource","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/resources/{id}","href":"/api-reference/resources/fetch-resource"},{"title":"List resources","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/resources/","href":"/api-reference/resources/list-resources"}]},{"group":"Invoices","pages":[{"title":"Fetch invoice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/invoices/{id}","href":"/api-reference/invoices/fetch-invoice"},{"title":"Fetch invoice by provider ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/invoices/by-provider-id/{providerId}","href":"/api-reference/invoices/fetch-invoice-by-provider-id"},{"title":"List invoices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/invoices/","href":"/api-reference/invoices/list-invoices"},{"title":"Create invoice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/invoices/","href":"/api-reference/invoices/create-invoice"},{"title":"Download invoice PDF","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/invoices/{id}/pdf","href":"/api-reference/invoices/download-invoice-pdf"},{"title":"List invoice discounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/invoices/{invoiceId}/discounts","href":"/api-reference/invoices/list-invoice-discounts"},{"title":"Create invoice discount","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/invoices/{invoiceId}/discounts","href":"/api-reference/invoices/create-invoice-discount"},{"title":"Update invoice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/invoices/{invoiceId}","href":"/api-reference/invoices/update-invoice"},{"title":"Cancel invoice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/invoices/{invoiceId}/cancel","href":"/api-reference/invoices/cancel-invoice"},{"title":"Mark invoice as in review","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/invoices/{invoiceId}/in-review","href":"/api-reference/invoices/mark-invoice-as-in-review"},{"title":"Recalculate invoices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/invoices/recalculate","href":"/api-reference/invoices/recalculate-invoices"},{"title":"Create invoice line item group","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/invoices/{invoiceId}/line-item-groups","href":"/api-reference/invoices/create-invoice-line-item-group"},{"title":"Update invoice line item group","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/invoices/{invoiceId}/line-item-groups/{lineItemGroupId}","href":"/api-reference/invoices/update-invoice-line-item-group"},{"title":"Delete invoice line item group","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/invoices/{invoiceId}/line-item-groups/{lineItemGroupId}","href":"/api-reference/invoices/delete-invoice-line-item-group"},{"title":"Create invoice line item","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/invoices/{invoiceId}/line-items","href":"/api-reference/invoices/create-invoice-line-item"},{"title":"Update invoice line item","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/invoices/{invoiceId}/line-items/{lineItemId}","href":"/api-reference/invoices/update-invoice-line-item"},{"title":"Delete invoice line item","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/invoices/{invoiceId}/line-items/{lineItemId}","href":"/api-reference/invoices/delete-invoice-line-item"},{"title":"Update invoice discount","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/invoices/{invoiceId}/discounts/{discountId}","href":"/api-reference/invoices/update-invoice-discount"},{"title":"Delete invoice discount","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/invoices/{invoiceId}/discounts/{discountId}","href":"/api-reference/invoices/delete-invoice-discount"}]},{"group":"Events","pages":[{"title":"Ingest events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/events/ingest","href":"/api-reference/events/ingest-events"},{"title":"Archive events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/events/archive","href":"/api-reference/events/archive-events"},{"title":"Overwrite event","description":"Records a new version of the event identified by `idempotencyKey`, fully replacing `properties` (including `properties.value`). Frozen fields (`eventName`, `customerExternalId`, `occurredAt`) must match the existing event or the request is rejected with `ImmutableFieldChange`. If no event exists for the key, version 1 is created. Returns the recorded event.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/events/{idempotencyKey}","href":"/api-reference/events/overwrite-event"}]},{"group":"Licenses","pages":[{"title":"Report license balances","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/licenses/report-balances","href":"/api-reference/licenses/report-license-balances"}]},{"group":"Contracts","pages":[{"title":"List contracts","description":"This endpoint allows fetching a list of contracts along with the plan instances attached to each one. Filter by customer to reach the plan instances of a given customer.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/contracts/","href":"/api-reference/contracts/list-contracts"},{"title":"Create contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/contracts/","href":"/api-reference/contracts/create-contract"},{"title":"Update draft contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/contracts/{id}/draft","href":"/api-reference/contracts/update-draft-contract"},{"title":"Update active contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/contracts/{id}/active","href":"/api-reference/contracts/update-active-contract"},{"title":"Activate contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/contracts/{id}/activate","href":"/api-reference/contracts/activate-contract"},{"title":"List contract recurring discounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/contracts/{id}/recurring-discounts","href":"/api-reference/contracts/list-contract-recurring-discounts"},{"title":"Create contract recurring discount","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/contracts/{id}/recurring-discounts","href":"/api-reference/contracts/create-contract-recurring-discount"},{"title":"Deactivate contract recurring discount","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/contracts/{id}/recurring-discounts/{contractRecurringDiscountId}/deactivate","href":"/api-reference/contracts/deactivate-contract-recurring-discount"},{"title":"Fetch contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/contracts/{id}","href":"/api-reference/contracts/fetch-contract"}]},{"group":"Plan Instances","pages":[{"title":"Create plan instance","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/plan-instances/","href":"/api-reference/plan-instances/create-plan-instance"},{"title":"Fetch plan instance","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/plan-instances/{id}","href":"/api-reference/plan-instances/fetch-plan-instance"},{"title":"Update plan instance","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/plan-instances/{id}","href":"/api-reference/plan-instances/update-plan-instance"}]},{"group":"Credit Pools","pages":[{"title":"Create credit pool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/credit-pools/","href":"/api-reference/credit-pools/create-credit-pool"},{"title":"Update credit pool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/credit-pools/{id}","href":"/api-reference/credit-pools/update-credit-pool"},{"title":"List customer credit pools","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/credit-pools/by-customer","href":"/api-reference/credit-pools/list-customer-credit-pools"}]},{"group":"Payment Accounts","pages":[{"title":"Create payment account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/payment-accounts/","href":"/api-reference/payment-accounts/create-payment-account"},{"title":"Update payment account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/payment-accounts/{id}","href":"/api-reference/payment-accounts/update-payment-account"},{"title":"Archive payment account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/payment-accounts/{id}/archive","href":"/api-reference/payment-accounts/archive-payment-account"},{"title":"Unarchive payment account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/payment-accounts/{id}/unarchive","href":"/api-reference/payment-accounts/unarchive-payment-account"},{"title":"List customer payment accounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/payment-accounts/by-customer","href":"/api-reference/payment-accounts/list-customer-payment-accounts"}]}]}]},{"tab":"Integrações","pages":[{"title":"Integrações","href":"/integracoes/visao-geral"}]},{"tab":"Segurança","pages":[{"title":"Segurança","href":"/seguranca/visao-geral"}]}]},"basePath":"","title":"Report license balances - Aira","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","clsx-D1Z-ELXV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-lvhuD9Du.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CKfC4ywL.js"]}