Preview

List participant reviews

GET
/providers/{providerID}/participant-reviews

List the participant reviews scoped to your provider, newest first. Each review belongs to one participant’s relationship with your provider. Reviews from other providers are never returned. Returns an empty list when none match. Participant reviews are separate from payment reviews.

status defaults to pending, the active review queue.

Pagination is cursor-based. Omit cursor to fetch the first page; use nextCursor from each response to fetch the next page. A cursor is bound to the filters that produced it.

Auth: API key or bearer token. Scoped to the calling provider. Requires participant-review read access.

Request
cURL
curl -X GET https://api.moov.money/providers/{providerID}/participant-reviews \
  -u "$MOOV_API_KEY_ID:$MOOV_API_KEY_SECRET" \
  -H "X-Moov-Version: v2026.10.00"
Responses
200 400 401 403 422
The request completed successfully.
Pending queue
{
  "hasMore": false,
  "reviews": [
    {
      "assessmentIDs": [
        "ras_01HF5J9ZKQT4RXP8M2VYBN3D"
      ],
      "assigneeUserID": "4d7c1b9e-2f3a-4e5b-8c6d-7e8f9a0b1c2d",
      "createdOn": "2026-10-06T15:00:00Z",
      "externalID": "customer-abc-123",
      "participantID": "3v2whagmwvbujhwbt7v3nl6ffq_user",
      "reason": "Investigate sign-in activity",
      "reviewID": "8b1f6c2e-4d3a-5e7f-9a0b-1c2d3e4f5a6b",
      "status": "pending",
      "versionID": "review-v2"
    }
  ]
}
Resolved reviews
{
  "hasMore": false,
  "reviews": [
    {
      "assessmentIDs": [
        "ras_01HF5J9ZKQT4RXP8M2VYBN3D"
      ],
      "assigneeUserID": "4d7c1b9e-2f3a-4e5b-8c6d-7e8f9a0b1c2d",
      "createdOn": "2026-10-06T15:00:00Z",
      "externalID": "customer-abc-123",
      "participantID": "3v2whagmwvbujhwbt7v3nl6ffq_user",
      "reason": "Investigate sign-in activity",
      "resolution": {
        "action": "suspend",
        "actor": {
          "callingAccountID": "acc_01HF5J9ZKQT4RXP8M2VYBN3D",
          "kind": "user",
          "userID": "4d7c1b9e-2f3a-4e5b-8c6d-7e8f9a0b1c2d"
        },
        "reason": "Unresolved identity concern",
        "reasonCode": "suspected-fraud",
        "resolvedByDisplay": {
          "displayName": "Jordan Lee",
          "email": "[email protected]"
        },
        "resolvedOn": "2026-10-06T16:00:00Z"
      },
      "reviewID": "8b1f6c2e-4d3a-5e7f-9a0b-1c2d3e4f5a6b",
      "status": "resolved",
      "versionID": "review-v3"
    },
    {
      "assessmentIDs": [
        "ras_01HF5J9ZKQT4RXP8M2VYBN3E"
      ],
      "createdOn": "2026-10-05T12:00:00Z",
      "externalID": "customer-def-456",
      "participantID": "7k4xr2mqp9bujhwbt7v3nl6aaz_user",
      "resolution": {
        "action": "no_action",
        "actor": {
          "callingAccountID": "acc_01HF5J9ZKQT4RXP8M2VYBN3D",
          "kind": "user",
          "userID": "4d7c1b9e-2f3a-4e5b-8c6d-7e8f9a0b1c2d"
        },
        "reason": "Concern cleared after investigation",
        "resolvedByDisplay": {
          "displayName": "Jordan Lee",
          "email": "[email protected]"
        },
        "resolvedOn": "2026-10-05T14:00:00Z"
      },
      "reviewID": "8b1f6c2e-4d3a-5e7f-9a0b-1c2d3e4f5a6c",
      "status": "resolved",
      "versionID": "review-v3"
    }
  ]
}
Malformed request: the body or headers failed validation.
Response body application/problem+json
RFC 9457 Problem Details error body, served as application/problem+json. From v2026.10.00, every error response that has a body uses this schema.

type

string required
URI that tells you which problem occurred. Branch on this value; it never changes. Moov problem types look like https://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 required
Short human-readable name of the problem type. Fixed per type; defaults to the HTTP status text.

status

integer<int32> required
The HTTP status code of this response.

detail

string
Human-readable explanation of this specific occurrence.

instance

string
URI reference that identifies this specific occurrence.

errors

array<object>
The request-body fields that failed validation. Present on validation errors only.
Show child attributes

errors[]

pointer

string required
RFC 6901 JSON Pointer to the field, using the public JSON field names. If the field is missing, the pointer shows where it belongs.

detail

string required
What is wrong with the field.
Authentication missing, invalid, or insufficient.
Authentication present but the action is forbidden for this principal/claim.
The request was well-formed but couldn’t be processed (e.g. card declined).
Response body application/problem+json
RFC 9457 Problem Details error body, served as application/problem+json. From v2026.10.00, every error response that has a body uses this schema.

type

string required
URI that tells you which problem occurred. Branch on this value; it never changes. Moov problem types look like https://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 required
Short human-readable name of the problem type. Fixed per type; defaults to the HTTP status text.

status

integer<int32> required
The HTTP status code of this response.

detail

string
Human-readable explanation of this specific occurrence.

instance

string
URI reference that identifies this specific occurrence.

errors

array<object>
The request-body fields that failed validation. Present on validation errors only.
Show child attributes

errors[]

pointer

string required
RFC 6901 JSON Pointer to the field, using the public JSON field names. If the field is missing, the pointer shows where it belongs.

detail

string required
What is wrong with the field.

Headers

X-Moov-Version

string
Set this header to the API version being targeted (e.g. v2026.10.00). When omitted, the server applies its default version.

Path parameters

providerID

string required
Your provider account ID.

Query parameters

status

string
Filter by review status. Defaults to pending when omitted; unrecognized values return 400.
Possible values: pending, resolved

q

string

Search text. Moov Money trims it, and the trimmed value is at most 100 characters. A value that is the exact reviewID of one of your participant reviews matches that review. Otherwise, a review matches when one of these is true for the participant under review:

  • The value is a case-insensitive substring of their given, family, or full name.
  • The value is a phone fragment: only digits, spaces, and the characters +, (, ), ., and -, with at least three digits. Its digits are a substring of their phone number.
  • The value ends with _user and is their exact participantID.
  • The value does not end with _user and is the exact externalID you assigned.

Email addresses are not searched. Returns a 422 problem of type invalid-request when the trimmed value is longer than 100 characters, or when a phone fragment has fewer than three digits.

participantID

string
Filter to one participant’s reviews: their participantID, or your externalID for them. Both resolve to the same participant.

limitGroupID

string
Filter to reviews whose participant under review has an active membership in this limit group of yours.

cursor

string
Opaque pagination cursor from a previous response’s nextCursor. Omit to fetch the first page.

limit

integer <int32>
Maximum number of reviews to return. Defaults to 25; values outside 1-100 return 400.

Response

Response envelope for list participant reviews.

reviews

array<object> required
The page of participant reviews, newest first.
Show child attributes

reviews[]

reviewID

string required
Unique system-assigned participant-review identifier.

participantID

string required
Participant under review.

externalID

string required
Your identifier for the participant under review.

status

string<enum> required
Current review status.
Possible values: pending, resolved

versionID

string required
Opaque state-version token for this review. Send it back as expectedVersionID on your next note, assignment, or resolution.

reason

string
Why the review was opened. Omitted when a risk assessment opened the review without a written reason.

assessmentIDs

array<string> required
Risk assessments linked to this review. An open request that joins this pending review adds its assessmentID here. Empty when none are linked.

assigneeUserID

string
Moov user ID of the team member assigned to this review. Omitted while unassigned.

createdOn

string<date-time> required
When the review was opened.

resolution

object
The decision. Present when status is resolved.
Show child attributes

reviews[].resolution

action

string<enum> required
The decision.
Possible values: no_action, suspend

reason

string required
Your explanation of the decision.

reasonCode

string<enum>
Suspension classification you chose. Present when action is suspend. When the relationship was already suspended, the relationship keeps its original classification and this field records your decision only.
Possible values: suspected-fraud, account-compromise, customer-request, compliance-review, legal-hold, policy-violation, other

resolvedOn

string<date-time> required
When the review was resolved.

actor

object required
Who resolved the review.
Show child attributes

reviews[].resolution.actor

kind

string<enum> required
Kind of actor.
Possible values: user, application, system

userID

string
Moov user ID of the person who acted. Present when kind is user. Omitted when kind is application or system.

applicationKeyID

string
ID of the application key that acted. Present when kind is application. Omitted when kind is user or system.

callingAccountID

string
Moov account ID that the actor acted from. Present when kind is user or application. Omitted when kind is system.

resolvedByDisplay

object
Display recorded for actor when the review was resolved. A person shows the name and email recorded then. An application actor and a system actor show a fixed label. Omitted when no display was recorded; actor still identifies who resolved the review.
Show child attributes

reviews[].resolution.resolvedByDisplay

displayName

string required
Name shown for the actor. A user actor uses the name recorded at resolution. An application actor uses the fixed label API application. A system actor uses the fixed label Moov Money.

email

string
Email recorded for a person at resolution. Omitted for an application actor, a system actor, or when no email was recorded.

nextCursor

string
Opaque cursor for the next page; absent on the last page.

hasMore

boolean required
Whether another page of results follows this one.