MREC Multi-Format

How CloudX offers banner and muted in-banner video on one MREC impression, and how to type your response.

On eligible MREC (300×250) inventory, CloudX can send one impression that carries both imp.banner and imp.video. You can answer with an HTML/MRAID banner or a muted VAST video for the same slot; the highest eligible bid wins regardless of format.

Request shape

A multi-format MREC impression is a normal MREC banner impression with a muted in-banner video object added beside it:

FieldValue
imp.bannerw: 300, h: 250, unchanged from banner-only requests.
imp.video.w / imp.video.hThe MREC slot size, 300 × 250.
imp.video.mimes["video/mp4", "video/3gpp", "video/3gpp2", "video/x-m4v"]. Use video/mp4 for portable CloudX-rendered VAST.
imp.video.minduration / maxduration5 / 30 seconds.
imp.video.protocolsIncludes [2, 3, 5, 6, 7] (VAST 2.0, 3.0, 4.0 and the 2.0/3.0 wrappers). Some requests also list 8 on iOS or 4 on Android; CloudX renders VAST 2.0–4.x only.
imp.video.api[3, 5, 6] (MRAID 1–3).
imp.video.plcmt4 (no content / standalone), the OpenRTB 2.6 signal for in-banner video.
imp.video.placement2 (in-banner), the legacy OpenRTB 2.5 signal.
imp.video.linearity1 (linear).
imp.video.startdelay0 (pre-roll).
imp.video.playbackmethod[6] — starts on entering the viewport with sound off.
imp.video.companiontype[1] (static).

imp.instl is absent and imp.bidfloor applies to the impression whatever format you return. CloudX sends the video object only to app SDKs that can render inline MREC video (CloudX Android SDK 4.7.0+, iOS SDK 3.9.0+).

{
  "imp": [
    {
      "id": "1",
      "tagid": "home-mrec",
      "bidfloor": 1.2,
      "bidfloorcur": "USD",
      "displaymanager": "cloudx",
      "banner": { "w": 300, "h": 250 },
      "video": {
        "w": 300,
        "h": 250,
        "mimes": ["video/mp4", "video/3gpp", "video/3gpp2", "video/x-m4v"],
        "minduration": 5,
        "maxduration": 30,
        "protocols": [2, 3, 5, 6, 7],
        "api": [3, 5, 6],
        "placement": 2,
        "plcmt": 4,
        "linearity": 1,
        "startdelay": 0,
        "playbackmethod": [6],
        "companiontype": [1]
      }
    }
  ]
}

Response creative type

The request shape cannot tell CloudX which format you returned, so declare it on every bid:

Returned creativebid.mtype (OpenRTB 2.6)bid.ext.crtype
HTML / MRAID banner1"html" or "mraid"
VAST video2"vast"

CloudX reads mtype first, then VAST markup in adm, then crtype. Untyped VAST markup is detected and renders as VAST; untyped non-VAST markup renders as a banner. On OpenRTB 2.5 endpoints, which have no mtype, set ext.crtype.

{
  "id": "1",
  "impid": "1",
  "price": 3.10,
  "crid": "creative-mrec-video-1",
  "adomain": ["advertiser.example"],
  "cat": ["IAB9-30"],
  "exp": 3600,
  "mtype": 2,
  "adm": "<VAST version=\"4.2\"> … </VAST>",
  "ext": { "crtype": "vast" }
}

All other bid fields follow Bid Responses.

Rendering paths

CloudX-rendered (SDK-less) demand

For server-to-server demand, the CloudX SDK plays your VAST inline in the MREC slot.

  • Return VAST 2.0–4.3 markup in adm and set crtype: "vast" (and mtype: 2 on OpenRTB 2.6). CloudX sets the rendering route itself; do not send ext.cloudx.render fields.
  • The video starts muted and is scaled to fit the slot with its aspect ratio preserved, letterboxed on black.
  • A video bid CloudX cannot render inline is skipped and receives lurl with loss reason 204; the auction falls back to the best eligible banner.
  • Every other creative rule in the Creative Specification applies, including VAST version support, resource limits, and fallback behavior.

Partner-SDK demand

For buyers whose own mobile SDK renders the ad through a CloudX network adapter (for example Unity Ads), CloudX passes your bid payload unchanged to your SDK’s MREC ad view. Your SDK renders the video; the CloudX inline renderer does not apply. The SDK version minimums above still apply to every multi-format request.

  • Set bid.mtype on every bid (1 banner, 2 video); on OpenRTB 2.5, set ext.crtype instead. CloudX passes adm through unchanged and cannot inspect your SDK payload to tell the formats apart.
  • Whether video serves in your MREC is controlled by your own SDK and placement configuration.
  • Start video muted, as signaled by playbackmethod: [6].