Unfortunately, the TON http-api does not allow you to specify a block when using getAddressBalance.
I suppose one way you could go about it is reconstructing the balance over time. Get all of the transactions until the block you're looking at is surpased:
You can try this with the getTransactions endpoint, just make sure that archival is on. Not an elegant solution, and be sure to test it out instead of taking my word for it.