Skip to main content
GET
Get Result Rows
Reads a records-shaped result. You can use the following query parameters to filter, trim, and page through the records:

Filtering with where

where does not use a query language like SQL or OData. Each filter is a single colon-separated string, and you pass one where query parameter per filter.

Clause format

Values are not trimmed, quoted, or split on commas, so name:eq: Acme matches a leading space. Remember to URL-encode each clause when you build the query string. URLSearchParams does this for you.

Combining filters

Repeat the where parameter to add more filters. A record is returned only if it matches every clause (logical AND). There is no OR or NOT, and you can use at most 8 clauses per request.
To express an OR, make one request for each alternative and merge the results in your agent.

Operators

How values are compared

Because every value in the query string is text, the comparison depends on what the field and the value look like:
  • Numbers. If a field is a number, or a string that parses as a number (like "10" or "1e3"), and the value also parses as a number, they are compared numerically. Amount:eq:10.0 matches 10, and Amount:gt:9 matches "10". Numeric strings are converted to numbers, so identifiers like "00123" and "123" are treated as equal.
  • Strings. If either side is not numeric, eq and ne compare the text exactly (case-sensitive). gt, gte, lt, and lte compare strings alphabetically when both sides are non-numeric. This works for ISO 8601 timestamps in the same format and time zone, such as createdAt:gte:2026-01-01T00:00:00Z, but it does not work for formats that don’t sort alphabetically, like 01/02/2026.
  • Booleans. Compare against the text true or false, such as archived:eq:false. Ordering operators never match booleans.
  • Empty and missing values. gt, gte, lt, and lte never match when the field is missing, null, empty, a boolean, an object, or an array, or when the value is empty or can’t be compared to the field (such as Amount:gt:abc against a numeric field). contains never matches a missing or null field, or an empty value. eq with an empty value (name:eq:) only matches fields that are an empty string.
  • Objects and arrays. Comparison operators are meant for scalar fields. Use exists to check that a nested value is present, and use select to read it.

Filtering and selecting together

Filters run before select and paging, so you can filter on a field you do not return. select only controls which fields appear in each record in data; fields that are not on a record are omitted.

Paging through filtered results

matched is the total number of records that match your filters across all pages, not only the page returned. When paging.continuationToken is not null, there are more matches. Pass it as continuationToken on the next request. A continuation token is tied to the pointer, select, and where clauses (in the same order) of the request that created it. If you change any of them, the request fails with RESULT_SLICE_INVALID. Start a new query without a token when you want different filters.

Errors

An invalid request returns 400 with the error code RESULT_SLICE_INVALID and a message describing the problem. Common causes:

Authorizations

Authorization
string
header
required

Your Paragon User Token (JWT), which you can generate using your project's signing keys.

Path Parameters

projectId
string<uuid>
required
resultId
string
required

Query Parameters

pointer
string

RFC 6901 JSON Pointer. Must start with /.

select
string

Comma-separated fields, at most 32.

where
string[]

Repeatable filter in the format field:operator:value, at most 8. Clauses are combined with AND. field is a top-level record key. Operators (lowercase): eq, ne, gt, gte, lt, lte, contains, exists. Everything after the second colon is the value, and exists takes no value. Example: status:eq:open.

pageSize
integer
default:50
Required range: 1 <= x <= 100
continuationToken
string

Response

One page of records.

data
object[]
required
paging
object
required
matched
integer
required
tokenBudget
object
required