Ruby
Ruby 3.0+ client. Resource methods accept keyword arguments and return hashes that mirror the JSON API.
Install
gem install sevk
Or drop it into your Gemfile: gem "sevk" and run bundle install.
Initialize
Pass your API key to Sevk::Client.new.
require 'sevk'sevk = Sevk::Client.new(api_key: 'sevk_full_xxxxxxxx')
Send Email
HTML body
require 'sevk'sevk = Sevk::Client.new(api_key: 'sevk_full_xxxxxxxx')result = sevk.emails.send(subject: 'Welcome',html: '<h1>Welcome</h1><p>Thanks for signing up.</p>',)puts result['id']
With attachments
sevk.emails.send(subject: 'Your invoice',html: '<p>Invoice attached.</p>',attachments: [{filename: 'invoice.pdf',content: base64_pdf,contentType: 'application/pdf'}])
Send Bulk
result = sevk.emails.send_bulk([{ from: 'sevk <[email protected]>', to: '[email protected]', subject: 'Welcome', html: '<p>Hi 1</p>' },{ from: 'sevk <[email protected]>', to: '[email protected]', subject: 'Welcome', html: '<p>Hi 2</p>' }])puts "ok=#{result['success']} failed=#{result['failed']}"
Contacts
contact = sevk.contacts.create(subscribed: true,data: { firstName: 'John', plan: 'pro' })sevk.contacts.get(contact['id'])sevk.contacts.update(contact['id'], data: { plan: 'enterprise' })page = sevk.contacts.list(limit: 50)page['items'].each { |c| puts c['email'] }sevk.contacts.delete(contact['id'])
Audiences
audience = sevk.audiences.create(name: 'Newsletter')sevk.audiences.add_contacts(audience['id'], ['b2c3d4e5-f678-4901-abcd-ef1234567890','b2c3d4e5-f678-4901-abcd-ef1234567891'])sevk.audiences.list_contacts(audience['id'])['items'].each do |c|puts c['email']end
Error Handling
require 'sevk'sevk = Sevk::Client.new(api_key: 'sevk_full_xxxxxxxx')beginsevk.emails.send(to: 'not-an-email',subject: 'Test',text: 'Hi')rescue Sevk::ValidationError => eputs "validation: #{e.message}"rescue Sevk::UnauthorizedErrorputs 'bad api key'rescue Sevk::RateLimitError => eputs "rate limited: #{e.message}"rescue Sevk::Error => eputs "#{e.status_code} #{e.message}"end