The email API you'll love

Integrating email sending into your app doesn’t have to be a pain in the butt. With Helo’s powerful REST API, you’ll be set up in minutes.

Get started

A dead simple way to send emails

With our straightforward API and SDKs in your favorite languages, sending email is a breeze.

Send transactional email
Send password resets, confirmations, notifications, or any other type of transactional mail.
Send broadcast email
Send a single email campaign to a large list of recipients—with just one API call.
curl --location 'https://api.helohq.com/send/transactional' \
--header "X-Helo-Channel-Id: $HELO_CHANNEL_ID" \
--header "X-Helo-Idempotency-Key: example" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Authorization: Bearer $HELO_API_KEY" \
--data @- <<EOF
{
  "from": { "email": "from@yourdomain.com", "name": "From name" },
  "to": [{ "email": "to@example.com", "name": "To name" }],
  "subject": "Hello from Helo",
  "html": "<html><body><h1>Hi there, new friend.</h1><p>This is a test message, delivered with <3 by Helo.</p></body></html>",
  "text": "This is a test message, delivered with <3 by Helo.",
  "tags": ["welcome"]
}
EOF

Helo.configure do |config|
  config.api_key = ENV.fetch("HELO_API_KEY")
end

send_message_request = Helo::SendMessageRequest.new(
  from: Helo::MailAddress.new(email: "from@yourdomain.com", name: "From name"),
  to: [Helo::MailAddress.new(email: "to@example.com", name: "To name")],
  subject: "Hello from Helo",
  html: "<html><body><h1>Hi there, new friend.</h1><p>This is a test message, delivered with <3 by Helo.</p></body></html>",
  text: "This is a test message, delivered with <3 by Helo.",
  tags: ["welcome"]
)
Helo::Sending.transactional(send_message_request, channel_id: "your-channel-id", idempotency_key: "example")

import Helo from "@helo-email/sdk";

const apiKey = process.env.HELO_API_KEY;
const helo = new Helo(apiKey);

const result = await helo.sending.transactional(
  {
    from: { email: "from@yourdomain.com", name: "From name" },
    to: [{ email: "to@example.com", name: "To name" }],
    subject: "Hello from Helo",
    html: "<html><body><h1>Hi there, new friend.</h1><p>This is a test message, delivered with <3 by Helo.</p></body></html>",
    text: "This is a test message, delivered with <3 by Helo.",
    tags: ["welcome"],
  },
  {
    channelId: "your-channel-id",
    idempotencyKey: "example",
  },
);

using HeloEmail.Sdk;
using HeloEmail.Sdk.Sending;

var response = await helo.Sending.Transactional(new SendMessageRequest
{
    From = new MailAddress { Email = "from@yourdomain.com", Name = "From name" },
    To = [new MailAddress { Email = "to@example.com", Name = "To name" }],
    Subject = "Hello from Helo",
    Html = "<html><body><h1>Hi there, new friend.</h1><p>This is a test message, delivered with <3 by Helo.</p></body></html>",
    Text = "This is a test message, delivered with <3 by Helo.",
    Tags = ["welcome"],
}, channelId: "your-channel-id", idempotencyKey: "example");

package main

import (
	"context"
	"log"
	"os"

	"github.com/helo-email/helo-sdk-go"
)

func main() {
	client := helo.NewHelo(os.Getenv("HELO_API_KEY"))
	ctx := context.Background()

	params := &helo.SendMessageRequest{
		From:    helo.MailAddress{Email: "from@yourdomain.com", Name: "From name"},
		To:      []helo.MailAddress{{Email: "to@example.com", Name: "To name"}},
		Subject: "Hello from Helo",
		Html:    "<html><body><h1>Hi there, new friend.</h1><p>This is a test message, delivered with <3 by Helo.</p></body></html>",
		Text:    "This is a test message, delivered with <3 by Helo.",
		Tags:    []string{"welcome"},
	}
	opts := &helo.SendingTransactionalOptions{
		ChannelID:      "your-channel-id",
		IdempotencyKey: "example",
	}
	result, err := client.Sending.Transactional(ctx, params, opts)
	if err != nil {
		log.Fatal(err)
	}
	_ = result
}

import sdk_helo_email as helo

client = helo.Helo()

response = client.sending.transactional(
    from_={"email": "from@yourdomain.com", "name": "From name"},
    to=[{"email": "to@example.com", "name": "To name"}],
    subject="Hello from Helo",
    html="<html><body><h1>Hi there, new friend.</h1><p>This is a test message, delivered with <3 by Helo.</p></body></html>",
    text="This is a test message, delivered with <3 by Helo.",
    tags=["welcome"],
    channel_id="your-channel-id",
    idempotency_key="example",
)

What's your favorite programming language?

Get started in minutes with quickstart guides.

An API that can do much more than just sending email

Manage domains, retrieve email performance insights, manage suppressions, and so much more. We’ve got endpoints for all your (email-related) needs.

Explore the API docs

More reasons you'll love sending with Helo

Easily separate transactional mail from broadcast sends

And let Helo take care of optimizing deliverability for either mail type.

Learn more

Simple pricing that doesn’t break the bank

You only pay for what you use. That’s it.

Explore pricing

Customer support you can count on

Outstanding technical support whenever you need it.

Contact us

Are you sending on behalf of others? Helo’s API is made for that.

Separate email sending for your different customers to avoid deliverability issues. Let your users use their own domains for sending. Provide your users with email performance insights. Helo’s API powers it all.

Learn more about sending for platforms