If you're getting a "bad request" error when making a request using PHP's curl functions, but the same request works fine when made from a browser, there are a few things you can try to troubleshoot the issue:
Check the request headers: Make sure that the headers being sent with the curl request are the same as the ones being sent by the browser. You can use a tool like curl -v or curl_setopt($ch, CURLOPT_VERBOSE, true); to see the full request and response headers.
Check the request body: Make sure that the body of the request (if any) is being sent correctly. Again, you can use curl -v or CURLOPT_VERBOSE to see the request body.
Check for SSL certificate issues: If the API you're calling uses HTTPS, make sure that the SSL certificate is valid and trusted. You can use CURLOPT_SSL_VERIFYHOST and CURLOPT_SSL_VERIFYPEER to control SSL certificate verification.
Check the API documentation: Check the API documentation to make sure that you're sending the correct request parameters and that you're using the correct HTTP method (e.g. GET vs POST).
Check for rate limiting: If the API has rate limiting in place, make sure that you're not hitting the limit. You can use CURLOPT_CONNECTTIMEOUT and CURLOPT_TIMEOUT to control the timeout for the curl request.
If none of these steps solve the issue, you may need to reach out to the API provider for assistance.