Reserve a catalog row and get the URL to PUT the bytes to.
POST
/v0/projects/{id}/storage/uploads
const url = 'https://infra-hyphae.run/v0/projects/example/storage/uploads';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"bucket":"example","key":"example","content_type":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://infra-hyphae.run/v0/projects/example/storage/uploads \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "bucket": "example", "key": "example", "content_type": "example" }'The URL is on the Cloud itself (PUT /v0/projects/{id}/storage/objects/{bucket}/{key}),
to be called with the same session bearer; it is not a presigned
blob-store URL, so no client ever talks to MinIO/S3 directly and public
traffic stays behind the Cloud auth proxy. The row is pending until
the PUT completes. Pending rows are not garbage-collected in this phase.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”id
required
string
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
bucket
required
S3-compatible bucket name so the same name works on every backend.
string
key
required
string
content_type
string | null
Examplegenerated
{ "bucket": "example", "key": "example", "content_type": "example"}Responses
Section titled “ Responses ”Upload ticket.
Media typeapplication/json
object
object_id
required
string
method
required
string
upload_url
required
Path on the Cloud origin; add Authorization: Bearer <session>.
string
headers
required
object
key
additional properties
string
max_bytes
required
integer
expires_at
required
RFC 3339, UTC.
string format: date-time
Example
{ "method": "PUT"}Malformed or out-of-bounds input (invalid_request).
Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
Example
{ "error": { "code": "invalid_request" }}Missing, malformed, duplicate, or unknown credential (authentication_required).
Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
Example
{ "error": { "code": "invalid_request" }}Headers
Section titled “Headers”WWW-Authenticate
string
Unknown route, or a project the caller does not own (not_found).
Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
Example
{ "error": { "code": "invalid_request" }}