Skip to main content
Last updated on
Advanced — 0.0.x primitives

You don't need this page for a normal integration. Use the quickstarts and createMythos() instead. These low-level functions remain exported for custom setups.

report_usage

Debit the Consumer's Mythos wallet after a billable action.

Signature​

python
async def report_usage(
jti: str,
credits: int,
reason: str | None = None,
*,
idempotency_key: str | None = None,
) -> None

Parameters​

ParamTypeRequiredDescription
jtistrYessessionJti from launch session
creditsintYesCredits to debit
reasonstr | NoneNoHuman-readable reason
idempotency_keystr | NoneNoCaller-supplied dedup key sent as charge_id. Same key on retry avoids double-billing. Defaults to a fresh UUID per call. Keyword-only. See Idempotency.

Returns​

None on success.

Raises​

ErrorCause
InsufficientFundsErrorMythos returned 402
SessionNotFoundErrorMythos returned 404
httpx.HTTPStatusErrorOther API failures

Internal behavior​

Sends POST /api/apps/sessions/{jti}/meter with charge_id set to idempotency_key if provided, otherwise a fresh UUID. See Idempotency.

Example​

python
await report_usage(session.sessionJti, credits=1, reason="page-view")

# Retry-safe: same idempotency_key on retry won't double-charge.
await report_usage(session.sessionJti, credits=1, reason="page-view", idempotency_key=post_id)

See also​