is there a way(mostly a api) to get all the tokens currently being held by a wallet address?(Their contract addresses)
There is no single API that will fetch all the tokens held by an address. This is because that data exists over different contracts.
To know the holding of a particular token by an address you have to query that contract. Similarly for all the other tokens. You can fetch one by one all the balances you are interested in.
Again, new token contracts are being added continuously. There is no list of 'all' the ERC20 tokens that have been deployed.