I have struggled for some hours with this
From my understanding you need to first get the list of subtitles languages first – in their v3 data api it is called captions.list ( link )
From there, you have the list and ids of each caption attached to the video id.
Then, you can use captions.download theoretically with only the caption id. But for every video I tried it returns the same error.
A service error occurred: The permissions associated with the request are not sufficient to download the caption track. The request might not be properly authorized, or the video order might not have enabled third-party contributions for this caption.
I have even tried videos like – https://www.youtube.com/watch?v=SY-mgZbuxBA – and seems that finding a video with enabled contributions is hard.