Upload a run artifact
Stores one artifact referenced by an ingested run (typically widget HTML too large to send inline) and returns the storageId the run's results then reference. This is what reportEvalResults in @mcpjam/sdk uses for widget evidence.
The body is the artifact's raw bytes, sent with the artifact's own Content-Type. Authenticate like any other /api/v1 route (typically an sk_ key); the gateway swaps in a delegated org-scoped token so the backend's fail-closed org scoping applies.
The {projectId} segment declares where the artifact belongs. The literal default resolves to the key org's Default project — the zero-config CI case.
STATUS AND BODY PASS THROUGH VERBATIM: success is the legacy { ok: true, storageId } envelope the SDK reporter parses, not the v1 resource envelope. Bodies are capped at 20 MiB here, and the backend applies its own per-artifact limit.
Path parameters
Project id, or the literal default for the key org's Default project.
Response
The backend's response, passed through: { ok: true, storageId }.
The backend's response, passed through verbatim along with its status code. Success shapes are the legacy { ok: true, ... } envelopes the SDK reporter parses — deliberately NOT the v1 resource envelope. Errors are canonical v1 { code, message }.
Changes
Changed in 1 of the 122 revisions of this API.1
- ○
endpoint added
endpoint-added
- ○