Hello Trungnnh -
Thanks for the complimentary words on our APIs!
What you would like to do is not a 'built-in' feature of the Developer API. For the developer API we have only one campaign logic, which does not dynamically create the message text - you have to pass in the message text exactly as you want it to be delivered.
So - if the message needs to change dynamically, you would need to use transaction.send once for each new message, rather than using list.send for a single message to all the recipients.
You could still use our list tools to build the list and manage opt in, you would just need to retrieve the list and iterate over it to do the send.
In other words, do :
1) list.download
2) iterate over the list, and for each number do:
3) transaction.send.
That's the solution!
Regards,
ATR

Anthony Rossano, Technologist