Last updated on 2nd September 2026

PixelVault: Agent-First Image Hosting with Instant CDN URLs

Every app eventually needs somewhere to put images — user uploads, generated artwork, CI screenshots, Open Graph thumbnails — and serve them fast from anywhere. The traditional answer is a storage bucket plus a CDN plus a signing story plus a resizing pipeline, wired together and maintained. PixelVault collapses that stack into a single API: POST an image, get back a permanent CDN URL, and resize or reformat it on the fly with query parameters.

It's built "agent-first" — the same API that a human calls from a build script is the one an AI coding agent calls through an MCP server, so generated images land somewhere addressable without a human wiring up hosting. (Full disclosure on our end: the hero images on this blog are hosted on PixelVault, so the workflow below is the one we actually run.)

The problem it solves

Committing binary images into a Git repository bloats it and slows every clone; serving them from an application server puts image bytes on the critical path of your app. PixelVault keeps images out of the repo and off your origin: the bytes live at the edge, your code holds only a URL, and transforms happen at request time instead of at build time. For a static site deployed with DeployHQ, that means your repository stays lean and your build pipeline doesn't have to generate a dozen resized variants of every asset.

Register and get an API key

Registration is passwordless — send an email address and you get a key back immediately:

curl -X POST https://api.pixelvault.dev/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com"}'
{
  "data": {
    "account_id": "acct_abc123",
    "email": "you@example.com",
    "default_project": {
      "api_keys": { "live": "pv_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }
    }
  }
}

Save the key — it's shown only once. (There's also a keyless first upload for quick experiments, but those images expire after 30 days, so use a key for anything you want to keep.)

Upload an image

Upload is a single multipart POST. The response hands back the CDN URL directly — there's no separate "publish" step:

curl -X POST https://api.pixelvault.dev/v1/images \
  -H "Authorization: Bearer pv_live_xxxxxxxx" \
  -F "file=@screenshot.png"
{
  "data": {
    "id": "img_abc123",
    "url": "https://img.pixelvault.dev/proj_xyz789/img_abc123.png",
    "visibility": "public",
    "mime_type": "image/png",
    "size": 245000,
    "filename": "screenshot.png",
    "created_at": "2026-07-15T12:00:00.000Z"
  }
}

That url is the whole payoff: paste it into an <img src>, a Markdown file, or a database row and you're done.

Transform on the fly

Every CDN URL accepts transform parameters, cached at the edge — no second API call, no pre-generated variants:

https://img.pixelvault.dev/proj_xyz789/img_abc123.jpg?w=400&fit=cover&fmt=webp

That one URL resizes to 400px wide, crops with cover-fit, and converts to WebP. The same source image can serve a 400px WebP thumbnail and a full-size AVIF hero without you storing either — you just change the query string. Beyond resize and format conversion, PixelVault supports cropping, background removal, watermarking, effects, and face-aware cropping, and it handles JPEG, PNG, GIF, WebP, AVIF, and SVG.

Batches, collections, and private images

For anything beyond one-off uploads:

  • Batch uploads take up to 50 images in a single call, grouped into a collection — handy for an album, a generation set, or one CI run's worth of screenshots.
  • Private images are served through HMAC-signed URLs, so access is time-limited and tamper-evident rather than public-by-default.
  • Export pulls every image in a project down as a tar archive with metadata, so you're never locked in.

Using it from CI and your deploy pipeline

PixelVault ships a GitHub Action that uploads screenshots when a test run fails — instead of digging through CI artifacts, you get a stable URL to the exact failure state straight in the run log. The same pattern fits a DeployHQ build pipeline: add a step that uploads generated or optimized images and captures the returned URLs, then let automatic deployments ship the rest of your site on every push. Because the images resolve from PixelVault's edge rather than your server, the deploy artifact stays small and your origin never serves raw image bytes.

When to reach for PixelVault

Reach for it when you need image hosting with a CDN and don't want to assemble one from a bucket, a CDN, and a resizing service — especially if an AI agent or a CI job is doing the uploading and there's no human to click through a dashboard. The free tier (200 MB storage, 500 uploads/month, 1 GB bandwidth, no card required) is enough to wire it into a project and see whether the single-API-call model fits before you commit.

Building a site whose images live on PixelVault and whose code ships to your own server? Create a free DeployHQ account and connect your repository in minutes.