I can help you with any api, I've done a lot of api's for all kind of software communications.
For the sms you should have a number, the text and after send will have a state of
('outgoing', 'In Queue'),
('sent', 'Sent'),
('error', 'Error'),
('canceled', 'Canceled')
and will have a failure type of:
('sms_number_missing', 'Missing Number'),
('sms_number_format', 'Wrong Number Format'),
('sms_credit', 'Insufficient Credit'),
('sms_server', 'Server Error'),
('sms_acc', 'Unregistered Account'),
# if you have specified
('sms_blacklist', 'Blacklisted'),
('sms_duplicate', 'Duplicate'),
('sms_optout', 'Opted Out'),
the state and failure type are dependend on the sms provider that you are going to choose
for example for sending sms for a client we are using a zte modem (MF833) with the api provided by the usb modem.