At this point I don't think HD is even using an api, I think it's somehow built into the system. Consider this auction from the moment ago:
Bidder 1 (Auto)
2/1/2020 9:52 PM $54
+$5
Your bid
2/1/2020 9:52 PM $49
+$7
Bidder 1 (Auto)
2/1/2020 9:52 PM $42
+$5
Bidder 2
2/1/2020 9:51 PM $37
+$5
Your bid
2/1/2020 9:51 PM $32
+$5
Bidder 2
2/1/2020 9:50 PM $27
+$5
Your bid
2/1/2020 9:50 PM $22
Bidder 2
2/1/2020 9:50 PM $22
+$5
Your bid (Auto)
2/1/2020 9:50 PM $17
+$5
Bidder 2
2/1/2020 9:48 PM $12
The auction was originally scheduled to end at 9:50 PM. One bidder made an offer at 9:48 and they are shown as Bidder 2(!). I made an offer at 9:50 and we were bidding for a while. Then, at 9:52(!), all of a sudden a "Bidder 1" jumps in! Which, of course, turns out to be "Bidder 913932" after the auction ends. Now, answer this, how did they do it "through an api"? The system had to have their offer "on hold" to be "released" when there is someone else already bidding. That's the only explanation (I can think of) why they are "Bidder 1".
So taken all that, here's what I currently believe. HD processes the list of GD expired auctions, assigns a value to each domain and then queue a proxy bid for this value (to be used in case of someone bidding on the auction) or snap the domain between the auction and the closure. So the bright side is, it doesn't matter if you bid on the auction or try to snap it at the closure - if they have the name queued, they will get it anyway (unless you're willing to outbid them). On the other hand, if they don't have the name queued, they won't bid on it anyway, so the only "bad" thing about bidding might be attracting other domainers to the auction, but for HD bot it's probably meaningless.
Attached are some screenshots as a proof for the above paste.