/storage/v1) with the project service-role key injected. App-scoped, on both the company mount (/v1/apps/:id/...) and per-user mount (/v1/users/:user_id/apps/:id/...). On per-user mounts the kit must enable the storage primitive.
Endpoint
Everything after
storage/proxy/ maps to the project’s /storage/v1/:
POST .../supabase/proxy/v1/projects/{ref}/storage/buckets also creates a
bucket. The Management API has no such route (it is GET-only), so the apps
proxy rewrites that call to POST storage/v1/bucket on the data plane — the
same thing storage/proxy/bucket reaches. Agents kept reaching for the
management path; it now works instead of returning an opaque upstream failure.Binary uploads are best done with a signed upload URL (
POST .../storage/v1/object/upload/sign/{bucket}/{path}) then a direct PUT of the bytes — the JSON proxy is intended for metadata and text/JSON content.SDK
storage sub-client.