- Text Messages
- Inbox & Folders
- Keywords
- Credits
- Contacts
- Groups
- Carrier Lookup
Sending SMS Messages |
Sends SMS text messages via the short code 25827 (212121 In Canada) to a single phone number or an array of phone numbers. |
Code Samples |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com/sending/messages') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'xml', 'User'=>'winnie', 'Password'=>'the-pooh', 'PhoneNumbers[0]'=>'2123456785', 'PhoneNumbers[1]'=>'2123456786', 'Subject'=>'From Winnie', 'Message'=>'I am a Bear of Very Little Brain, and long words bother me', 'StampToSend'=>'1305582245', 'MessageTypeID'=>1 }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" print 'Code: ' + ruObj['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Message ID: ' + ruObj['Entry']['ID'].to_s() + "\n" print 'Subject: ' + ruObj['Entry']['Subject'].to_s() + "\n" print 'Message: ' + ruObj['Entry']['Message'].to_s() + "\n" print 'Message Type ID: ' + ruObj['Entry']['MessageTypeID'].to_s() + "\n" print 'Total Recipients: ' + ruObj['Entry']['RecipientsCount'].to_s() + "\n" print 'Credits Charged: ' + ruObj['Entry']['Credits'].to_s() + "\n" print 'Time To Send: ' + ruObj['Entry']['StampToSend'].to_s() + "\n" if !ruObj['Entry']['PhoneNumbers'].nil? numbers = ruObj['Entry']['PhoneNumbers']['PhoneNumber'] print 'Phone Numbers: ' + (numbers.kind_of?(Array) ? numbers.join(', ') : numbers) + "\n" end if !ruObj['Entry']['LocalOptOuts'].nil? numbers = ruObj['Entry']['LocalOptOuts']['PhoneNumber'] print 'Locally Opted Out Numbers: '+ (numbers.kind_of?(Array) ? numbers.join(', ') : numbers) + "\n" end if !ruObj['Entry']['GlobalOptOuts'].nil? numbers = ruObj['Entry']['GlobalOptOuts']['PhoneNumber'] print 'Globally Opted Out Numbers: '+ (numbers.kind_of?(Array) ? numbers.join(', ') : numbers) + "\n" end else if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com/sending/messages') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'json', 'User'=>'winnie', 'Password'=>'the-pooh', 'PhoneNumbers[0]'=>'2123456785', 'PhoneNumbers[1]'=>'2123456786', 'Subject'=>'From Winnie', 'Message'=>'I am a Bear of Very Little Brain, and long words bother me', 'StampToSend'=>'1305582245', 'MessageTypeID'=>1 }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Message ID: ' + ruObj['Response']['Entry']['ID'].to_s() + "\n" print 'Subject: ' + ruObj['Response']['Entry']['Subject'].to_s() + "\n" print 'Message: ' + ruObj['Response']['Entry']['Message'].to_s() + "\n" print 'Message Type ID: ' + ruObj['Response']['Entry']['MessageTypeID'].to_s() + "\n" print 'Total Recipients: ' + ruObj['Response']['Entry']['RecipientsCount'].to_s() + "\n" print 'Credits Charged: ' + ruObj['Response']['Entry']['Credits'].to_s() + "\n" print 'Time To Send: ' + ruObj['Response']['Entry']['StampToSend'].to_s() + "\n" if !ruObj['Response']['Entry']['PhoneNumbers'].nil? print 'Phone Numbers: ' + ruObj['Response']['Entry']['PhoneNumbers'].join(', ') + "\n" end if !ruObj['Response']['Entry']['LocalOptOuts'].nil? print 'Locally Opted Out Numbers: ' + ruObj['Response']['Entry']['LocalOptOuts'].join(', ') + "\n" end if !ruObj['Response']['Entry']['GlobalOptOuts'].nil? print 'Globally Opted Out Numbers: ' + ruObj['Response']['Entry']['GlobalOptOuts'].join(', ') + "\n" end else if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end } } |
Inbox & Folders |
When working with the Inbox and Folder you can perform nine actions: Post (Add New Folder), Put (Update A Folder/Move A Message Between Folders), Delete (Delete A Message/Folder), Get (Get Inbox Message/Folder By ID), Index (Get All Messages/All Folders). The code samples below use the shared library: |
Code Samples - Inbox Messages |
Ruby - XMLrequire 'SmsTextingAPI.rb' require 'pp' sms = SmsTextingAPI.new "demouser", "password", :xml puts 'XML encoding.' puts 'Get messages' params = { 'sortBy' => 'Message', } messages = sms.get_all('incoming-messages', params) pp messages message_id = messages[0]['ID'] message_id2 = messages[1]['ID'] puts 'Move messages to folder' sms.move_message_to_folder([message_id, message_id2], 77) puts 'Get message' pp message = sms.get(message_id2, 'incoming-messages') puts 'Delete message' sms.del(message_id, 'incoming-messages') puts 'Second delete. try to get error' begin sms.del(message_id, 'incoming-messages') rescue SmsTextingAPIError, NameError => e puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e end |
Ruby - JSONrequire 'SmsTextingAPI.rb' require 'pp' sms = SmsTextingAPI.new "demouser", "password", :json puts 'JSON encoding.' puts 'Get messages' messages = sms.get_all('incoming-messages', params) pp messages message_id = messages[0]['ID'] puts 'Move message to folder' sms.move_message_to_folder(message_id, 93) puts 'Get message' pp message = sms.get(message_id, 'incoming-messages') puts 'Delete message' sms.del(message_id, 'incoming-messages') puts 'Second delete. try to get error' begin sms.del(message_id, 'incoming-messages') rescue SmsTextingAPIError, NameError => e puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e end |
Code Samples - Inbox Folders |
Ruby - XMLrequire 'SmsTextingAPI.rb' require 'pp' sms = SmsTextingAPI.new "demouser", "password", :xml puts 'XML encoding.' puts 'Get folders' pp sms.get_all('messages-folders') folder = { 'Name' => 'Customer', } puts 'Create folder' pp folder = sms.put(folder, 'messages-folders') folder_id = folder['ID'] puts 'Get folder' pp folder = sms.get(folder_id, 'messages-folders') puts 'Update folder' folder['Name'] = 'test' folder['ID'] = folder_id sms.put(folder, 'messages-folders') puts 'Delete folder' sms.del(folder_id, 'messages-folders') puts 'Second delete. try to get error' begin sms.del(folder_id, 'messages-folders') rescue SmsTextingAPIError, NameError => e puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e end |
Ruby - JSONrequire 'SmsTextingAPI.rb' require 'pp' sms = SmsTextingAPI.new "demouser", "password", :json puts 'JSON encoding.' puts 'Get folders' pp sms.get_all('messages-folders') folder = { 'Name' => 'Customer', } puts 'Create folder' pp folder = sms.put(folder, 'messages-folders') folder_id = folder['ID'] puts 'Get folder' pp folder = sms.get(folder_id, 'messages-folders') puts 'Update folder' folder['Name'] = 'test' folder['ID'] = folder_id sms.put(folder, 'messages-folders') puts 'Delete folder' sms.del(folder_id, 'messages-folders') puts 'Second delete. try to get error' begin sms.del(folder_id, 'messages-folders') rescue SmsTextingAPIError, NameError => e puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e end |
Check Keyword Availability |
Check whether a Keyword is available to rent on Club Texting's short code. Please note, we will check availability for the country your account is set to. |
Code Samples |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com') #prepare post data req = Net::HTTP::Get.new('/keywords/new?format=xml&Keyword=honey&User=winnie&Password=the-pooh') http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" print 'Code: ' + ruObj['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Keyword: ' + ruObj['Entry']['Keyword'].to_s() + "\n" print 'Availability: ' + ruObj['Entry']['Available'].to_s() + "\n" else if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com') req = Net::HTTP::Get.new('/keywords/new?format=json&Keyword=honey&User=winnie&Password=the-pooh') http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Keyword: ' + ruObj['Response']['Entry']['Keyword'].to_s() + "\n" print 'Availability: ' + ruObj['Response']['Entry']['Available'].to_s() + "\n" else if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end } } |
Code Samples - Stored Card |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com/keywords') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'xml', 'User'=>'demo', 'Password'=>'texting121212', 'Keyword' => 'honey', 'StoredCreditCard' => '1111' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" print 'Code: ' + ruObj['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Keyword ID: ' + ruObj['Entry']['ID'].to_s() + "\n" print 'Keyword: ' + ruObj['Entry']['Keyword'].to_s() + "\n" print 'Is double opt-in enabled: ' + ruObj['Entry']['EnableDoubleOptIn'].to_s() + "\n" print 'Confirm message: ' + ruObj['Entry']['ConfirmMessage'].to_s() + "\n" print 'Join message: ' + ruObj['Entry']['JoinMessage'].to_s() + "\n" print 'Forward email: ' + ruObj['Entry']['ForwardEmail'].to_s() + "\n" print 'Forward url: ' + ruObj['Entry']['ForwardUrl'].to_s() + "\n" if !ruObj['Entry']['ContactGroupIDs'].nil? groups = ruObj['Entry']['ContactGroupIDs']['Group'] print 'Groups: '+ (groups.kind_of?(Array) ? groups.join(', ') : groups) + "\n" end else if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com/keywords') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'json', 'User'=>'demo', 'Password'=>'texting121212', 'Keyword' => 'honey', 'StoredCreditCard' => '1111' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Keyword ID: ' + ruObj['Response']['Entry']['ID'].to_s() + "\n" print 'Keyword: ' + ruObj['Response']['Entry']['Keyword'].to_s() + "\n" print 'Is double opt-in enabled: ' + ruObj['Response']['Entry']['EnableDoubleOptIn'].to_s() + "\n" print 'Confirm message: ' + ruObj['Response']['Entry']['ConfirmMessage'].to_s() + "\n" print 'Join message: ' + ruObj['Response']['Entry']['JoinMessage'].to_s() + "\n" print 'Forward email: ' + ruObj['Response']['Entry']['ForwardEmail'].to_s() + "\n" print 'Forward url: ' + ruObj['Response']['Entry']['ForwardUrl'].to_s() + "\n" print 'Groups: ' + ruObj['Response']['Entry']['ContactGroupIDs'].join(', ') + "\n" else if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end } } |
Code Samples - Non-Stored Card |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com/keywords') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'xml', 'User'=>'winnie', 'Password'=>'the-pooh', 'Keyword' => 'honey', 'FirstName' => 'Winnie', 'LastName' => 'The Pooh', 'Street' => 'Hollow tree, under the name of Mr. Sanders', 'City' => 'Hundred Acre Woods', 'State' => 'New York', 'Zip' => '12345', 'Country' => 'US', 'CreditCardTypeID' => 'Visa', 'Number' => '4111111111111111', 'SecurityCode' => '123', 'ExpirationMonth' => '10', 'ExpirationYear' => '2017' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" print 'Code: ' + ruObj['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Keyword ID: ' + ruObj['Entry']['ID'].to_s() + "\n" print 'Keyword: ' + ruObj['Entry']['Keyword'].to_s() + "\n" print 'Is double opt-in enabled: ' + ruObj['Entry']['EnableDoubleOptIn'].to_s() + "\n" print 'Confirm message: ' + ruObj['Entry']['ConfirmMessage'].to_s() + "\n" print 'Join message: ' + ruObj['Entry']['JoinMessage'].to_s() + "\n" print 'Forward email: ' + ruObj['Entry']['ForwardEmail'].to_s() + "\n" print 'Forward url: ' + ruObj['Entry']['ForwardUrl'].to_s() + "\n" if !ruObj['Entry']['ContactGroupIDs'].nil? groups = ruObj['Entry']['ContactGroupIDs']['Group'] print 'Groups: '+ (groups.kind_of?(Array) ? groups.join(', ') : groups) + "\n" end else if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com/keywords') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'json', 'User'=>'winnie', 'Password'=>'the-pooh', 'Keyword' => 'honey', 'FirstName' => 'Winnie', 'LastName' => 'The Pooh', 'Street' => 'Hollow tree, under the name of Mr. Sanders', 'City' => 'Hundred Acre Woods', 'State' => 'New York', 'Zip' => '12345', 'Country' => 'US', 'CreditCardTypeID' => 'Visa', 'Number' => '4111111111111111', 'SecurityCode' => '123', 'ExpirationMonth' => '10', 'ExpirationYear' => '2017' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Keyword ID: ' + ruObj['Response']['Entry']['ID'].to_s() + "\n" print 'Keyword: ' + ruObj['Response']['Entry']['Keyword'].to_s() + "\n" print 'Is double opt-in enabled: ' + ruObj['Response']['Entry']['EnableDoubleOptIn'].to_s() + "\n" print 'Confirm message: ' + ruObj['Response']['Entry']['ConfirmMessage'].to_s() + "\n" print 'Join message: ' + ruObj['Response']['Entry']['JoinMessage'].to_s() + "\n" print 'Forward email: ' + ruObj['Response']['Entry']['ForwardEmail'].to_s() + "\n" print 'Forward url: ' + ruObj['Response']['Entry']['ForwardUrl'].to_s() + "\n" print 'Groups: ' + ruObj['Response']['Entry']['ContactGroupIDs'].join(', ') + "\n" else if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end } } |
Setup A Keyword |
Configures an active Keyword for use on Club Texting's short code in the country your account is set to send messages to. |
Code Samples |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com/keywords/honey') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'xml', 'User'=>'winnie', 'Password'=>'the-pooh', 'EnableDoubleOptIn' => 1, 'ConfirmMessage' => 'Reply Y to join our sweetest list', 'JoinMessage' => 'The only reason for being a bee that I know of, is to make honey. And the only reason for making honey, is so as I can eat it.', 'ForwardEmail' => '[email protected]', 'ForwardUrl' => 'http://bear-alliance.co.uk/honey-donations/', 'ContactGroupIDs[0]' => 'honey', 'ContactGroupIDs[1]' => 'lovers' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" print 'Code: ' + ruObj['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Keyword ID: ' + ruObj['Entry']['ID'].to_s() + "\n" print 'Keyword: ' + ruObj['Entry']['Keyword'].to_s() + "\n" print 'Is double opt-in enabled: ' + ruObj['Entry']['EnableDoubleOptIn'].to_s() + "\n" print 'Confirm message: ' + ruObj['Entry']['ConfirmMessage'].to_s() + "\n" print 'Join message: ' + ruObj['Entry']['JoinMessage'].to_s() + "\n" print 'Forward email: ' + ruObj['Entry']['ForwardEmail'].to_s() + "\n" print 'Forward url: ' + ruObj['Entry']['ForwardUrl'].to_s() + "\n" if !ruObj['Entry']['ContactGroupIDs'].nil? groups = ruObj['Entry']['ContactGroupIDs']['Group'] print 'Groups: '+ (groups.kind_of?(Array) ? groups.join(', ') : groups) + "\n" end else if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com/keywords/honey') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'json', 'User'=>'winnie', 'Password'=>'the-pooh', 'EnableDoubleOptIn' => 1, 'ConfirmMessage' => 'Reply Y to join our sweetest list', 'JoinMessage' => 'The only reason for being a bee that I know of, is to make honey. And the only reason for making honey, is so as I can eat it.', 'ForwardEmail' => '[email protected]', 'ForwardUrl' => 'http://bear-alliance.co.uk/honey-donations/', 'ContactGroupIDs[0]' => 'honey', 'ContactGroupIDs[1]' => 'lovers' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Keyword ID: ' + ruObj['Response']['Entry']['ID'].to_s() + "\n" print 'Keyword: ' + ruObj['Response']['Entry']['Keyword'].to_s() + "\n" print 'Is double opt-in enabled: ' + ruObj['Response']['Entry']['EnableDoubleOptIn'].to_s() + "\n" print 'Confirm message: ' + ruObj['Response']['Entry']['ConfirmMessage'].to_s() + "\n" print 'Join message: ' + ruObj['Response']['Entry']['JoinMessage'].to_s() + "\n" print 'Forward email: ' + ruObj['Response']['Entry']['ForwardEmail'].to_s() + "\n" print 'Forward url: ' + ruObj['Response']['Entry']['ForwardUrl'].to_s() + "\n" print 'Groups: ' + ruObj['Response']['Entry']['ContactGroupIDs'].join(', ') + "\n" else if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end } } |
Cancel A Keyword |
Cancels an active Keyword on Club Texting's short code in the country your account is set to send messages to. |
Code Samples |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com/keywords/honey') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'xml', '_method'=>'DELETE', 'User'=>'winnie', 'Password'=>'the-pooh', }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| case res when Net::HTTPSuccess print "Success!" else print res.body+"\n===================================\n" ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com/keywords/honey') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'json', '_method'=>'DELETE', 'User'=>'winnie', 'Password'=>'the-pooh', }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| case res when Net::HTTPSuccess print "Success!" else print res.body+"\n===================================\n" ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end } } |
Check Credit Balance |
Checks credit balances on your account. |
Code Samples |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com') #prepare post data req = Net::HTTP::Get.new('/billing/credits/get?format=xml&User=winnie&Password=the-pooh') http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" print 'Code: ' + ruObj['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Plan credits: ' + ruObj['Entry']['PlanCredits'].to_s() + "\n" print 'Anytime credits: ' + ruObj['Entry']['AnytimeCredits'].to_s() + "\n" print 'Total: ' + ruObj['Entry']['TotalCredits'].to_s() + "\n" else if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com') #prepare post data req = Net::HTTP::Get.new('/billing/credits/get?format=json&User=winnie&Password=the-pooh') http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Plan credits: ' + ruObj['Response']['Entry']['PlanCredits'].to_s() + "\n" print 'Anytime credits: ' + ruObj['Response']['Entry']['AnytimeCredits'].to_s() + "\n" print 'Total: ' + ruObj['Response']['Entry']['TotalCredits'].to_s() + "\n" else if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end } } |
Buy Credits |
Buys more credits for your account. You may purchase credits using a credit card you have stored in your Club Texting account, or you may pass credit card details when you call the API. |
Code Samples - Stored Card |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com/billing/credits') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'xml', 'User'=>'demo', 'Password'=>'texting121212', 'NumberOfCredits' => '1000', 'CouponCode' => 'honey2011', 'StoredCreditCard' => '1111' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" if res.body.length > 0 ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" print 'Code: ' + ruObj['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Credits purchased: ' + ruObj['Entry']['BoughtCredits'].to_s() + "\n" print 'Amount charged: ' + ruObj['Entry']['Amount'].to_s() + "\n" print 'Discount: ' + ruObj['Entry']['Discount'].to_s() + "\n" print 'Plan credits: ' + ruObj['Entry']['PlanCredits'].to_s() + "\n" print 'Anytime credits: ' + ruObj['Entry']['AnytimeCredits'].to_s() + "\n" print 'Total: ' + ruObj['Entry']['TotalCredits'].to_s() + "\n" else if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com/billing/credits') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'json', 'User'=>'demo', 'Password'=>'texting121212', 'NumberOfCredits' => '1000', 'CouponCode' => 'honey2011', 'StoredCreditCard' => '1111' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" if res.body.length > 0 ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Credits purchased: ' + ruObj['Response']['Entry']['BoughtCredits'].to_s() + "\n" print 'Amount charged: ' + ruObj['Response']['Entry']['Amount'].to_s() + "\n" print 'Discount: ' + ruObj['Response']['Entry']['Discount'].to_s() + "\n" print 'Plan credits: ' + ruObj['Response']['Entry']['PlanCredits'].to_s() + "\n" print 'Anytime credits: ' + ruObj['Response']['Entry']['AnytimeCredits'].to_s() + "\n" print 'Total: ' + ruObj['Response']['Entry']['TotalCredits'].to_s() + "\n" else if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end end } } |
Code Samples - Non-Stored Card |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com/billing/credits') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'xml', 'User'=>'winnie', 'Password'=>'the-pooh', 'NumberOfCredits' => '1000', 'CouponCode' => 'honey2011', 'FirstName' => 'Winnie', 'LastName' => 'The Pooh', 'Street' => 'Hollow tree, under the name of Mr. Sanders', 'City' => 'Hundred Acre Woods', 'State' => 'New York', 'Zip' => '12345', 'Country' => 'US', 'CreditCardTypeID' => 'Visa', 'Number' => '4111111111111111', 'SecurityCode' => '123', 'ExpirationMonth' => '10', 'ExpirationYear' => '2017' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" if res.body.length > 0 ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" print 'Code: ' + ruObj['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Credits purchased: ' + ruObj['Entry']['BoughtCredits'].to_s() + "\n" print 'Amount charged: ' + ruObj['Entry']['Amount'].to_s() + "\n" print 'Discount: ' + ruObj['Entry']['Discount'].to_s() + "\n" print 'Plan credits: ' + ruObj['Entry']['PlanCredits'].to_s() + "\n" print 'Anytime credits: ' + ruObj['Entry']['AnytimeCredits'].to_s() + "\n" print 'Total: ' + ruObj['Entry']['TotalCredits'].to_s() + "\n" else if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com/billing/credits') #prepare post data req = Net::HTTP::Post.new(url.path) req.set_form_data({ 'format'=>'json', 'User'=>'winnie', 'Password'=>'the-pooh', 'NumberOfCredits' => '1000', 'CouponCode' => 'honey2011', 'FirstName' => 'Winnie', 'LastName' => 'The Pooh', 'Street' => 'Hollow tree, under the name of Mr. Sanders', 'City' => 'Hundred Acre Woods', 'State' => 'New York', 'Zip' => '12345', 'Country' => 'US', 'CreditCardTypeID' => 'Visa', 'Number' => '4111111111111111', 'SecurityCode' => '123', 'ExpirationMonth' => '10', 'ExpirationYear' => '2017' }) http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" if res.body.length > 0 ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Credits purchased: ' + ruObj['Response']['Entry']['BoughtCredits'].to_s() + "\n" print 'Amount charged: ' + ruObj['Response']['Entry']['Amount'].to_s() + "\n" print 'Discount: ' + ruObj['Response']['Entry']['Discount'].to_s() + "\n" print 'Plan credits: ' + ruObj['Response']['Entry']['PlanCredits'].to_s() + "\n" print 'Anytime credits: ' + ruObj['Response']['Entry']['AnytimeCredits'].to_s() + "\n" print 'Total: ' + ruObj['Response']['Entry']['TotalCredits'].to_s() + "\n" else if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end end } } |
Carrier Lookup |
Returns the wireless carrier of a valid mobile phone number (US & Canada) |
Code Samples |
Ruby - XMLrequire 'net/https' require 'uri' require 'xmlsimple' url = URI.parse('https://app.clubtexting.com') #prepare post data req = Net::HTTP::Get.new('/sending/phone-numbers/2123456786?format=xml&User=winnielkup&Password=winnielkup') http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = XmlSimple.xml_in(res.body, {'ForceArray' => false }) print 'Status: ' + ruObj['Status'].to_s() + "\n" print 'Code: ' + ruObj['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Phone number: ' + ruObj['Entry']['PhoneNumber'].to_s() + "\n" print 'CarrierName: ' + ruObj['Entry']['CarrierName'].to_s() + "\n" else if !ruObj['Errors'].nil? errors = ruObj['Errors']['Error'] print 'Errors: '+ (errors.kind_of?(Array) ? errors.join(', ') : errors) + "\n" end end } } |
Ruby - JSONrequire 'net/https' require 'uri' require 'json' url = URI.parse('https://app.clubtexting.com') #prepare post data req = Net::HTTP::Get.new('/sending/phone-numbers/7874298287?format=json&User=winnielkup&Password=winnielkup') http = Net::HTTP.new(url.host, url.port) http.use_ssl = true if url.scheme == "https" # enable SSL/TLS http.ca_file = "cacert.pem" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.start { http.request(req) {|res| print res.body+"\n===================================\n" ruObj = JSON.parse(res.body) print 'Status: ' + ruObj['Response']['Status'].to_s() + "\n" print 'Code: ' + ruObj['Response']['Code'].to_s() + "\n" case res when Net::HTTPSuccess print 'Phone number: ' + ruObj['Response']['Entry']['PhoneNumber'].to_s() + "\n" print 'CarrierName: ' + ruObj['Response']['Entry']['CarrierName'].to_s() + "\n" else if !ruObj['Response']['Errors'].nil? print 'Errors: ' + ruObj['Response']['Errors'].join(', ') + "\n" end end } } |
Contacts |
When working with Contacts you can perform five actions: Post (Add New Contact), Put (Update/Edit A Contact), Delete (Delete A Contact), Get (Get Contact By ID), Index (Get All Contacts). The code samples below use the shared library: |
Code Samples |
Ruby - XMLrequire 'SmsTextingAPI.rb' require 'pp' sms = SmsTextingAPI.new "demouser", "password", :xml puts 'XML encoding.' puts 'Get contacts' params = { 'source' => 'upload', 'optout' => 'false', 'group' => 'Honey Lovers', 'sortBy' => 'PhoneNumber', 'sortDir' => 'asc', 'itemsPerPage' => '10', 'page' => '3' } pp sms.get_all(:contacts, params) contact = { 'PhoneNumber' => '2123456985', 'FirstName' => 'Piglet', 'LastName' => 'P.', 'Email' => '[email protected]', 'Note' => 'It is hard to be brave, when you are only a Very Small Animal.', 'Groups' => ['Friends', 'Neighbors'] } puts 'Create contact' pp contact = sms.put(contact, :contacts) puts 'Get contact' pp contact = sms.get(contact['ID'], :contacts) puts 'Update contact' contact['LastName'] = 'test' pp contact = sms.put(contact, :contacts) puts 'Delete contact' sms.del(contact['ID'], :contacts) puts 'Second delete. try to get error' begin sms.del(contact['ID'], :contacts) rescue SmsTextingAPIError, NameError => e puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e end |
Ruby - JSONrequire 'SmsTextingAPI.rb' require 'pp' sms = SmsTextingAPI.new "demouser", "password", :json puts 'JSON encoding.' puts 'Get contacts' pp sms.get_all(:contacts, params) contact = { 'PhoneNumber' => '2123456985', 'FirstName' => 'Piglet', 'LastName' => 'P.', 'Email' => '[email protected]', 'Note' => 'It is hard to be brave, when you are only a Very Small Animal.', 'Groups' => ['Friends', 'Neighbors'] } puts 'Create contact' pp contact = sms.put(contact, :contacts) puts 'Get contact' pp contact = sms.get(contact['ID'], :contacts) puts 'Update contact' contact['LastName'] = 'test' pp contact = sms.put(contact, :contacts) puts 'Delete contact' sms.del(contact['ID'], :contacts) puts 'Second delete. try to get error' begin sms.del(contact['ID'], :contacts) rescue SmsTextingAPIError, NameError => e puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e end |
Groups |
When working with Groups you can perform five actions: Post (Add New Group), Put (Update/Edit A Group), Delete (Delete A Group), Get (Get Group By ID), Index (Get All Groups). The code samples below use the shared library: |
Code Samples |
Ruby - XMLrequire 'SmsTextingAPI.rb' require 'pp' sms = SmsTextingAPI.new "demouser", "password", :xml puts 'XML encoding.' puts 'Get contacts' params = { 'source' => 'upload', 'optout' => 'false', 'group' => 'Honey Lovers', 'sortBy' => 'PhoneNumber', 'sortDir' => 'asc', 'itemsPerPage' => '10', 'page' => '3' } pp sms.get_all(:contacts, params) contact = { 'PhoneNumber' => '2123456985', 'FirstName' => 'Piglet', 'LastName' => 'P.', 'Email' => '[email protected]', 'Note' => 'It is hard to be brave, when you are only a Very Small Animal.', 'Groups' => ['Friends', 'Neighbors'] } puts 'Create contact' pp contact = sms.put(contact, :contacts) puts 'Get contact' pp contact = sms.get(contact['ID'], :contacts) puts 'Update contact' contact['LastName'] = 'test' pp contact = sms.put(contact, :contacts) puts 'Delete contact' sms.del(contact['ID'], :contacts) puts 'Second delete. try to get error' begin sms.del(contact['ID'], :contacts) rescue SmsTextingAPIError, NameError => e puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e end |
Ruby - JSONrequire 'SmsTextingAPI.rb' require 'pp' sms = SmsTextingAPI.new "demouser", "password", :json puts 'JSON encoding.' puts 'Get contacts' pp sms.get_all(:contacts, params) contact = { 'PhoneNumber' => '2123456985', 'FirstName' => 'Piglet', 'LastName' => 'P.', 'Email' => '[email protected]', 'Note' => 'It is hard to be brave, when you are only a Very Small Animal.', 'Groups' => ['Friends', 'Neighbors'] } puts 'Create contact' pp contact = sms.put(contact, :contacts) puts 'Get contact' pp contact = sms.get(contact['ID'], :contacts) puts 'Update contact' contact['LastName'] = 'test' pp contact = sms.put(contact, :contacts) puts 'Delete contact' sms.del(contact['ID'], :contacts) puts 'Second delete. try to get error' begin sms.del(contact['ID'], :contacts) rescue SmsTextingAPIError, NameError => e puts 'Get SmsTextingAPIError code:' + e.code.to_s + ', ' + e end |