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
Your own storage bucket
Bring your own bucket on Starter or Pro. Connect it when you create the project; it cannot be changed afterwards. Dreep stores uploads and variants there.
Migration
One-off background imports from Cloudinary, Amazon S3 and Cloudflare R2, with progress and a per-file log. From anywhere else, upload through the API or SDKs.
Cloudinary importer
Connect over OAuth with your cloud name, pick assets and import them in the background.
Amazon S3 importer
Connect with a read-only key, region and bucket name, choose objects and import them.
Cloudflare R2 importer
Connect with an R2 token, endpoint and bucket name, choose objects and import them.
Moving from Cloudinary
URL parameter mapping and what has no Dreep equivalent.
SDKs and frameworks
Two official SDKs with zero dependencies. Everything else talks to the REST API with a bearer key.
JavaScript and TypeScript SDK
npm install dreep. Node.js 18+, ESM and CommonJS, fully typed.
Go SDK
go get github.com/IndigoSoftwares21/dreep-go. Go 1.22+, standard library only.
Next.js
Presigned uploads from a route handler and transformed images in components.
All SDKs
Compare the SDKs and the REST API.
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.
Storage
Dreep storage or your bucket
Import
Optional: Cloudinary, S3 or R2
Server SDK
JavaScript, Go or REST
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
};client, err := dreep.New(os.Getenv("DREEP_API_KEY"))
if err != nil {
log.Fatal(err)
}
upload, err := client.PresignUpload(ctx, dreep.PresignOptions{
Filename: "avatar.png",
ContentType: "image/png",
SizeBytes: size,
Destination: dreep.Destination{Folder: "user-uploads"},
})
// Return upload.ID and upload.UploadURL to the browsercurl -X POST "https://api.dreep.cloud/api/v1/upload/presign" \
-H "Authorization: Bearer drp_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"filename":"avatar.png","contentType":"image/png","sizeBytes":184000,"folder":"user-uploads"}'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.