Skip to content

Checks_ListCheckResults

GET
/v1/accounts/{account}/checks/{check}/results
curl --request GET \
--url https://dev-api.qualiastudios.dev/v1/accounts/example/checks/example/results \
--header 'X-API-Key: <X-API-Key>'

Lists a check’s results. The check may be - to list every check’s.

account
required
string

The account id.

check
required
string

The check id.

pageSize
integer format: int32

At most this many; 0 means 100, the maximum is 1000.

pageToken
string

From a previous response’s next_page_token.

filter
string

AIP-160 filter. Fields: dataset, episode, state, reach.robot, reach.longest_seconds. dataset and episode take = only, ANDed at the top level, and choose the scope: dataset = "<dataset>" lists that dataset’s handheld and egocentric episodes that carry hand poses on its target robot (or the robots reach.robot names) at the dataset’s current reach key (ReachStatus.current_key), reporting NOT_RUN for what is not yet computed under it, or, while nothing in the scope has a settled result under that key, at the key of the dataset’s last finished run where that run stored results on the target robot (the last solve, under settings since changed; CheckResult.reach.key says which); episode = "<episode>" narrows that to one episode as its dataset sees it. Without either, every stored result of the account’s workspace at each robot’s current config, the newest key of each pair.

OK

Media type application/json

Response for Checks.ListCheckResults.

object
checkResults

One page of results.

Array<object>

What a check stored for one episode beyond the issues it raised. Only the reach check stores results: one per episode and robot. {result} is <episode uuid>-<robot uuid>, both canonical lowercase UUIDs joined by a hyphen (73 characters), so a client can build the name itself. Computed only when a RunCheck on checks/reach asks for it: a read never queues one, and neither does a change of the dataset’s target robot or of its reach_settings. A result belongs to a reach key (Reach.key: the robot’s config_digest, the solver, the base it was keyed with and the walk it was computed with); a change of any of them leaves the old rows under their own key, and the new key reads NOT_RUN until someone runs the check. Two datasets that ask the same question share the result.

Served by qds-api (reach results are written by the reach op, pyroki).

object
name

Accounts/{account}/checks/{check}/results/{result}

string
episode

The episode, named under its upload: accounts/{account}/datasets/{upload}/episodes/{episode}.

string
state

Pending, succeeded, failed or not run.

string format: enum
Allowed values: STATE_UNSPECIFIED PENDING SUCCEEDED FAILED NOT_RUN
failureReason

Why it failed.

string
computeTime

When it was computed.

string format: date-time
reach

The reach check’s.

object
robot

Accounts/{account}/robots/{robot}

string
configDigest

The robot model config it was solved against (RobotModel.config_digest).

string
stretches

Every stretch the robot cannot follow, in time order.

Array<object>

One stretch the robot cannot follow.

object
side

Which hand.

string format: enum
Allowed values: SIDE_UNSPECIFIED SIDE_LEFT SIDE_RIGHT
startSeconds

Start, seconds from the start of the recording.

number format: double
durationSeconds

How long.

number format: double
positionErrorMeters

Worst position miss, metres.

number format: double
rotationErrorRadians

Worst rotation miss, radians.

number format: double
diagnostics

Measured causes and excess over the unchanged reached tolerances.

object
positionToleranceMeters

Existing solver-specific position threshold, metres.

number format: double
rotationToleranceRadians

Existing rotation threshold, radians.

number format: double
positionExcessMeters

Worst measured miss beyond that position threshold; zero for rotation-only.

number format: double
rotationExcessRadians

Worst measured miss beyond that rotation threshold.

number format: double
heldJoints

Measured limiting joints observed during the stretch.

Array<object>

A finite active joint bound whose outward differential reduces target error. This is local constraint evidence, not proof that every IK branch fails.

object
joint

Actual URDF joint and the link it turns.

string
childLink

Actual URDF child link.

string
bound

“lower” or “upper”.

string
position

Measured position in radians (metres for prismatic).

number format: double
limit

The active URDF limit, in the same native joint unit.

number format: double
outwardErrorDecrease

Decrease of tolerance-normalized squared error per native joint unit in the direction beyond this bound. Positive, measured from actual FK.

number format: double
beyondChainReach

Largest proved beyond-chain excess observed during the stretch.

object
distanceMeters

Target distance from the shoulder, metres.

number format: double
radiusMeters

Conservative chain radius, metres.

number format: double
excessMeters

Target distance minus radius minus the existing position tolerance.

number format: double
residualSolverRows

Rows with residual solver misses and no measured bound/length cause.

integer format: int32
invalidPostureRows

Unavailable solver rows; they do not supply a fabricated physical miss.

integer format: int32
longestSeconds

The longest stretch, seconds; 1 s or more raises out_of_reach.

number format: double
key

The reach key the result belongs to: the robot’s config, the solver, the base it was keyed with and the walk it was computed with (see ReachStatus.current_key). A list for a dataset returns that dataset’s current key, also for a pair not run yet (NOT_RUN), except when nothing in its scope has been solved under that key yet: then it returns the key of the dataset’s last finished run (ReachStatus.last_finished_run) where that run stored results, so a key here that differs from current_key is the last solve under settings since changed. GetCheckResult, an account-wide list, or a read made while fleet is unreachable, returns the key of the newest stored result (empty for a pair nobody ran).

string
trace

Metadata for reading the separate bounded joint trace.

object
key

Current reach key this trace belongs to.

string
sourceRun

Pipeline run that owns the separate reach_trace artifact.

string
frameCount

Original input rows; samples retain their source index.

integer format: int32
sampleEvery

Number of original input rows between retained solver frames.

integer format: int32
fps

Source take’s frames per second.

number format: double
jointNames

Solver order is exactly Robot.joints.actuated_names (URDF order). Revolute values are radians; prismatic values are metres.

Array<string>
homeMidpointM

Home hand midpoint in metres, in the fixed robot base frame.

Array<number>
placementDigest

Digest of the fixed-base placement settings.

string
poseSource

Where the source hand poses were recorded.

string format: enum
Allowed values: POSES_AT_UNSPECIFIED ROOT TCP
calibrationDigest

Calibration digest already applied to TCP channels, empty at root.

string
diagnosticVersion

Zero on legacy traces; one carries optional measured diagnostics.

integer format: int32
diagnosticBytes

Serialized optional diagnostic bytes in the bounded artifact, used alongside frame/joint counts for conservative batch read budgets.

integer format: int32
sourceMidpointM

Exact midpoint of the first simultaneous posed source row. Walk 5 uses this single placement anchor even when display samples omit it.

Array<number>
diagnostics

Optional measured collision coverage, findings and conservative bounds.

object
collisionCoverage

Missing geometry or home/jaw input never establishes collision-free output.

object
state

Checked_configured_pairs, partial, or unavailable.

string
totalRows

Original source rows.

integer format: int32
evaluatedRows

Valid rows evaluated against all available configured pairs.

integer format: int32
unavailableReasons

Concrete missing geometry, explicit home or row-jaw inputs.

Array<string>
homeExcludedPairs

Exact pairs excluded because they touch at explicitly configured home.

Array<object>

A configured capsule pair, named exactly as its URDF links.

object
linkA

First link in the configured pair.

string
linkB

Second link in the configured pair.

string
collisions

Every collision stretch, measured before trace decimation.

Array<object>

One positive-duration stretch of measured capsule penetration.

object
category

Grippers_collide, hits_body, arms_collide, or uncategorized links_collide.

string
startSeconds

Start on the take’s unchanged timeline, seconds.

number format: double
durationSeconds

Duration on the take’s unchanged timeline, seconds.

number format: double
firstPair

Links that met first in this stretch.

object
linkA

First link in the configured pair.

string
linkB

Second link in the configured pair.

string
minimumSignedGapMeters

Most negative signed capsule clearance, metres.

number format: double
stretchCount

Number of stretches in this category. The other fields describe its longest.

integer format: int32
armBounds

Conservative shoulder bounds, where provable from the configured model.

Array<object>

A conservative outer sphere derived from the configured URDF chain/tool.

object
side

Configured arm side.

string format: enum
Allowed values: SIDE_UNSPECIFIED SIDE_LEFT SIDE_RIGHT
shoulderJoint

Actual first independent arm joint.

string
parentLink

Parent link containing the shoulder origin.

string
shoulderOriginMeters

Three metres in that parent link’s frame.

Array<number>
radiusMeters

Sum of downstream translation lengths and tool offset; finite prismatic excursion is included. Inside this sphere does not establish reachability.

number format: double
baseFixedAnchor

Only a base-fixed anchor can prove global beyond-chain reach.

boolean
gaps

Complete source-row intervals without simultaneous required-hand poses. These contain no reach or collision measurement, regardless of trace sampling.

Array<object>

A gap in the original take’s pose coverage, independent of sampled postures.

object
startFrame

First original input row, zero based.

integer format: int32
frameCount

Consecutive missing-pose rows in this interval.

integer format: int32
startSeconds

Start on the original take’s clock, derived from its FPS.

number format: double
durationSeconds

Length on that clock; the end is exclusive.

number format: double
nextPageToken

Empty on the last page.

string
Example
{
"checkResults": [
{
"state": "STATE_UNSPECIFIED",
"reach": {
"stretches": [
{
"side": "SIDE_UNSPECIFIED"
}
],
"trace": {
"poseSource": "POSES_AT_UNSPECIFIED"
},
"diagnostics": {
"armBounds": [
{
"side": "SIDE_UNSPECIFIED"
}
]
}
}
}
]
}

Default error response

Media type application/json

The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC. Each Status message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide.

object
code

The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].

integer format: int32
message

A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.

string
details

A list of messages that carry the error details. There is a common set of message types for APIs to use.

Array<object>

Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.

object
@type

The type of the serialized message.

string
key
additional properties
any
Example generated
{
"code": 1,
"message": "example",
"details": [
{
"@type": "example"
}
]
}