VCF 9.1 or rather the VCF-Installer (or SDDC Manager) has a nice UI but we also have an API-Way of sending our jsons to the VCF-installer so that we are able to deploy something.
These commands are used:
Save the credentials in a way Windows 11 and Powershell (7.6.4) can work
Without a token we cannot do API-Stuff and since we want to be secure with our passwords, we store that in a variable:
$cred = Get-Credential -UserName 'admin@local'
$body = @{ username = $cred.UserName; password = $cred.GetNetworkCredential().Password } | ConvertTo-Json -Compress
Get the Token for further work
$TOKEN = ($body | curl.exe -sk -X POST https://t0vcf-installer.vcf.lis.one/v1/tokens -H "Content-Type: application/json" --data-binary "@-" | ConvertFrom-Json).accessToken
type $TOKEN into your powershell window to see if you got something stored there and it should look like that:

Send the json-file for validation to the SDDC Manager
curl.exe -sk -X POST https://t0vcf-installer.vcf.lis.one/v1/sddcs/validations -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" --data-binary "@D:\vcf-jsons\dcs-prod-customdeployment-singlensx-singleops.json"
in my case the validation failed (which was expected)

Check the current validation run over API
curl.exe -sk https://t0vcf-installer.vcf.lis.one/v1/sddcs/validations/latest -H "Authorization: Bearer $TOKEN" | ConvertFrom-Json | ConvertTo-Json -Depth 30
And in case of an error you will see the validation results that are normally shown via the Browser:

Fortunately! That doesn’t trigger a deployment! Because for that you have another deploy Call:
No validation, straight to validation & deploy
curl.exe -sk -X POST https://t0vcf-installer.vcf.lis.one/v1/sddcs -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" --data-binary "@D:\vcf-jsons\prod-customdeployment-singlensx-singleops.json"
And in my case this is the result:
