Instagram error 190: Access token expired, revoked, or invalid
Last verified against Meta for Developers - Messenger Platform error codes
Access token has expired, been revoked, or is otherwise invalid.What error 190 means
Subcode 467 is the error-handling reference's catch-all inside the 190 family: the token is "expired, been revoked, or is otherwise invalid", without committing to which. In practice it most often means active revocation rather than quiet expiry - the user removed your app under Settings > Apps and Websites, an admin removed the connection from Business Manager, or Meta invalidated the token after a security event.
Functionally you handle it like any dead token, but the distinction from 463 matters for what you tell the account owner: 463 is your refresh pipeline's fault and is fixable silently, while 467 usually reflects a deliberate action on the account and needs a human to reauthorize. Treat repeated 467s after fresh reconnects as a signal that someone or something keeps revoking the app - check for a second tool "cleaning up" connected apps, or a security policy at the business.
Why it happens
- The user removed your app from their Facebook or Instagram connected-apps settings.
- An admin disconnected the integration in Business Manager or Meta Business Suite.
- Meta revoked the token after detecting it in a leak or after a security review.
- The token was invalidated by an app secret reset.
- A stale token from a previous connection is still being read from cache or an old environment variable.
How to fix Instagram error 190
- 1Confirm in the Access Token Debugger that the token is revoked rather than merely expired.
- 2Ask the account owner to reauthorize through your login flow; a revoked grant cannot be refreshed programmatically.
- 3Replace the stored token in every environment - stale copies in staging configs and caches are a common source of repeat 467s.
- 4Audit connected apps on the account for another tool that may be resetting connections.
- 5Resume sends only after a verification GET succeeds with the new token.
How to stop it recurring
Make revocation a first-class event in your product: detect the first 467, mark the channel disconnected, notify the owner with a reconnect link, and stop the send queue so you do not burn rate limits on a dead credential. Keep exactly one storage location for the token so replacements are atomic. The broader token triage lives under the 190 hub entry and in the Instagram troubleshooting guide.
Official reference: Meta for Developers - Messenger Platform error codes. See all Instagram error codes or the Instagram limits and quotas.
Related codes
- 190: Invalid OAuth access tokenAccess Token Error: Invalid OAuth access token.
- 190: Session has expiredError validating access token: Session has expired on {date}. The current time…
- 190: Session invalidated - password changed or session revokedError validating access token: The session has been invalidated because the…
Error 190 - quick answers
What does Instagram error 190 mean?
Subcode 467 is the error-handling reference's catch-all inside the 190 family: the token is "expired, been revoked, or is otherwise invalid", without committing to which. In practice it most often means active revocation rather than quiet expiry - the user removed your app under Settings > Apps and Websites, an admin removed the connection from Business Manager, or Meta invalidated the token after a security event.
How do I fix Instagram error 190?
1. Confirm in the Access Token Debugger that the token is revoked rather than merely expired. 2. Ask the account owner to reauthorize through your login flow; a revoked grant cannot be refreshed programmatically. 3. Replace the stored token in every environment - stale copies in staging configs and caches are a common source of repeat 467s. 4. Audit connected apps on the account for another tool that may be resetting connections. 5. Resume sends only after a verification…
Stop debugging Instagram by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.