/storage/v1).
Requires a fullstack app (
naive.apps.create({ name, type: "fullstack" })). Like Database/Functions/Auth, it’s a curated surface over the app-scoped backend proxy.Two ways to use it
{ appId } to auto-resolve the user’s single fullstack app; pass it when they own several.
Buckets
Objects
Binary uploads (images, video) are best done with a signed upload URL rather than the JSON proxy. Request one via the backend proxy (
POST .../storage/v1/object/upload/sign/{bucket}/{path}) and PUT the bytes directly.REST
/v1/apps/<app-id>/…; an end-user’s project uses /v1/users/<user-id>/apps/<app-id>/….
Everything under storage/proxy/* forwards to the project’s /storage/v1/*. See the Storage API reference.
Billing
Object operations (list / upload / download / remove) are free — there is no per-request credit cost. A provisioned storage bucket carries a recurring vendor cost, so it is duration-metered (storage_usage) while it is ready, like the other Path A infrastructure. That meter is not currently charging: it ships at a rate of 0, and the expected ~0.02 credits/hour per bucket will be announced before it starts. Removing the bucket (naive down) stops the meter; your objects persist until then. Account Kits can gate the storage primitive per user.