Results & Artifacts
Reading results
After a job completes, fetch structured results:
curl -sS -H "Authorization: Bearer $TOKEN" \
https://computalot.com/api/v1/results/<job_id>Each task result includes result_quality (0.0-1.0) and result_warnings.
Top-level result responses also include summary, aggregate_result, aggregate_aliases, completeness, result_persisted, output_persisted, and preserved public metadata like meta / variant.
For raw stdout/stderr:
curl -sS -H "Authorization: Bearer $TOKEN" \
https://computalot.com/api/v1/jobs/<job_id>/outputDuring auto-retry, GET /api/v1/jobs/<job_id>/output preserves the most recent failed attempt’s output and error until the current attempt emits its own diagnostics. If a worker/runtime failure happens before your command starts, the visible text can be platform preflight stderr rather than user-process stdout.
While a task is still running, the quickest live log surface is GET /api/v1/jobs/<job_id>/stream or GET /api/v1/jobs/<job_id>/tasks, where live_feedback.output_tail updates as new stdout/stderr arrives. If your code launches child processes, make those children flush or run unbuffered so logs are visible immediately.
Artifacts
Content-addressed file storage for passing data between jobs. Supports controller uploads up to 2GB, direct object-store uploads, resumable multipart uploads for very large files, and external URL references.
# Upload a file
curl -sS -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/octet-stream" \
-H "X-Artifact-Filename: dataset.parquet" \
--data-binary @dataset.parquet \
https://computalot.com/api/v1/artifacts
# Request a direct object-store upload URL
curl -sS -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://computalot.com/api/v1/artifacts/direct \
-d '{"sha256":"<lowercase_sha256>","size":123456789,"filename":"dataset.parquet"}'
# Start a resumable multipart upload for a very large file
curl -sS -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://computalot.com/api/v1/artifacts/multipart \
-d '{"sha256":"<lowercase_sha256>","size":9876543210,"filename":"checkpoint.safetensors"}'
# Download
curl -sS -H "Authorization: Bearer $TOKEN" \
https://computalot.com/api/v1/artifacts/<id> -o output.bin
# List
curl -sS -H "Authorization: Bearer $TOKEN" \
https://computalot.com/api/v1/artifactsArtifacts are retained for 7 days.
Streaming (SSE)
# Single job
curl -sS -N -H "Authorization: Bearer $TOKEN" \
https://computalot.com/api/v1/jobs/<job_id>/stream
# Multiple jobs
curl -sS -N -H "Authorization: Bearer $TOKEN" \
"https://computalot.com/api/v1/jobs/watch?ids=<id1>,<id2>"
# Whole project
curl -sS -N -H "Authorization: Bearer $TOKEN" \
"https://computalot.com/api/v1/projects/<project>/stream"Multi-job watch frames preserve client_ref, tags, meta, variant, aggregate summary fields, and result_persisted / output_persisted.
Single-job SSE frames include task deltas with live_feedback.output_tail, so UIs can show rolling logs without polling GET /output.