Throwing Exception vs Failure in workflow

If a Workflow retries due to one of the NPE cases, will it also retry (not replay) any activities that have completed before? I’m wondering what happens if I make a non-idempotent API call in my workflow that is being retried while it waits for a fix.