Gypsy Crusader v Supah Hot Fire and Blueface v Chibu LIVE stream, updates and more from Adin Ross’ Brand Risk 13

Never has the name Brand Risk Promotions ever been more appropriate than tonight’s event in Miami.

Adin Ross returns to his secretive warehouse for the thirteenth iteration of his celebrity boxing showcase. And in his entire time promoting, the streamer has never staged more of a Brand Risk than his foremost and co-main events.

The penultimate bout of the evening will see Paul Miller – higher often known as Gypsy Crusader – tackle battle rapper Supah Hot Fire. Recent Yorker Miller is notorious online for his streams where he gives extreme takes on race and other hot button political issues.

And although Ross has helped him to get in front of a big audience and given him the possibility to return to his past love of fighting, Miller seems irked by the promoter and his tactics to construct hype for the fight.

The foremost event then sees hit-making rapper Blueface return to the ring for the primary time since serving just over a 12 months of a four-year prison sentence for a probation violation stemming from a 2021 battery incident.

After bulking up considerably while behind bars, Blueface faces the fan favorite heavyweight Chibu as he warms up for a May 2 showdown against NBA champion Nick ‘Swaggy P’ Young.

Elsewhere within the evening, Anderson Silva’s son Gabriel Silva will return to the ring for the primary time since losing to AP The Fighter back in January. And his old rival can be coming back to tackle former Misfits Boxing star Minikon.

Donagh Corby

BLUEFACE AND CHIBU GO THE DISTANCE

The referee was taking a really close look towards the second third of that round – and never for Chibu! If he had a tiny bit more within the tank he would have won by knockout! What a performance from the underdog!

[Link]

Donagh Corby

Blueface and Chibu go to the sixth round

This can be a war of attrition. Chibu won’t get the choice, but he’s giving it every thing he has. I still would have scored that shot through the ropes a knockdown. We head to the sixth.

[Link]

Donagh Corby

Blueface and Chibu are going to war

It’s obvious who the higher technical boxer is, but Chibu is battling and despite their respective body types he seems to have the cardio to get something done here.

[Link]

Donagh Corby

BLUEFACE GOES THROUGH THE ROPES

Chibu pushes Blueface – in keeping with the referee – through the ropes. That was a series of punches to my eye! That is far more of a fight than Blueface was expecting. Not only a warm-up!

[Link]

Donagh Corby

Cuffem reacts to Gypsy Crusader’s win

Again, we apologize for the language!

[Link]

Donagh Corby

Blueface vs Chibu – Round 1

Blueface is moving Chibu around a bit, each men look loads higher than they’ve physically in recent appearances. Chibu is just a lot slower than Blueface, who’s being roundly booed.

[Link]

Donagh Corby

Fundamental event time

Blueface v Chibu, here we go!

[Link]

Donagh Corby

Gypsy Crusader vs Supah Hot Fire – Round 3

Supah Hot Fire appears to have a headphone in his ear between rounds, then comes out swinging and gets thrown down by Miller. These two have each now completely gassed out and are only swinging for the fences. Supah appears to attempt to get out of the ring at one stage but Miller is so completely drained that he cannot make the most. They swing to the bell, and we go the space. Very fun, but terrible fight.

[Link]

Donagh Corby

Gypsy Crusader vs Supah Hot Fire – Round 2

Miller is so drained, Supah Hot Fire’s little bit of ring activity is clearly standing to him, but he gets bundled to the bottom early. Supah is taunting him now, and that’s a significantly better round for the underdog. Everbody in Adin’s warehouse is cheering on Supah Hot Fire. What a villain the Gypsy Crusader is!

[Link]

Donagh Corby

Gypsy Crusader vs Supah Hot Fire – Round 1

This size difference is crazy, but Supah Hot Fire is landing along with his overhand right. Miller on top of things, despite Adin Ross’ insistence that the round was a victory for Supah. Miller looks absolutely shattered after only a round. 10-9 Miller for me.

[Link]

Donagh Corby

Monster size difference

Supah Hot Fire is a lot smaller than Miller!

[Link]

Donagh Corby

Gypsy Crusader makes the ring walk

With Joker in his corner and a bunch of other characters, the person of the hour arrives!

[Link]

Donagh Corby

Time for the Gypsy Crusader fight!

I cannot repeat one word, and even allude to anything that they’re saying on the desk.

[Link]

Donagh Corby

Janaya Berry defeats Kristina Santa by Unanimous Decision

Each of those women got here out swinging and the underdog Berry scores a giant victory. Now time for the massive fight!

[Link]

Donagh Corby

Another fight to go until the Gypsy Crusader fights

Kristina Santa vs Janaya Berry is out sole ladies fight of the night!

[Link]

Donagh Corby

AP THE FIGHTER PUTS MINIKON TO SLEEP IN ROUND ONE

Absolutely vicious knockout for AP The Fighter who sends his rival – a really experienced fighter – to the canvas on the buzzer of the primary round!

[Link]

Donagh Corby

AP The Fighter vs Minikon is next

The returning former Misfits Boxing star Minikon takes on Gabriel Silva’s conqueror AP The Fighter.

[Link]

Donagh Corby

GABRIEL SILVA KNOCKS OUT JOSE FLORENTINO TO THE BODY IN ROUND ONE

Some of the vicious knockouts I even have watched, although it won’t look it on the replays. After being rocked by Florentino, Silva lands a large shot to the liver that gave the impression of a gunshot! Florentino in some way gets up and offers an interview. That was wild.

[Link]

Donagh Corby

Gabe Silva vs Jose Florentino up next

Not much of a record for Florentino, who’s 1-3 as knowledgeable. Silva needs an announcement after his last defeat.

[Link]

Donagh Corby

Antonio Williams VICIOUSLY KOs Carlos Portillo in the primary round

That was absolutely brutal, three hard knockdowns that might have been stoppages. ‘Baby Tank’ is likely to be a greater nickname than ‘Bang’ to be honest!

[Link]

Donagh Corby

Antonio Williams faces Carlos Portillo in our next pro fight

Teofimo Lopez’s prospect ‘Bang’ Williams in search of one other big stoppage. Anderson Silva’s son is up after this.

[Link]

Donagh Corby

Wild viewership figures for tonight

Over 350,000 concurrent viewers on Ross’ Kick stream, 80,000 on X and an illegal stream on YouTube even has 57,000. Not to say all of the main influencers who’re streaming their perspectives of the event live.

[Link]

Donagh Corby

Rooga defeats KMac The Great via UD

An enormous knockdown early was enough for the underdog to get a choice victory on every scorecard. That’s a disaster for KMac, who fancies himself a fighter. Rooga calls out GHerbo!

[Link]

Donagh Corby

Rooga vs Kmac The Great is our next fight

Rooga vs Blueface was the plan for the foremost event but his sparring was so bad that the fight was cancelled by the commission and Chibu was drafted in. Given what we’ve seen of Chibu, God knows what they saw in that sparring footage.

[Link]

Donagh Corby

Clavicular is here!

He’s excited for the 2 foremost events, but doesn’t want to present an explicit opinion on Paul Miller’s fight.

[Link]

Donagh Corby

King Keem quits within the corner after one round – General Zach wins!

XQC defeats DDG in one other proxy battle. Adin has banned Keem from fighting on Brand Risk again!

[Link]

Donagh Corby

General Zach vs King Keem up next

Ought to be an interesting fight!

[Link]

Donagh Corby

Andrew Garcia defeats DeShawn Porter by Decision

The chat are glad with that, the Adin loyals on X not a lot.

[Link]

Donagh Corby

Deshawn Prather vs Andrew Garcia up next

Probably a better standard of fight!

[Link]

Donagh Corby

Boxersal knocks out Angel Solis in round one

Deen The Great takes yet one more L!

[Link]

Donagh Corby

BoxerSal vs Angel Solis is up next

Larry Wheels and Deen The Great’s proxy fight is occurring.

[Link]

Donagh Corby

NoNeckJay quits on the stool after two rounds!

JBoolin answers the decision, NoNeckJay doesn’t and the fight is over!

[Link]

Donagh Corby

NoNeckJay vs JBoolin up first

Those are there actual names. Very big boys!

[Link]

Donagh Corby

We’re live

Adin Ross and a star-studded commentary crew are survive Kick!

[Link]

Donagh Corby

The fifteen minutes are up

Clock’s ticking Adin!

[Link]

Donagh Corby

Deen The Great and Larry Wheels have a proxy fight tonight

[Link]

Donagh Corby

CARD DELAYED

[Link]

Donagh Corby

We’re attributable to get underway shortly

Don’t expect this to begin bang on time, Adin likes to maintain his public waiting!

[Link]

Donagh Corby

Blueface is preparing for the afterparty already!

[Link]

Donagh Corby

The way to watch Brand Risk 13

Adin Ross will likely be streaming the event FREE across his socials, totally on Kick. We may have a link for you after they’re live!

[Link]

Donagh Corby

Gypsy Crusader and Supah Hot Fire face off

[Link]

Donagh Corby

Welcome to the Bloody Elbow live blog

Good evening and welcome to our live coverage right here on Bloody Elbow from Brand Risk Promotions 13 in Miami. My name is Donagh Corby and I will likely be with you throughout the evening with all the outcomes and updates from this wildly controversial evening of fights. I’ve got to be honest – I fear I would lose my job for just reporting on this show!

[Link]

const postId = 298172;
let modifiedDate = “2026-03-15T04:33:23+00:00”;

// creates a timestamp cachebuster rounded to nearest 30 seconds threshold
function getLiveBlogCacheBusterTimestamp() {
const now = recent Date();

// Get current UTC time components
const minutes = now.getUTCMinutes();
const seconds = now.getUTCSeconds();

// Round as much as the closest 30 seconds
const roundedSeconds = Math.ceil(seconds / 30) * 30;

// Adjust minutes and seconds
let roundedDate = recent Date(Date.UTC(
now.getUTCFullYear(),
now.getUTCMonth(),
now.getUTCDate(),
now.getUTCHours(),
minutes,
roundedSeconds
));

// Convert to Unix timestamp
return Math.floor(roundedDate.getTime() / 1000);
}

function getPollingEndpointUrl(postId) {
const baseUrl = “/wp-json/grv-live-blog/v1/post-modified-date”;
const cacheBuster = getLiveBlogCacheBusterTimestamp();
return `${baseUrl}?post_id=${postId}&t=${encodeURIComponent(cacheBuster)}`;
}

function getUpdatedEventEndpointUrl(postId) {
const baseUrl = “/wp-json/grv-live-blog/v1/get-updated-events”;
const cacheBuster = getLiveBlogCacheBusterTimestamp();
return `${baseUrl}?post_id=${postId}&t=${encodeURIComponent(cacheBuster)}`;
}

function showRefreshButton() {
const refresh_btn = document.getElementById(“glb-btn”);
refresh_btn.style.display = “block”;
}

function hideRefreshButton() {
const refresh_btn = document.getElementById(“glb-btn”);
refresh_btn.style.display = “none”;
}

function jumpToLatestEvent() {

hideRefreshButton();

const element = document.querySelector(“.wp-block-grvmedia-grv-live-blog”);

// Scroll to the element
if (element) {
element.scrollIntoView({ behavior: “smooth”, block: “start” });
}
}

function createPointItem(item) {

// Create the

  • element
    const li = document.createElement(“li”);

    li.appendChild(document.createTextNode(item.headline));

    const a = document.createElement(“a”);
    a.href = `#${item.anchorId}`; // Set the href attribute
    a.innerHTML = `View post

    `; // Set the text content

    li.appendChild(a);

    return li;
    }

    function addScriptSrcToHead(src) {
    let s = document.createElement(“script”);
    // expectation is that that is the primary script element in the pinnacle
    let insertion = document.getElementsByTagName(“script”)[0];
    s.async = true;
    s.src = src;
    insertion.parentNode.insertBefore(s, insertion);
    }

    function refreshScripts( fragment ) {
    let scripts = fragment.querySelectorAll(“script”);
    for ( let script of scripts ) {
    let freshScript = document.createElement(“script”);
    // copy attributes
    let attrs = script.attributes;
    for ( let attr of attrs ) {
    freshScript.setAttribute( attr.name, attr.value );
    }
    // copy inner script code. #718, #782
    freshScript.innerHTML = script.innerHTML;
    script.parentNode.replaceChild( freshScript, script );
    }
    }

    function reverseEvents(updated_events){

    const events = Object.entries(updated_events);

    // Reverse the order of the entries
    events.reverse();

    // Convert the reversed entries back to an object
    return Object.fromEntries(events);
    }

    function fetchUpdatedEvents() {

    const apiUrl = getUpdatedEventEndpointUrl(postId);

    fetch(apiUrl)
    .then(response => response.json())
    .then(updatedEvents => {

    // Find the events container
    let key_points = document.querySelector(“.grv-live-blog-key-points”);

    // if we had no key points to begin with but have some now we want to create the div and ul
    // for it to populate
    if(updatedEvents.key_points.length > 0) {

    if (!key_points) {
    // Element doesn’t exist, create it
    key_points = document.createElement(“div”);
    key_points.className = “grv-live-blog-key-points”;

    // Create and append

    to the brand new element
    const heading = document.createElement(“h5”);
    heading.textContent = “Key points”;
    key_points.appendChild(heading);

    // Create and append

      to the brand new element
      const ul = document.createElement(“ul”);
      ul.className = “grv-live-blog-key-points-list”;
      key_points.appendChild(ul);

      const glb_wrapper = document.getElementById(“glb-wrapper”);

      if (glb_wrapper) {
      // Insert the brand new element before the wrapper
      glb_wrapper.parentNode.insertBefore(key_points, glb_wrapper);
      }
      }

      const key_points_list = document.querySelector(“.grv-live-blog-key-points-list”);
      key_points_list.innerHTML = “”;

      // Update the important thing points
      updatedEvents.key_points.forEach(point => {

      const point_item = createPointItem(point);
      key_points_list.appendChild(point_item);

      });

      // else we’ve got no key points so lets remove the list
      }else{

      if (key_points) {
      key_points.remove();
      }
      }

      // now cope with the events themselves…
      const events_container = document.querySelector(“.wp-block-grvmedia-grv-live-blog”);

      // get a map of the present events keyed by id
      const existingEvents = Array.from(events_container.querySelectorAll(“.wp-block-grvmedia-grv-live-blog-event”))
      .reduce((map, event) => {
      map[event.id] = event;
      return map;
      }, {});

      // get the present and updated keys so we will compare
      const existingKeys = Object.keys(existingEvents);
      const updatedKeys = Object.keys(updatedEvents.updated_blocks);

      // find events which are in existing but not in updated
      const keysToRemove = existingKeys.filter(key => !updatedKeys.includes(key));

      // remove any events which were deleted
      keysToRemove.forEach(key => {
      // Find the element with the corresponding id
      const element = document.getElementById(key);

      // Remove the element if it exists
      if (element) {
      element.remove();
      }
      });

      // reverse the events so that they are in the correct order if we add multiple…
      updatedEvents.updated_blocks = reverseEvents(updatedEvents.updated_blocks);

      // loop through each updated event
      Object.values(updatedEvents.updated_blocks).forEach(updatedEvent => {

      // create temp elem so we will hydrate it from our rendered event after which access the id etc
      const parser = recent DOMParser();
      const tempEvent = parser.parseFromString(updatedEvent,”text/html”);

      // Select the event from our temp container
      const eventElement = tempEvent.querySelector(“.wp-block-grvmedia-grv-live-blog-event”);

      // Extract the id
      const eventId = eventElement ? eventElement.id : null;

      // Using a fraction allows us to refresh scripts before attaching to dom
      let frag = document.createDocumentFragment();

      if (existingEvents[eventId]) {
      frag.append( …eventElement.childNodes );
      } else {
      frag.append( eventElement );
      }
      refreshScripts( frag );

      // if its an existing event replace the content of the event so we dont cause a jump
      if (existingEvents[eventId]) {

      // get the present event
      const event = document.getElementById(eventId);
      event.style.minHeight = event.offsetHeight + “px”;

      // update its innerHTML and sophistication incase we’ve got modified to featured or breaking etc
      event.className = eventElement.className;
      event.replaceChildren(…frag.childNodes);

      const seeMore = event.querySelector(“.see-more-wrapper.lazy”);
      let seeMoreSrc = seeMore?.getAttribute(“data-src”);
      if (seeMoreSrc) {
      if ( seeMoreSrc.indexOf(‘instagram’) != -1 && window.instgrm ) {
      window.instgrm.Embeds?.process();
      } else {
      addScriptSrcToHead(seeMoreSrc);
      }
      }

      // if its a brand new event add to the highest – TODO: sort order if multiple recent events
      } else {
      // Create a brand new event
      events_container.insertBefore(frag, events_container.firstChild);
      }
      });
      })
      .catch(error => {
      console.error(“Error fetching updated blocks:”, error);
      });
      }

      document.addEventListener(“DOMContentLoaded”, function() {

      function startPolling(postId) {

      function fetchPostModifiedDate() {
      const url = getPollingEndpointUrl(postId);
      fetch(url)
      .then(response => response.json())
      .then(data => {

      // if our post modified date has modified we’ve got an update
      if(modifiedDate != data.modified_date) {

      // update the modified time to be the brand new modified time
      modifiedDate = data.modified_date;

      // show the button so a user can refresh
      fetchUpdatedEvents();
      showRefreshButton();
      }
      })
      .catch(error => {
      console.error(“Error fetching post modified date:”, error);
      });
      }

      // Set interval to fetch every 30 seconds
      setInterval(fetchPostModifiedDate, 30000); // 30 seconds
      }

      // Start polling
      startPolling(postId);

      const refreshButton = document.getElementById(“glb-btn”);

      refreshButton.addEventListener(“click”, jumpToLatestEvent);
      });

      We may have the entire updates right here for you on the Bloody Elbow live blog, in addition to a live-stream of the fight itself.


  • Related Post

    Leave a Reply