Dreep integrations

Dreep connects to your stack in three places. Store files in your own bucket on AWS S3, Cloudflare R2, Wasabi, DigitalOcean Spaces, MinIO or another S3-compatible provider. Copy an existing library in with the Cloudinary, Amazon S3 or Cloudflare R2 importers. Call the API from the JavaScript or Go SDKs, any language over REST, or a framework such as Next.js.

What you can connect

Dreep storage or your own bucket?

Both options use the same API, URLs and access rules. The choice is about who holds the files and who bills you for them.

Choose Dreep storage when

You want nothing extra to provision. Storage is included in each plan (1 GB Free, 10 GB Starter, 50 GB Pro), with +10 GB, +50 GB and +100 GB add-ons when you need more.

Choose your own bucket when

You need the files under your own cloud account, for ownership, residency or an easy exit. Your provider bills storage directly and it does not count against your Dreep storage limit.

Decide before the first upload

Connect the bucket when you create the project, before the first upload; it cannot be changed later. If you are unsure, start a separate test project for each option.

Plan for credentials

Create a dedicated access key limited to the one bucket, with read, write, delete and list permissions. Dreep tests it with a probe object when you connect.

How the pieces fit

A typical setup uses one item from each group: a storage choice, an SDK on your server, and optionally an import.

  1. Storage

    Dreep storage or your bucket

  2. Import

    Optional: Cloudinary, S3 or R2

  3. Server SDK

    JavaScript, Go or REST

  4. Your frontend

    Presigned uploads, CDN URLs

The same calls whichever storage you choose

Code does not change when a project uses your own bucket. This server endpoint creates a presigned upload for a browser.

import { Dreep } from "dreep";

const dreep = new Dreep({ apiKey: process.env.DREEP_API_KEY });

export const createUpload = async ({ filename, contentType, sizeBytes }) => {
  const { id, uploadUrl } = await dreep.presignUpload({
    filename,
    contentType,
    sizeBytes,
    folder: "user-uploads",
  });
  return { id, uploadUrl }; // browser PUTs to uploadUrl, then you confirm id
};

Who this is for

  • Node.js, TypeScript and Go backends.
  • Teams already storing files in S3, R2, Wasabi, Spaces or MinIO who want to keep that bucket as the store.
  • Projects moving off Cloudinary.
  • Any other language that can make HTTPS requests.

When Dreep is not the right fit

  • You need a continuous sync from another storage service; imports are one-off copies.
  • You need official Python, Ruby or PHP SDKs.
  • You need webhooks or job callbacks into your systems.
  • You need to move an existing project's files onto your own bucket; connecting a bucket does not move them.

Frequently asked questions

Can Dreep import files from my S3 or R2 bucket?

Yes. Connect the bucket on the Integrations page with an access key ID, secret, endpoint or region, and bucket name, browse its objects, choose what to import and Dreep copies them into a project folder in a background job. Use read-only credentials scoped to that bucket.

Which storage providers can I connect?

AWS S3, Cloudflare R2, Wasabi, DigitalOcean Spaces, MinIO and any other S3-compatible provider, on the Starter or Pro plan.

Which languages have official SDKs?

JavaScript/TypeScript (npm install dreep) and Go (github.com/IndigoSoftwares21/dreep-go). Both have zero dependencies. Other languages use the REST API with a bearer API key.

Does the Cloudinary import keep my URLs working?

No. Imported files get Dreep asset IDs and CDN URLs, so update the URLs you store and translate transformation strings to Dreep parameters.

Related

Connect your first integration

Create a project, then add your bucket in Storage settings or connect Cloudinary from the Integrations page.