Any event gallery can be shown on your own site with one iframe — no account and no token. Event owners can also read their own events through an API token.

Open the event’s gallery on GOTAG.me and replace “photos” in its address with “embed”, then put that address in an iframe on your page:

<iframe
  src="https://gotag.me/embed/120624-surabaya-isoplus-marathon-2026/1"
  title="Race photos"
  width="100%"
  height="1400"
  style="border: 0"
  loading="lazy"
></iframe>

Inside the frame your visitors can page through the photos, search by BIB number and download free photos, with nothing of ours around them — no header, menu or footer. “All events” returns to the first page of the same event. On an event whose photos are for sale, buying opens GOTAG.me in a new tab. The frame is read-only and sets no cookies.

Fitting the frame to its content

Every page of the gallery is a different height. The frame tells your page how tall it is, so add this script once, anywhere on the page, and the frame resizes itself:

<script>
  window.addEventListener('message', function (event) {
    if (event.origin !== 'https://gotag.me') return;
    if (!event.data || event.data.type !== 'gotagme:embed:resize') return;
    document.querySelectorAll('iframe').forEach(function (frame) {
      if (frame.contentWindow === event.source) frame.style.height = event.data.height + 'px';
    });
  });
</script>

Without it the frame keeps the height you gave it and scrolls inside.

Sandboxed frames

If you add a sandbox attribute to the iframe, it needs these permissions, or the BIB search, downloads and buying stop working inside it:

sandbox="allow-scripts allow-same-origin allow-forms allow-downloads allow-popups allow-popups-to-escape-sandbox"

API tokens

Your token scopes API access to your own events. Tokens are per-route: a token that reads your events cannot reach orders, another owner's data, or anything else. Email [email protected] to rotate a token — we will keep the old one working while you migrate.

Rate limits

Requests are rate-limited per token. Limits are generous for normal gallery traffic; if you need to pull a bulk manifest, ask us at [email protected] rather than paginating through the API.