API
API dla deweloperów
Trzy wywołania: utwórz test, wyślij maila, odczytaj wynik. JSON, klucz w nagłówku, OpenAPI do wygenerowania klienta.
Uwierzytelnianie
Nagłówek X-API-Key (lub Authorization: Bearer). Klucz tworzysz w panelu; bez klucza działają limity darmowe per IP.
curl -X POST https://dev.spamtest.pl/api/v1/tests \
-H "X-API-Key: st_..." -H "Content-Type: application/json" \
-d '{"lang":"pl","placement":false}'
{ "token":"k7m2xp9q4w", "address":"test-k7m2xp9q4w@dev.spamtest.pl",
"url":"https://dev.spamtest.pl/t/k7m2xp9q4w", "seed_addresses":[] }
Przebieg testu
- POST /api/v1/tests → token i adres test-<token>@spamtest.pl (opcjonalnie seed_addresses dla inbox placement).
- Wyślij wiadomość na ten adres (i adresy seed) ze swojego systemu.
- GET /api/v1/tests/{token} — status waiting → received → done; wynik, werdykt, findings z tytułem i poprawką w wybranym języku, pełne fakty.
curl https://dev.spamtest.pl/api/v1/tests/k7m2xp9q4w -H "X-API-Key: st_..."
{ "status":"done", "score":91.0, "verdict":"inbox",
"result": { "findings":[{"key":"dmarc_p_none","severity":"minor","points":3,"title":"…","fix":"…"}],
"facts": { "envelope":{…}, "rspamd":{"auth":{"spf":"pass","dkim":"pass","dmarc":"pass"}}, … } } }
Endpointy
| Endpoint | Opis | Klucz |
|---|---|---|
POST /api/v1/tests | Nowy test; z kluczem bez limitu dziennego, placement: true wymaga kredytu | opcjonalny |
GET /api/v1/tests/{token} | Status i raport testu | — |
GET /api/v1/domain/{domain} | Audyt DNS domeny (SPF, DKIM, DMARC, MX, MTA-STS, TLS-RPT, BIMI, DBL); cache 10 min | opcjonalny |
GET /api/v1/blacklist/{ip} | Sprawdzenie IP na 8 DNSBL + FCrDNS | opcjonalny |
Limity
Free: 3 testy/dzień i 30 sprawdzeń DNS per IP. Plany: wg cennika; przekroczenie zwraca 429 z used/limit. Wyniki testów są dostępne 90 dni.
Integracja z CI/CD
Najprostszy strażnik regresji dostarczalności: po deployu wyślij mail transakcyjny na adres testowy i przerwij pipeline, gdy wynik spadnie poniżej progu.
# GitHub Actions / any CI — fail the build when the deliverability score drops
TOKEN=$(curl -s -X POST https://dev.spamtest.pl/api/v1/tests -H "X-API-Key: $SPAMTEST_KEY" | jq -r .token)
python send_test_mail.py "test-$TOKEN@dev.spamtest.pl"
sleep 20
SCORE=$(curl -s https://dev.spamtest.pl/api/v1/tests/$TOKEN | jq -r .score)
[ "${SCORE%.*}" -ge 85 ] || { echo "deliverability score $SCORE < 85"; exit 1; }