c – Como limpar uma string para o valor anterior depois de usar o strcat()?

Eu estou usando a função strcat() para concatenar string e estou com dificuldades para retornar a string ao estado anterior, o que eu tentei até agora foi isto, porém com nada de sucesso:

const char *get_route(const char *route)
{
    const char *final_str = strcat("https://discord.com/api/v9", route);
    return final_str;
}

Eu pego a string que vem no parâmetro route, como por exemplo /users/@me e concateno com a discord_api_url, ficando por exemplo https://discord.com/api/v9/users/@me, porém quando uso a função de novo, o novo valor que vem de route não é concatenado com a variável discord_api_url e sim com a anterior que era https://discord.com/api/v9/users/@me, eu já tentei usar malloc() em uma nova string e copiar a https://discord.com/api/v9 para ela, mas quando eu dou um free() a string vai embora :p

Como faço pra depois da concatenação, a string da URL não ser modificada e eu poder reutilizar essa função de novo?