1.4 KiB
1.4 KiB
Authentication Flows (Team Chat vs Chatbot)
Zoom Team Chat integrations commonly use one of two auth models:
Team Chat API (user-level)
Use User OAuth (authorization code) when you want messages/actions to appear as a user.
- Typical endpoints:
- Send message (as the user):
POST /v2/chat/users/me/messages
- Send message (as the user):
- Typical scopes:
chat_message:writechat_channel:read(for listing channels)
Chatbot API (bot-level)
Use client credentials when you want messages/actions to appear as a bot.
- Typical endpoint:
- Send bot message:
POST /v2/im/chat/messages
- Send bot message:
- Typical “scope”:
imchat:bot(added by enabling Chatbot feature on the app)
Decision Checklist
- If you need to post to a channel “as a bot” and handle slash command interactions: use Chatbot API.
- If you need to post “as the user” (and respect the user’s channel membership): use Team Chat API.
Common Pitfalls
- Server-to-Server OAuth is not a fit for Zoom Team Chat chatbot features.
- Team Chat API calls require a user token with the right scopes; “invalid access token” errors are almost always missing scopes or wrong app type.
- OAuth URL split is easy to mix up:
- authorize step:
https://zoom.us/oauth/authorize - token step (all grant types):
https://zoom.us/oauth/token
- authorize step:
- In browser demos, complete OAuth end-to-end in app (state verify -> callback -> code exchange -> token store) to avoid copy/paste mistakes.