OAuth
API reference for Plaid OAuth endpoints
Endpoints | |
---|---|
/oauth/token | Create or refresh an OAuth access token |
/oauth/introspect | Get metadata about an OAuth token |
/oauth/revoke | Revoke an OAuth token |
These endpoints are for partners and services that are integrating with Plaid's OAuth service to obtain a token for accessing the Plaid Dashboard or other Plaid services as a third party. They are not used for the Plaid Link flow where end users connect their financial institution accounts to Plaid using a bank's OAuth service. If you are a Plaid customer trying to ensure your app supports OAuth-based bank connections, see the OAuth Guide instead.
Endpoints
/oauth/token
Create or refresh an OAuth access token
/oauth/token
issues an access token and refresh token depending on the grant_type
provided. This endpoint supports Content-Type: application/x-www-form-urlencoded
as well as JSON. The fields for the form are equivalent to the fields for JSON and conform to the OAuth 2.0 specification.
Request fields
grant_type
client_credentials
allows exchanging a client id and client secret for a refresh and access token.refresh_token
allows refreshing an access token using a refresh token. When using this grant type, only therefresh_token
field is required (along with theclient_id
andclient_secret
).urn:ietf:params:oauth:grant-type:token-exchange
allows exchanging a subject token for an OAuth token. When using this grant type, theaudience
,subject_token
andsubject_token_type
fields are required.
refresh_token
and client_credentials
are defined in RFC 6749 and urn:ietf:params:oauth:grant-type:token-exchange
is defined in RFC 8693.refresh_token
, urn:ietf:params:oauth:grant-type:token-exchange
, client_credentials
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.client_secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body as either secret
or client_secret
.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body as either secret
or client_secret
.scope
user:read
allows reading user data.user:write
allows writing user data.exchange
allows exchanging a token using theurn:plaid:params:oauth:user-token
grant type.mcp:dashboard
allows access to the MCP dashboard server.
refresh_token
resource
audience
subject_token_type
.subject_token
subject token
must be an OAuth refresh token issued from the /oauth/token
endpoint. The meaning depends on the subject_token_type
.subject_token_type
urn:plaid:params:tokensdb:user-token
allows exchanging a Plaid-issued user token for an OAuth token. When using this token type,audience
must be the same as theclient_id
.subject_token
must be a Plaid-issued user token issued from the/user/create
endpoint.urn:plaid:params:oauth:user-token
allows exchanging a refresh token for an OAuth token to anotherclient_id
. The otherclient_id
is provided inaudience
.subject_token
must be an OAuth refresh token issued from the/oauth/token
endpoint.
urn:plaid:params:tokensdb:user-token
, urn:plaid:params:oauth:user-token
1Sample code coming soon!
Response fields and example
access_token
refresh_token
token_type
expires_in
request_id
1{2 "access_token": "pda-RDdg0TUCB0FB25_UPIlnhA==",3 "refresh_token": "pdr--viXurkDg88d5zf8m6Wl0g==",4 "expires_in": 900,5 "token_type": "Bearer",6 "request_id": "m8MDqcS6F3lzqvP"7}
/oauth/introspect
Get metadata about an OAuth token
/oauth/introspect
returns metadata about an access token or refresh token.
Note: This endpoint supports Content-Type: application/x-www-form-urlencoded
as well as JSON. The fields for the form are equivalent to the fields for JSON and conform to the OAuth 2.0 specification.
Request fields
token
refresh_token
, access_token
, etc)client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.client_secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body as either secret
or client_secret
.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body as either secret
or client_secret
.1Sample code coming soon!
Response fields and example
active
true
value indicates that the token has been issued, has not been revoked, and is within the time window of validity.scope
user:read
allows reading user data.user:write
allows writing user data.exchange
allows exchanging a token using theurn:plaid:params:oauth:user-token
grant type.mcp:dashboard
allows access to the MCP dashboard server.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.exp
iat
sub
aud
iss
token_type
user_id
request_id
1{2 "active": true,3 "scope": "user:read user:write exchange",4 "client_id": "68028ce48d2b0dec68747f6c",5 "exp": 1670000000,6 "iat": 1670000000,7 "sub": "68028ce48d2b0dec68747f6c",8 "aud": "https://production.plaid.com",9 "iss": "https://production.plaid.com",10 "token_type": "Bearer",11 "request_id": "m8MDqcS6F3lzqvP"12}
/oauth/revoke
Revoke an OAuth token
/oauth/revoke
revokes an access or refresh token, preventing any further use. If a refresh token is revoked, all access and refresh tokens derived from it are also revoked, including exchanged tokens.
Note: This endpoint supports Content-Type: application/x-www-form-urlencoded
as well as JSON. The fields for the form are equivalent to the fields for JSON and conform to the OAuth 2.0 specification.
Request fields
token
refresh_token
, access_token
, etc)client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.client_secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body as either secret
or client_secret
.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body as either secret
or client_secret
.1Sample code coming soon!
Response fields and example
request_id
1{2 "request_id": "m8MDqcS6F3lzqvP"3}