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 with one multipart POST

Assets are API-first. There is no SDK method, so send the file under the field name file with an org token. The response has the URL and dimensions.

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?

Only the images you place in front of them, like the logo on your sign-in page. Uploading and managing images is for your team.

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?

No. You can make an image private, which moves it behind a link that expires.

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