# Server-to-Server OAuth token request fails with "invalid\_request"

**URL:** <https://devforum.zoom.us/t/server-to-server-oauth-token-request-fails-with-invalid-request/146282>\
**Category:** API and Webhooks\
**Created:** [September 7, 2026, 11:35am UTC](https://devforum.zoom.us/t/server-to-server-oauth-token-request-fails-with-invalid-request/146282 "2026-09-07T11:35:02Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![snz](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/snz/32/76497_2.png) [@snz](https://devforum.zoom.us/u/snz)\
**Post date:** [September 7, 2026, 11:35am UTC](https://devforum.zoom.us/t/server-to-server-oauth-token-request-fails-with-invalid-request/146282/1 "2026-09-07T11:35:03Z")

</div>

### Subject: Server-to-Server OAuth token request fails with “invalid\_request” despite verified credentials

Hello Zoom Developer Support,

I’m trying to generate an access token for my Server-to-Server OAuth app, but every request to [https://zoom.us/oauth/token](https://zoom.us/oauth/token) fails with:

{“reason”:“Bad Request”,“error”:“invalid\_request”}

App details:

- App type: Server-to-Server OAuth
- App name: Zoom\_bot\_ SNZ
- Account ID: EOru0\_ewRg2gIPdC8fUh4w
- Status: Activated (confirmed on the Activation page)
- Scope added: meeting:read:list\_meetings:admin

Steps I have already tried:

1. Standard request with grant\_type and account\_id as URL query parameters
2. Same parameters sent in the POST body with Content-Type: application/x-www-form-urlencoded
3. Regenerated the Client Secret multiple times and re-copied it carefully (verified via a plain text editor, no hidden characters or whitespace)
4. Verified that Account ID, Client ID, and Client Secret exactly match the values shown on the App Credentials page
5. Confirmed the app shows “Your app is activated on the account”

Despite all of this, I consistently get “invalid\_request” rather than “invalid\_client”, which suggests the account\_id itself may not be accepted by the token endpoint for some reason.

Could you please help me understand why this account\_id is being rejected, or check if there’s an issue with this app/account on your end?

Thank you for your help.

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [September 8, 2026, 5:08am UTC](https://devforum.zoom.us/t/server-to-server-oauth-token-request-fails-with-invalid-request/146282/2 "2026-09-08T05:08:17Z")

</div>

@snz here’s a sample code in nodejs

app.get(‘/s2soauth’, (req, res) =\> {  
res.status(200).json({  
message: ‘Live S2S OAuth token requests are disabled on this public demo.’,  
liveTokenRequestDisabled: true,  
grantType: ‘account\_credentials’,  
tokenUrl: ‘[https://zoom.us/oauth/token?grant\_type=account\_credentials&account\_id={ACCOUNT\_ID}](https://zoom.us/oauth/token?grant_type=account_credentials&account_id=%7BACCOUNT_ID%7D)’,  
requestShape: {  
method: ‘POST’,  
headers: {  
Authorization: ‘Basic base64({CLIENT\_ID}:{CLIENT\_SECRET})’,  
‘Content-Type’: ‘application/x-www-form-urlencoded’,  
},  
},  
expectedResponseFields: [  
‘access\_token’,  
‘token\_type’,  
‘expires\_in’,  
‘scope’,  
‘api\_url’,  
],  
});  
});
