What this demonstrates

The snippet passes an empty object to showAds — no sizes, no location, no id, the sparsest possible call. The spot is still the script's position; Ezoic decides which size pays best for the placeholder.
Integration used on this page
<!-- Head: consent + Ezoic standalone loader -->
<script data-cfasync="false" src="https://cmp.gatekeeperconsent.com/min.js"></script>
<script data-cfasync="false" src="https://the.gatekeeperconsent.com/cmp.min.js"></script>
<script async src="//www.ezojs.com/ezoic/sa.min.js"></script>
<script>
  window.ezstandalone = window.ezstandalone || {};
  ezstandalone.cmd = ezstandalone.cmd || [];
</script>

<!-- Body: empty descriptor, Ezoic picks the size -->
<script>
  ezstandalone.cmd.push(function () {
    ezstandalone.showAds({});
  });
</script>

View source on GitHub →

Docs: Ad Placements — Simple Setup (No Placement IDs)

Empty descriptor — Ezoic picks the size

The snippet on this page passes an empty object to showAds. No sizes, no location, no id — the sparsest possible call. The spot is still the script's position.

Second paragraph of ordinary content so the mid-article snippet below has real paragraphs on both sides of it.

Third paragraph directly above the ad spot. With three paragraphs preceding the script out of five total, the label lands in the mid-content bucket.

Fourth paragraph, right after the ad spot. Ezoic decides which size pays best for this placeholder since the call did not constrain dimensions.

A closing paragraph keeps the article shaped like real content.