Storage
Bytes go to the blob backend; the catalog is Cloud metadata. → Storage concept
Storage → Create bucket, then choose a file and Upload (the key defaults to the file name). Rows show state, size, content_type, etag; Download and Delete… per object.
hcloud storage buckets create prj_… assetshcloud storage put prj_… assets ./hello.txt docs/hello.txt --content-type text/plainhcloud storage ls prj_… assetshcloud storage get prj_… assets docs/hello.txt ./hello.copy.txthcloud storage rm prj_… assets docs/hello.txtcurl -X PUT $ORIGIN/v0/projects/$PRJ/storage/buckets/assets -H "Authorization: Bearer $TOKEN"# simplest: PUT the bytes straight to the object route (session or project key)curl -X PUT "$ORIGIN/v0/projects/$PRJ/storage/objects/assets/docs/hello.txt" \ -H "Authorization: Bearer $TOKEN" -H 'Content-Type: text/plain' --data-binary @hello.txtcurl "$ORIGIN/v0/projects/$PRJ/storage/objects?bucket=assets" -H "Authorization: Bearer $TOKEN"curl "$ORIGIN/v0/projects/$PRJ/storage/objects/assets/docs/hello.txt" -H "Authorization: Bearer $TOKEN" -o hello.copy.txtcurl -X DELETE $ORIGIN/v0/projects/$PRJ/storage/objects -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' -d '{"bucket":"assets","key":"docs/hello.txt"}'await cloud.storage.buckets.create(project.id, "assets");const obj = await cloud.storage.upload(project.id, { bucket: "assets", key: "docs/hello.txt", body: "hello", contentType: "text/plain" });const { objects } = await cloud.storage.list(project.id, "assets");const bytes = await cloud.storage.download(project.id, { bucket: "assets", key: "docs/hello.txt" });await cloud.storage.remove(project.id, { bucket: "assets", key: "docs/hello.txt" });// With a project key instead of the session:const data = cloud.data(project.id, { key });await data.storage.upload({ bucket: "assets", key: "app.json", body: JSON.stringify({ ok: true }), contentType: "application/json" });Objects are capped at 32 MiB by default (413 payload_too_large beyond). Bucket names: 3–63 chars of a-z 0-9 -. Only the session may create buckets; a project key may do everything else.