SDKs
Use os SDKs oficiais do Resend com o Ritto Mail — a API é compatível.
O Ritto Mail não tem SDKs próprios. A API REST dele é compatível com a do
Resend, então os SDKs oficiais do Resend funcionam como estão: aponte-os para
a URL base do Ritto Mail e autentique com uma chave de API do Ritto Mail
(rm_...). Nada mais muda — mesmos métodos, mesmos formatos de requisição e
resposta.
URL base
https://api.ritto.email — a que todos os exemplos desta página usam. Crie
a chave rm_ em Chaves de API no painel em
app.ritto.email.
A maioria dos SDKs lê a URL base da variável de ambiente RESEND_BASE_URL e
a chave de RESEND_API_KEY, então na maioria dos apps a troca são duas
linhas de ambiente:
RESEND_API_KEY=rm_...
RESEND_BASE_URL=https://api.ritto.emailAs exceções estão indicadas por linguagem abaixo: o Python lê
RESEND_API_URL, o Ruby precisa da barra final, e Java, .NET e Elixir
recebem a URL base como opção do cliente.
Se a URL base não for aplicada, o SDK continua falando com o api.resend.com
e o Resend responde 401 com API key is invalid — sua chave rm_ está
certa, o pedido é que foi para o servidor errado. Vários SDKs leem a variável
uma única vez, quando o pacote é carregado, então ela precisa estar no
ambiente do processo (shell, contêiner, .env carregado primeiro) antes de o
SDK ser importado.
Node.js / TypeScript
resend no npm. Use
RESEND_BASE_URL — funciona em todas as versões do SDK.
npm install resend// RESEND_BASE_URL=https://api.ritto.email
import { Resend } from "resend";
const resend = new Resend("rm_123");
const { data, error } = await resend.emails.send({
from: "Acme <onboarding@acme.dev>",
to: "delivered@example.com",
subject: "Hello from Ritto Mail",
html: "<strong>It works!</strong>",
});Até o resend@6.12.3 (incluindo todas as versões 4.x e 5.x) o construtor só
recebe a chave, e RESEND_BASE_URL é lida uma vez, quando o módulo
carrega. Atribuir process.env.RESEND_BASE_URL depois do import não tem
efeito, e em ES modules os imports rodam antes do resto do arquivo; então
defina-a no ambiente — node --env-file=.env app.js, as variáveis de ambiente
da sua hospedagem, ou import "dotenv/config" como o primeiro import.
A partir do resend@6.12.4 o construtor também aceita a opção baseUrl, e a
variável é lida quando o cliente é criado:
const resend = new Resend("rm_123", { baseUrl: "https://api.ritto.email" });Em versões anteriores essa opção é ignorada em silêncio e o pedido vai para o
Resend. Confira com npm ls resend.
Python
resend no PyPI. Lê
RESEND_API_URL (não RESEND_BASE_URL) quando o pacote é importado, ou
defina resend.api_url no código, que é lido a cada requisição.
pip install resendimport resend
resend.api_key = "rm_123"
resend.api_url = "https://api.ritto.email"
email = resend.Emails.send({
"from": "Acme <onboarding@acme.dev>",
"to": "delivered@example.com",
"subject": "Hello from Ritto Mail",
"html": "<strong>It works!</strong>",
})Go
resend-go. Defina o campo BaseURL
do cliente, que funciona em todas as versões. Desde a v2.5.0 o pacote também
lê RESEND_BASE_URL, uma vez, quando o programa inicia.
go get github.com/resend/resend-go/v4client := resend.NewClient("rm_123")
client.BaseURL, _ = url.Parse("https://api.ritto.email/") // import "net/url"
sent, err := client.Emails.Send(&resend.SendEmailRequest{
From: "Acme <onboarding@acme.dev>",
To: []string{"delivered@example.com"},
Subject: "Hello from Ritto Mail",
Html: "<strong>It works!</strong>",
})Ruby
resend no RubyGems. Lê
RESEND_BASE_URL (desde a v0.10.0) uma vez, quando a gem é carregada, então
defina-a no ambiente do processo antes do require "resend". A gem concatena
os caminhos sem separador, então mantenha a barra final:
https://api.ritto.email/.
gem install resend# RESEND_BASE_URL=https://api.ritto.email/
require "resend"
Resend.api_key = "rm_123"
email = Resend::Emails.send({
from: "Acme <onboarding@acme.dev>",
to: "delivered@example.com",
subject: "Hello from Ritto Mail",
html: "<strong>It works!</strong>"
})PHP
resend/resend-php no Packagist.
Lê RESEND_BASE_URL (desde a v0.11.0) a cada chamada de Resend::client(),
então basta a variável estar definida antes dessa chamada. Não há argumento
de URL base.
composer require resend/resend-php// RESEND_BASE_URL=https://api.ritto.email
$resend = Resend::client('rm_123');
$email = $resend->emails->send([
'from' => 'Acme <onboarding@acme.dev>',
'to' => 'delivered@example.com',
'subject' => 'Hello from Ritto Mail',
'html' => '<strong>It works!</strong>',
]);Rust
resend-rs on crates.io. Lê
RESEND_BASE_URL; ConfigBuilder::base_url a define no código.
cargo add resend-rs tokio -F tokio/macros,tokio/rt-multi-thread// RESEND_BASE_URL=https://api.ritto.email
use resend_rs::types::CreateEmailBaseOptions;
use resend_rs::Resend;
let resend = Resend::new("rm_123");
let email = CreateEmailBaseOptions::new(
"Acme <onboarding@acme.dev>",
["delivered@example.com"],
"Hello from Ritto Mail",
)
.with_html("<strong>It works!</strong>");
let sent = resend.emails.send(email).await?;Java
com.resend:resend-java on Maven Central.
Recebe a URL base pelo builder.
<dependency>
<groupId>com.resend</groupId>
<artifactId>resend-java</artifactId>
<version><!-- mais recente --></version>
</dependency>Resend resend = Resend.builder()
.apiKey("rm_123")
.baseUrl("https://api.ritto.email")
.build();
CreateEmailResponse sent = resend.emails().send(
CreateEmailOptions.builder()
.from("Acme <onboarding@acme.dev>")
.to("delivered@example.com")
.subject("Hello from Ritto Mail")
.html("<strong>It works!</strong>")
.build());.NET
Resend on NuGet. Recebe a URL
base por ResendClientOptions.ApiUrl (também com AddResend na injeção de
dependência).
dotnet add package Resendusing Resend;
IResend resend = ResendClient.Create(new ResendClientOptions
{
ApiToken = "rm_123",
ApiUrl = "https://api.ritto.email",
});
var res = await resend.EmailSendAsync(new EmailMessage
{
From = "Acme <onboarding@acme.dev>",
To = "delivered@example.com",
Subject = "Hello from Ritto Mail",
HtmlBody = "<strong>It works!</strong>",
});Elixir
resend on Hex. Recebe a URL base
pela configuração do cliente.
# mix.exs
def deps do
[{:resend, "~> 0.4"}]
endconfig :resend, Resend.Client,
api_key: System.get_env("RESEND_API_KEY"),
base_url: "https://api.ritto.email"
{:ok, email} =
Resend.Emails.send(%{
from: "Acme <onboarding@acme.dev>",
to: "delivered@example.com",
subject: "Hello from Ritto Mail",
html: "<strong>It works!</strong>"
})Resend é marca registrada da Plus Five Five, Inc. O Ritto Mail não é afiliado ao Resend nem endossado por ele.