How to securely store private images uploaded by users and processed by OpenAI (base64)?

I’m building an app which includes users upload an image (via PictureUploader), and receive an AI-generated styled image from OpenAI’s gpt-image-1 model (received as base64). Currently, both the uploaded and AI-generated images end up publicly accessible. My goal is to ensure these images remain completely private, visible only to the uploading user, without involving third-party plugins.

Current approach:

  • User uploads image via Bubble’s PictureUploader.
  • Image sent to OpenAI via Bubble API Connector; returns a base64 string.
  • The base64 string is currently saved as an image (Make a new thing) directly in Bubble, resulting in a publicly accessible URL.
  1. Is there a simple way in Bubble (Starter plan) to privately store both uploaded and generated images without public URLs?
  2. Can I directly store the base64 response from OpenAI as a private image/file accessible only to the current user?
  3. If direct private storage isn’t possible with PictureUploader alone, what minimal workflow adjustments would you recommend to achieve secure, private storage?

Thank you for your time and help!

For files from API, you will need to use a plugin or use API connector upload it as a private file.

Plugin:
File Uploader Bubble API Plugin | Bubble (example)

For API Connector, search about fileupload endpoint on the forum, you should be able to find informations about how to do it.

Just been working on this same issue and found that the Better Uploader plugin can expose a file as base64 without even needing to upload the file, perfect for inserting into the new OpenAI Responses API.

Let me know your thoughts: Sending base64 image to OpenAI Responses for AI Image Analyse