Price AppSync GraphQL operations, real-time subscription updates, connection minutes and caching from your client behaviour.
AppSync bills three unrelated meters: the operations your clients send, the messages you push out over subscriptions, and the minutes those subscription WebSockets stay open. The push meter counts per client per message, so a single mutation that fans out to 5,000 subscribers is 5,000 billed updates — that multiplication, not the query volume, is what drives real-time GraphQL bills. Confirm the current per-million rates and cache pricing for your region. A mobile app that keeps a subscription open all day generates connection minutes whether the user is looking at it or not, so the subscriber count and session length matter as much to the bill as actual traffic does.
AppSync Request
cost = operations ÷ 1 M × query price + real-time updates ÷ 1 M × update price + connection minutes ÷ 1 M × minute price + cache hours × cache price.
Subscription connection time
connection minutes = concurrent clients × connected hours per day × 60 × 30.
cost = operations ÷ 1 M × query price + real-time updates ÷ 1 M × update price + connection minutes ÷ 1 M × minute price + cache hours × cache price. AppSync bills three unrelated meters: the operations your clients send, the messages you push out over subscriptions, and the minutes those subscription WebSockets stay open. The push meter counts per client per message, so a single mutation that fans out to 5,000 subscribers is 5,000 billed updates — that multiplication, not the query volume, is what drives real-time GraphQL bills. Confirm the current per-million rates and cache pricing for your region.
A mobile app that keeps a subscription open all day generates connection minutes whether the user is looking at it or not, so the subscriber count and session length matter as much to the bill as actual traffic does.
This calculator takes 9 inputs: Queries and mutations per month, Real-time updates delivered per month, Average concurrent subscribed clients, Hours a client stays connected each day, Price per million queries and mutations, Price per million real-time updates, Price per million connection minutes, Enable the AppSync cache, Cache price per hour. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Narrow the fan-out. Use subscription arguments so each client only receives the updates it actually renders, batch rapid changes into a single push, and disconnect subscriptions when the app is backgrounded so connection minutes stop accruing.