Xeonr Developer Docs

Mint Blob Output Upload

POST
/uplim.api.v1.InternalPipelineRunsService/MintBlobOutputUpload

Presigns a 15-minute PUT for a step's blob output at pipeline-runs/<run_id>/<step_id>/<output_name>[/<filename>] on the upload's storage backend; the object key doubles as the upload token for FinaliseBlobOutput. output_name must match the <slug>:<local> grammar and be in common:* (except reserved pre-step keys) or the run integration's own namespace (default:* for system pipelines). Rejects with InvalidArgument when size_bytes exceeds the manifest's declared max_size_bytes.

Access: internal only — step-scoped. Requires the per-step JWT in X-Upl-Step-Token (HS256 over PIPELINE_INTERNAL_TOKEN, unexpired) whose run_id/step_id claims match the request; Unauthenticated otherwise. The shared X-Upl-Internal-Token is accepted instead only while PIPELINE_ALLOW_LEGACY_STEP_TOKEN_FALLBACK is enabled.

AuthorizationBearer <token>

JWT access token obtained via OAuth2 flow or service account

In: header

Header Parameters

Connect-Protocol-Version?number

Define the version of the Connect protocol

Connect-Timeout-Ms?number

Define the timeout, in ms

Request Body

application/json

runId?string
Formatuuid
stepId?string
Lengthlength <= 255
outputName?string

Name declared in StepManifest.outputs.blobs (e.g. "common:thumbnail_light").

Match^[a-z][a-z0-9-]{0,62}[a-z0-9]:[a-z][a-z0-9._-]{0,62}[a-z0-9]$
mime?string
Lengthlength <= 1024
sizeBytes?string

validate:skip uint64 byte count; server checks it against the manifest's max_size_bytes, no global bound to mirror

Formatint64
filename?string

Optional per-file key for multi-file outputs (e.g. "common:archive_file" emits one entry per archive member, keyed by path). Empty for the common single-blob case. The committed UploadMetadata row carries this as its filename, so the (upload, name, filename) tuple is unique — many files can share one output_name.

Lengthlength <= 1024
[key: string]?never

Response Body

application/json

application/json

curl -X POST "https://uploads-api.xeonr.io/uplim.api.v1.InternalPipelineRunsService/MintBlobOutputUpload" \  -H "Connect-Protocol-Version: 1" \  -H "Connect-Timeout-Ms: 1000" \  -H "Content-Type: application/json" \  -d '{}'
{
  "presignedPutUrl": "string",
  "uploadToken": "string",
  "objectKey": "string"
}
{
  "code": "not_found",
  "message": "string",
  "details": [
    {
      "type": "string",
      "value": "string",
      "debug": {}
    }
  ]
}