I've used multithreading for speeding up many tasks, but never for API calls. So I went ahead and wanted to make a python code to try to visualize multithreading in API.
Here is the src: pastebin link here
I made it request to my github's page via the githhub api and request 1,5,10,20, and 30 times so I can get more data. I made it run for 1 through 5 threads to see if the number of threads impacted performance.
The result is expected as when running I/O tasks, you don't have to waste time waiting for every single request to complete.

For CPU tasks when you are trying to multithread what it ultimately comes down to is how well you can parallelized the tasks to get split. A scenario if you need practice to see this in action is initialize an array and perform a computation on each element in the array (this can be easily parallelized)
An example where you can't easily use multithreading is calculating the Fibonacci sequence using the recursive bad algorithm. (If you memoize the Fibonacci sequence when you produce it you can easily parallelize it)