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 HTTPmethodgiven (PUT), and no Printago auth headers. AnyContent-Typeis accepted. The URL expires 5 minutes after it is issued.path: the staged file's location, prefixed withuploads:. Pass it infileUristoPOST /v1/parts(orPATCH /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.
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"
}
]
}