Definitely thought of opening here, but been doing that a lot recently and didn't want to play a large pot so limped in too. Players behind me were very passive so wasn't expecting a raise. Thought I could see a flop cheaply in position which is what happened.

Button folds, SB checks, BB checks. 5-handed to flop.

Flop (pot: 10)

SB leads for 4.

He's been bluffing a lot in our session and mucking his hands. Have seen him bet with anything (weak pairs, top pair, absolute air) so I definitely think I'm ahead of his range here. Folds to me and I call to close the action.

Turn (pot: 18)
SB checks
I bet 16, expecting to get called by a hand with a decent , Tx, 8x, maybe some draws like 67 or 66-77. Also some stronger hands like T8, T5, sets and flopped flushes.
SB calls.

River (pot: 50)
SB checks again.
I check behind.

I think flop and turn are fairly straightforward, I'm just not sure if I missed value on the river here. Main reason being that I think he would only call with a flush. Thoughts?

What were the stacks of the other players? JTo is most likely a questionable preflop choosing, especially as a limp.

This spot sounds super thin as a value bet. This player is described as bluff heavy, but we don't know if they are also a pay off wizard. Also, once they check call the turn, most of their range should now be able to beat your holding on this river, in which case, you're no longer value betting---you're bluffing. So, I think you need to flip this question around and ask whether you can get a better hand to fold rather than extract additional value.

Turn (pot: 18)
SB checks
I bet 16, expecting to get called by a hand with a decent , Tx, 8x, maybe some draws like 67 or 66-77. Also some stronger hands like T8, T5, sets and flopped flushes.
SB calls.

It's good you assigned a range to Villain on turn.
Now, how does Villain's range with river ? How does your equity look like?

Break it down: how likely is each of the three? And how much of a positive or negative EV is each of the three?

It's hard for me to see how you'll get enough value from hands that call you that you beat or that fold that beat you to justify the hands that call that you lose to or that raise you.

This is central. You should always ask yourself: "Why do I bet?"
-> If you bet to get called ("value betting") : how many and which worst holdings are going to call you ? Is it +EV (as you have to take in account the best hands which are also going to call) ?
-> If you bet to find a fold ("bluffing"): how many and which better holdings are going to fold? Do you reach the needed fold equity to be +EV ?

Play with assigned Villain's range on turn and river, and look how your expected value looks like in different scenarii.

Raising OTF could work, as it will extract value from any sticky flush draws. But you have to make sure the V is the player type who will not reraise you without a big hand, and you are willing to fold to any aggression on hearts run outs.