This was a result of me not reading documentation.
The request was failing because there was no secret engine mounted at that path.
You can check your secret engine paths by running vault secrets list -detailed
This showed that my kv secret engine was mapped to path kv
not secret
as I was trying.
Therefore running vault kv put kv/my-secret my-value=yea
worked as expected.