Fala @anderson,
Então, se você notar a mensagem de erro, vai ver que se trata de um bloquei de CORS. Esse é um comportamento padrão para APIs.
O intuito do CORS é bloquear que qualquer outro domínio tenha acesso a sua API sem consentimento. Mas isso só é aplicado em requesições de páginas web. Aplicativos mobile, ou o Insomnia, por exemplo, não caem nessa restrição.
Isso não é uma prática aplicável à restrições de segurança. Existem mecanismos para bular isso, onde os cabeçalhos são definidos manualment, mascarando os dados de quem está fazendo a chamada.
Mas se sua API não possui restrições de acesso, você pode fazer o mesmo que o próprio Tabnews estão fazendo:
// ENABLES CORS
{
source: '/api/:path*',
headers: [
{ key: 'Access-Control-Allow-Credentials', value: 'true' },
{ key: 'Access-Control-Allow-Origin', value: '*' },
{ key: 'Access-Control-Allow-Methods', value: 'GET,OPTIONS,PATCH,DELETE,POST,PUT' },
{
key: 'Access-Control-Allow-Headers',
value:
'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version',
},
],
},
// https://github.com/filipedeschamps/tabnews.com.br/blob/af2788f427a3db54088f6da326b79b609a1670ac/next.config.js#L72-L85
Essa configuração irá liberar sua API para páginas web em qualquer outro domínio.