Não acredito que seja possível recuperar o valor de uma chave de API via API. O Discourse não salva chaves de API não criptografadas no banco de dados. Mesmo que você pudesse recuperar o valor criptografado, não haveria como descriptografá-lo em seu aplicativo.
Você pode explicar um pouco mais seu caso de uso? Se uma chave de API de usuário já foi gerada para um usuário, não está claro para mim por que ele precisaria aprovar a autorização uma segunda vez.
Editar: é possível usar uma Chave de API de Administrador para gerar uma chave de API para um usuário. Alguns detalhes sobre isso estão aqui: Generate User Api Key Without User Approval - #2 by simon
Relendo minha postagem, vejo que não expliquei como a variável $json foi definida para a solicitação. A maneira mais fácil de descobrir como estruturar os dados é fazer uma solicitação para gerar uma única chave de API de usuário com os escopos que você deseja usar através da interface do Discourse, em seguida, observe o valor da carga útil da solicitação que é enviada com a solicitação para /admin/api/keys:
