Skip to main content
Two HTTP endpoints expose everything you need to track spend:
  • GET /accounts/:owner_id — point-in-time wallet snapshot + tier state
  • GET /accounts/:owner_id/usage — cost and scan counts over a time range
Both are authenticated with your standard X-API-Key header. You can only read your own account — requests for a different owner ID return 403.

Account snapshot

Returns the current account + wallet snapshot.

Response

string
Account identifier.
string
Account email.
string
One of free, pro, enterprise.
string
Account creation timestamp (RFC3339, UTC).
string | null
When the account last moved to its current paid tier. null for Free accounts. Used as the billing-cycle anchor for the monthly recharge commitment.
string | null
Set when a Pro / Enterprise account misses its monthly commitment. While non-null, the paid tier stays active; after the deadline passes without a qualifying deposit, the account is downgraded to Free.
integer
Remaining sandbox free credits in microdollars. Starts at 100000000 (100)ataccountcreation.</ResponseField><ResponseFieldname="guardrailsfreemicros"type="integer">Remainingguardrailsfreecreditsinmicrodollars.Startsat200000000(100) at account creation.</ResponseField> <ResponseField name="guardrails_free_micros" type="integer">Remaining guardrails free credits in microdollars. Starts at 200000000 (200).
integer
Paid balance in microdollars. Topped up by deposits.
Response
To compute your effective sandbox balance (what’s available for sandbox compute charges), sum sandbox_free_micros + balance_micros. Same for guardrails. The wallet drains sandbox free first, then paid; guardrails free first, then paid.

Usage over a time range

Returns aggregated cost + scan counts for a time range.

Query parameters

string
Window start (RFC3339). Defaults to 30 days ago.
string
Window end (RFC3339). Defaults to now.
string
Backward-compatible alias for start. Ignored if start is set.

Response

string
Account identifier.
string
Effective window start (RFC3339 UTC).
integer
Total sandbox compute cost for the window, in microdollars.
string
Convenience string: total_cost_micros / 1000000 formatted to 2 decimal places.
integer
Number of distinct sandboxes metered in the window.
integer
Total sandbox-seconds consumed.
integer
Sum of sandbox_free_micros + balance_micros at the time of the query.
integer
Total guardrails scan cost in the window. Present only when the guardrails store is available.
string
USD-formatted equivalent.
integer
Sum of guardrails_free_micros + balance_micros.
object
Per-scanner scan counts: pii_ml_scans, injection_ml_scans, toxicity_ml_scans, code_security_scans, language_ml_scans, invisible_text_scans.
Response

Example — monthly spend

Managing API keys

Every key-management action is scoped to your own owner ID.
  • POST /accounts/:owner_id/api-keys — create a new key. Optional JSON body with a name field. Returns the raw key string exactly once — store it.
  • GET /accounts/:owner_id/api-keys — list your keys (key ID, name, created-at, revoked state — never the raw key).
  • DELETE /accounts/:owner_id/api-keys/:key_id — revoke a key. Future requests using that key return 401.
The same endpoints power the key-management screen on the Declaw dashboard. Use them directly if you need to rotate keys programmatically (e.g. from CI).

Patterns

Low-balance alerting. Poll the account snapshot endpoint once an hour and fire an alert when sandbox_free_micros + balance_micros drops below your threshold. For Pro accounts, sub-$10 is a reasonable “top up soon” signal. Month-close reconciliation. Call the usage endpoint with start / end aligned to your accounting period. total_cost_usd and guardrails_cost_usd are pre-formatted for reports. Per-scanner cost attribution. Multiply each entry in guardrails_breakdown by the per-scan rate from Billing & Pricing to get scanner-level spend — useful when deciding whether to disable an expensive scanner in low-risk environments.