Start here. This is the direct spoken answer to practice first.
Why this question matters
Versioning is a migration tool for clients that cannot all move together. It does not replace careful additive design, and every supported version creates operational work until it is retired.
I first decide whether the change is actually breaking. Adding an optional response field usually does not need a new version, while removing a field, changing its meaning, or rejecting input that used to work may. If clients cannot migrate together, I expose the incompatible contract as a new API version and keep the old one available for a documented period. URL, header, and media-type versioning can all work; consistency and client clarity matter more than choosing the cleverest form.