A metered API makes promises whether or not anyone writes them down. Ours are written down, and all four are things you can test.
Revocation is immediate
A presented key is hashed and looked up on every request, with no cache. Caching that lookup would be the obvious optimisation and it would quietly turn "this key no longer works" into "this key stops working within a minute", which is not the same promise at all.
The balance is checked before any compute
A call we could not bill never starts, so a 402 comes back immediately rather than after the audio has been processed. The corollary is a small permitted overdraft: the true cost is only known once the audio is decoded, so refusing at exactly zero would mean doing the work and then withholding the result.
Failures are not charged
- An inference failure is recorded for diagnostics and not metered
- A client that disconnects before delivery is not charged, so the retry bills once
- A metering outage withholds the result rather than delivering it unbilled
A retry is safe
Send an Idempotency-Key and the same key can never bill twice, including across a race between two of our own processes. Without one, a timeout on your side is genuinely ambiguous, which is why every snippet in our docs includes it.
curl -X POST https://api.hohe.et/v1/transcribe \
-H "Authorization: Bearer $HOHE_API_KEY" \
-H "Idempotency-Key: meeting-2026-10-15-01" \
-F "model=hohe-asr" \
-F "[email protected]"Any number a customer is charged should be explainable from history, not asserted by a row.