Downloads a file from storage.
Returns the raw bytes with the original `Content-Type` the uploader provided. Access requires an authenticated tenant member, a valid `exp`/`sig` URL signature (minted by the platform when a file is shared), or a public file (avatars, logos). How strictly that rule is enforced is controlled by the storage download auth mode; expired signatures get a 410 with a human-readable page.
Path Parameters
The file identifier.
The tenant identifier
Query Parameters
Signature expiry (Unix seconds), present on signed URLs.
URL signature, present on signed URLs.
Response Body
application/octet-stream
curl -X GET "https://api.fruxon.com/v1/tenants/string/storage/string"{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}Deletes a stored file.
Removes the storage object (all generations) and its tracking row. Files still referenced by another entity — an avatar, workspace/environment logo, chat signature, or a knowledge asset's backing file — are refused with a 409 naming the reference, since deleting them would silently break the referencing entity.
Uploads a file to storage.
Streams a single multipart file into object storage and returns an opaque `FileLink` (file ID plus content type) that can later be passed into agent inputs, attachments, or fetched via `GET StorageFileParam`. Max upload size is 50 MiB; larger requests fail at the request-size limit before reaching the handler. Concurrency-rate-limited per caller.