List payment device observations
List recorded device observations for one assessment on one payment, newest observation first. Returns an empty list when none were recorded.
Returns 404 when the payment or assessment is missing, when the assessment is for a different payment, or when the payment belongs to another provider.
Pagination is cursor-based. Omit cursor to fetch the first page. Use
nextCursor from each response to fetch the next page. The cursor is
bound to this provider, this payment, and this assessment.
Auth: API key or bearer token. You need both the moov-money-devices.read
and moov-money-payments.read scopes for this provider. A delegated
caller, such as a connected application or a narrowed token, also needs
both scopes. A token with only one of them returns 403.
curl -X GET https://api.moov.money/providers/{providerID}/payments/{paymentID}/risk-assessments/{assessmentID}/device-observations \
-u "$MOOV_API_KEY_ID:$MOOV_API_KEY_SECRET" \
-H "X-Moov-Version: v2026.10.00"{
"observations": [
{
"deviceType": "mobile",
"location": {
"city": "Columbus",
"region": "OH"
},
"model": "iPhone 15 Pro",
"observedOn": "2026-10-06T15:00:00Z",
"os": "iOS",
"osVersion": "26.2"
}
]
}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
requiredpaymentID
string
requiredassessmentID
string
requiredQuery parameters
cursor
stringnextCursor. Omit to fetch the first page.limit
integer
<int32>Response
observations
array<object>
requiredobservedOn first.
Observations with no recorded time come last. Empty when none were
recorded.Show child attributes
observations[]
observedOn
string<date-time>deviceType
string<enum>mobile,
desktopmodel
stringos
stringosVersion
stringlocation
objectShow child attributes
observations[].location
city
stringregion
stringnextCursor
stringhasMore
boolean
required