Create participant token for a provider
Create a participant token for your financial institution. The token expires
within 10 minutes. For integrator backends, set clientType to service.
Returns 200 with the issued token. Returns 400 when externalID is missing.
Returns 401 when your credentials are missing or unsupported. Returns 403
when you cannot act for the provider or the participant cannot receive a
token. Returns 404 when the provider or participant is not found. Returns
409 when the integrator affiliation is pending or offboarding.
Auth: API key or bearer token. Application callers must use an application
credential authorized for the provider in the path. The FI needs no
delegation scope for its own calls; an affiliated integrator needs the
moov-money-tokens.write scope granted by the FI.
curl -X POST https://api.moov.money/providers/{providerID}/provider-participant-token \
-u "$MOOV_API_KEY_ID:$MOOV_API_KEY_SECRET" \
-H "X-Moov-Version: v2026.10.00" \
-H "Content-Type: application/json" \
-d '{
"clientType": "service",
"externalID": "customer-abc-123"
}'{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9",
"expires_in": 600,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9",
"token_type": "Bearer"
}Response body application/problem+json
application/problem+json.
From v2026.10.00, every error response that has a body uses this schema.type
string
requiredhttps://api.moov.money/errors#<code> (for
example invalid-request, idempotency-key-reused, or
idempotency-request-in-progress). Treat the value as
an opaque constant and do not fetch it. about:blank means the HTTP
status code says everything there is to know.title
string
requiredstatus
integer<int32>
requireddetail
stringinstance
stringerrors
array<object>Show child attributes
errors[]
pointer
string
requireddetail
string
requiredResponse body application/problem+json
application/problem+json.
From v2026.10.00, every error response that has a body uses this schema.type
string
requiredhttps://api.moov.money/errors#<code> (for
example invalid-request, idempotency-key-reused, or
idempotency-request-in-progress). Treat the value as
an opaque constant and do not fetch it. about:blank means the HTTP
status code says everything there is to know.title
string
requiredstatus
integer<int32>
requireddetail
stringinstance
stringerrors
array<object>Show child attributes
errors[]
pointer
string
requireddetail
string
requiredRetry-After.Response body application/problem+json
application/problem+json.
From v2026.10.00, every error response that has a body uses this schema.type
string
requiredhttps://api.moov.money/errors#<code> (for
example invalid-request, idempotency-key-reused, or
idempotency-request-in-progress). Treat the value as
an opaque constant and do not fetch it. about:blank means the HTTP
status code says everything there is to know.title
string
requiredstatus
integer<int32>
requireddetail
stringinstance
stringerrors
array<object>Show child attributes
errors[]
pointer
string
requireddetail
string
requiredHeaders
X-Moov-Version
stringv2026.10.00). When omitted, the server applies its default version.Path parameters
providerID
string
requiredRequest
externalID
string
requiredclientType
string<enum>web when omitted. Use service for integrator backends.web,
device,
serviceResponse
access_token
string
requiredrefresh_token
string
requiredtoken_type
string
requiredBearer.expires_in
integer<int64>
required