Attributes and objects API
Write typed attributes, create rich objects, list object envelopes, and page table rows.
Store typed non-scalar context as attributes, and log first-class table, media, histogram, and evaluation payloads as rich objects for Run Detail and artifact-style inspection.
Authenticate with an Authorization: Bearer instantml_... API key or a browser session. Writes on this page need the sdk:ingest scope; reads need export:read.
Write attributes
Batch form:
curl -X POST https://api.instantml.ai/api/runs/{run_id}/attributes \
-H "Authorization: Bearer instantml_..." \
-H "Content-Type: application/json" \
-d '{
"attributes": [
{
"path": "config/optimizer",
"type": "string_series",
"step": 1,
"timestamp": "2026-05-16T00:00:00Z",
"value": "adam",
"summary": {},
"artifact_id": null
}
]
}'Requires sdk:ingest or a writable browser session. Single-attribute form can put path, type, step, timestamp, value, and summary at the top level.
Use rich object endpoints for tables, media, logged histograms, and typed evaluation bundles.
List attributes
GET /api/runs/{run_id}/attributes?type=string_series&path_prefix=config/&limit=100
Authorization: Bearer instantml_...Requires export:read. Filters:
| Parameter | Meaning |
|---|---|
type | Optional attribute type. |
path_prefix | Optional path prefix. |
limit | Max 5,000. |
offset | Offset pagination. |
Create a rich object
POST /api/runs/{run_id}/objects
Authorization: Bearer instantml_...
Content-Type: application/json
{
"key": "eval/samples",
"kind": "table",
"step": 1,
"artifact_id": null,
"metadata": {},
"summary": { "columns": ["prompt", "score"] },
"value": { "kind": "table" },
"rows": [
{ "prompt": "hello", "score": 0.92 }
]
}Requires sdk:ingest or a writable browser session. Supported kinds:
tableimagevideoaudiohistogramclassification_eval
Media objects require an artifact ID from the same run. Tables accept up to 1,000 rows per create request. Histogram objects require finite bins and nonnegative counts with compatible lengths. classification_eval objects are compact binary classification bundles with PR/ROC curves, a confusion matrix, per-class metrics, and optional prediction preview rows.
List rich objects
GET /api/runs/{run_id}/objects?kind=table&limit=100&offset=0
Authorization: Bearer instantml_...Requires export:read. The response includes object envelopes with inline values for non-table rich objects. Table row contents are paged separately through the rows endpoint.
Use kind=histogram&key=...&limit=100 to read selected-run logged histogram frames for Runs workspace timeline panels. The current API reads one run and one explicit object key; multi-run histogram timelines need a separate bounded endpoint.
Page table rows
GET /api/objects/{object_id}/rows?limit=100&offset=0
Authorization: Bearer instantml_...Requires export:read. Response:
{
"object_id": 123,
"rows": [
{
"row_index": 0,
"row": { "prompt": "hello", "score": 0.92 },
"created_at": "2026-05-16T00:00:00Z"
}
],
"limit": 100,
"offset": 0
}Table row reads default to 100 rows and cap at 1,000 rows.