Create an access token

Create or refresh an access token.
POST
/oauth2/token
cURL
1
2
3
4
5
6
7
8
9
curl -X POST "https://api.moov.io/oauth2/token" \
  -u "PUBLIC_KEY:PRIVATE_KEY" \
  --data '{
    "grant_type":"client_credentials",
    "client_id":"5clTR_MdVrrkgxw2",
    "client_secret":"dNC-hg7sVm22jc3g_Eogtyu0_1Mqh_4-",
    "scope":"/accounts.write",
    "refresh_token":"i1qxz68gu50zp4i8ceyxqogmq7y0yienm52351c6..."
  }'
200 400 422 429 500 504
The request completed successfully.
{
  "access_token": "eyJhbGciOiJFZERTQSIsImN0eSI6IkpXVCIsImtpZCI6IkR...",
  "expires_in": 1736964352,
  "refresh_token": "eyJhbGc0eSI6TQSIsImN0kpXVCIsImtp6IkpXVsImtpZC0a...",
  "scope": "/accounts.read /accounts.write",
  "token_type": "Bearer"
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The server could not understand the request due to invalid syntax.
{
  "error": "string"
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request was well-formed, but the contents failed validation. Check the request for missing or invalid fields.
{
  "refresh_token": "string",
  "scope": "string"
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
Request was refused due to rate limiting.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request failed due to an unexpected error.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request failed because a downstream service failed to respond.

x-request-id

string <uuid> required
A unique identifier used to trace requests.

Headers

x-moov-version

string
API version

Specify an API version.

API versioning follows the format vYYYY.QQ.BB, where

  • YYYY is the year
  • QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)
  • BB is the build number, starting at .01, for subsequent builds in the same quarter.
    • For example, v2024.01.00 is the initial release of the first quarter of 2024.

The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release.

Default: v2024.01.00

Body

application/json

grant_type

string<enum> required

The type of grant being requested.

  • client_credentials: A grant type used by clients to obtain an access token
  • refresh_token: A grant type used by clients to obtain a new access token using a refresh token
Possible values: client_credentials, refresh_token

client_id

string
Client ID can be provided here in the body, or as the Username in HTTP Basic Auth.

client_secret

string
Client secret can be provided here in the body, or as the Password in HTTP Basic Auth.

refresh_token

string
The refresh_token returned alongside the access token being refreshed. Required when grant_type is refresh_token.

scope

string
A space delimited list of scopes. Required when grant_type is client_credentials.

Response

application/json

access_token

string <=4096 characters required
A value passed to the authorization server to gain access to the system.

expires_in

integer<int32> required
Unix timestamp indicating when this token expires.

refresh_token

string <=4096 characters required
A value passed to the authorization server to obtain a new access token.

scope

string required
A space-delimited list of scopes that are allowed.

token_type

string<enum> required
An RFC 6750 token type.
Possible values: Bearer