Returns the credits this API key’s account can spend right now, derived from
your live credit buckets under the same expiry rule the billing path applies.
Free, never charged, and open to any valid vq_key_ key (no scope required),
so you can poll it for alerting or a pre-flight check. It is rate limited like
every other key-authenticated route; see the rate-limit docs for the
X-RateLimit-* headers.
creditsRemaining is the same field name metered responses use. Credits are how
much you may spend and rateLimit is how fast you may call; the two are
independent. Read bySource and nextExpiry before assuming a balance is
durable.
API key issued from the developer dashboard. Pass as Authorization: Bearer vq_key_... (preferred).
Response
Current spendable balance for the calling key's account.
Spendable credit balance for the calling API key's account.
creditsRemaining
number
required
Credits you can actually spend right now, the same field name metered responses return. Derived from your live credit buckets under the billing path's expiry rule, so it never promises credits a call would refuse to spend.
Example:
103039
usdRemaining
number
required
creditsRemaining in USD, at the published conversion rate (1 credit = $0.01). Provided so you do not have to hardcode the rate; GET /api/v1/api-credits/pricing is its source of truth.
Example:
1030.39
totalPurchased
number
required
Lifetime credits added to this account.
Example:
150000
totalConsumed
number
required
Lifetime credits spent by this account.
Example:
46961
asOf
string<date-time>
required
When this balance was computed. The value is live, not cached, so this is the instant the buckets were read.
bySource
CreditSourceBreakdown · object[]
creditsRemaining split by funding source; always sums to it. subscription credits are use-it-or-lose-it at the period end, while payg credits you bought persist and burn last.
Show child attributes
nextExpiry
CreditExpiry · object | null
The soonest expiry across your credits, or null if none expire: what is about to be forfeited and when, which a balance alone cannot show.
Show child attributes
plan
string | null
Active API subscription tier, or null on pay-as-you-go. Also determines your rate-limit multiplier. Briefly cached, so a subscription change made seconds ago may not be reflected yet; creditsRemaining is always live.
Example:
"business"
rateLimit
CreditRateLimit · object | null
How fast this key may call, with your plan already applied, so you can size a client before issuing a request. Independent of credits: a healthy balance does not exempt you from these. The X-RateLimit-* headers on every response report the same ceilings plus your live headroom.
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Vaquill AI","description":"US primary law as a developer API. The US Code, the CFR, the Federal Register, state and territory statute codes, state regulations, constitutions and court rules, with Bluebook citation resolution and point-in-time retrieval over REST, MCP and SQL.","colors":{"primary":"#6E3730","light":"#8C4A3F","dark":"#5A2D27"},"logo":{"light":"https://mintcdn.com/vaquill/HoYf91pjRoTl4-t3/logo/light.png?fit=max\u0026auto=format\u0026n=HoYf91pjRoTl4-t3\u0026q=85\u0026s=1c97b6018caaa1fee0a743b05651bb81","dark":"https://mintcdn.com/vaquill/HoYf91pjRoTl4-t3/logo/dark.png?fit=max\u0026auto=format\u0026n=HoYf91pjRoTl4-t3\u0026q=85\u0026s=857ee7c2383d363ffe7fac6f94ad862b","href":"https://vaquill.ai"},"favicon":"https://mintcdn.com/vaquill/HoYf91pjRoTl4-t3/favicon.png?fit=max\u0026auto=format\u0026n=HoYf91pjRoTl4-t3\u0026q=85\u0026s=e9fd33556ddcb3576db2925e6f4e27fe","api":{"openapi":"https://api.vaquill.ai/external/openapi.json","playground":{"display":"interactive","proxy":true},"examples":{"defaults":"required","languages":["bash","python","javascript","go"],"prefill":true},"mdx":{"auth":{"method":"bearer","name":"Authorization"},"server":"https://api.vaquill.ai"}},"appearance":{"default":"light","strict":true},"background":{"color":{"light":"#FAFAF9"}},"navbar":{"links":[{"icon":"github","href":"https://vaquill.ai/open-us-law","label":"Open US Law Dataset"},{"href":"mailto:contact@vaquill.ai","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.vaquill.ai"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/vaquill","youtube":"https://www.youtube.com/@vaquill","slack":"https://join.slack.com/t/vaquillaicommunity/shared_invite/zt-3qxv4mtxg-64mtkVe2PxodDMwKGPfvMQ","github":"https://github.com/Vaquill-AI"},"links":[{"header":"Company","items":[{"label":"About","href":"https://vaquill.ai/about"},{"label":"Contact","href":"https://vaquill.ai/contact"},{"label":"Data Sources \u0026 Credits","href":"https://vaquill.ai/partners"},{"label":"Blog","href":"https://vaquill.ai/blog"},{"label":"Engineering","href":"https://vaquill.ai/engineering"}]},{"header":"Developers","items":[{"label":"Data API","href":"https://vaquill.ai/legal-api"},{"label":"MCP Servers","href":"https://vaquill.ai/mcp"},{"label":"API Reference","href":"/api-reference/us-statutes/search-us-statutes-constitutions-court-rules-and-executive-actions"},{"label":"Open US Law Dataset","href":"https://vaquill.ai/open-us-law"}]},{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://vaquill.ai/privacy"},{"label":"Terms of Service","href":"https://vaquill.ai/terms"},{"label":"DPA","href":"https://vaquill.ai/dpa"},{"label":"Cookie Policy","href":"https://vaquill.ai/cookies"},{"label":"Refund Policy","href":"https://vaquill.ai/refund-policy"},{"label":"Delete My Data","href":"https://vaquill.ai/delete-data"},{"label":"Security","href":"https://vaquill.ai/security"},{"label":"Accessibility","href":"https://vaquill.ai/accessibility"},{"label":"Do Not Sell or Share My Personal Information","href":"https://vaquill.ai/privacy"}]}]},"search":{"prompt":"Search docs, guides, and the API reference..."},"seo":{"metatags":{"canonical":"https://www.vaquill.ai/docs","og:site_name":"Vaquill AI Docs","og:locale":"en_US","twitter:card":"summary_large_image","twitter:site":"@vaquillai"},"indexing":"all"},"fonts":{"heading":{"family":"Source Serif 4","weight":400},"body":{"family":"Schibsted Grotesk","weight":400}},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":"github-light"},"latex":false},"errors":{"404":{"redirect":false,"title":"Page not found","description":"That page doesn't exist, or the URL changed. Try the search bar above, or start from the [API overview](/api-guide/overview)."}},"contextual":{"options":["copy","view","assistant","chatgpt","claude","perplexity","cursor","vscode","windsurf","mcp"],"display":"header"},"thumbnails":{"appearance":"light","fonts":{"family":"Source Serif 4"}},"metadata":{"timestamp":true},"navigation":{"global":{"anchors":[{"anchor":"Changelog","icon":"clock","href":"/api-guide/changelog"},{"anchor":"MCP","icon":"plug","href":"/integrations/mcp/vaquill"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vaquill","hasAudioNarration":false,"actualSubdomain":"vaquill","customDomains":["vaquill.ai"],"gitSource":{"type":"github","owner":"vaquill-ai","repo":"vaquill-ai-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6af66826b5a5c75a1e2c683d","clientVersion":"0.0.4131","searchFilterCounts":[{"language":"default","tag":"India API reference","count":59},{"language":"default","tag":"Guide","count":56},{"language":"default","tag":"Endpoints","count":51},{"language":"default","tag":"US API reference","count":50},{"language":"default","tag":"Indian Acts and Legislation","count":20},{"language":"default","tag":"US Statutes","count":18},{"language":"default","tag":"Guides","count":15},{"language":"default","tag":"Core concepts","count":15},{"language":"default","tag":"Integrations","count":14},{"language":"default","tag":"Get started","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":true},"customCss":[{"filePath":"custom.css","content":":root{--vq-ink: #1c1a17;--vq-muted: #5f5a52;--vq-hairline: #e4e3e0;--vq-raised: #f2f1ef;--vq-radius: 6px}#navbar img{height:3rem;width:auto}footer img{height:3rem;width:auto}#page-title,#content h2,#content h3{font-family:\"Source Serif 4\", Georgia, serif;font-weight:400;letter-spacing:-0.01em;color:var(--vq-ink)}#content h4,#content h5{font-weight:500}.card,.callout,.accordion,.accordion-group,[data-component-part=\"code-block-root\"]{border-radius:var(--vq-radius)!important;box-shadow:none!important}.card,.accordion,.accordion-group{border:1px solid var(--vq-hairline)}.accordion-group .accordion{border:0!important;border-radius:0!important;margin-bottom:0}.accordion-group .accordion+.accordion{border-top:1px solid var(--vq-hairline)!important}.card:hover{border-color:#6e3730!important}.callout{background-color:var(--vq-raised);border:1px solid var(--vq-hairline)}.callout[data-callout-type=\"warning\"]{border-color:#7d5310}.callout[data-callout-type=\"danger\"]{border-color:#a4123c}code,pre,.shiki{font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}[data-component-part=\"code-block-root\"]{border:1px solid var(--vq-hairline)}"}],"page":{"pagePath":"api-reference/credits/get-your-credit-balance","slug":"/api-reference/credits/get-your-credit-balance","pageMetadata":{"title":"Get your credit balance","description":"Returns the credits this API key's account can spend right now, derived from\nyour live credit buckets under the same expiry rule the billing path applies.\nFree, never charged, and open to any valid `vq_key_` key (no scope required),\nso you can poll it for alerting or a pre-flight check. It is rate limited like\nevery other key-authenticated route; see the rate-limit docs for the\n`X-RateLimit-*` headers.\n\n`creditsRemaining` is the same field name metered responses use. Credits are how\nmuch you may spend and `rateLimit` is how fast you may call; the two are\nindependent. Read `bySource` and `nextExpiry` before assuming a balance is\ndurable.","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/credits/balance","href":"/api-reference/credits/get-your-credit-balance","autogeneratedByOpenApi":true},"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 code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Returns the credits this API key’s account can spend right now, derived from\\nyour live credit buckets under the same expiry rule the billing path applies.\\nFree, never charged, and open to any valid \", _jsx(_components.code, {\n children: \"vq_key_\"\n }), \" key (no scope required),\\nso you can poll it for alerting or a pre-flight check. It is rate limited like\\nevery other key-authenticated route; see the rate-limit docs for the\\n\", _jsx(_components.code, {\n children: \"X-RateLimit-*\"\n }), \" headers.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"creditsRemaining\"\n }), \" is the same field name metered responses use. Credits are how\\nmuch you may spend and \", _jsx(_components.code, {\n children: \"rateLimit\"\n }), \" is how fast you may call; the two are\\nindependent. Read \", _jsx(_components.code, {\n children: \"bySource\"\n }), \" and \", _jsx(_components.code, {\n children: \"nextExpiry\"\n }), \" before assuming a balance is\\ndurable.\"]\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}=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":{"codeStyling":{"theme":"github-light"},"config":{},"pageMetadata":{"title":"Get your credit balance","description":"Returns the credits this API key's account can spend right now, derived from\nyour live credit buckets under the same expiry rule the billing path applies.\nFree, never charged, and open to any valid `vq_key_` key (no scope required),\nso you can poll it for alerting or a pre-flight check. It is rate limited like\nevery other key-authenticated route; see the rate-limit docs for the\n`X-RateLimit-*` headers.\n\n`creditsRemaining` is the same field name metered responses use. Credits are how\nmuch you may spend and `rateLimit` is how fast you may call; the two are\nindependent. Read `bySource` and `nextExpiry` before assuming a balance is\ndurable.","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/credits/balance","href":"/api-reference/credits/get-your-credit-balance","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Credits"],"summary":"Get your credit balance","description":"Returns the credits this API key's account can spend right now, derived from\nyour live credit buckets under the same expiry rule the billing path applies.\nFree, never charged, and open to any valid `vq_key_` key (no scope required),\nso you can poll it for alerting or a pre-flight check. It is rate limited like\nevery other key-authenticated route; see the rate-limit docs for the\n`X-RateLimit-*` headers.\n\n`creditsRemaining` is the same field name metered responses use. Credits are how\nmuch you may spend and `rateLimit` is how fast you may call; the two are\nindependent. Read `bySource` and `nextExpiry` before assuming a balance is\ndurable.","operationId":"get_credit_balance","responses":{"200":"c65f17a7-ee6f-449b-a82d-c4a4490c3962","401":"5d57e69d-4470-4ab8-9b60-4c4318337043","429":"c12eca61-d0a6-4f36-9cc1-6c228d9f6f7c","500":"249ee68e-48ec-4254-8012-7c7e907b8dfe"},"method":"get","type":"path","servers":["fe509590-d9b0-43fa-8081-f4cab426bd5e"],"security":["f4d0a5c6-0622-420e-b171-023df038007d","e376de42-5dbe-4b44-9558-2becc7f2ed2d"],"path":"/api/v1/credits/balance","baseUrlOptions":["https://api.vaquill.ai"],"title":"Get your credit balance","codeSamples":[],"requestExampleLanguages":["bash","python","javascript","go"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[]},"dependencies":{"parameters":{},"responses":{"c65f17a7-ee6f-449b-a82d-c4a4490c3962":{"description":"Current spendable balance for the calling key's account.","content":{"application/json":{"schema":{"properties":{"creditsRemaining":{"type":"number","title":"Creditsremaining","description":"Credits you can actually spend right now, the same field name metered responses return. Derived from your live credit buckets under the billing path's expiry rule, so it never promises credits a call would refuse to spend.","examples":[103039],"isRequired":true,"uniqueKey":"creditsRemaining","typeLabel":"number"},"usdRemaining":{"type":"number","title":"Usdremaining","description":"`creditsRemaining` in USD, at the published conversion rate (1 credit = $0.01). Provided so you do not have to hardcode the rate; `GET /api/v1/api-credits/pricing` is its source of truth.","examples":[1030.39],"isRequired":true,"uniqueKey":"usdRemaining","typeLabel":"number"},"totalPurchased":{"type":"number","title":"Totalpurchased","description":"Lifetime credits added to this account.","examples":[150000],"isRequired":true,"uniqueKey":"totalPurchased","typeLabel":"number"},"totalConsumed":{"type":"number","title":"Totalconsumed","description":"Lifetime credits spent by this account.","examples":[46961],"isRequired":true,"uniqueKey":"totalConsumed","typeLabel":"number"},"asOf":{"type":"string","format":"date-time","title":"Asof","description":"When this balance was computed. The value is live, not cached, so this is the instant the buckets were read.","isRequired":true,"uniqueKey":"asOf","typeLabel":"string\u003cdate-time>"},"bySource":{"items":{"properties":{"source":{"type":"string","title":"Source","description":"Where the credits came from. `bonus` (signup grant), `subscription` (plan allowance, use-it-or-lose-it), `payg` (purchased packs) and `comp` (complimentary) exist today, and this list is not closed: read the values rather than matching on a fixed set.","examples":["payg"],"isRequired":true,"uniqueKey":"bySource.items.[INDEX].source","typeLabel":"string"},"credits":{"type":"number","title":"Credits","description":"Credits remaining in this source. 1 credit = $0.01.","examples":[1030.43],"isRequired":true,"uniqueKey":"bySource.items.[INDEX].credits","typeLabel":"number"}},"type":"object","required":["source","credits"],"title":"CreditSourceBreakdown","description":"Live credits held under one funding source.","uniqueKey":"bySource.items.[INDEX]","typeLabel":"CreditSourceBreakdown · object"},"type":"array","title":"Bysource","description":"`creditsRemaining` split by funding source; always sums to it. `subscription` credits are use-it-or-lose-it at the period end, while `payg` credits you bought persist and burn last.","uniqueKey":"bySource","typeLabel":"CreditSourceBreakdown · object[]"},"nextExpiry":{"oneOf":[{"type":"object","title":"CreditExpiry","description":"The soonest expiry across your credits, or `null` if none expire: what is about to be forfeited and when, which a balance alone cannot show.","required":["at","credits"],"properties":{"at":{"type":"string","format":"date-time","title":"At","description":"UTC instant at which the next credits expire.","examples":["2026-10-01T00:00:00Z"],"isRequired":true,"uniqueKey":"nextExpiry.oneOf.0.at","typeLabel":"string\u003cdate-time>"},"credits":{"type":"number","title":"Credits","description":"Credits that expire at that instant. They stop being spendable immediately at `at`, not when the nightly sweep records it.","examples":[500],"isRequired":true,"uniqueKey":"nextExpiry.oneOf.0.credits","typeLabel":"number"}},"uniqueKey":"nextExpiry.oneOf.0","typeLabel":"CreditExpiry · object"},{"type":"null","description":"The soonest expiry across your credits, or `null` if none expire: what is about to be forfeited and when, which a balance alone cannot show.","uniqueKey":"nextExpiry.oneOf.1","typeLabel":"null"}],"uniqueKey":"nextExpiry","typeLabel":"CreditExpiry · object | null"},"plan":{"oneOf":[{"type":"string","title":"Plan","description":"Active API subscription tier, or `null` on pay-as-you-go. Also determines your rate-limit multiplier. Briefly cached, so a subscription change made seconds ago may not be reflected yet; `creditsRemaining` is always live.","example":"business","uniqueKey":"plan.oneOf.0","typeLabel":"string"},{"type":"null","title":"Plan","description":"Active API subscription tier, or `null` on pay-as-you-go. Also determines your rate-limit multiplier. Briefly cached, so a subscription change made seconds ago may not be reflected yet; `creditsRemaining` is always live.","example":"business","uniqueKey":"plan.oneOf.1","typeLabel":"null"}],"uniqueKey":"plan","typeLabel":"string | null"},"rateLimit":{"oneOf":[{"type":"object","title":"CreditRateLimit","description":"How fast this key may call, with your plan already applied, so you can size a client before issuing a request. Independent of credits: a healthy balance does not exempt you from these. The `X-RateLimit-*` headers on every response report the same ceilings plus your live headroom.","required":["perMinute","perHour","perDay"],"properties":{"perMinute":{"type":"integer","title":"Perminute","description":"Requests allowed per minute on this key, plan multiplier already applied.","examples":[150],"isRequired":true,"uniqueKey":"rateLimit.oneOf.0.perMinute","typeLabel":"integer"},"perHour":{"type":"integer","title":"Perhour","description":"Requests allowed per hour on this key.","examples":[2000],"isRequired":true,"uniqueKey":"rateLimit.oneOf.0.perHour","typeLabel":"integer"},"perDay":{"type":"integer","title":"Perday","description":"Requests allowed per day on this key.","examples":[10000],"isRequired":true,"uniqueKey":"rateLimit.oneOf.0.perDay","typeLabel":"integer"}},"uniqueKey":"rateLimit.oneOf.0","typeLabel":"CreditRateLimit · object"},{"type":"null","description":"How fast this key may call, with your plan already applied, so you can size a client before issuing a request. Independent of credits: a healthy balance does not exempt you from these. The `X-RateLimit-*` headers on every response report the same ceilings plus your live headroom.","uniqueKey":"rateLimit.oneOf.1","typeLabel":"null"}],"uniqueKey":"rateLimit","typeLabel":"CreditRateLimit · object | null"}},"type":"object","required":["creditsRemaining","usdRemaining","totalPurchased","totalConsumed","asOf"],"title":"ExternalCreditBalanceResponse","description":"Spendable credit balance for the calling API key's account.","uniqueKey":"","typeLabel":"ExternalCreditBalanceResponse · object"},"example":{"creditsRemaining":103039,"usdRemaining":1030.39,"bySource":[{"source":"comp","credits":20000},{"source":"payg","credits":64699},{"source":"subscription","credits":18340}],"nextExpiry":{"at":"2026-10-12T13:56:31Z","credits":18340},"plan":"business","totalPurchased":143960,"totalConsumed":48471,"rateLimit":{"perMinute":150,"perHour":2500,"perDay":10000},"asOf":"2026-09-19T12:34:56Z"},"examples":{"Example":{"title":"Example","value":{"creditsRemaining":103039,"usdRemaining":1030.39,"bySource":[{"source":"comp","credits":20000},{"source":"payg","credits":64699},{"source":"subscription","credits":18340}],"nextExpiry":{"at":"2026-10-12T13:56:31Z","credits":18340},"plan":"business","totalPurchased":143960,"totalConsumed":48471,"rateLimit":{"perMinute":150,"perHour":2500,"perDay":10000},"asOf":"2026-09-19T12:34:56Z"}}},"exampleType":"examples"}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed in the current per-minute window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current per-minute window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp at which the per-minute window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Requests allowed per day (the slow-drip backstop).","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Requests left in the daily window.","schema":{"type":"integer"}},"X-RateLimit-Limit-Hour":{"description":"Requests allowed per hour.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Hour":{"description":"Requests left in the hourly window.","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Unix timestamp at which the daily window resets (next UTC midnight).","schema":{"type":"integer"}},"X-RateLimit-Scope":{"description":"Which bucket the limits above describe: `key` (this API key's own allowance) or `ip` (the shared per-address ceiling, also used when the key did not validate). Absent on requests without an API key.","schema":{"type":"string","enum":["key","ip"]}},"X-Request-ID":{"description":"Correlation id of this request. Quote it when contacting support.","schema":{"type":"string"}}},"exampleType":"examples"},"5d57e69d-4470-4ab8-9b60-4c4318337043":{"description":"Missing, malformed or unrecognised API key. This endpoint accepts only a `vq_key_` API key; a dashboard session token is rejected.","content":{"application/json":{"example":{"detail":"Invalid token"},"examples":{"Example":{"title":"Example","value":{"detail":"Invalid token"}}},"exampleType":"examples"}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed in the current per-minute window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current per-minute window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp at which the per-minute window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Requests allowed per day (the slow-drip backstop).","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Requests left in the daily window.","schema":{"type":"integer"}},"X-RateLimit-Limit-Hour":{"description":"Requests allowed per hour.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Hour":{"description":"Requests left in the hourly window.","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Unix timestamp at which the daily window resets (next UTC midnight).","schema":{"type":"integer"}},"X-RateLimit-Scope":{"description":"Which bucket the limits above describe: `key` (this API key's own allowance) or `ip` (the shared per-address ceiling, also used when the key did not validate). Absent on requests without an API key.","schema":{"type":"string","enum":["key","ip"]}},"X-Request-ID":{"description":"Correlation id of this request. Quote it when contacting support.","schema":{"type":"string"}}},"exampleType":"examples"},"c12eca61-d0a6-4f36-9cc1-6c228d9f6f7c":{"description":"Request-rate ceiling exceeded. Retry after the `Retry-After` header. Being throttled says nothing about your balance.","content":{"application/json":{"example":{"detail":"Rate limit exceeded. Try again in 42 seconds."},"examples":{"Example":{"title":"Example","value":{"detail":"Rate limit exceeded. Try again in 42 seconds."}}},"exampleType":"examples"}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed in the current per-minute window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current per-minute window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp at which the per-minute window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Requests allowed per day (the slow-drip backstop).","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Requests left in the daily window.","schema":{"type":"integer"}},"X-RateLimit-Limit-Hour":{"description":"Requests allowed per hour.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Hour":{"description":"Requests left in the hourly window.","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Unix timestamp at which the daily window resets (next UTC midnight).","schema":{"type":"integer"}},"X-RateLimit-Scope":{"description":"Which bucket the limits above describe: `key` (this API key's own allowance) or `ip` (the shared per-address ceiling, also used when the key did not validate). Absent on requests without an API key.","schema":{"type":"string","enum":["key","ip"]}},"X-Request-ID":{"description":"Correlation id of this request. Quote it when contacting support.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"exampleType":"examples"},"249ee68e-48ec-4254-8012-7c7e907b8dfe":{"description":"Internal error (`internal_error`, retryable). Any credits charged for the call are refunded; retry with backoff and quote `requestId` to support if it persists.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string","title":"Detail","description":"Human-readable reason, safe to surface to an end user. Branch on the HTTP status rather than on this string: the wording is not part of the contract and may be reworded, but 401 (bad key), 402 (out of credits), 403 (missing scope), 404 (no such resource) and 429 (rate limited) are stable.","examples":["Insufficient API credits."],"isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"errors":{"oneOf":[{"type":"array","items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"errors.oneOf.0.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"errors.oneOf.0.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"errors.oneOf.0.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"type":"array","title":"Loc","description":"Where the bad value is: `body`, `query` or `path`, then the parameter name exactly as you send it (camelCase), then list indexes. A bare `[\"body\"]` means the body as a whole was not a JSON object.","examples":[["body","query"]],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","title":"Msg","description":"What is wrong with the value, in plain English.","examples":["Field required"],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Machine-readable error kind, e.g. `missing`, `literal_error`, `json_invalid`.","examples":["missing"],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["loc","msg","type"],"title":"ApiFieldError","description":"One rejected field in a 422 response.","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"ApiFieldError · object"},"title":"Errors","description":"Present on 422 only: every field that failed validation.","uniqueKey":"errors.oneOf.0","typeLabel":"ApiFieldError · object[]"},{"type":"null","title":"Errors","description":"Present on 422 only: every field that failed validation.","uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors","typeLabel":"ApiFieldError · object[] | null"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Stable machine code for the failure. Branch on this, not on `detail`. The set is open: tolerate values you do not know. Known values: authentication_required, invalid_api_key, api_key_expired, permission_denied, insufficient_scope, insufficient_credits, payment_required, rate_limited, quota_exceeded, daily_cap_exceeded, bad_request, validation_error, method_not_allowed, payload_too_large, unsupported_media_type, invalid_query, invalid_citation_input, section_not_found, resource_not_found, idempotency_key_reused, idempotency_in_progress, idempotency_replay_unavailable, upstream_timeout, service_unavailable, internal_error, conflict.","x-known-values":["authentication_required","invalid_api_key","api_key_expired","permission_denied","insufficient_scope","insufficient_credits","payment_required","rate_limited","quota_exceeded","daily_cap_exceeded","bad_request","validation_error","method_not_allowed","payload_too_large","unsupported_media_type","invalid_query","invalid_citation_input","section_not_found","resource_not_found","idempotency_key_reused","idempotency_in_progress","idempotency_replay_unavailable","upstream_timeout","service_unavailable","internal_error","conflict"],"example":"insufficient_credits","uniqueKey":"code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Stable machine code for the failure. Branch on this, not on `detail`. The set is open: tolerate values you do not know. Known values: authentication_required, invalid_api_key, api_key_expired, permission_denied, insufficient_scope, insufficient_credits, payment_required, rate_limited, quota_exceeded, daily_cap_exceeded, bad_request, validation_error, method_not_allowed, payload_too_large, unsupported_media_type, invalid_query, invalid_citation_input, section_not_found, resource_not_found, idempotency_key_reused, idempotency_in_progress, idempotency_replay_unavailable, upstream_timeout, service_unavailable, internal_error, conflict.","x-known-values":["authentication_required","invalid_api_key","api_key_expired","permission_denied","insufficient_scope","insufficient_credits","payment_required","rate_limited","quota_exceeded","daily_cap_exceeded","bad_request","validation_error","method_not_allowed","payload_too_large","unsupported_media_type","invalid_query","invalid_citation_input","section_not_found","resource_not_found","idempotency_key_reused","idempotency_in_progress","idempotency_replay_unavailable","upstream_timeout","service_unavailable","internal_error","conflict"],"example":"insufficient_credits","uniqueKey":"code.oneOf.1","typeLabel":"null"}],"uniqueKey":"code","typeLabel":"string | null"},"type":{"oneOf":[{"type":"string","title":"Type","description":"URL naming the error kind, `https://www.vaquill.ai/docs/errors/{code}`.","example":"https://www.vaquill.ai/docs/errors/insufficient_credits","uniqueKey":"type.oneOf.0","typeLabel":"string"},{"type":"null","title":"Type","description":"URL naming the error kind, `https://www.vaquill.ai/docs/errors/{code}`.","example":"https://www.vaquill.ai/docs/errors/insufficient_credits","uniqueKey":"type.oneOf.1","typeLabel":"null"}],"uniqueKey":"type","typeLabel":"string | null"},"title":{"oneOf":[{"type":"string","title":"Title","description":"Short fixed English title for `code`.","example":"Insufficient credits","uniqueKey":"title.oneOf.0","typeLabel":"string"},{"type":"null","title":"Title","description":"Short fixed English title for `code`.","example":"Insufficient credits","uniqueKey":"title.oneOf.1","typeLabel":"null"}],"uniqueKey":"title","typeLabel":"string | null"},"status":{"oneOf":[{"type":"integer","title":"Status","description":"Echo of the HTTP status code.","example":402,"uniqueKey":"status.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Status","description":"Echo of the HTTP status code.","example":402,"uniqueKey":"status.oneOf.1","typeLabel":"null"}],"uniqueKey":"status","typeLabel":"integer | null"},"requestId":{"oneOf":[{"type":"string","title":"Requestid","description":"Equals the `X-Request-ID` response header. Quote it to support.","example":"8d32789e-7b27-44f7-9523-424596e7a929","uniqueKey":"requestId.oneOf.0","typeLabel":"string"},{"type":"null","title":"Requestid","description":"Equals the `X-Request-ID` response header. Quote it to support.","example":"8d32789e-7b27-44f7-9523-424596e7a929","uniqueKey":"requestId.oneOf.1","typeLabel":"null"}],"uniqueKey":"requestId","typeLabel":"string | null"},"retryable":{"oneOf":[{"type":"boolean","title":"Retryable","description":"True only when repeating the same request is safe and may succeed.","example":false,"uniqueKey":"retryable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Retryable","description":"True only when repeating the same request is safe and may succeed.","example":false,"uniqueKey":"retryable.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryable","typeLabel":"boolean | null"},"retryAfterSeconds":{"oneOf":[{"type":"integer","title":"Retryafterseconds","description":"On 429 and 503 when `Retry-After` is set: the same value in seconds.","example":30,"uniqueKey":"retryAfterSeconds.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retryafterseconds","description":"On 429 and 503 when `Retry-After` is set: the same value in seconds.","example":30,"uniqueKey":"retryAfterSeconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryAfterSeconds","typeLabel":"integer | null"},"actId":{"oneOf":[{"type":"string","title":"Actid","description":"Section routes only, on a miss: the identifier that matched nothing.","example":"UNKNOWN_99999","uniqueKey":"actId.oneOf.0","typeLabel":"string"},{"type":"null","title":"Actid","description":"Section routes only, on a miss: the identifier that matched nothing.","example":"UNKNOWN_99999","uniqueKey":"actId.oneOf.1","typeLabel":"null"}],"uniqueKey":"actId","typeLabel":"string | null"},"reason":{"oneOf":[{"type":"string","title":"Reason","description":"Section routes only, on a miss: why nothing matched, for example `unsupported_jurisdiction` or `not_in_registry`. The set is open.","example":"not_in_registry","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","description":"Section routes only, on a miss: why nothing matched, for example `unsupported_jurisdiction` or `not_in_registry`. The set is open.","example":"not_in_registry","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"},"didYouMean":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"didYouMean.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Didyoumean","description":"Section routes only, on a miss: identifiers worth trying instead.","uniqueKey":"didYouMean.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Didyoumean","description":"Section routes only, on a miss: identifiers worth trying instead.","uniqueKey":"didYouMean.oneOf.1","typeLabel":"null"}],"uniqueKey":"didYouMean","typeLabel":"string[] | null"},"sessionLawId":{"oneOf":[{"type":"string","title":"Sessionlawid","description":"Session-law routes only, on a miss: the id or citation that matched nothing.","example":"Pub. L. 117-58","uniqueKey":"sessionLawId.oneOf.0","typeLabel":"string"},{"type":"null","title":"Sessionlawid","description":"Session-law routes only, on a miss: the id or citation that matched nothing.","example":"Pub. L. 117-58","uniqueKey":"sessionLawId.oneOf.1","typeLabel":"null"}],"uniqueKey":"sessionLawId","typeLabel":"string | null"},"defaultSessionLawId":{"oneOf":[{"type":"string","title":"Defaultsessionlawid","description":"Session-law routes only, on an `ambiguous_citation` miss: the conventional reading, which is NOT chosen for you. `didYouMean` lists every candidate.","example":"us1_ca_2019_ch_123","uniqueKey":"defaultSessionLawId.oneOf.0","typeLabel":"string"},{"type":"null","title":"Defaultsessionlawid","description":"Session-law routes only, on an `ambiguous_citation` miss: the conventional reading, which is NOT chosen for you. `didYouMean` lists every candidate.","example":"us1_ca_2019_ch_123","uniqueKey":"defaultSessionLawId.oneOf.1","typeLabel":"null"}],"uniqueKey":"defaultSessionLawId","typeLabel":"string | null"},"candidateCount":{"oneOf":[{"type":"integer","title":"Candidatecount","description":"Session-law routes only: how many laws the citation names in all.","example":3,"uniqueKey":"candidateCount.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Candidatecount","description":"Session-law routes only: how many laws the citation names in all.","example":3,"uniqueKey":"candidateCount.oneOf.1","typeLabel":"null"}],"uniqueKey":"candidateCount","typeLabel":"integer | null"},"truncated":{"oneOf":[{"type":"boolean","title":"Truncated","description":"Session-law routes only: true when `didYouMean` lists fewer laws than `candidateCount`, so the list is not complete.","example":false,"uniqueKey":"truncated.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Truncated","description":"Session-law routes only: true when `didYouMean` lists fewer laws than `candidateCount`, so the list is not complete.","example":false,"uniqueKey":"truncated.oneOf.1","typeLabel":"null"}],"uniqueKey":"truncated","typeLabel":"boolean | null"},"jurisdictions":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"jurisdictions.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Jurisdictions","description":"Session-law routes only, on a `needs_jurisdiction` miss: every state where the citation exists. Name one in the citation, or pass `state`.","uniqueKey":"jurisdictions.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Jurisdictions","description":"Session-law routes only, on a `needs_jurisdiction` miss: every state where the citation exists. Name one in the citation, or pass `state`.","uniqueKey":"jurisdictions.oneOf.1","typeLabel":"null"}],"uniqueKey":"jurisdictions","typeLabel":"string[] | null"},"sessionCoverage":{"oneOf":[{"type":"object","title":"Sessioncoverage","description":"Session-law routes only, on a `session_not_fully_collected` miss: how much of the session we hold.","additionalProperties":true,"uniqueKey":"sessionCoverage.oneOf.0","typeLabel":"Sessioncoverage · object"},{"type":"null","title":"Sessioncoverage","description":"Session-law routes only, on a `session_not_fully_collected` miss: how much of the session we hold.","uniqueKey":"sessionCoverage.oneOf.1","typeLabel":"null"}],"uniqueKey":"sessionCoverage","typeLabel":"Sessioncoverage · object | null"},"creditsRequired":{"oneOf":[{"type":"integer","title":"Creditsrequired","description":"402 only, when known: the credits this call needed.","example":5,"uniqueKey":"creditsRequired.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Creditsrequired","description":"402 only, when known: the credits this call needed.","example":5,"uniqueKey":"creditsRequired.oneOf.1","typeLabel":"null"}],"uniqueKey":"creditsRequired","typeLabel":"integer | null"},"creditsAvailable":{"oneOf":[{"type":"integer","title":"Creditsavailable","description":"402 only, when known: the credits you can spend right now.","example":2,"uniqueKey":"creditsAvailable.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Creditsavailable","description":"402 only, when known: the credits you can spend right now.","example":2,"uniqueKey":"creditsAvailable.oneOf.1","typeLabel":"null"}],"uniqueKey":"creditsAvailable","typeLabel":"integer | null"},"topUpHint":{"oneOf":[{"type":"string","title":"Topuphint","description":"402 only, when known: where to add credits.","example":"Add credits in the developer dashboard, then retry the same request.","uniqueKey":"topUpHint.oneOf.0","typeLabel":"string"},{"type":"null","title":"Topuphint","description":"402 only, when known: where to add credits.","example":"Add credits in the developer dashboard, then retry the same request.","uniqueKey":"topUpHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"topUpHint","typeLabel":"string | null"}},"type":"object","required":["detail"],"title":"ApiDetailError","description":"Error envelope the API actually returns.\n\nEvery error (400/401/402/403/404/405/422/429/5xx) carries a `detail`\nstring, e.g. `{\"detail\": \"Insufficient API credits.\"}`, on every mount of\nthe API. A 422 adds `errors`, one entry per rejected field. Some 404s add\nendpoint-specific diagnosis beside `detail` (the statutes section routes\nadd `actId`, `reason` and `didYouMean`); treat unknown keys as optional.","uniqueKey":"","typeLabel":"ApiDetailError · object"},"examples":{"Example":{"title":"Example","value":{"detail":"Insufficient API credits.","errors":[{"loc":["body","query"],"msg":"Field required","type":"missing"}],"code":"insufficient_credits","type":"https://www.vaquill.ai/docs/errors/insufficient_credits","title":"Insufficient credits","status":402,"requestId":"8d32789e-7b27-44f7-9523-424596e7a929","retryable":false,"retryAfterSeconds":30,"actId":"UNKNOWN_99999","reason":"not_in_registry","didYouMean":["\u003cstring>"],"sessionLawId":"Pub. L. 117-58","defaultSessionLawId":"us1_ca_2019_ch_123","candidateCount":3,"truncated":false,"jurisdictions":["\u003cstring>"],"sessionCoverage":{},"creditsRequired":5,"creditsAvailable":2,"topUpHint":"Add credits in the developer dashboard, then retry the same request."}}},"exampleType":"generated"}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed in the current per-minute window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current per-minute window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp at which the per-minute window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Requests allowed per day (the slow-drip backstop).","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Requests left in the daily window.","schema":{"type":"integer"}},"X-RateLimit-Limit-Hour":{"description":"Requests allowed per hour.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Hour":{"description":"Requests left in the hourly window.","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Unix timestamp at which the daily window resets (next UTC midnight).","schema":{"type":"integer"}},"X-RateLimit-Scope":{"description":"Which bucket the limits above describe: `key` (this API key's own allowance) or `ip` (the shared per-address ceiling, also used when the key did not validate). Absent on requests without an API key.","schema":{"type":"string","enum":["key","ip"]}},"X-Request-ID":{"description":"Correlation id of this request. Quote it when contacting support.","schema":{"type":"string"}}},"exampleType":"generated"}},"security":{"f4d0a5c6-0622-420e-b171-023df038007d":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"vq_key_*","description":"API key issued from the developer dashboard. Pass as `Authorization: Bearer vq_key_...` (preferred).","scopes":[],"schemeName":"ApiKeyAuth"}},"e376de42-5dbe-4b44-9558-2becc7f2ed2d":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"The same API key as a bare header value: `X-API-Key: vq_key_...`. Equivalent to the Bearer form.","scopes":[],"schemeName":"ApiKeyHeader"}}},"servers":{"fe509590-d9b0-43fa-8081-f4cab426bd5e":{"url":"https://api.vaquill.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"vq_key_*","description":"API key issued from the developer dashboard. Pass as `Authorization: Bearer vq_key_...` (preferred).","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key issued from the developer dashboard. Pass as `Authorization: Bearer vq_key_...` (preferred).","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"The same API key as a bare header value: `X-API-Key: vq_key_...`. Equivalent to the Bearer form.","scopes":[],"schemeName":"ApiKeyHeader"},"schema":{"title":"X-API-Key","type":"string","description":"The same API key as a bare header value: `X-API-Key: vq_key_...`. Equivalent to the Bearer form.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyHeader","name":"X-API-Key"}],"title":"ApiKeyHeader"}]},"originalFileLocation":"https://api.vaquill.ai/external/openapi.json"},"subdomain":"vaquill","siteName":"Vaquill AI","title":"Get your credit balance - Vaquill AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"originalFileLocation":"api-reference/credits/get-your-credit-balance.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"light\"}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=\"Returns the credits this API key\u0026#x27;s account can spend right now, derived from your live credit buckets under the same expiry rule the billing path applies. Free, never charged, and open to any valid vq_key_ key (no scope required), so you can poll it for alerting or a pre-flight check. It is rate limited like every other key-authenticated route; see the rate-limit docs for the X-RateLimit-* headers. creditsRemaining is the same field name metered responses use. Credits are how much you may spend and rateLimit is how fast you may call; the two are independent. Read bySource and nextExpiry before assuming a balance is durable.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Vaquill AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_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=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get your credit balance - Vaquill AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the credits this API key\u0026#x27;s account can spend right now, derived from your live credit buckets under the same expiry rule the billing path applies. Free, never charged, and open to any valid vq_key_ key (no scope required), so you can poll it for alerting or a pre-flight check. It is rate limited like every other key-authenticated route; see the rate-limit docs for the X-RateLimit-* headers. creditsRemaining is the same field name metered responses use. Credits are how much you may spend and rateLimit is how fast you may call; the two are independent. Read bySource and nextExpiry before assuming a balance is durable.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vaquill AI Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://vaquill.mintlify.site/docs/_mintlify/api/og/v2?division=Credits\u0026amp;title=Get+your+credit+balance\u0026amp;description=Returns+the+credits+this+API+key%27s+account+can+spend+right+now%2C+derived+from%0Ayour+live+credit+buckets+under+the+same+expiry+rule+the+billing+path+applies.%0AFree%2C\u0026amp;theme=4f8ca970eaa5a0775e273f11\u0026amp;signature=4f28a91625423e0a35c8b4c15832acfb297e5e28d8cdf580d9a1023768d5508e\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get your credit balance - Vaquill AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the credits this API key\u0026#x27;s account can spend right now, derived from your live credit buckets under the same expiry rule the billing path applies. Free, never charged, and open to any valid vq_key_ key (no scope required), so you can poll it for alerting or a pre-flight check. It is rate limited like every other key-authenticated route; see the rate-limit docs for the X-RateLimit-* headers. creditsRemaining is the same field name metered responses use. Credits are how much you may spend and rateLimit is how fast you may call; the two are independent. Read bySource and nextExpiry before assuming a balance is durable.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vaquill.mintlify.site/docs/_mintlify/api/og/v2?division=Credits\u0026amp;title=Get+your+credit+balance\u0026amp;description=Returns+the+credits+this+API+key%27s+account+can+spend+right+now%2C+derived+from%0Ayour+live+credit+buckets+under+the+same+expiry+rule+the+billing+path+applies.%0AFree%2C\u0026amp;theme=4f8ca970eaa5a0775e273f11\u0026amp;signature=4f28a91625423e0a35c8b4c15832acfb297e5e28d8cdf580d9a1023768d5508e\">\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=\"/docs/mintlify-assets/_mintlify/favicons/vaquill/cxXYvhk1ARjGdjCs/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Vaquill AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6E3730\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/credits/get-your-credit-balance.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.vaquill.ai/#organization\",\"name\":\"Vaquill AI\",\"url\":\"https://www.vaquill.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vaquill/HoYf91pjRoTl4-t3/logo/light.png?fit=max\u0026auto=format\u0026n=HoYf91pjRoTl4-t3\u0026q=85\u0026s=1c97b6018caaa1fee0a743b05651bb81\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.vaquill.ai/docs#website\",\"name\":\"Vaquill AI\",\"url\":\"https://www.vaquill.ai/docs\",\"publisher\":{\"@id\":\"https://www.vaquill.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance#webpage\",\"url\":\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance\",\"name\":\"Get your credit balance\",\"description\":\"Returns the credits this API key's account can spend right now, derived from your live credit buckets under the same expiry rule the billing path applies. Free, never charged, and open to any valid vq_key_ key (no scope required), so you can poll it for alerting or a pre-flight check. It is rate limited like every other key-authenticated route; see the rate-limit docs for the X-RateLimit-* headers. creditsRemaining is the same field name metered responses use. Credits are how much you may spend and rateLimit is how fast you may call; the two are independent. Read bySource and nextExpiry before assuming a balance is durable.\",\"isPartOf\":{\"@id\":\"https://www.vaquill.ai/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Vaquill AI\",\"item\":\"https://www.vaquill.ai/docs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get your credit balance\",\"item\":\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance#apireference\",\"headline\":\"Get your credit balance\",\"name\":\"Get your credit balance\",\"description\":\"Returns the credits this API key's account can spend right now, derived from your live credit buckets under the same expiry rule the billing path applies. Free, never charged, and open to any valid vq_key_ key (no scope required), so you can poll it for alerting or a pre-flight check. It is rate limited like every other key-authenticated route; see the rate-limit docs for the X-RateLimit-* headers. creditsRemaining is the same field name metered responses use. Credits are how much you may spend and rateLimit is how fast you may call; the two are independent. Read bySource and nextExpiry before assuming a balance is durable.\",\"url\":\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance\",\"mainEntityOfPage\":{\"@id\":\"https://www.vaquill.ai/docs/api-reference/credits/get-your-credit-balance#webpage\"},\"publisher\":{\"@id\":\"https://www.vaquill.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://www.vaquill.ai/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Vaquill AI\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Vaquill AI\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/api-reference/credits/get-your-credit-balance.md","siteName":"Vaquill AI","nav":{"global":{"anchors":[{"anchor":"Changelog","icon":"clock","href":"/api-guide/changelog"},{"anchor":"MCP","icon":"plug","href":"/integrations/mcp/vaquill"}]},"tabs":[{"tab":"Guide","pages":[{"title":"Guide","href":"/api-guide/coverage"}]},{"tab":"US API reference","groups":[{"group":"US Statutes","pages":[{"title":"Search US statutes, constitutions, court rules, and executive actions","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/us/statutes/search","href":"/api-reference/us-statutes/search-us-statutes-constitutions-court-rules-and-executive-actions"},{"title":"Get statute section metadata","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}","href":"/api-reference/us-statutes/get-statute-section-metadata"},{"title":"Resolve a citation to its section","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/resolve","href":"/api-reference/us-statutes/resolve-a-citation-to-its-section"},{"title":"Resolve many citations at once","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/us/statutes/resolve","href":"/api-reference/us-statutes/resolve-many-citations-at-once"},{"title":"Get the sections around this one","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/related","href":"/api-reference/us-statutes/get-the-sections-around-this-one"},{"title":"Get metadata for many statute sections","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/us/statutes/sections","href":"/api-reference/us-statutes/get-metadata-for-many-statute-sections"},{"title":"Get statute full text","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/body","href":"/api-reference/us-statutes/get-statute-full-text"},{"title":"Count the sections in a scope","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/us/statutes/count","href":"/api-reference/us-statutes/count-the-sections-in-a-scope"},{"title":"Coverage matrix by jurisdiction and corpusType","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/coverage","href":"/api-reference/us-statutes/coverage-matrix-by-jurisdiction-and-corpustype"},{"title":"Browse the statutory hierarchy","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/divisions","href":"/api-reference/us-statutes/browse-the-statutory-hierarchy"},{"title":"Get this section's change history","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/changes","href":"/api-reference/us-statutes/get-this-sections-change-history"},{"title":"Which acts a state publisher lists against this section","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/enactments","href":"/api-reference/us-statutes/which-acts-a-state-publisher-lists-against-this-section"},{"title":"Get the Federal Register documents behind a CFR section","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/rulemaking","href":"/api-reference/us-statutes/get-the-federal-register-documents-behind-a-cfr-section"},{"title":"Get every Federal Register document for a CFR part","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/part/{title}/{part}/rulemaking","href":"/api-reference/us-statutes/get-every-federal-register-document-for-a-cfr-part"},{"title":"Find the citations in a text and resolve each","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/us/statutes/extract-citations","href":"/api-reference/us-statutes/find-the-citations-in-a-text-and-resolve-each"},{"title":"Find the sections that cite this one","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/cited-by","href":"/api-reference/us-statutes/find-the-sections-that-cite-this-one"},{"title":"Get the defined terms that govern this section","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/definitions","href":"/api-reference/us-statutes/get-the-defined-terms-that-govern-this-section"},{"title":"Compare this provision against other states","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/statutes/section/{act_id}/cross-state","href":"/api-reference/us-statutes/compare-this-provision-against-other-states"}]},{"group":"Pricing","pages":[{"title":"Get API credit pricing","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/api-credits/pricing","href":"/api-reference/pricing/get-api-credit-pricing"}]},{"group":"Board Watches","pages":[{"title":"List watchable boards","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/boards","href":"/api-reference/board-watches/list-watchable-boards"},{"title":"List your board watches","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/watches","href":"/api-reference/board-watches/list-your-board-watches"},{"title":"Create a board watch","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/watches","href":"/api-reference/board-watches/create-a-board-watch"},{"title":"Send a test delivery","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/watches/{watch_id}/test","href":"/api-reference/board-watches/send-a-test-delivery"},{"title":"Delete a board watch","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json delete /api/v1/watches/{watch_id}","href":"/api-reference/board-watches/delete-a-board-watch"},{"title":"Update a board watch","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json patch /api/v1/watches/{watch_id}","href":"/api-reference/board-watches/update-a-board-watch"},{"title":"List what changed on a watch's source","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/watches/{watch_id}/changes","href":"/api-reference/board-watches/list-what-changed-on-a-watchs-source"},{"title":"Old-vs-new text for one change","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/watches/{watch_id}/changes/{change_id}/diff","href":"/api-reference/board-watches/old-vs-new-text-for-one-change"},{"title":"List delivery history for a watch","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/watches/{watch_id}/deliveries","href":"/api-reference/board-watches/list-delivery-history-for-a-watch"},{"title":"Law change alert","version":null,"deprecated":null,"openapi":"https://api.vaquill.ai/external/openapi.json webhook board.updated","href":"/api-reference/board-watches/law-change-alert"},{"title":"Webhook test delivery","description":"Sent by `POST /watches/{watchId}/test`, signed and authenticated exactly like a real delivery. Headers: `Content-Type: application/json`, `X-Vaquill-Event: board.test`.\n\n**Verification.** Present only when the watch has a `webhookSecret`. Prefer the Standard Webhooks headers: `webhook-id`, `webhook-timestamp` (Unix seconds) and `webhook-signature` (`v1,\u003cbase64>`, several space separated while a secret rotates), an HMAC-SHA256 over `{webhook-id}.{webhook-timestamp}.{raw body}`. The HMAC key is the base64 decoding of the secret after `whsec_` when it has that prefix, otherwise the secret's UTF-8 bytes. Verify against the raw bytes before parsing, and reject a timestamp more than 5 minutes old. `webhook-id` is stable across retries of one delivery. The legacy `X-Vaquill-Signature: sha256=\u003chex>` header (HMAC-SHA256 of the raw body) is also sent, is deprecated, and remains for at least 12 months. Respond with any 2xx to acknowledge; redirects are not followed.","version":null,"deprecated":null,"openapi":"https://api.vaquill.ai/external/openapi.json webhook board.test","href":"/api-reference/board-watches/webhook-test-delivery"}]},{"group":"Credits","pages":[{"title":"Get your credit balance","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/credits/balance","href":"/api-reference/credits/get-your-credit-balance"}]},{"group":"Agent Onboarding","pages":[{"title":"Start an agent signup and get a trial key","description":"**Free.** No API key. Returns `apiKey` at once, on a trial with 100 credits that ends in 7 days, and emails a 6-digit code to `email`. Verify the email to keep the same key and add the one-time 1000 free credits: POST the code with `claimToken` to `verifyUrl` if you can read that inbox (or your human reads it to you), or show your human `userCode` and `verificationUri` and poll `tokenUrl`. Full walkthrough: https://api.vaquill.ai/auth.md","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/agent/signup","href":"/api-reference/agent-onboarding/start-an-agent-signup-and-get-a-trial-key"},{"title":"Check whether the email is verified","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/agent/token","href":"/api-reference/agent-onboarding/check-whether-the-email-is-verified"},{"title":"Verify the emailed code and keep the key","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/agent/verify","href":"/api-reference/agent-onboarding/verify-the-emailed-code-and-keep-the-key"},{"title":"Buy credits with USDC (x402)","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/agent/x402/credits","href":"/api-reference/agent-onboarding/buy-credits-with-usdc-x402"}]},{"group":"US Session Laws","pages":[{"title":"Feed of changes to the session-law registry","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/session-laws/changes","href":"/api-reference/us-session-laws/feed-of-changes-to-the-session-law-registry"},{"title":"Get many state session laws at once, by id or citation","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/us/session-laws/batch","href":"/api-reference/us-session-laws/get-many-state-session-laws-at-once-by-id-or-citation"},{"title":"Search the text of state session laws","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json post /api/v1/us/session-laws/search","href":"/api-reference/us-session-laws/search-the-text-of-state-session-laws"},{"title":"List every served version of a state session law","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/session-laws/{session_law_id}/versions","href":"/api-reference/us-session-laws/list-every-served-version-of-a-state-session-law"},{"title":"List a state's session laws","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/session-laws/list","href":"/api-reference/us-session-laws/list-a-states-session-laws"},{"title":"Get a state session law's text, current or a past version","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/session-laws/{session_law_id}/body","href":"/api-reference/us-session-laws/get-a-state-session-laws-text-current-or-a-past-version"},{"title":"Get a state session law, by id or by citation","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/session-laws/{session_law_id}","href":"/api-reference/us-session-laws/get-a-state-session-law-by-id-or-by-citation"}]},{"group":"US Rulemaking","pages":[{"title":"What the rulemaking store holds (free)","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/rulemaking/coverage","href":"/api-reference/us-rulemaking/what-the-rulemaking-store-holds-free"},{"title":"List and filter Regulations.gov dockets","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/rulemaking/dockets/list","href":"/api-reference/us-rulemaking/list-and-filter-regulationsgov-dockets"},{"title":"One Regulations.gov docket","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/rulemaking/dockets/{docket_id}","href":"/api-reference/us-rulemaking/one-regulationsgov-docket"},{"title":"Documents of one docket, oldest first","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/rulemaking/dockets/{docket_id}/documents","href":"/api-reference/us-rulemaking/documents-of-one-docket-oldest-first"},{"title":"Everything we hold for one RIN","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/rulemaking/rins/{rin}","href":"/api-reference/us-rulemaking/everything-we-hold-for-one-rin"},{"title":"Unified Agenda history of one RIN","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/rulemaking/rins/{rin}/agenda","href":"/api-reference/us-rulemaking/unified-agenda-history-of-one-rin"},{"title":"List and filter Rules Committee records","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/rulemaking/committee-records/list","href":"/api-reference/us-rulemaking/list-and-filter-rules-committee-records"},{"title":"One Rules Committee record with its page text","deprecated":null,"version":null,"openapi":"https://api.vaquill.ai/external/openapi.json get /api/v1/us/rulemaking/committee-records/{record_id}","href":"/api-reference/us-rulemaking/one-rules-committee-record-with-its-page-text"}]}]},{"tab":"India API reference","pages":[{"title":"India API reference","href":"/api-guide/coverage/india"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations"}]}]},"basePath":"","title":"Get your credit balance - Vaquill AI","buildId":"dpl_Eok1jboeiLTUE4ccnKdogAktkDhH","deploymentId":"dpl_Eok1jboeiLTUE4ccnKdogAktkDhH","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-BO6jLjHP.js","utils-DzK3kjtW.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B_o_sRtB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-w5sf6cTL.js","snippetPresets-C-LqQvlw.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-B86q0r56.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CK4fhXtK.js","shallow-2nSrO3Y1.js","getApiPlaygroundDisplay-iMY8AQYp.js","CodeSnippet-CYrmmkRs.js","CodeSnippets-CpTHX08n.js","Page-B6e_603r.js","getPastedJson-ErXUu_z-.js","icon-DjAwzjTp.js","MethodPill-DWCnd71y.js","DuplicateIcon-CzD5BRfY.js","createIcon-D_pVdVTU.js","DynamicMarkdown-BeNxZ5px.js","SectionHeading-CovuDw0Y.js","axios-vUo_bRtp.js","Markdown-BZjeoXbi.js","clsx-BaM3PNnJ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BfGZDUfd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-wFXGQKnc.js"]}