Client_credentials grant returning 401 despite valid client ID/secret

Stuck on auth for a Node.js service account. Using client_credentials grant to hit CXone Admin API. Request looks correct per docs, but getting 401 Bad Request. Tried swapping client_id and client_secret, checked scopes, even regenerated secrets. Still fails. Here’s the fetch call:

const res = await fetch(‘https://api.mynicecx.com/oauth/token’, { method: ‘POST’, body: JSON.stringify({ grant_type: ‘client_credentials’, client_id: ‘xxx’, client_secret: ‘yyy’ }) });

Am I missing a header? The response body is empty.