Integration call billing + how to monitor usage

Outbound integration calls are metered + billed at the same platform usage rate other metered services use.

**The rate:** $0.001 raw cost per call × 1.15 platform markup = **0.115¢ per call** (~$1.15 per 1,000 calls). One `report.created` call counts as one. One `report.resolved` call counts as one. If a jurisdiction has, say, both Cityworks AND a generic webhook configured, each call counts independently (you'll see 2 calls per event).

**What gets charged:**
- Successful calls — yes.
- Failed calls (timeout / 4xx / 5xx) — yes. Same posture as other metered services (Wally STT, PredictHQ, etc.). The platform incurs the egress + retry cost either way; if you don't want a broken endpoint racking up calls, disable the integration (uncheck Enabled) until it's fixed.
- Calls for reports routed to a jurisdiction your org HASN'T claimed — no. Routing happens, but the org-pays accounting only fires when the claiming org makes the call.

**Where to watch volume:**
- `/account/billing` → **Usage** tab. The platform aggregates all metered usage; the civic-reports line is `civicIntegrationCallCount` + `civicIntegrationChargesCents`.
- Wally tool `civicReports_jurisdictionStats` returns the per-jurisdiction counter set including resolvedCount + openCount — multiply by 2 for the rough call count (one create + one resolution per fully-cycled report).
- For high-volume orgs, the chargeback accrual sweeper (runs monthly on the 1st) rolls civic-reports charges into the org's running balance same as everything else. Billing fires once the balance crosses the $5 threshold.

**Reducing volume:**
- If you only need outbound on the resolution path (your Cityworks workflow handles intake separately), use a custom Cityworks rule to filter out `report.created` events on your side, and rely on Turtini-side resolution PATCHes only. Note: the Turtini adapter still fires both — saving cost would need a per-event toggle which isn't shipped yet (on the v3 roadmap).
- Generic webhook + per-event filtering on your side is the cheapest customization path. The webhook adapter still bills (we did the work to fire it), but you can collapse downstream call volume.