Skip to content

Latest commit

Β 

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Elastic Email

Elastic Email Ruby SDK

The official Ruby client library for the Elastic Email REST API v4.

RubyGems RubyGems downloads Ruby API OpenAPI Generator License: MIT

Latest release Last commit Open issues GitHub stars

Installation β€’ Quick start β€’ Examples β€’ API reference β€’ Models β€’ Contributing


Features

  • Transactional and bulk email. Send single messages, bulk campaigns or CSV merge-file sends.
  • Contacts, lists and segments. Add, update, import, export and bulk-delete contacts.
  • Campaigns and automations. Create, update, pause and trigger automations for a contact.
  • Templates, files and attachments. Manage templates and uploaded files.
  • Domains. Verify sending domains and check SPF, DKIM, tracking and certificate status.
  • Webhooks and inbound routes. Receive delivery events and route incoming mail.
  • Statistics, events and suppressions. Track delivery, bounces, complaints and unsubscribes.
  • Subaccounts and security. Manage subaccounts and API keys.
  • Plain Ruby objects. Models are built from keyword hashes with snake_case keys, and every call has a …_with_http_info variant that also returns the status code and headers.

Requirements

Dependency Version
Ruby 2.7 or later
Typhoeus ~> 1.0 (installed automatically)

You'll also need an Elastic Email API key. You can create one in your API settings. Each endpoint's documentation lists the access level it needs.

Installation

Install the ElasticEmail gem from RubyGems:

gem install ElasticEmail

Or add it to your Gemfile:

gem 'ElasticEmail', '~> 4.2'

and run bundle install. RubyGems installs the dependency (Typhoeus) for you.

Quick start

Important

Elastic Email only sends from verified domains. Before your first send, verify your sending domain and use an address on that domain as the sender.

Configure the client

require 'ElasticEmail'

ElasticEmail.configure do |config|
  config.api_key['X-ElasticEmail-ApiKey'] = ENV.fetch('ELASTICEMAIL_API_KEY')
end

Tip

Keep your API key out of source code. Load it from an environment variable, Rails credentials or a secrets manager.

Send a transactional email

emails = ElasticEmail::EmailsApi.new

message = ElasticEmail::EmailTransactionalMessageData.new(
  recipients: ElasticEmail::TransactionalRecipient.new(to: ['john.doe@example.com']),
  content: ElasticEmail::EmailContent.new(
    from: 'My App <no-reply@yourdomain.com>',
    subject: 'Welcome aboard!',
    body: [
      ElasticEmail::BodyPart.new(content_type: ElasticEmail::BodyContentType::HTML, content: '<h1>Hello!</h1><p>Thanks for signing up.</p>'),
      ElasticEmail::BodyPart.new(content_type: ElasticEmail::BodyContentType::PLAIN_TEXT, content: 'Hello! Thanks for signing up.')
    ]
  )
)

begin
  result = emails.emails_transactional_post(message)
  puts "Sent. TransactionID: #{result.transaction_id}, MessageID: #{result.message_id}"
rescue ElasticEmail::ApiError => e
  puts "Elastic Email API error #{e.code}: #{e.response_body}"
end

The from address must use a domain you've verified in your Elastic Email account.

Send from a template with merge fields

message = ElasticEmail::EmailTransactionalMessageData.new(
  recipients: ElasticEmail::TransactionalRecipient.new(to: ['john.doe@example.com']),
  content: ElasticEmail::EmailContent.new(
    from: 'My App <no-reply@yourdomain.com>',
    template_name: 'welcome-template',
    merge: { 'firstname' => 'John' }
  )
)

emails.emails_transactional_post(message)

Timeouts, debugging and SSL

ElasticEmail.configure do |config|
  config.timeout = 30          # seconds; 0 (default) means no timeout
  config.debugging = true      # log requests and responses to config.logger
  config.ssl_ca_cert = '/path/to/ca-bundle.crt'
end

More examples

More complete, runnable samples are in the Elastic Email examples repository. It covers transactional email, SMTP, webhooks, inbound email, contacts and serverless platforms across 20+ languages and frameworks.

Authentication

Scheme Header Used for
apikey X-ElasticEmail-ApiKey All standard API calls
ApiKeyAuthCustomBranding X-Auth-Token Custom-branding (white-label) accounts

API limits

  • Up to 20 concurrent connections per account
  • A hard timeout of 600 seconds per request

API reference

All URIs are relative to https://api.elasticemail.com/v4. The SDK covers 114 endpoints across 16 API classes: CampaignsApi, ContactsApi, DomainsApi, EmailsApi, EventsApi, FilesApi, InboundRouteApi, ListsApi, SecurityApi, SegmentsApi, StatisticsApi, SubAccountsApi, SuppressionsApi, TemplatesApi, VerificationsApi and WebhookApi, all in the ElasticEmail module.

Show all endpoints
Class Method HTTP request Description
ElasticEmail::CampaignsApi campaigns_automation_by_name_trigger_post POST /campaigns/automation/{name}/trigger Trigger Automation for Contact
ElasticEmail::CampaignsApi campaigns_by_name_delete DELETE /campaigns/{name} Delete Campaign
ElasticEmail::CampaignsApi campaigns_by_name_get GET /campaigns/{name} Load Campaign
ElasticEmail::CampaignsApi campaigns_by_name_pause_put PUT /campaigns/{name}/pause Pause Campaign
ElasticEmail::CampaignsApi campaigns_by_name_put PUT /campaigns/{name} Update Campaign
ElasticEmail::CampaignsApi campaigns_get GET /campaigns Load Campaigns
ElasticEmail::CampaignsApi campaigns_post POST /campaigns Add Campaign
ElasticEmail::ContactsApi contacts_by_email_delete DELETE /contacts/{email} Delete Contact
ElasticEmail::ContactsApi contacts_by_email_get GET /contacts/{email} Load Contact
ElasticEmail::ContactsApi contacts_by_email_put PUT /contacts/{email} Update Contact
ElasticEmail::ContactsApi contacts_delete_post POST /contacts/delete Delete Contacts Bulk
ElasticEmail::ContactsApi contacts_export_by_id_status_get GET /contacts/export/{id}/status Check Export Status
ElasticEmail::ContactsApi contacts_export_post POST /contacts/export Export Contacts
ElasticEmail::ContactsApi contacts_get GET /contacts Load Contacts
ElasticEmail::ContactsApi contacts_import_post POST /contacts/import Upload Contacts
ElasticEmail::ContactsApi contacts_post POST /contacts Add Contact
ElasticEmail::DomainsApi domains_by_domain_delete DELETE /domains/{domain} Delete Domain
ElasticEmail::DomainsApi domains_by_domain_get GET /domains/{domain} Load Domain
ElasticEmail::DomainsApi domains_by_domain_put PUT /domains/{domain} Update Domain
ElasticEmail::DomainsApi domains_by_domain_restricted_get GET /domains/{domain}/restricted Check for domain restriction
ElasticEmail::DomainsApi domains_by_domain_verification_put PUT /domains/{domain}/verification Verify Domain
ElasticEmail::DomainsApi domains_by_email_default_patch PATCH /domains/{email}/default Set Default
ElasticEmail::DomainsApi domains_get GET /domains Load Domains
ElasticEmail::DomainsApi domains_post POST /domains Add Domain
ElasticEmail::EmailsApi emails_by_msgid_view_get GET /emails/{msgid}/view View Email
ElasticEmail::EmailsApi emails_by_transactionid_status_get GET /emails/{transactionid}/status Get Status
ElasticEmail::EmailsApi emails_mergefile_post POST /emails/mergefile Send Bulk Emails CSV
ElasticEmail::EmailsApi emails_post POST /emails Send Bulk Emails
ElasticEmail::EmailsApi emails_transactional_post POST /emails/transactional Send Transactional Email
ElasticEmail::EventsApi events_by_transactionid_get GET /events/{transactionid} Load Email Events
ElasticEmail::EventsApi events_channels_by_name_export_post POST /events/channels/{name}/export Export Channel Events
ElasticEmail::EventsApi events_channels_by_name_get GET /events/channels/{name} Load Channel Events
ElasticEmail::EventsApi events_channels_export_by_id_status_get GET /events/channels/export/{id}/status Check Channel Export Status
ElasticEmail::EventsApi events_export_by_id_status_get GET /events/export/{id}/status Check Export Status
ElasticEmail::EventsApi events_export_post POST /events/export Export Events
ElasticEmail::EventsApi events_get GET /events Load Events
ElasticEmail::FilesApi files_by_name_delete DELETE /files/{name} Delete File
ElasticEmail::FilesApi files_by_name_get GET /files/{name} Download File
ElasticEmail::FilesApi files_by_name_info_get GET /files/{name}/info Load File Details
ElasticEmail::FilesApi files_get GET /files List Files
ElasticEmail::FilesApi files_post POST /files Upload File
ElasticEmail::InboundRouteApi inboundroute_by_id_delete DELETE /inboundroute/{id} Delete Route
ElasticEmail::InboundRouteApi inboundroute_by_id_get GET /inboundroute/{id} Get Route
ElasticEmail::InboundRouteApi inboundroute_by_id_put PUT /inboundroute/{id} Update Route
ElasticEmail::InboundRouteApi inboundroute_get GET /inboundroute Get Routes
ElasticEmail::InboundRouteApi inboundroute_order_put PUT /inboundroute/order Update Sorting
ElasticEmail::InboundRouteApi inboundroute_post POST /inboundroute Create Route
ElasticEmail::ListsApi lists_by_listname_contacts_get GET /lists/{listname}/contacts Load Contacts in List
ElasticEmail::ListsApi lists_by_name_contacts_post POST /lists/{name}/contacts Add Contacts to List
ElasticEmail::ListsApi lists_by_name_contacts_remove_post POST /lists/{name}/contacts/remove Remove Contacts from List
ElasticEmail::ListsApi lists_by_name_delete DELETE /lists/{name} Delete List
ElasticEmail::ListsApi lists_by_name_get GET /lists/{name} Load List
ElasticEmail::ListsApi lists_by_name_put PUT /lists/{name} Update List
ElasticEmail::ListsApi lists_get GET /lists Load Lists
ElasticEmail::ListsApi lists_post POST /lists Add List
ElasticEmail::SecurityApi security_apikeys_by_name_delete DELETE /security/apikeys/{name} Delete ApiKey
ElasticEmail::SecurityApi security_apikeys_by_name_get GET /security/apikeys/{name} Load ApiKey
ElasticEmail::SecurityApi security_apikeys_by_name_put PUT /security/apikeys/{name} Update ApiKey
ElasticEmail::SecurityApi security_apikeys_get GET /security/apikeys List ApiKeys
ElasticEmail::SecurityApi security_apikeys_post POST /security/apikeys Add ApiKey
ElasticEmail::SecurityApi security_smtp_by_name_delete DELETE /security/smtp/{name} Delete SMTP Credential
ElasticEmail::SecurityApi security_smtp_by_name_get GET /security/smtp/{name} Load SMTP Credential
ElasticEmail::SecurityApi security_smtp_by_name_put PUT /security/smtp/{name} Update SMTP Credential
ElasticEmail::SecurityApi security_smtp_get GET /security/smtp List SMTP Credentials
ElasticEmail::SecurityApi security_smtp_post POST /security/smtp Add SMTP Credential
ElasticEmail::SegmentsApi segments_by_name_delete DELETE /segments/{name} Delete Segment
ElasticEmail::SegmentsApi segments_by_name_get GET /segments/{name} Load Segment
ElasticEmail::SegmentsApi segments_by_name_put PUT /segments/{name} Update Segment
ElasticEmail::SegmentsApi segments_get GET /segments Load Segments
ElasticEmail::SegmentsApi segments_post POST /segments Add Segment
ElasticEmail::StatisticsApi statistics_campaigns_by_name_get GET /statistics/campaigns/{name} Load Campaign Stats
ElasticEmail::StatisticsApi statistics_campaigns_get GET /statistics/campaigns Load Campaigns Stats
ElasticEmail::StatisticsApi statistics_channels_by_name_get GET /statistics/channels/{name} Load Channel Stats
ElasticEmail::StatisticsApi statistics_channels_get GET /statistics/channels Load Channels Stats
ElasticEmail::StatisticsApi statistics_get GET /statistics Load Statistics
ElasticEmail::SubAccountsApi subaccounts_by_email_apikey_get GET /subaccounts/{email}/apikey Get SubAccount ApiKey
ElasticEmail::SubAccountsApi subaccounts_by_email_credits_patch PATCH /subaccounts/{email}/credits Add, Subtract Email Credits
ElasticEmail::SubAccountsApi subaccounts_by_email_delete DELETE /subaccounts/{email} Delete SubAccount
ElasticEmail::SubAccountsApi subaccounts_by_email_get GET /subaccounts/{email} Load SubAccount
ElasticEmail::SubAccountsApi subaccounts_by_email_settings_email_put PUT /subaccounts/{email}/settings/email Update SubAccount Email Settings
ElasticEmail::SubAccountsApi subaccounts_get GET /subaccounts Load SubAccounts
ElasticEmail::SubAccountsApi subaccounts_post POST /subaccounts Add SubAccount
ElasticEmail::SuppressionsApi suppressions_bounces_get GET /suppressions/bounces Get Bounce List
ElasticEmail::SuppressionsApi suppressions_bounces_import_post POST /suppressions/bounces/import Add Bounces Async
ElasticEmail::SuppressionsApi suppressions_bounces_post POST /suppressions/bounces Add Bounces
ElasticEmail::SuppressionsApi suppressions_by_email_delete DELETE /suppressions/{email} Delete Suppression
ElasticEmail::SuppressionsApi suppressions_by_email_get GET /suppressions/{email} Get Suppression
ElasticEmail::SuppressionsApi suppressions_complaints_get GET /suppressions/complaints Get Complaints List
ElasticEmail::SuppressionsApi suppressions_complaints_import_post POST /suppressions/complaints/import Add Complaints Async
ElasticEmail::SuppressionsApi suppressions_complaints_post POST /suppressions/complaints Add Complaints
ElasticEmail::SuppressionsApi suppressions_get GET /suppressions Get Suppressions
ElasticEmail::SuppressionsApi suppressions_unsubscribes_get GET /suppressions/unsubscribes Get Unsubscribes List
ElasticEmail::SuppressionsApi suppressions_unsubscribes_import_post POST /suppressions/unsubscribes/import Add Unsubscribes Async
ElasticEmail::SuppressionsApi suppressions_unsubscribes_post POST /suppressions/unsubscribes Add Unsubscribes
ElasticEmail::TemplatesApi templates_by_name_delete DELETE /templates/{name} Delete Template
ElasticEmail::TemplatesApi templates_by_name_get GET /templates/{name} Load Template
ElasticEmail::TemplatesApi templates_by_name_put PUT /templates/{name} Update Template
ElasticEmail::TemplatesApi templates_get GET /templates Load Templates
ElasticEmail::TemplatesApi templates_post POST /templates Add Template
ElasticEmail::VerificationsApi verifications_by_email_delete DELETE /verifications/{email} Delete Email Verification Result
ElasticEmail::VerificationsApi verifications_by_email_get GET /verifications/{email} Get Email Verification Result
ElasticEmail::VerificationsApi verifications_by_email_post POST /verifications/{email} Verify Email
ElasticEmail::VerificationsApi verifications_files_by_id_delete DELETE /verifications/files/{id} Delete File Verification Result
ElasticEmail::VerificationsApi verifications_files_by_id_result_download_get GET /verifications/files/{id}/result/download Download File Verification Result
ElasticEmail::VerificationsApi verifications_files_by_id_result_get GET /verifications/files/{id}/result Get Detailed File Verification Result
ElasticEmail::VerificationsApi verifications_files_by_id_verification_post POST /verifications/files/{id}/verification Start verification
ElasticEmail::VerificationsApi verifications_files_post POST /verifications/files Upload File with Emails
ElasticEmail::VerificationsApi verifications_files_result_get GET /verifications/files/result Get Files Verification Results
ElasticEmail::VerificationsApi verifications_get GET /verifications Get Emails Verification Results
ElasticEmail::WebhookApi webhook_by_publicid_delete DELETE /webhook/{publicid} Delete Webhook
ElasticEmail::WebhookApi webhook_by_publicid_get GET /webhook/{publicid} Load Webhook
ElasticEmail::WebhookApi webhook_by_publicid_put PUT /webhook/{publicid} Update Webhook
ElasticEmail::WebhookApi webhook_get GET /webhook Load Webhooks
ElasticEmail::WebhookApi webhook_post POST /webhook Add Webhook

Models

Show all 98 models

Tests

The spec/ folder has generated RSpec specs for every API class and model:

bundle install
bundle exec rspec

Versioning

The SDK follows the Elastic Email API v4. Package versions and release notes are listed on RubyGems and in GitHub Releases.

Build details
  • API version: 4.0.0
  • SDK version: 4.2.0
  • Generator version: 7.11.0
  • Build package: org.openapitools.codegen.languages.RubyClientCodegen

Contributing

Contributions are welcome! Most of this SDK is generated from the Elastic Email OpenAPI specification, so please read CONTRIBUTING.md before opening a pull request.

This project follows the Contributor Covenant Code of Conduct.

Support

Important

The fastest way to get help is the chat widget on elasticemail.com. Our support team can help with your account, sending, deliverability and API questions.

License

Released under the MIT License. Copyright Β© 2021–2026 Elastic Email.

About

Official Ruby SDK for the Elastic Email REST API v4. Send transactional and marketing emails, and manage contacts, lists, templates, campaigns, domains and webhooks. Available on RubyGems.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages