Estou assumindo que você criou os tópicos via API e definiu o parâmetro external_id.
Não tenho certeza se isso ajuda, mas o Discourse tem uma rota t/external_id/:external_id. Parece que ela retorna apenas dados JSON:
Portanto, você pode obter o JSON do tópico em (por exemplo)
/t/external_id/2023-4.json
Isso retornaria o conteúdo e o id do tópico do Discourse. No entanto, não acho que isso resolva seu problema.
Testando isso agora, dados JSON são retornados, mas o Discourse executa um redirecionamento automático para o URL real do tópico do Discourse quando você faz a solicitação. Por exemplo, uma solicitação GET para http://localhost:4200/t/external_id/1.json me redireciona para http://localhost:4200/t/testing-the-external-id-param/206.json
Estou procurando ter algo no formato de posts incorporados. O Discourse já faz um ótimo trabalho com esse layout e não quero reinventar a roda.
Ao não permitir a busca por external_id, eu teria que armazenar o ID do tópico do fórum em meu banco de dados e buscar dessa forma. Parece redundante quando já temos uma variável única armazenada em external_id quando criei o tópico a partir da API.
Possivelmente isso poderia ser adicionado como um recurso.
Poderia também ser possível fazer uma requisição no cliente para (por exemplo) http://localhost:4200/t/external_id/1.json
Em seguida, extrair a URL real do tópico da resposta e analisar essa URL para extrair o id do tópico, ou fazer uma segunda requisição para a URL do tópico para obter o id do tópico.
Isso parece propenso a erros.
Se você estiver adicionando o script de incorporação no servidor em vez do cliente, você poderia simplesmente fazer uma requisição GET para http://localhost:4200/t/external_id/1.json, executar quaisquer ações que você precise para obter o id do tópico do Discourse, e então inserir o script em sua página da web usando esse id.
Este é um bom feedback e me dá algumas coisas para refletir. A solicitação de recurso é a mais direta, mas gosto de algumas de suas ideias que eu não havia pensado!