Resend, geliştiriciler için oluşturulmuş bir e-posta API'sidir: tek bir POST isteği, tek bir JSON gövdesi ve bir işlem e-postası gönderilir. Her istek bir API anahtarı gerektirir ve bu anahtarı nasıl oluşturduğunuz, sızdırılan bir anahtarın ne kadar zarar verebileceğini belirler. Bu kılavuz tüm adımları anlatır: kaydolma, bir gönderim alanı doğrulama (veya yerleşik test adresini kullanma), doğru izin kapsamına sahip bir anahtar oluşturma ve curl, Node ve Python ile ilk e-postanızı gönderme. Ayrıca, sırları kabuğunuza yapıştırmadan uç noktayı test edebilmeniz için anahtarı Apidog'da saklayacaksınız.
API'nin gönderme dışında ne yaptığının daha geniş bir resmini isterseniz, Resend API başlangıç kılavuzu geri kalanını kapsar. Aşağıdaki her şey resmi Resend belgeleriyle kontrol edilmiştir, bu nedenle sayılar ve hata dizeleri göreceklerinizle eşleşir.
Başlamadan önce ihtiyacınız olanlar
- Bir Resend hesabı. Ücretsiz plan bu eğitim için yeterlidir.
- Kontrol ettiğiniz bir alan adı. Elinizin altında yoksa, test adresi ilk gönderimi kapsar.
- Makinenizde curl, ayrıca SDK örneklerini istiyorsanız Node.js veya Python.
- Test bölümünü takip etmeyi planlıyorsanız Apidog kurulu olmalıdır.
Adım 1: Bir Resend hesabı oluşturun
resend.com adresinden kaydolun ve e-postanızı onaylayın. Kaydolduğunuz adresi not edin: bir alan adını doğrulayana kadar, Resend'in test e-postalarını göndereceği tek gelen kutusu budur ve bunu unutmak, ilk gün göreceğiniz en kafa karıştırıcı 403 hatasına neden olur.
Adım 2: Bir gönderim alan adını doğrulayın veya test adresini kullanın
İki yol; hızlı olanla başlayın.
Yol A: Kullanıcı başlangıç (onboarding) test adresi. Resend, herhangi bir kurulum yapmadan onboarding@resend.dev adresinden göndermenize olanak tanır. Buradaki püf nokta alıcıdır: kendi hesap e-postanız olmak zorundadır. Başka birine gönderirseniz, API "Sadece kendi e-posta adresinize test e-postaları gönderebilirsiniz" mesajıyla bir 403 hatası döndürür.
Yol B: Kendi alan adınız. Gerçek bir gönderim için, kontrol panelindeki Alan Adları altında bir alan adı ekleyin. Resend, kök alan adınız yerine notifications.example.com gibi bir alt alan adı kullanmanızı önerir, böylece ürününüzün gönderim itibarı kurumsal postanızdan ayrı kalır. Alıcılarınıza en yakın bölgeyi seçin, ardından Resend'in oluşturduğu DNS kayıtlarını DNS sağlayıcınıza kopyalayın. Belgeler bunları "DKIM ve SPF yapılandırmaları (TXT ve MX veya CNAME kayıtları)" olarak tanımlar. Dönüş Yolu (Return-Path) alt alan adı varsayılan olarak send.example.com'dur.

Doğrulama genellikle 15 dakika içinde tamamlanır, ancak DNS yayılımı 72 saate kadar sürebilir. Eğer takılırsa, iki klasik şüpheliyi kontrol edin: send alt alan adı yerine kök dizine yerleştirilen kayıtlar ve Cloudflare vekil sunucusu kullanımı (bulut simgesi turuncu değil, gri olmalıdır). Kayıtları düzeltin, ardından "Doğrulamayı Yeniden Başlat"a tıklayın. Daha sonra bir DMARC kaydı ekleyin; göndermek için gerekli değildir, ancak gelen kutusu sağlayıcıları bunu ödüllendirir.
Adım 3: Doğru kapsamla API anahtarını oluşturun
Kontrol panelindeki API anahtarları sayfasını açın ve API Anahtarı Oluştur'a tıklayın. Üç alan önemlidir; API anahtarı oluşturma belgesi her birini kapsar:
- Ad. En fazla 50 karakter. Anahtarları daha sonra kolayca ayırt edebilmek için
billing-service-prodgibi uygulama ve ortam için adlandırın. - İzin. "Tam erişim", alan adları ve diğer API anahtarları dahil herhangi bir kaynağı oluşturabilir, silebilir, alabilir ve güncelleyebilir. "Gönderim erişimi" yalnızca e-posta gönderebilir. Dağıtılan her şey için gönderim erişimini seçin. Tam erişim anahtarı dizüstü bilgisayarınızda veya hiçbir yerde olmamalıdır.
- Alan Adı. Gönderim erişimiyle, anahtarı doğrulanmış tek bir alan adıyla kısıtlayabilirsiniz.
notifications.example.comkapsamındaki bir anahtar,billing.example.comadresinden gönderim yapamaz, bu da bir sızıntının potansiyel zararını sınırlar.

Resend anahtarı sadece bir kez gösterir. re_ ile başlar ve iletişim kutusunu kapattığınızda anahtarı yeniden adlandırabilirsiniz ancak bir daha asla görüntüleyemezsiniz. Doğrudan bir ortam değişkenine kopyalayın:
export RESEND_API_KEY="re_xxxxxxxxx"
Resend'in kendi rehberliği: anahtarların süresi asla dolmaz, bu nedenle bunları her 90 günde bir veya daha kısa sürede döndürün; kontrol paneli 30 gün boyunca kullanılmayan herhangi bir anahtarı işaretler; ve bir anahtar sızarsa, bir sonraki döndürmeyi beklemek yerine hemen silin. re_ dizelerini git'e kaydetmek en yaygın sızıntı yoludur, bu nedenle ilk itmeden önce depolarınızda bir sır tarayıcısı çalıştırın.
Ayrıca `name`, `permission` (`full_access` veya `sending_access`) ve isteğe bağlı bir `domain_id` ile `POST https://api.resend.com/api-keys` kullanarak anahtarlar oluşturabilirsiniz. Bu çağrı tam erişimli bir anahtar gerektirir; bu da onlardan sadece bir tane bulundurmak için başka bir nedendir.
Adım 4: İlk e-postanızı gönderin
Gönderim uç noktası `POST https://api.resend.com/emails`'tir. Kimlik doğrulama, `Authorization` başlığında bir Taşıyıcı (Bearer) belirtecidir, gövde JSON'dur ve yalnızca HTTPS kabul edilir. Üç alan zorunludur: `from`, `to` ve `subject`. `html`, `text` veya her ikisini de ekleyin; yalnızca `html` gönderirseniz, Resend düz metin bölümünü oluşturur. `to` bir dize veya en fazla 50 adreslik bir dizi alır. Tam parametre listesi e-posta gönderim referansında bulunmaktadır.
curl
curl -X POST 'https://api.resend.com/emails' \
-H "Authorization: Bearer $RESEND_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"from": "Acme <onboarding@resend.dev>",
"to": ["you@yourcompany.com"],
"subject": "First Resend email",
"html": "<p>Your Resend key works.</p>"
}'
Başarılı bir çağrı {"id": "49a3999c-0ce1-4ea6-ab68-afcd6dc2e794"} döndürür. Bir özellik: her istek bir User-Agent başlığı taşımalıdır, aksi takdirde API 1010 koduyla 403 yanıtı verir. curl ve SDK'lar bunu ayarlar; bir edge çalışma zamanında elle yazılmış bir istemci ayarlamayabilir.
Node.js
npm install resend
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
const { data, error } = await resend.emails.send({
from: 'Acme <notifications@example.com>',
to: ['you@yourcompany.com'],
subject: 'First Resend email',
html: '<p>Your Resend key works.</p>',
});
if (error) {
console.error(error);
} else {
console.log(data.id);
}
Node SDK, API hataları için asla istisna fırlatmaz. `{ data, error }` döndürür, bu nedenle `data.id`'ye dokunmadan önce `error`'ı kontrol edin.
Python
pip install resend
import os
import resend
from resend.exceptions import ResendError
resend.api_key = os.environ["RESEND_API_KEY"]
params: resend.Emails.SendParams = {
"from": "Acme <notifications@example.com>",
"to": ["you@yourcompany.com"],
"subject": "First Resend email",
"html": "<p>Your Resend key works.</p>",
}
try:
email = resend.Emails.send(params)
print(email["id"])
except ResendError as err:
print(err)
Python SDK'sı tam tersini yapar: başarısızlık durumunda `ResendError` istisnası fırlatır, bu nedenle gönderimleri try/except içine alın.
Adım 5: Anahtarı Apidog'da saklayın ve test edin
Curl, anahtarın bir kez çalıştığını kanıtlar. Apidog bu tek seferlik işlemi ekibinizin yeniden çalıştırabileceği bir şeye dönüştürür ve anahtarı kabuk geçmişinden ve sohbet günlüklerinden uzak tutar.
Anahtarı gizli bir değişken olarak saklayın. Resend adında bir ortam oluşturun, RESEND_API_KEY'i bir değişken olarak ekleyin ve değeri kullanıcı arayüzünde maskelenmesi ve dışa aktarmaların dışında kalması için gizli olarak işaretleyin. Ortamlar ve gizli değişkenler kılavuzu, her ortam için farklı bir yalnızca gönderim anahtarı tutuyorsanız (ki tutmalısınız), geliştirme, hazırlık ve üretim ortamı ayrımlarını kapsar.
İsteği gönderin. https://api.resend.com/emails adresine bir POST isteği oluşturun, Kimlik Doğrulamayı {{RESEND_API_KEY}} ile Taşıyıcı Belirteci olarak ayarlayın ve curl örneğinden JSON gövdesini yapıştırın. Gönder'e tıklayın. `id`, yanıt panelinde aşağıda ele alınan hız limiti başlıklarının yanında görünür.
Bir test olarak kaydedin. İki onaylama ekleyin: durum 200'e eşit ve $.id mevcut. İsteği bir test senaryosuna bırakın ve e-posta koduna her dokunulduğunda çalışan bir duman testi (smoke test) elde edersiniz. Alan adı kısıtlamalı bir gönderim anahtarı ile hazırlık ortamına yönlendirin ve CI'dan çalıştırmak güvenli hale gelir.
Ön uç çalışmaları için uç noktayı taklit edin. Ön uç (frontend) ekibinizin gerçek bir gönderim değil, yanıt yapısına ihtiyacı vardır. Apidog'da uç noktayı taklit edin, böylece her çağrıda {"id": "mock-email-id"} döndürür. Kullanıcı arayüzü (UI) ekibi, günde 100 e-posta ücretsiz kotasına dokunmadan veya gerçek bir gelen kutusunu spamlemeden "e-posta gönderildi" durumunu gün boyu oluşturabilir. Bunu ayarlamak için Apidog'u indirin; ücretsiz plan dört kullanıcıyı kapsar.
İlk karşılaşacağınız ücretsiz katman limitleri
Resend fiyatlandırma sayfası, ücretsiz planı ayda 3.000 e-posta, günlük 100 ile sınırlı, 3 alan adı ve 30 günlük veri saklama süresi ile listeler. Pro plan, 50.000 e-posta, 10 alan adı ve günlük limit olmaksızın ayda 20 dolardan başlar, her 1.000 e-posta için 0,90 dolar ek ücret alınır.
resend.dev adreslerine gönderilen test e-postaları bu kotalara dahil edilir, bu nedenle delivered@resend.dev adresine yönelik bir yük testi bile günlük 100 e-postanızı tüketir. bounced@resend.dev, complained@resend.dev ve suppressed@resend.dev, gerçek kötü adresler olmadan bir "hard bounce" (kalıcı hata), bir spam şikayeti ve engellenmiş bir alıcıyı simüle eder.
Kotadan bağımsız olarak, hız limiti varsayılan olarak ekip başına saniyede 10 istektir ve ekiptaki her anahtar arasında paylaşılır. Her yanıt ratelimit-limit, ratelimit-remaining, ratelimit-reset ve retry-after başlıklarını taşır, böylece bir gönderim döngüsü 429 hatasına ulaşmadan önce geri çekilebilir. Daha fazlasına mı ihtiyacınız var? Resend, ek ekipler oluşturmak yerine destekle iletişime geçmenizi ister.
Yaygın hatalar ve bunları nasıl düzelteceğiniz
Her hata, bir statusCode, bir name ve bir message içeren JSON olarak geri döner. Bunlar, hata referansından ilk gün karşılaşacağınız hatalardır:
| Durum | Ad | Ne oldu | Çözüm |
|---|---|---|---|
| 401 | missing_api_key |
Authorization başlığı yok |
Authorization: Bearer re_... ekleyin |
| 401 | restricted_api_key |
Gönderim dışı bir uç noktada yalnızca gönderim anahtarı kullanıldı | Bu çağrı için tam erişimli bir anahtar kullanın |
| 403 | validation_error |
“Alan adı doğrulanmadı” | DNS doğrulamasını tamamlayın veya from adresini düzeltin |
| 403 | validation_error |
Test adresi sizden başka birine gönderildi | Hesap e-postanıza gönderin veya bir alan adını doğrulayın |
| 403 | restricted_api_key |
“API anahtarı etkin değil” | Anahtar silindi; yeni bir tane oluşturun |
| 422 | missing_required_field |
from, to veya subject eksik |
Gövdeyi referansa göre kontrol edin |
| 429 | rate_limit_exceeded |
Saniyede 10'dan fazla istek | Gönderimleri sıraya alın, retry-after'a uyun |
| 429 | daily_quota_exceeded |
Ücretsiz planda bugün 100 e-postayı geçti | Sıfırlamayı bekleyin veya yükseltin |
Doğru olduğundan emin olduğunuz bir anahtarla alınan 401 hatası genellikle değişkende sonda bir yeni satır veya hiç yüklenmemiş bir `.env` dosyası anlamına gelir. Her ikisi de API tarafında eksik bir anahtar gibi görünür.
Sıkça Sorulan Sorular
Resend API anahtarımı oluşturduktan sonra tekrar görebilir miyim?
Hayır. Resend değeri oluşturma anında sadece bir kez gösterir. Kaybederseniz, aynı ad ve izinle yeni bir anahtar oluşturun, dağıtın, ardından eskiyi silin.
Tam erişim mi yoksa gönderim erişimi mi seçmeliyim?
Makinenizden çıkan her anahtar için tek bir alan adıyla kısıtlanmış gönderim erişimi. Alan adları ekleme veya başka anahtarlar oluşturma gibi kontrol paneli tarzı işler için bir tam erişim anahtarı tutun ve bunu asla bir uygulamada göndermeyin.
Bir alan adını doğrulamadan gönderimi test edebilir miyim?
Evet. onboarding@resend.dev adresini from adresi ve kendi hesap e-postanızı alıcı olarak kullanın. Bir alan adı doğrulanana kadar başka herhangi bir alıcı 403 hatası döndürür.
Resend'i kontrol paneli yerine terminalden yönetmenin bir yolu var mı?
Evet. Resend CLI kılavuzu, tarayıcı açmadan onu nasıl kuracağınızı ve yaygın alan adı ve e-posta komutlarını nasıl çalıştıracağınızı kapsar.
Ücretsiz planda günde 100 e-postayı geçtiğimde ne olur?
API, daily_quota_exceeded ile 429 hatası döndürür ve gönderimler günlük sıfırlamadan sonra devam eder. Düzenli olarak daha fazlasına ihtiyacınız varsa, Pro plan limiti kaldırır ve ücretsiz e-posta API derlemesi, diğer sağlayıcıların ücretsiz katmanlarının nasıl karşılaştırıldığını gösterir.
Toparlayacak olursak
Bir Resend API anahtarı almak iki dakika sürer; doğru yapmak ise beş. Bir alt alan adını doğrulayın, o alan adına kilitlenmiş yalnızca gönderim anahtarı oluşturun, bunu bir ortam değişkeninde saklayın ve gidiş dönüşü doğrulamak için curl ile bir e-posta gönderin. Ardından isteği Apidog'a taşıyın, onaylamaları kaydedin ve uç noktayı taklit edin, böylece ekibinizin geri kalanı kotanızı harcamadan ona göre geliştirme yapabilir. İşi hala yapan en az güçlü anahtarı kullanıma sunun.
