Supongo que creaste los temas a través de la API y estableciste el parámetro external_id.
No estoy seguro si esto ayuda, pero Discourse tiene una ruta t/external_id/:external_id. Parece que solo devuelve datos JSON:
Así que puedes obtener el JSON del tema en (por ejemplo)
/t/external_id/2023-4.json
Eso devolvería el contenido y el id del tema de Discourse. Sin embargo, no creo que esto resuelva tu problema.
Probando esto ahora, se devuelven datos JSON, pero Discourse realiza una redirección automática a la URL real del tema de Discourse cuando realizas la solicitud. Por ejemplo, una solicitud GET a http://localhost:4200/t/external_id/1.json me redirige a http://localhost:4200/t/testing-the-external-id-param/206.json