List participants

GET
/providers/{providerID}/participants

List your participants, newest first. Returns an empty list when none exist.

Pagination is cursor-based. Omit cursor to fetch the first page; use nextCursor from each response to fetch the next page.

Auth: API key or bearer token. Scoped to the calling provider.

Request
cURL
curl -X GET https://api.moov.money/providers/{providerID}/participants \
  -u "$MOOV_API_KEY_ID:$MOOV_API_KEY_SECRET" \
  -H "X-Moov-Version: v2026.10.00"
Responses
200 400 401 422
The request completed successfully.
{
  "participants": [
    {
      "address": {
        "addressLine1": "123 Main St",
        "addressLine2": "Apt 4B",
        "city": "San Francisco",
        "country": "US",
        "postalCode": "94105",
        "stateOrProvince": "CA"
      },
      "createdOn": "2026-08-31T12:00:00Z",
      "emails": [
        {
          "createdOn": "2026-08-31T12:00:00Z",
          "email": "[email protected]"
        }
      ],
      "externalID": "customer-abc-123",
      "familyName": "Smith",
      "givenName": "Jane",
      "hasLimitOverride": true,
      "limitGroups": [
        {
          "groupID": "grp_01HF5J9ZKQT4RXP8M2VYBN3D",
          "name": "Premium"
        }
      ],
      "moovAccountID": "acc_01HF5J9ZKQT4RXP8M2VYBN3D",
      "participantID": "3v2whagmwvbujhwbt7v3nl6ffq_user",
      "phones": [
        {
          "createdOn": "2026-08-31T12:00:00Z",
          "phone": {
            "countryCode": "1",
            "number": "5555550101"
          }
        }
      ],
      "relationship": {
        "suspended": false,
        "versionID": "relationship-v3"
      },
      "status": "active",
      "updatedOn": "2026-08-31T12:00:00Z"
    }
  ]
}
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.
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

q

string

Search text. Moov Money trims it, and the trimmed value is at most 100 characters. A participant matches when one of these is true:

  • The value is a case-insensitive substring of their given, family, or full name.
  • The value is a case-insensitive substring of one of their email addresses.
  • 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.

Contacts that participants saved in Moov Money are never 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.

Filters apply before pagination. A participant must match every filter you send. Send the same filters with each cursor. A cursor sent with different filters returns a 400 with error code invalid-cursor.

status

string
Filter by global participant status. Unrecognized values return 400. Omit it to list participants in every status, including pending, denied, and disabled.
Possible values: active, disabled, pending, denied

suspended

boolean
Filter by your suspension: true returns only participants you suspended, false only participants you did not suspend.

limitGroupID

string
Filter to participants with 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 participants to return. Defaults to 25; values outside 1-100 return 400.

Response

Response envelope for list participants.

participants

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

participants[]

participantID

string required
Unique identifier for this participant.

externalID

string required
Your identifier for this participant, as you assigned it at creation.

givenName

string required
Participant’s given (first) name.

middleName

string
Participant’s middle name or middle initial.

familyName

string required
Participant’s family (last) name.

nickName

string
Name the participant goes by, for example Bob for Robert.

dateOfBirth

string<date>
Participant’s date of birth, YYYY-MM-DD. Omitted when not provided at creation.

address

object
Participant’s primary postal address. Omitted when none was provided at creation.
Show child attributes

participants[].address

addressLine1

string required
First line of the street address.

addressLine2

string
Second line of the street address (apartment, suite, etc.).

city

string required
City / locality.

stateOrProvince

string required
State, province, or region.

postalCode

string required
Postal / ZIP code.

country

string required
ISO 3166-1 alpha-2 country code.

moovAccountID

string
Moov account ID linked to this participant. Set for sending participants once they have a linked Moov account; omitted until then.

status

string<enum> required
Current lifecycle status of the participant.
Possible values: active, disabled, pending, denied

relationship

object required
Your provider’s relationship with this participant, including whether you suspended them. Independent of status: reactivating the relationship does not change a disabled or denied status.
Show child attributes

participants[].relationship

suspended

boolean required
Whether you suspended this participant. A suspended participant cannot send payouts or create requests through your provider. Money that a payer sends for one of their existing requests is not paid out to them until you reactivate them or the request expires. Signing in, payments that already started, reversals, and refunds are not affected.

versionID

string required
Opaque version of the relationship state. Send it as expectedVersionID on your next suspension or reactivation. It is not a relationship ID.

phones

array<object> required
Show child attributes

participants[].phones[]

phone

object required
Phone on this record.
Show child attributes

participants[].phones[].phone

countryCode

string required
ITU country calling code without a leading plus. ASCII digits only.

number

string required
National significant number without the country calling code. ASCII digits only.

createdOn

string<date-time> required
When this phone number was added.

verifiedOn

string<date-time>
When the participant confirmed ownership of this phone number.

disabledOn

string<date-time>
When this phone number was disabled.

emails

array<object> required
Show child attributes

participants[].emails[]

email

string required
Email address.

createdOn

string<date-time> required
When this email was added.

verifiedOn

string<date-time>
When the participant confirmed ownership of this email.

disabledOn

string<date-time>
When this email was disabled.

limitGroups

array<object>
Limit groups this participant belongs to. Empty when the participant belongs to no group.
Show child attributes

participants[].limitGroups[]

groupID

string required
Identifier of the limit group.

name

string required
Display name of the limit group.

hasLimitOverride

boolean required
Whether the participant has an active limit override with your provider. An expired or removed override does not count.

createdOn

string<date-time> required
When this participant was created.

updatedOn

string<date-time> required
When this participant was last updated.

disabledOn

string<date-time>
When this participant was disabled. Omitted while active.

nextCursor

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

hasMore

boolean required
Whether another page of results follows this one.