jq -r --arg i "$i" '.disks[$i] | [ .label, .capacity ] | @tsv'
This passes the shell variable i into the jq expression as the jq variable $i (which is a string). You use this as a key with [$i].
I've also removed the need to use paste by using @tsv on an array containing the two values you want in jq instead. This would produce tab-delimited output, as would your paste command.
You also should not need to pass the data through python -m json.tool (I don't see what benefit this has). If it was used for pretty-printing, then that is not needed for input into jq.
Looking at the VMware API documentation, the request to get information about a specific disk looks like
https://{api_host}/api/vcenter/vm/{vm}/hardware/disk/{disk}
This makes me think that you should be using vm-22 in place of {vm} and 2000 (or "$i") in place of {disk}, vm-22 is the name of you virtual machine and 2000 is your disk identifier.
This should give you something like
{
"backing": {
"type": "enum",
"vmdk_file": "string"
},
"capacity": 0,
"ide": {
"master": false,
"primary": false
},
"label": "string",
"sata": {
"bus": 0,
"unit": 0
},
"scsi": {
"bus": 0,
"unit": 0
},
"type": "enum"
}
as a response.
You can parse the label and capacity out from this as a tab-delimited list, using
jq -r '[ .label, .capacity ] | @tsv'