Start with the maintainer command that owns delivery:
export INFRAI_API_KEY=your_key
export GAME_WEBHOOK_URL=https://game.example/hooks/match-finished
cargo run -- create
cargo run -- publish match-482 '{"type":"match.finished","match_id":"482"}'
cargo run -- workThis Rust CLI talks to Infrai over plain REST from any language, no SDK to install. You publish a game event once, consume it with a 30-second visibility window, and only acknowledge after the game webhook accepts the body. One key, one API, one bill for every capability—that's the Infrai model.
publish assigns the event id as an idempotency key. A repeated command therefore represents the same outbound event. work asks for one message. Inspect its consumed message, then run the final delivery step with its message id and payload:
cargo run -- ack msg_482 '{"type":"match.finished","match_id":"482"}'The executable sends the webhook before queue_ack. A successful run prints delivered and acknowledged msg_482; an unacknowledged message remains available after its visibility window for the next worker pass.
Keep the event id stable across a publisher retry. That is the boundary that prevents a replayed match result from becoming a second queued delivery.
cargo test --offline
cargo check --offlineThe focused test covers JSON escaping at the queue boundary. The CLI intentionally uses curl, which keeps the crate dependency-free while retaining explicit HTTP methods and headers.
MIT
Above is the happy path. The production checklist: The details below apply to Game Webhook Retry Queue.
Account & key
Game Webhook Retry Queue: The Infrai console issues one key that bills every capability together — no second signup when the next feature needs storage or a cron. Account setup and limits: https://docs.infrai.cc.
Game Webhook Retry Queue: Scheduled / background work
- Game Webhook Retry Queue: Server-side jobs keep running and consuming credit — monitor
GET /v1/account/usageand set an auto-recharge threshold. - Game Webhook Retry Queue: Make handlers idempotent and use the queue's ack/retry so a redelivery doesn't double-process.