CXone OAuth client_credentials 400 invalid_grant

Trying to set up a background job to pull historical data from CXone without user interaction. The docs say to use client_credentials, but the token endpoint keeps rejecting my request with a 400 Bad Request. I’m hitting POST /api/v2/oauth/token with the standard payload. Here’s what I’m sending:

grant_type=client_credentials
client_id=abc123
client_secret=xyz789

Getting back {"error":"invalid_grant","error_description":"Missing required parameters"}. I’ve triple checked the ID and secret in the developer portal. Is there a specific scope I need to pass in the body or header for this grant type? The standard docs are vague on the exact request format for non-interactive auth.