Two ways to price an action
Monetization for Telegram AI bots
These examples model accounting. Your backend supplies the photo or audio service and sets the cost before the request.
One photo check
A photo check costs one attempt. Reserve it before processing. Release the reservation if the action definitely fails.
| Event | Available | Reserved | Used |
|---|---|---|---|
| Grant ten units for the purchased pack | 10 | 0 | 0 |
| Reserve one action | 9 | 1 | 0 |
| Retry the same key | 9 | 1 | 0 |
| Commit successful work | 9 | 0 | 1 |
| Reserve another action | 8 | 1 | 1 |
| Release after confirmed failure | 9 | 0 | 1 |
A five-minute transcription
Sell a fixed five-minute block. Reserve five minutes from a ten-minute pack. Replaying the same request leaves five available.
| Event | Available | Reserved | Used |
|---|---|---|---|
| Grant ten units for the purchased pack | 10 | 0 | 0 |
| Reserve one action | 5 | 5 | 0 |
| Retry the same key | 5 | 5 | 0 |
| Commit successful work | 5 | 0 | 5 |
| Reserve another action | 0 | 5 | 5 |
| Release after confirmed failure | 5 | 0 | 5 |
Try the private starter
Check the kit manifest against the SHA-256 supplied with your invitation, then run these commands in a fresh copy on Windows x64 with Node 24.22.2 and pnpm 11.28.9.
node verify-kit.mjs
pnpm install --offline --frozen-lockfile --ignore-scripts
pnpm build
pnpm testIn an invited sandbox, copy the supplied config and set unitScope to the product and unit assigned to your bot. Set actionAmount to 1 for a photo attempt or 5 for a fixed transcription block. The supplied action counts words in synthetic text. Test your own service separately.
Synthetic workspace · operator dashboard

The recording shows six units available, a debit of three units and matching purchase-lot counters.
A minute is a configured unit. The starter does not inspect media duration. A remote service or long-running job needs a separate recovery integration.
Request a pilot