This is a good approach, IMO.
First, I have one question: When a thread makes many API calls in a loop, it calls the same API at each iteration ? If so, I would configure the test client in order to call a different API in each iteration, randomly.
Second, since you have timing information, I would also configure the test client to make many api calls in parallel, with each thread calling the API which takes more time to complete (all threads calling that same api).
Third, I would configure some threads to make the api calls with incorrect parameters while some other threads continue calling APIs with correct parameters, so you can test if the handling of incorrect api calls does not affect the way it manages the correct ones.