I believe what's happening here is that since you're going BACK to step 2, it doesn't consider this iteration of the loop to be complete, so it'll just keep repeating it. What I've done in situations like this is use a "Wait" task (which waits for 0 time) - this acts as a placeholder, which can be referenced in the Flow section of other tasks. Try adding this type of task as the ending task of your loop; then, in the flow of step 4, us the "On Start" type (as you've already done) to say "if the value of step 3 is "STOP" then continue with the next task in sequence". The next task would be your "Wait" task. This will cause it NOT to execute your API Push task, and it'll continue with the Wait task, which is the end of the loop. This way, it'll know that it reached the end of this loop iteration and then start back at the beginning of the loop with the next iteration.
Hopefully that helps!