curl --request GET \
--url https://api.hebbianrobotics.com/api/quality/clips \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hebbianrobotics.com/api/quality/clips"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hebbianrobotics.com/api/quality/clips', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"clips": [
{
"actions": [
"<string>"
],
"analysed_secs": 123,
"clip": "<string>",
"environments": [
"<string>"
],
"objects": [
"<string>"
],
"episode_index": 1,
"frame_quality": {
"active": 1,
"distorted": 1,
"frames": 1,
"jerky": 1
},
"hand_activity": {
"active_manipulation_seconds": 123,
"hands_visible_seconds": 123,
"measured_seconds": 123,
"two_hands_visible_seconds": 123
}
}
],
"dataset": "<string>",
"filtered_to": [
{
"clip_count": 1,
"section": "<string>",
"term": "<string>"
}
],
"limit": 1,
"offset": 1,
"total": 1,
"vocabulary": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}Every analysed clip of an enriched corpus, with everything measured about it: where it was shot, what it contains, how its frames partition, and how long hands were visible and manipulating.
This is the row a buyer aggregates their own report from. Counts and
seconds, never shares, so any subset of clips can be re-totalled without
inheriting a denominator we chose. frame_quality and hand_activity are
joined only when named, because each costs one stored read per clip on the
page — the page bound is what keeps that finite.
curl --request GET \
--url https://api.hebbianrobotics.com/api/quality/clips \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hebbianrobotics.com/api/quality/clips"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hebbianrobotics.com/api/quality/clips', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"clips": [
{
"actions": [
"<string>"
],
"analysed_secs": 123,
"clip": "<string>",
"environments": [
"<string>"
],
"objects": [
"<string>"
],
"episode_index": 1,
"frame_quality": {
"active": 1,
"distorted": 1,
"frames": 1,
"jerky": 1
},
"hand_activity": {
"active_manipulation_seconds": 123,
"hands_visible_seconds": 123,
"measured_seconds": 123,
"two_hands_visible_seconds": 123
}
}
],
"dataset": "<string>",
"filtered_to": [
{
"clip_count": 1,
"section": "<string>",
"term": "<string>"
}
],
"limit": 1,
"offset": 1,
"total": 1,
"vocabulary": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}Authorizations
Capability-bearing token issued by a squash operator. Required for curation, exports, dataset registration, and job control when the deployment runs in gated mode; public reads stay open. GET /api/access reports the capabilities a given credential actually carries.
Query Parameters
Dataset or corpus id whose index root holds the enrichment.
Stored vocabulary classification. Omit for the most recent.
Only clips carrying this published term or a spelling that merged into one, in any section. Matching is evidence-based: a spelling no window ever produced selects nothing.
Join each clip's frame counts from the most recent frame-quality run.
A flag rather than an address, unlike the corpus-level routes: those name the run their whole answer is about, whereas this adds columns to rows the vocabulary already chose. Off by default because each joined column costs one stored read per clip on the page.
Join each clip's hand-visibility seconds from the most recent hand-activity run.
Number of matching clips to skip (default 0).
x >= 0Maximum matching clips returned (default 100, maximum 1000).
x >= 0Response
A page of analysed clips
Response of GET /api/quality/clips.
The offset/limit slice, ordered by episode index; clips whose runs
disagree about an index sort last, by identity.
Show child attributes
Show child attributes
What term resolved to, per section it is published in — a query can
name a term in more than one, and the clips are the UNION, so every
contributor is stated rather than the first. Empty when no term was
given.
Show child attributes
Show child attributes
x >= 0x >= 0Clips matching the filter before pagination.
x >= 0The classification these rows were built from — the one asked for, or the most recent when none was named.
