Twilio SendGrid

Email API

Reach customers using the email API leading businesses trust for reliable delivery at scale.

See plans and pricing

Twilio SendGrid
Send with confidence
Twilio SendGrid's Email API gives developers the flexibility to turn their ideas into reality, and the support to scale them into production.
Integrate and deliver email in 5 minutes or less
Twilio SendGrid supports the programming languages you love. Use rock-solid documentation to build password resets, trigger marketing messages, and craft the experiences your customers appreciate.
Scale on a reliable platform
Don’t let a sub-par email platform bring you down. Twilio SendGrid’s Email API ensures you can scale to enterprise-volume easily. We process over 50 billion emails a month while maintaining a 99.999% uptime.
We’ve got your back
When you build on Twilio SendGrid, you’re building on a platform with a lifetime of best practices baked in. Manage and edit email templates in the UI and automatically display the latest content in your email with a simple API call. Troubleshoot easily with powerful developer tools. Securely share critical data across teams, all from one platform.
  • Node.js
  • C#
  • PHP
  • Ruby
  • Python
  • Java
// using Twilio SendGrid's v3 Node.js Library
// https://github.com/sendgrid/sendgrid-nodejs
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
  to: 'test@example.com',
  from: 'test@example.com',
  subject: 'Sending with Twilio SendGrid is Fun',
  text: 'and easy to do anywhere, even with Node.js',
  html: 'and easy to do anywhere, even with Node.js',
};
sgMail.send(msg);
// using SendGrid's C# Library
// https://github.com/sendgrid/sendgrid-csharp
using SendGrid;
using SendGrid.Helpers.Mail;
using System;
using System.Threading.Tasks;

namespace Example
{
    internal class Example
    {
        private static void Main()
        {
            Execute().Wait();
        }

        static async Task Execute()
        {
            var apiKey = Environment.GetEnvironmentVariable("NAME_OF_THE_ENVIRONMENT_VARIABLE_FOR_YOUR_SENDGRID_KEY");
            var client = new SendGridClient(apiKey);
            var from = new EmailAddress("test@example.com", "Example User");
            var subject = "Sending with SendGrid is Fun";
            var to = new EmailAddress("test@example.com", "Example User");
            var plainTextContent = "and easy to do anywhere, even with C#";
            var htmlContent = "and easy to do anywhere, even with C#";
            var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
            var response = await client.SendEmailAsync(msg);
        }
    }
}
<?php
require 'vendor/autoload.php'; // If you're using Composer (recommended)
// Comment out the above line if not using Composer
// require("/sendgrid-php.php");
// If not using Composer, uncomment the above line and
// download sendgrid-php.zip from the latest release here,
// replacing  with the path to the sendgrid-php.php file,
// which is included in the download:
// https://github.com/sendgrid/sendgrid-php/releases
$email = new \SendGrid\Mail\Mail();
$email->setFrom("test@example.com", "Example User");
$email->setSubject("Sending with SendGrid is Fun");
$email->addTo("test@example.com", "Example User");
$email->addContent("text/plain", "and easy to do anywhere, even with PHP");
$email->addContent(
    "text/html", "and easy to do anywhere, even with PHP"
);
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
try {
    $response = $sendgrid->send($email);
    print $response->statusCode() . "\n";
    print_r($response->headers());
    print $response->body() . "\n";
} catch (Exception $e) {
    echo 'Caught exception: '. $e->getMessage() ."\n";
}
# using SendGrid's Ruby Library
# https://github.com/sendgrid/sendgrid-ruby
require 'sendgrid-ruby'
include SendGrid

from = Email.new(email: 'test@example.com')
to = Email.new(email: 'test@example.com')
subject = 'Sending with SendGrid is Fun'
content = Content.new(type: 'text/plain', value: 'and easy to do anywhere, even with Ruby')
mail = Mail.new(from, subject, to, content)

sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
response = sg.client.mail._('send').post(request_body: mail.to_json)
puts response.status_code
puts response.body
puts response.headers
# using SendGrid's Python Library
# https://github.com/sendgrid/sendgrid-python
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

message = Mail(
    from_email='from_email@example.com',
    to_emails='to@example.com',
    subject='Sending with Twilio SendGrid is Fun',
    html_content='and easy to do anywhere, even with Python')
try:
    sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
    response = sg.send(message)
    print(response.status_code)
    print(response.body)
    print(response.headers)
except Exception as e:
    print(e.message)
// using SendGrid's Java Library
// https://github.com/sendgrid/sendgrid-java
import com.sendgrid.*;
import java.io.IOException;

public class Example {
  public static void main(String[] args) throws IOException {
    Email from = new Email("test@example.com");
    String subject = "Sending with SendGrid is Fun";
    Email to = new Email("test@example.com");
    Content content = new Content("text/plain", "and easy to do anywhere, even with Java");
    Mail mail = new Mail(from, subject, to, content);

    SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY"));
    Request request = new Request();
    try {
      request.setMethod(Method.POST);
      request.setEndpoint("mail/send");
      request.setBody(mail.build());
      Response response = sg.api(request);
      System.out.println(response.getStatusCode());
      System.out.println(response.getBody());
      System.out.println(response.getHeaders());
    } catch (IOException ex) {
      throw ex;
    }
  }
}
Clearing a path to the inbox
The email ecosystem is complex. Many messages never reach the inbox. Twilio SendGrid is built to solve deliverability challenges so you don't worry about what happens after you trigger an email. We’ll help you maximize your inbox placement with streamlined tools, insightful recommendations, and expert services.
  • Integrate

  • SMTP and API
  • Interactive API docs
  • Setup guide
  • Comprehensive client libraries
  • Technical Support
  • Trusted deliverability and performance

  • Dedicated IP addresses
  • Sender Authentication
  • Email Validation API
  • Suppression Management
  • Purpose-Built Mail Transfer Agent
  • Reputation and Delivery Visibility
  • Expert Services
  • Actionable analytics

  • Engagement and Feedback Loop Metrics
  • Advanced Statistics
  • Searchable Email Activity
  • Webhooks
  • Productive collaboration

  • Transactional Templates
  • Teammate Invitations
  • API Key Permissions
  • Subuser management
  • Privacy and Security

  • Two-Factor Authentication
  • IP Access Management
  • Security Policies
Use Cases
Twilio SendGrid provides a trusted foundation for remarkable businesses across the globe to drive innovation.
  • Reliability at Scale
    We started sending tens of thousands of emails per day with SendGrid. We’re now sending more than that per minute. Email plays a critical role on our platform and SendGrid provides a vital partnership in ensuring reliable delivery as we scale.”
    Prakash Janakiraman, Co-Founder & Chief Architect
  • Deliverability
    By no stretch of the imagination, SendGrid is our most important vendor. If you’re serious and committed to email, and you want to be in control of your email program, you should go for SendGrid.”
    John Havel, Co-Founder