Assets & Media

Upload an image once, and decide who can see it.

Upload JPEG, PNG, GIF, WebP or SVG images from the console or over the API, and get back the object URL and pixel dimensions. Public images get a plain URL, and private ones are served through short-lived signed URLs.

Your app is an organization in BuildBase. Your users sign in and work inside workspaces - one per team or customer.

You set up

In the console and the SDK

  • Images uploaded in the console or from your server
  • Whether each image is public or private
  • Where you use them: posts, docs, your sign-in page

You get

For you and your team

  • Image hosting without a storage bucket to manage
  • Private images behind links that expire
  • Width and height recorded for every image

Image hosting without a bucket to manage

Upload, get a URL and dimensions back, and choose who can open it.

Images Only, Checked

JPEG, PNG, GIF, WebP and SVG are accepted, checked by what the file really is, not by its name.

Safe SVGs

Scripts are stripped out of SVG files before they are stored.

Size Recorded

Width and height are saved with each image, so pages can reserve the space before it loads.

Public or Private

Choose per image. Private images are served through links that expire, and you can switch at any time.

One Image Library

The same images appear in the blog and docs editors, your sign-in page and your organization settings.

Find It Fast

Filter by public or private, sort by newest, and copy a public link in one click.

Upload up to 5 MB with one multipart POST

Send the file under the field name file with an org token, up to 5 MB, and the response has the URL and dimensions. Larger files, up to 100 MB, go direct to storage on a signed URL. Your app's users upload their own workspace images and profile pictures through the SDK.

scripts/upload-logo.tsTSX
import { readFile } from 'node:fs/promises';

const form = new FormData();
form.append(
  'file',
  new Blob([await readFile('logo.png')], { type: 'image/png' }),
  'logo.png'
);
// A string, not a boolean - anything else lands private.
form.append('public', 'true');

const res = await fetch('https://api.console.buildbase.app/api/assets', {
  method: 'POST',
  headers: { Authorization: process.env.BUILDBASE_TOKEN! },
  body: form,
});

const { file: [asset] } = await res.json();
console.log(asset.bucket.url, asset.image); // { width, height }

Frequently Asked Questions

What people ask about Assets.

Do my users see this?

They see the images you place in front of them, like the logo on your sign-in page. Managing images is for your team, but your app’s users can upload a workspace image or profile picture through the SDK, and form visitors can attach images to a form. Those land in your assets and count toward your storage.

Which files can I upload?

Images only: JPEG, PNG, GIF, WebP and SVG. Other file types are refused.

Are images resized or converted?

No. Images are stored as uploaded - except that scripts are stripped from SVGs - with their width and height recorded.

Can I delete an image?

Yes. Deleting removes the stored file first and the image after, and frees the space at once. Anything still embedding it shows a broken image, so the delete confirmation lists where the image is used before you confirm.

Upload your first image

Drop an image into Assets in the console or POST it from your backend, then decide whether its URL is public.

7-day free trialNo credit card requiredCancel anytime