I'm using Blockchain.info's api:
I understand that it is impossible for a transaction to know which block it will be included in but maybe one could use the block height to match the tx to the block?
but maybe one could use the block height to match the tx to the block?
Indeed that would work fine,
block_height is returned by the /rawtx/ call (https://blockchain.info/rawtx/$tx_hash) for transactions that have been included in a block (unconfirmed transactions have no block_height key). Then you can find the block hash and/or information about the block with the /block-height/ call (https://blockchain.info/block-height/$block_height?format=json)