Rheveal← rheveal.app
API & Embed

Your gallery, on your site

'26 09 11

Every released gallery has two doors: a link, and an embed. Both are in the host dashboard under Share & embed, from the moment the roll is released.

1. The link

Each gallery lives at a short, stable address:

https://guest.rheveal.app/gallery/<event-slug>

Send it, post it, print it. It's public to anyone who has it — that's the point of a shared roll — and the host can hide individual photos at any time, before or after release.

2. The embed

Drop the gallery straight into a page on your own site — a wedding site, a club page, a company intranet. It's one tag:

<iframe src="https://embed.rheveal.app/g/<event-slug>"
        style="width:100%;height:800px;border:0"
        loading="lazy"></iframe>

That's the chrome-less version of the gallery: no header, no footer, just the frames. The fixed height keeps it usable on site builders that block scripts. If you can run a few lines of JavaScript, the embed reports its own height so you can drop the scrollbar:

<script>
addEventListener("message", (e) => {
  if (e.origin !== "https://embed.rheveal.app") return;
  if (e.data && e.data.type === "rheveal:height") {
    document.querySelector("iframe[src*='embed.rheveal.app']").style.height = e.data.height + "px";
  }
});
</script>

The embed posts rheveal:height every time its content changes, so it stays the right size as the host curates.

Coming: the one-line script

A w.js widget that mounts the gallery into a div and sizes itself, with no iframe plumbing on your side. It isn't shipped yet; the iframe above will keep working when it does.

Is there an API?

Not a public one, yet. The gallery endpoint the embed reads from is read-only and built for the embed, not for other software — we don't want to promise stability we can't keep. If you have something you'd build against Rheveal, tell us what: hello@rheveal.app. It shapes what we open up first.