Open participant review
Open a participant review for one of your participants. A participant has
at most one pending review with your provider. An open request for a
participant with a pending review joins that review instead of opening a
new one: its assessmentID is added to the review’s assessmentIDs, and
its reason is recorded as a note on the review. A pending review does
not block payments.
Opening is asynchronous. Returns 202 when Moov Money accepts the request. A 202 does not mean the review is open. The 202 body is not defined yet. An opened review appears in the participant’s review list. The completion and rejection reporting contract is not defined yet (ADR 024 Q10).
Send an X-Idempotency-Key header so a retried request is processed once.
Replaying the same key with the same body returns 202 again. Replaying it
with a different body returns a 409 with error code
idempotency-key-reused. Returns a 409 with error code
idempotency-request-in-progress when a request with this key is still
running. Returns 400 when the header is missing or malformed.
A participant without a relationship with your provider returns 404. Returns 422 when the body fails validation.
Auth: API key or bearer token. Scoped to the calling provider. Requires participant-review write access.
curl -X POST https://api.moov.money/providers/{providerID}/participant-reviews \
-u "$MOOV_API_KEY_ID:$MOOV_API_KEY_SECRET" \
-H "X-Moov-Version: v2026.10.00" \
-H "X-Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"assessmentID": "ras_01HF5J9ZKQT4RXP8M2VYBN3D",
"participantID": "3v2whagmwvbujhwbt7v3nl6ffq_user",
"reason": "Investigate sign-in activity"
}'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
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
requiredHeaders
X-Moov-Version
stringv2026.10.00). When omitted, the server applies its default version.X-Idempotency-Key
string
requiredPath parameters
providerID
string
requiredRequest
participantID
string
requiredparticipantID, or your externalID for
them. Both resolve to the same participant. The participant must have a
relationship with your provider.reason
string
[1 to 512] characters
requiredassessmentID
string