API · v1

Tek POST, tek kutu. Postayı bekle, kodu oku.

Ücretsiz ve herkese açık. Anahtar yok, kayıt yok, limit yok.

Temel URL
https://nrthmail.com/api/v1
Biçim
JSON · snake_case · UTC
CORS
her kaynak
OpenAPI
/api/v1/openapi.json

01

Hızlı başlangıç: 3 çağrı

Bir kutu aç, adresini postayı gönderecek yere ver, sonra bekle. Bekleme çağrısı mesaj düştüğü anda döner; kod da ayıklanmış olarak gelir.

API=https://nrthmail.com/api/v1

# 1 · Kutu aç. Token yalnızca bir kez gösterilir: sakla.
NEW=$(curl -s -X POST $API/inboxes)
TOKEN=$(echo "$NEW" | jq -r .token)
SINCE=$(echo "$NEW" | jq -r .inbox.created_at)
echo "$NEW" | jq -r .inbox.address    # quiet.fjord47@nrthmail.com

# 2 · Adresi bir yerde kullan, sonra postayı 60 sn’ye kadar bekle.
ID=$(curl -s "$API/inbox/wait?timeout=60&since=$SINCE" \
  -H "Authorization: Bearer $TOKEN" | jq -r '.messages[0].id')

# 3 · Bir mesajın tamamını oku.
curl -s $API/inbox/messages/$ID -H "Authorization: Bearer $TOKEN" \
  | jq '{subject, codes, links}'
const API = 'https://nrthmail.com/api/v1';

// 1 · Kutu aç. Token yalnızca bir kez gösterilir: sakla.
const { token, inbox } = await fetch(`${API}/inboxes`, { method: 'POST' }).then((r) => r.json());
const auth = { Authorization: `Bearer ${token}` };
console.log(inbox.address); // quiet.fjord47@nrthmail.com

// 2 · Adresi bir yerde kullan, sonra postayı 60 sn’ye kadar bekle.
const since = encodeURIComponent(inbox.created_at);
const waited = await fetch(`${API}/inbox/wait?timeout=60&since=${since}`, { headers: auth })
  .then((r) => r.json());

// 3 · Bir mesajın tamamını oku.
if (!waited.timed_out) {
  const id = waited.messages[0].id;
  const { message } = await fetch(`${API}/inbox/messages/${id}`, { headers: auth }).then((r) => r.json());
  console.log(message.subject, message.codes[0]);
}
import requests

API = "https://nrthmail.com/api/v1"

# 1 · Kutu aç. Token yalnızca bir kez gösterilir: sakla.
new = requests.post(f"{API}/inboxes", timeout=10).json()
auth = {"Authorization": f"Bearer {new['token']}"}
print(new["inbox"]["address"])  # quiet.fjord47@nrthmail.com

# 2 · Adresi bir yerde kullan, sonra postayı 60 sn’ye kadar bekle.
waited = requests.get(f"{API}/inbox/wait", headers=auth, timeout=75,
                      params={"timeout": 60, "since": new["inbox"]["created_at"]}).json()

# 3 · Bir mesajın tamamını oku.
if not waited["timed_out"]:
    msg_id = waited["messages"][0]["id"]
    message = requests.get(f"{API}/inbox/messages/{msg_id}", headers=auth, timeout=10).json()["message"]
    print(message["subject"], message["codes"][:1])

curl örneği JSON’dan alan seçmek için jq kullanır.

02

Temeller

Kimlik doğrulama

Kutu açınca nrth_ ile başlayan bir token döner. Her kutu çağrısında onu Authorization: Bearer nrth_… olarak gönder. Var olan tek kimlik bilgisi budur ve elinde tutan kutuyu okuyabilir. Yalnızca bir kez gösterilir; sunucu yalnızca SHA-256 özetini saklar.

Biçim

Giriş ve çıkış JSON, alan adları snake_case. Zaman damgaları milisaniyeli, UTC, RFC 3339: 2026-10-03T19:44:19.123Z. Her yanıt Cache-Control: no-store taşır.

CORS

API’yi her kaynak çağırabilir: GET POST PATCH DELETE yöntemleri, Authorization ve Content-Type başlıkları; Location başlığı okunabilir. Tarayıcı kodu doğrudan konuşabilir.

Ömür

Bir kutu son kullanımından 24 saat sonrasına kadar yaşar. Kimlik doğrulamalı her istek ve açık her olay akışı expires_at değerini ileri iter; POST /inbox/extend bunu bilerek yapar. Süre dolunca mesajlar ve dosyalar hemen silinir.

Ücret

Yok. Anahtar, hesap, paket ya da istek sınırı yok. Tek sınırlar depolamayla ilgili; Sınırlar bölümünde listeli.

03

Kutular

POST/api/v1/inboxes

Kutu aç. Gövde göndermezsen quiet.fjord47 gibi rastgele bir isim alırsın; istersen JSON ile name ve isteğe bağlı domain gönder. 201 ile token’ı, kutuyu ve Location: /api/v1/inbox başlığını döner.

AdYerTürNot
namegövdestring3–40 karakter, a–z 0–9 . _ -; harf ya da rakamla başlar ve biter. Rastgele isim için gönderme.
domaingövdestringGET /domains listesinden biri. Varsayılan: ilki.

İsim alınmış ya da hâlâ kilitliyse 409 address_unavailable; geçersiz isim ya da bilinmeyen alan adında 422 validation_failed; postmaster gibi isimlerde 422 name_reserved.

curl
curl -s -X POST https://nrthmail.com/api/v1/inboxes \
  -H "Content-Type: application/json" \
  -d "{\"name\":\"signup-test-$RANDOM\"}"
201 · Yanıt
{
  "token": "nrth_3kQ9vR2mXc7LpT0aWb5YzN8sHd4FgJ6eUo1iKyMhPq7",
  "inbox": {
    "id": "ibx_01K6P8Z3QK4T2V9W1X5Y7A0C3D",
    "address": "signup-test-4821@nrthmail.com",
    "local_part": "signup-test-4821",
    "domain": "nrthmail.com",
    "custom": true,
    "status": "active",
    "created_at": "2026-10-03T19:44:19.123Z",
    "expires_at": "2026-10-04T19:44:19.123Z",
    "ttl_seconds": 86400,
    "message_count": 0,
    "unseen_count": 0
  }
}

POST/api/v1/inboxes/recover

Süresi dolmuş bir kutuyu eski token’ıyla geri getir. Boş olarak, taze 24 saatle döner. Süre dolduktan sonraki 30 gün boyunca çalışır. Yakılmış kutular geri gelmez: 410 gone. Bilinmeyen token 404 alır.

AdYerTürNot
tokengövdestringKutunun token’ı, nrth_…
curl
curl -s -X POST https://nrthmail.com/api/v1/inboxes/recover \
  -H "Content-Type: application/json" \
  -d '{"token":"nrth_…"}'

GET/api/v1/inbox

Sayıları ve bitiş zamanıyla kutu. Döner: {"inbox": Inbox}

curl
curl -s https://nrthmail.com/api/v1/inbox -H "Authorization: Bearer $TOKEN"
# {"inbox":{"address":"quiet.fjord47@nrthmail.com","status":"active","expires_at":"…",…}}

POST/api/v1/inbox/extend

Bitiş zamanını şimdi + 24 saat olarak yeniler. Döner: {"inbox": Inbox}

DELETE/api/v1/inbox

Kutuyu yakar: mesajlar ve dosyalar hemen silinir, adres 30 gün kilitlenir, token çalışmaz olur. 204 döner.

curl
curl -s -X DELETE https://nrthmail.com/api/v1/inbox -H "Authorization: Bearer $TOKEN"

GET/api/v1/domains

Kutu açılabilecek alan adları. Token gerekmez. Döner: {"domains":[{"domain":"nrthmail.com","default":true}]}

04

Mesajlar

GET/api/v1/inbox/messages

Mesaj özetleri, en yenisi önce. Önceki ETag değerini If-None-Match olarak geri gönderirsen, değişiklik yoksa 304 alırsın: yoklamanın en ucuz yolu.

AdYerTürNot
limitsorguinteger1–100, varsayılan 25.
cursorsorgustringÖnceki sayfanın next_cursor değeri.
sincesorgustringRFC 3339 zaman ya da mesaj kimliği. Yalnızca daha yeni mesajlar.
unseensorgubooleanYalnızca görülmemiş mesajlar için true.
curl
curl -s "https://nrthmail.com/api/v1/inbox/messages?limit=10&unseen=true" \
  -H "Authorization: Bearer $TOKEN"
200 · Yanıt
{
  "data": [
    {
      "id": "msg_01K6P9B7M2C4D8E6F0G3H5J7K9",
      "seq": 3,
      "received_at": "2026-10-03T19:46:02.481Z",
      "from": { "name": "GitHub", "address": "noreply@github.com" },
      "to": "quiet.fjord47+github@nrthmail.com",
      "tag": "github",
      "subject": "Your code is 482913",
      "preview": "Use 482913 to finish signing in…",
      "seen": false,
      "size": 18342,
      "has_attachments": false,
      "attachment_count": 0,
      "codes": ["482913"]
    }
  ],
  "next_cursor": null,
  "has_more": false
}

GET/api/v1/inbox/messages/{id}

Bir mesajın tamamı: metin, temizlenmiş HTML, bağlantılar, kodlar, başlıklar, ekler ve imzalı dosya URL’leri. Döner: {"message": Message}

AdYerTürNot
imagessorgubooleanUzak görsellere izin verilmiş html ve html_url için true.
curl
curl -s https://nrthmail.com/api/v1/inbox/messages/msg_01K6P9B7M2C4D8E6F0G3H5J7K9 \
  -H "Authorization: Bearer $TOKEN"

PATCH/api/v1/inbox/messages/{id}

Mesajı görüldü ya da görülmedi olarak işaretle. Gövde {"seen":true}, tür application/json ya da application/merge-patch+json. Özeti döner.

curl
curl -s -X PATCH https://nrthmail.com/api/v1/inbox/messages/msg_01K6P9B7M2C4D8E6F0G3H5J7K9 \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" -d '{"seen":true}'

DELETE/api/v1/inbox/messages/{id}

Tek bir mesajı siler. 204 döner.

DELETE/api/v1/inbox/messages

Tüm mesajları siler. Kutu ve adres kalır. 204 döner.

GET/api/v1/inbox/messages/{id}/raw

Özgün mesaj, message/rfc822 olarak, <id>.eml adlı indirme şeklinde.

curl
curl -s -OJ https://nrthmail.com/api/v1/inbox/messages/msg_01K6P9B7M2C4D8E6F0G3H5J7K9/raw \
  -H "Authorization: Bearer $TOKEN"

GET/api/v1/inbox/messages/{id}/attachments/{att_id}

Tek bir ek, özgün dosya adıyla ve X-Content-Type-Options: nosniff ile indirme olarak.

05

Uzun yoklama

GET/api/v1/inbox/wait

Bir betikte posta almanın en basit yolu: eşleşen bir mesaj gelene ya da süre dolana kadar bekleyen tek bir istek. since değerinden yeni, eşleşen mesajlar zaten varsa hemen döner.

AdYerTürNot
timeoutsorguinteger1–60 saniye, varsayılan 30.
sincesorgustringRFC 3339 zaman ya da mesaj kimliği. Varsayılan: yok; kutuda zaten olan her mesaj sayılır. Böylece yeni bir kutu, posta beklemeye başlamadan önce düşmüş olsa bile ilk mesajını döndürür.
fromsorgustringGönderende geçmesi gereken metin.
subjectsorgustringKonuda geçmesi gereken metin.

Döner: {"messages":[Message…],"timed_out":false,"waited_ms":4210}. Mesajlar tam Message nesneleridir.

HTTP istemcine timeout değerinden uzun bir zaman aşımı ver. Hiçbir mesajı kaçırmadan döngü kurmak için gördüğün en yeni kimliği since olarak gönder.

# GitHub’dan gelecek bir sonraki mesajı 60 sn’ye kadar bekle.
curl -s "https://nrthmail.com/api/v1/inbox/wait?timeout=60&from=github" \
  -H "Authorization: Bearer $TOKEN"
const API = 'https://nrthmail.com/api/v1';
const auth = { Authorization: 'Bearer nrth_…' };

// Beklemeye devam et, hiçbirini kaçırma.
let since = new Date().toISOString();
for (;;) {
  const url = `${API}/inbox/wait?timeout=60&since=${encodeURIComponent(since)}`;
  const { messages } = await fetch(url, { headers: auth }).then((r) => r.json());
  for (const m of messages) console.log(m.subject, m.codes);
  if (messages.length) since = messages.map((m) => m.id).sort().at(-1);
}
import requests
from datetime import datetime, timezone

API = "https://nrthmail.com/api/v1"
auth = {"Authorization": "Bearer nrth_…"}

# Beklemeye devam et, hiçbirini kaçırma.
since = datetime.now(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
while True:
    r = requests.get(f"{API}/inbox/wait", headers=auth, timeout=75,
                     params={"timeout": 60, "since": since})
    messages = r.json()["messages"]
    for m in messages:
        print(m["subject"], m["codes"])
    if messages:
        since = max(m["id"] for m in messages)
06

Canlı olaylar (SSE)

GET/api/v1/inbox/events

Her yeni mesajı düştüğü anda ileten bir Server-Sent Events akışı. Yanıtı akış olarak okuyabilen koddan (fetch, requests, curl) Authorization başlığıyla aç. Tarayıcıdaki EventSource başlık gönderemez: önce bir bilet al ve ?ticket= ile ilet.

OlayVeriNe zaman
messageMessageSummaryYeni mesaj geldi. SSE id alanı mesaj kimliğidir.
message_deleted{"id"}Bir mesaj silindi.
inboxInboxKutu uzatıldı ya da geri getirildi.
expired{}Kutunun süresi doldu ya da yakıldı. Akış kapanır.
AdYerTürNot
ticketsorgustringBaşlık yerine POST /inbox/tickets ile alınan bilet.
Last-Event-IDbaşlıkstringYeniden bağlanınca bu kimlikten yeni mesajları tekrar gönderir.

Akış retry: 3000 ile başlar ve 20 saniyede bir : ping yorumu gönderir; her ping kutuyu da canlı tutar. Yeniden bağlanırken Last-Event-ID gönderirsen kaçırdığın mesajlar tekrar gelir. Yanıt başlıkları: Content-Type: text/event-stream, Cache-Control: no-cache, no-transform, X-Accel-Buffering: no.

curl -N https://nrthmail.com/api/v1/inbox/events \
  -H "Authorization: Bearer $TOKEN"

# retry: 3000
#
# event: message
# id: msg_01K6P9B7M2C4D8E6F0G3H5J7K9
# data: {"id":"msg_01K6P9B7M2C4D8E6F0G3H5J7K9","seq":3,"subject":"Your code is 482913","codes":["482913"],…}
#
# : ping
const API = 'https://nrthmail.com/api/v1';
const token = 'nrth_…';

// fetch ile akış: token başlıkta kalır.
const res = await fetch(`${API}/inbox/events`, {
  headers: { Authorization: `Bearer ${token}`, Accept: 'text/event-stream' },
});
const reader = res.body.pipeThrough(new TextDecoderStream()).getReader();
let buffer = '';
for (;;) {
  const { value, done } = await reader.read();
  if (done) break;
  buffer += value;
  let end;
  while ((end = buffer.indexOf('\n\n')) >= 0) {
    const block = buffer.slice(0, end);
    buffer = buffer.slice(end + 2);
    let event = 'message', data = '';
    for (const line of block.split('\n')) {
      if (line.startsWith('event:')) event = line.slice(6).trim();
      else if (line.startsWith('data:')) data += line.slice(5).trim();
    }
    if (event === 'message' && data) console.log(JSON.parse(data).codes);
  }
}

// Biletle, tarayıcının kendi EventSource’u.
const { ticket } = await fetch(`${API}/inbox/tickets`, {
  method: 'POST', headers: { Authorization: `Bearer ${token}` },
}).then((r) => r.json());
const source = new EventSource(`${API}/inbox/events?ticket=${ticket}`);
source.addEventListener('message', (e) => console.log(JSON.parse(e.data).subject));
source.addEventListener('expired', () => source.close());
// Biletler tek kullanımlık: hata olursa yenisini alıp yeniden bağlan.
source.onerror = () => source.close();
import json
import requests

API = "https://nrthmail.com/api/v1"
auth = {"Authorization": "Bearer nrth_…", "Accept": "text/event-stream"}

# requests ile akış.
with requests.get(f"{API}/inbox/events", headers=auth, stream=True, timeout=(10, 90)) as r:
    event, data = "message", ""
    for line in r.iter_lines(decode_unicode=True):
        if line.startswith("event:"):
            event = line[6:].strip()
        elif line.startswith("data:"):
            data += line[5:].strip()
        elif line == "":
            if event == "message" and data:
                print(json.loads(data)["codes"])
            event, data = "message", ""

POST/api/v1/inbox/tickets

EventSource için tek kullanımlık, 60 saniye geçerli bilet. Her yeniden bağlanmada yenisini al. Döner: {"ticket":"tk_…","expires_at":"…"}

07

Paylaşım ve QR

Bir kutuyu token’ı URL’ye koymadan başka bir cihaza taşı. Paylaşım kodu tek kullanımlıktır ve 120 saniye yaşar; diğer tarafta kullanıldığında token’ı döner.

POST/api/v1/inbox/share

Paylaşım kodu oluşturur. url değeri https://nrthmail.com/#share=CODE biçimindedir; kod, tarayıcıların sunucuya hiç göndermediği parça (fragment) kısmındadır. Döner: {"code","url","expires_at"}

POST/api/v1/share/{code}

Paylaşım kodunu kullanır. Token gerekmez. Token’ı ve kutuyu döner; kod bilinmiyorsa, kullanılmışsa ya da süresi dolmuşsa 404.

GET/api/v1/inbox/qr.svg

Taze bir paylaşım URL’sinin QR kodu (SVG). Her çağrı yeni bir kod üretir; X-Share-Expires ne zaman geçersiz olacağını söyler. Modüller şeffaf zemin üzerinde #000: açık renkli bir yüzeyde göster.

curl
curl -s -X POST https://nrthmail.com/api/v1/inbox/share -H "Authorization: Bearer $TOKEN"
# {"code":"K7QF2M9XWD4A","url":"https://nrthmail.com/#share=K7QF2M9XWD4A","expires_at":"2026-10-03T19:48:19.123Z"}

# Diğer cihazda, token gerekmeden:
curl -s -X POST https://nrthmail.com/api/v1/share/K7QF2M9XWD4A

curl -s https://nrthmail.com/api/v1/inbox/qr.svg -o inbox-qr.svg \
  -H "Authorization: Bearer $TOKEN"
08

İmzalı dosya URL’leri

<a>, <img> ve <iframe> Authorization başlığı gönderemez; bu yüzden tam bir Message imzalı bağlantılar taşır: html_url, raw_url ve her ek için bir url. Biçimleri /api/v1/files/{raw|att|html}/{id}?exp=…&sig=… şeklindedir ve bir saat çalışırlar. Sonra 403 forbidden döner; taze bağlantılar için mesajı yeniden çek.

html_url, temizlenmiş e-postayı sıkı bir sandbox CSP altında, iframe’e hazır tam bir HTML belgesi olarak sunar. Betikler, formlar ve eklentiler çıkarılır, bağlantılar yeni sekmede açılır; ?images=true istemedikçe uzak görseller engelli kalır.

09

Nesneler

Inbox

AlanTürAçıklama
idstringibx_ + ULID.
addressstringTam adres, küçük harfle.
local_partstring@ işaretinden önceki kısım.
domainstring@ işaretinden sonraki kısım.
custombooleanİsim üretilmeyip seçildiyse true.
statusstringactive, expired ya da burned.
created_attimeKutunun açıldığı an.
expires_attimeYeniden kullanılmazsa silineceği an.
ttl_secondsintegerSon kullanımdan sonraki ömür, saniye olarak.
message_countintegerKutudaki mesaj sayısı.
unseen_countintegerHenüz görüldü işaretlenmemiş mesajlar.

MessageSummary

AlanTürAçıklama
idstringmsg_ + ULID. Geliş sırasına göre sıralanır.
seqintegerKutuya özgü sayaç: 1, 2, 3…
received_attimeMesajın geldiği an.
from{name, address}From başlığındaki gönderen. name null olabilir.
tostringMesajın gönderildiği adres, varsa +etiket dahil.
tagstring · null+etiket kısmı ya da null.
subjectstring · nullKonu satırı ya da null.
previewstringMetnin ilk 160 karakteri.
seenbooleanGörüldü olarak işaretlenip işaretlenmediği.
sizeintegerHam mesajın bayt cinsinden boyutu.
has_attachmentsbooleanEki olup olmadığı.
attachment_countintegerEk sayısı.
codesstring[]İçinde bulunan en fazla 3 doğrulama kodu, en olası önce.

Message

Bir MessageSummary ile şu alanlar:

AlanTürAçıklama
cc{name, address}[]Bilgi (Cc) alıcıları.
reply_tostring · nullReply-To adresi ya da null.
textstring · nullDüz metin gövde ya da null.
htmlstring · nullTemizlenmiş HTML gövde. HTML kısmı yoksa ya da zamanında işlenemeyecek kadar karmaşıksa null (text alanını kullan). ?images=true yoksa uzak görseller engellidir.
html_urlstring · nullTemizlenmiş HTML’in tam belge olarak imzalı URL’si; iframe için. Mesajın HTML kısmı yoksa null.
remote_images{blocked, count, trackers}Uzak görsellerin engellenip engellenmediği, kaç tane olduğu ve kaçının izleyiciye benzediği.
auth{spf, dkim, dmarc}SPF, DKIM ve DMARC sonuçları: pass fail softfail neutral none unknown.
headers{name, value}[]İlk 60 başlık; değerler en fazla 1000 karakter.
links{url, text, kind}[]En fazla 6 bağlantı. kind değeri verify ya da other; doğrulama bağlantıları önce gelir.
attachmentsAttachment[]Ekler, Attachment nesneleri olarak.
raw_urlstringÖzgün .eml dosyasının imzalı URL’si.

Attachment

AlanTürAçıklama
idstringatt_ + ULID.
filenamestring · nullÖzgün dosya adı ya da null.
content_typestringMIME türü.
sizeintegerBayt cinsinden boyut.
inlinebooleanHTML gövdeye gömülü görsellerde true.
content_idstring · nullGövdedeki parçalar için cid: kimliği ya da null.
urlstringİmzalı indirme URL’si.

Problem

AlanTürAçıklama
typestringBu sayfadaki hata koduna bağlantı.
titlestringHTTP durum metni.
statusintegerHTTP durum kodu.
codestringDeğişmeyen hata kodu. Buna göre dallan.
detailstringNeyin ters gittiği, insan diliyle.
errorsobject[]Yalnızca validation_failed için: [{field, code, message}].
10

Hatalar

2xx dışındaki her yanıt RFC 9457 application/problem+json biçimindedir. code alanına göre dallan; detail insanlar için.

KodDurumAnlamı
invalid_request400Bozuk JSON ya da JSON nesnesi olmayan bir gövde.
unauthorized401Token eksik ya da bilinmiyor. WWW-Authenticate: Bearer ile gelir.
forbidden403İmzalı dosya URL’si hatalı ya da süresi dolmuş.
not_found404Böyle bir mesaj, ek, token ya da paylaşım kodu yok.
address_unavailable409İsim alınmış ya da bir kutu kapandıktan sonra 30 günlük kilitte.
gone410Kutunun süresi doldu ya da yakıldı. Süresi dolanlar token’la geri getirilebilir.
payload_too_large413İstek gövdesi çok büyük.
unsupported_media_type415Gövde için yanlış Content-Type.
validation_failed422Bir gövde alanı ya da sorgu parametresi doğrulamadan geçmedi; errors alanına bak.
name_reserved422admin, postmaster ya da support gibi isimler alınamaz.
internal500Bizim hatamız. Yeniden dene.
404 · application/problem+json
{
  "type": "https://nrthmail.com/docs#error-not_found",
  "title": "Not Found",
  "status": 404,
  "code": "not_found",
  "detail": "No message msg_01K6P9B7M2C4D8E6F0G3H5J7K9 in this inbox"
}
11

Sınırlar

Bunların hiçbiri istek sınırı değil. Diski temiz tutarlar ki servis ücretsiz kalabilsin.

NeSınır
İsteklerSınır yok. Anahtar yok, kota yok.
Mesaj boyutu25 MB. Daha büyük postayı posta sunucusu reddeder.
Kutu başına mesaj100. Yenisi gelince en eskisi silinir.
Mesaj yaşıEn fazla 7 gün; kullanılmaya devam eden kutuda bile.
Kutu ömrüSon istekten ya da açık akıştan 24 saat sonra.
Adres kilidiSüre dolduktan ya da yakıldıktan sonra 30 gün. Bu sürede süresi dolmuş bir kutuyu yalnızca eski token geri getirebilir; yakılmış kutu geri gelmez.
Uzun yoklama süresiİstek başına en fazla 60 sn.
Sayfa boyutuEn fazla 100 mesaj.
Paylaşım kodu · bilet · imzalı URL120 sn · 60 sn · 1 saat geçerli; belirtilenler tek kullanımlık.

Yoklama da çalışır, kimse seni durdurmaz. Uzun yoklama ya da olay akışı postayı sana daha az istekle, daha çabuk ulaştırır.

12

İstatistik ve OpenAPI

GET/api/v1/stats

Tüm servis için herkese açık sayaçlar. Döner: {"messages_24h":1204,"inboxes_24h":311,"inboxes_active":97}

GET/api/v1/openapi.json

Bu sayfadaki her şeyin OpenAPI 3.1 tanımı; kod üreticileri ve API istemcileri için.

Makinenin okuyacağı tam tanım /api/v1/openapi.json adresinde.