Printago API
POST /v1/storage/signed-upload-urls

Get signed upload URLs

Get short-lived URLs for uploading files straight to Printago storage. This is the first step of creating a part; see POST /v1/parts for the full flow.

For each filename you send, the response returns:

  • uploadUrl: where to send the file bytes. Send the raw file as the request body with the HTTP method given (PUT), and no Printago auth headers. Any Content-Type is accepted. The URL expires 5 minutes after it is issued.
  • path: the staged file's location, prefixed with uploads:. Pass it in fileUris to POST /v1/parts (or PATCH /v1/parts/{id} to replace a part's file).

Results come back in the same order as filenames. The filename is kept as given (spaces included) and becomes the file's name in storage, so use the real file name with its extension.

Requires: part.create

Request Body

File details for upload

SignedUploadUrlsRequest
filenamesrequired
string[]

Names of the files you are about to upload, one signed URL per name.

Example Request

application/json
{
  "filenames": [
    "string"
  ]
}

Examples

Request an upload URL for one file

Request
{
  "filenames": [
    "Benchy.3mf"
  ]
}
Response
{
  "signedUrls": [
    {
      "path": "uploads:k3m9x2p7q8r4t6v1w5y0z3a2/x4c8v2b6n0m3k7j1h5g9f2d6/Benchy.3mf",
      "uploadUrl": "https://storage.googleapis.com/<uploads-bucket>/k3m9x2p7q8r4t6v1w5y0z3a2/x4c8v2b6n0m3k7j1h5g9f2d6/Benchy.3mf?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=...&X-Goog-Date=20260923T140224Z&X-Goog-Expires=300&X-Goog-SignedHeaders=host&X-Goog-Signature=...",
      "method": "PUT"
    }
  ]
}

Response Schema

SignedUploadUrlsResponse
signedUrlsrequired
object[]
methodoptional
"PUT" | "POST"

HTTP method to use for the upload.

PUTPOST
pathrequired
string

Staging path of the file. Pass it unchanged in fileUris when creating or updating a part.

uploadUrlrequired
string

Signed URL to send the file bytes to. Valid for 5 minutes.

Example Response

201 OK — application/json
{
  "signedUrls": [
    {
      "path": "string",
      "uploadUrl": "string",
      "method": "PUT"
    }
  ]
}