progress, result, error, and complete events. Parse events individually: HTTP 200 opens the stream and does not guarantee every keyword succeeded. Each successful keyword search consumes one request; failures consume zero.
Set a keyword budget before starting. After a disconnect, do not automatically resubmit the whole batch, which could repeat successful work and consume more quota.