{"id":12227,"date":"2026-07-13T10:23:00","date_gmt":"2026-07-13T10:23:00","guid":{"rendered":"https:\/\/www.mailcraft.eu\/?p=12227"},"modified":"2026-08-09T19:01:33","modified_gmt":"2026-08-09T19:01:33","slug":"api-email-marketing-pierwszy-request","status":"publish","type":"post","link":"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/","title":{"rendered":"REST API: pierwszy request w dziesi\u0119\u0107 minut"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Pierwszy request do REST API wysy\u0142kowego zajmuje mniej czasu ni\u017c konfiguracja klienta pocztowego. Serio. Potrzebujesz klucza, zweryfikowanej domeny i jednego polecenia w terminalu. Cel tego tekstu jest w\u0105ski: doprowadzi\u0107 ci\u0119 do jednego dzia\u0142aj\u0105cego wywo\u0142ania, kt\u00f3re ko\u0144czy si\u0119 mailem w skrzynce. Pe\u0142na integracja, webhooki i higiena listy &#8211; to p\u00f3\u017aniej. Najpierw musisz zobaczy\u0107 kod 202 i wiadomo\u015b\u0107, kt\u00f3r\u0105 sam wys\u0142a\u0142e\u015b.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<label for=\"ez-toc-cssicon-toggle-item-6a825d300aba5\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"ez-toc-cssicon\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #102830;color:#102830\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #102830;color:#102830\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a825d300aba5\"  \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Po_co_ci_REST_API_do_wysylki_maili\" >Po co ci REST API do wysy\u0142ki maili<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Czego_potrzebujesz_przed_pierwszym_requestem\" >Czego potrzebujesz przed pierwszym requestem<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Anatomia_requestu_uwierzytelnienie_endpoint_payload\" >Anatomia requestu: uwierzytelnienie, endpoint, payload<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Naglowki_bez_ktorych_sie_nie_obejdzie\" >Nag\u0142\u00f3wki, bez kt\u00f3rych si\u0119 nie obejdzie<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Metoda_i_zawartosc_body\" >Metoda i zawarto\u015b\u0107 body<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Pierwszy_request_krok_po_kroku\" >Pierwszy request krok po kroku<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Kody_odpowiedzi_i_bledy_ktore_zobaczysz_najpierw\" >Kody odpowiedzi i b\u0142\u0119dy, kt\u00f3re zobaczysz najpierw<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Od_jednego_requestu_do_produkcji_co_zrobic_dalej\" >Od jednego requestu do produkcji: co zrobi\u0107 dalej<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Zgoda_i_prawo_to_nie_jest_osobny_etap\" >Zgoda i prawo: to nie jest osobny etap<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.mailcraft.eu\/pl\/api-email-marketing-pierwszy-request\/#Podsumowanie_dziesiec_minut_to_dopiero_poczatek\" >Podsumowanie: dziesi\u0119\u0107 minut to dopiero pocz\u0105tek<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Po_co_ci_REST_API_do_wysylki_maili\"><\/span>Po co ci REST API do wysy\u0142ki maili<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do newslettera panel wystarcza. Wrzucasz tre\u015b\u0107, wybierasz segment, planujesz wysy\u0142k\u0119 i masz spok\u00f3j. API zaczyna si\u0119 liczy\u0107 wtedy, gdy wiadomo\u015b\u0107 musi wyj\u015b\u0107 w sekund\u0119 po zdarzeniu w twoim systemie, a nikt nie siedzi przy przegl\u0105darce.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zastosowania? Przewidywalne: potwierdzenie zam\u00f3wienia, reset has\u0142a, powiadomienie z aplikacji mobilnej, synchronizacja listy odbiorc\u00f3w z baz\u0105 CRM. Wsp\u00f3lny mianownik to zdarzenie w kodzie, kt\u00f3re ma natychmiast poci\u0105gn\u0105\u0107 za sob\u0105 maila. Je\u015bli tw\u00f3j system ma ju\u017c gotowy konektor, sprawd\u017a najpierw <a href=\"https:\/\/www.mailcraft.eu\/pl\/integrations\/\">list\u0119 dost\u0119pnych integracji<\/a> &#8211; cz\u0119\u015b\u0107 pracy mo\u017ce by\u0107 zrobiona za ciebie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Technicznie nie ma tu magii. REST API to zwyk\u0142y HTTP: adres zasobu, metoda, nag\u0142\u00f3wki, JSON w body i kod odpowiedzi. Tyle musisz umie\u0107 na start. Reszta to szczeg\u00f3\u0142y konkretnej dokumentacji, kt\u00f3rych nauczysz si\u0119 przy drugim i trzecim wywo\u0142aniu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Od razu rozdzielmy dwie drogi. SMTP zostaw aplikacjom, kt\u00f3re nie potrafi\u0105 inaczej &#8211; starym systemom ERP, wtyczkom, drukarkom sieciowym. API daje ci co\u015b, czego SMTP nie da wygodnie: identyfikator wiadomo\u015bci i status, po kt\u00f3rym mo\u017cesz p\u00f3\u017aniej odpyta\u0107 o los przesy\u0142ki. Z SMTP masz odpowied\u017a serwera i nadziej\u0119. Z API masz obiekt, do kt\u00f3rego wracasz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Czego_potrzebujesz_przed_pierwszym_requestem\"><\/span>Czego potrzebujesz przed pierwszym requestem<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lista jest kr\u00f3tka i nie ma na niej niczego egzotycznego:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Klucz API<\/strong> wygenerowany w panelu, najlepiej osobny dla \u015brodowiska testowego.<\/li>\n<li><strong>Zweryfikowana domena nadawcy<\/strong> z ustawionym SPF i DKIM.<\/li>\n<li><strong>Adres From<\/strong> na tej w\u0142a\u015bnie domenie, nie na gmailu ani na domenie klienta.<\/li>\n<li><strong>Terminal z curl<\/strong> albo dowolny klient HTTP: Postman, Insomnia, wbudowany klient w IDE.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Klucz trzymasz w zmiennej \u015brodowiskowej albo w mened\u017cerze sekret\u00f3w. Nigdy w repozytorium, nigdy w kodzie frontendu. Klucz w JavaScripcie przegl\u0105darki oznacza, \u017ce ka\u017cdy odwiedzaj\u0105cy twoj\u0105 stron\u0119 mo\u017ce wysy\u0142a\u0107 maile z twojej domeny. Widzieli\u015bmy takie wpadki i ko\u0144cz\u0105 si\u0119 czyszczeniem reputacji przez kilka tygodni.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rekordy DNS ustaw zanim wy\u015blesz cokolwiek. Bez SPF i DKIM testowa wiadomo\u015b\u0107 wpadnie do spamu i zaburzy ci obraz sytuacji &#8211; zaczniesz szuka\u0107 b\u0142\u0119du w kodzie, a problem siedzi w strefie DNS. Return-Path i PTR to zadanie infrastruktury wysy\u0142kowej, w naszym przypadku w\u0142asnej floty serwer\u00f3w. Nie musisz ich konfigurowa\u0107, ale dobrze wiedzie\u0107, \u017ce kto\u015b je trzyma i \u017ce maj\u0105 wp\u0142yw na to, czy filtry ci ufaj\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tip:<\/strong> pierwszy adres testowy za\u0142\u00f3\u017c na skrzynce, do kt\u00f3rej masz pe\u0142ny dost\u0119p administracyjny. Musisz m\u00f3c obejrze\u0107 surowe nag\u0142\u00f3wki wiadomo\u015bci, bo tam wida\u0107 wynik uwierzytelnienia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Anatomia_requestu_uwierzytelnienie_endpoint_payload\"><\/span>Anatomia requestu: uwierzytelnienie, endpoint, payload<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Uwierzytelnienie idzie nag\u0142\u00f3wkiem <em>Authorization<\/em> z tokenem typu Bearer. Klucz w nag\u0142\u00f3wku, nigdy w query stringu. Query trafia do log\u00f3w proxy, do historii przegl\u0105darki i do system\u00f3w monitoringu, wi\u0119c sekret w adresie URL to sekret ujawniony.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Naglowki_bez_ktorych_sie_nie_obejdzie\"><\/span>Nag\u0142\u00f3wki, bez kt\u00f3rych si\u0119 nie obejdzie<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Drugi obowi\u0105zkowy nag\u0142\u00f3wek to <em>Content-Type: application\/json<\/em> plus faktycznie poprawny JSON w body. Brak tego nag\u0142\u00f3wka albo liter\u00f3wka w jego warto\u015bci to najcz\u0119stsza przyczyna odpowiedzi 415. Sprawd\u017a te\u017c przecinki i cudzys\u0142owy &#8211; JSON nie wybacza, a komunikat b\u0142\u0119du bywa lakoniczny.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Metoda_i_zawartosc_body\"><\/span>Metoda i zawarto\u015b\u0107 body<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wysy\u0142k\u0119 robisz metod\u0105 POST na zas\u00f3b wiadomo\u015bci, bo tworzysz nowy obiekt. GET s\u0142u\u017cy do odpytywania o status ju\u017c utworzonej wiadomo\u015bci. Zwyk\u0142a semantyka REST, ta sama co w ka\u017cdym innym API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Minimalny payload ma cztery pola: nadawca, odbiorca, temat i tre\u015b\u0107 w HTML albo w czystym tek\u015bcie. Reszta jest opcjonalna &#8211; kopie, za\u0142\u0105czniki, tagi, nag\u0142\u00f3wki w\u0142asne, planowany czas wysy\u0142ki. Nie dok\u0142adaj ich przy pierwszej pr\u00f3bie. Ka\u017cde dodatkowe pole to dodatkowe miejsce na b\u0142\u0105d walidacji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przy ponawianiu \u017c\u0105da\u0144 standardem bran\u017cowym jest klucz idempotencji przesy\u0142any nag\u0142\u00f3wkiem. Dzi\u0119ki niemu retry po timeoucie nie wy\u015ble maila drugi raz. Zaimplementuj go od pocz\u0105tku, bo dopisywanie tego p\u00f3\u017aniej oznacza przepisanie warstwy obs\u0142ugi b\u0142\u0119d\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pierwszy_request_krok_po_kroku\"><\/span>Pierwszy request krok po kroku<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Wygeneruj klucz API w panelu i zapisz go w zmiennej \u015brodowiskowej.<\/li>\n<li>Sprawd\u017a rekordy DNS domeny nadawcy: SPF, DKIM, docelowo te\u017c DMARC.<\/li>\n<li>Z\u0142\u00f3\u017c minimalny JSON z nadawc\u0105, odbiorc\u0105, tematem i tre\u015bci\u0105.<\/li>\n<li>Wy\u015blij POST curlem z nag\u0142\u00f3wkami Authorization i Content-Type.<\/li>\n<li>Odczytaj kod odpowiedzi i tre\u015b\u0107 zwr\u00f3conego obiektu.<\/li>\n<li>Otw\u00f3rz skrzynk\u0119 i obejrzyj wiadomo\u015b\u0107 razem z nag\u0142\u00f3wkami.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Wywo\u0142anie w curlu ma sta\u0142\u0105 struktur\u0119 niezale\u017cnie od dostawcy: <em>curl -X POST<\/em>, adres zasobu wiadomo\u015bci, <em>-H &#8222;Authorization: Bearer $KLUCZ&#8221;<\/em>, <em>-H &#8222;Content-Type: application\/json&#8221;<\/em> i <em>-d<\/em> z twoim JSON-em. Dok\u0142adny adres endpointu bierzesz z dokumentacji swojego dostawcy, bo ta cz\u0119\u015b\u0107 r\u00f3\u017cni si\u0119 wsz\u0119dzie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Odpowied\u017a 2xx zawiera identyfikator wiadomo\u015bci. Zapisz go od razu, najlepiej w logu aplikacji obok identyfikatora zam\u00f3wienia czy u\u017cytkownika. Po tym identyfikatorze odpytujesz p\u00f3\u017aniej o dostarczenie, otwarcie i bounce. Bez niego masz maila, kt\u00f3rego nie umiesz odnale\u017a\u0107 w statystykach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tip:<\/strong> pierwszy request wy\u015blij do siebie, drugi do skrzynki w zupe\u0142nie innej domenie i u innego dostawcy. Dopiero por\u00f3wnanie dw\u00f3ch odbiorc\u00f3w pokazuje, czy uwierzytelnienie faktycznie dzia\u0142a, czy tylko tw\u00f3j w\u0142asny serwer jest wobec ciebie wyrozumia\u0142y.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Kody_odpowiedzi_i_bledy_ktore_zobaczysz_najpierw\"><\/span>Kody odpowiedzi i b\u0142\u0119dy, kt\u00f3re zobaczysz najpierw<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Kody 401 i 403 oznaczaj\u0105 problem z kluczem. Zwykle klucz z innego \u015brodowiska, klucz skopiowany ze spacj\u0105 na ko\u0144cu albo klucz bez uprawnienia do konkretnego zasobu. Sprawd\u017a to, zanim zaczniesz grzeba\u0107 w payloadzie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kod 422 przy poprawnym sk\u0142adniowo JSON-ie to walidacja tre\u015bci. Najcz\u0119\u015bciej nadawca spoza zweryfikowanej domeny, pusty temat albo adres odbiorcy w z\u0142ym formacie. Je\u015bli b\u0142\u0105d dotyczy odbiorcy, wygodniej wy\u0142apa\u0107 go wcze\u015bniej &#8211; <a href=\"https:\/\/www.mailcraft.eu\/pl\/weryfikacja-adresow-email\/\">weryfikacja adresu bez wysy\u0142ania maila<\/a> odsiewa liter\u00f3wki i martwe skrzynki, zanim trafi\u0105 do payloadu. Komunikat zwrotny zwykle wskazuje pole, wi\u0119c czytaj body odpowiedzi, nie tylko status.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kod 429 to limit \u017c\u0105da\u0144. Obs\u0142u\u017c nag\u0142\u00f3wek z czasem oczekiwania i zastosuj wyk\u0142adniczy backoff. P\u0119tla ponawiaj\u0105ca \u017c\u0105danie bez przerwy tylko pog\u0142\u0119bia problem i bywa traktowana jak nadu\u017cycie. Warto przy okazji sprawdzi\u0107 <a href=\"https:\/\/www.mailcraft.eu\/pl\/pricing\/\">limity wysy\u0142ki w poszczeg\u00f3lnych planach<\/a>, bo cz\u0119\u015b\u0107 problem\u00f3w z 429 to po prostu za ciasny pakiet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">B\u0142\u0119dy 5xx le\u017c\u0105 po stronie API. To sygna\u0142 do ponowienia z kluczem idempotencji, nie do modyfikowania payloadu. Zmiana tre\u015bci przy b\u0142\u0119dzie serwera to typowa pomy\u0142ka, kt\u00f3ra potem generuje duplikaty.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No i jedna rzecz wa\u017cniejsza od reszty: kod 2xx znaczy <strong>przyj\u0119te do wysy\u0142ki<\/strong>, a nie <strong>dostarczone<\/strong>. Wiadomo\u015b\u0107 stoi w kolejce. O tym, czy dotar\u0142a, dowiesz si\u0119 dopiero ze zdarzenia zwrotnego.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Od_jednego_requestu_do_produkcji_co_zrobic_dalej\"><\/span>Od jednego requestu do produkcji: co zrobi\u0107 dalej<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Webhooki s\u0105 nast\u0119pnym krokiem, nie opcj\u0105. Podepnij zdarzenia dostarczenia, otwarcia, klikni\u0119cia, bounce&#8217;u twardego i mi\u0119kkiego oraz skargi. Bez nich nie masz \u017cadnego obrazu dostarczalno\u015bci &#8211; widzisz tylko, \u017ce tw\u00f3j kod zawo\u0142a\u0142 API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Twarde bounce&#8217;y i skargi usuwaj z listy automatycznie, w tej samej transakcji, w kt\u00f3rej je odbierasz. R\u0119czne czyszczenie zawsze si\u0119 rozje\u017cd\u017ca, a ka\u017cda kolejna wysy\u0142ka na martwy adres podcina reputacj\u0119 nadawcy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rozdziel ruch transakcyjny od marketingowego, najlepiej na osobne domeny lub subdomeny. Kampania z wysokim odsetkiem skarg nie mo\u017ce ci\u0105gn\u0105\u0107 w d\u00f3\u0142 reset\u00f3w has\u0142a &#8211; to wiadomo\u015bci o zupe\u0142nie innej wadze dla u\u017cytkownika. Je\u015bli szukasz miejsca, w kt\u00f3rym oba typy ruchu s\u0105 obs\u0142u\u017cone na w\u0142asnej flocie serwer\u00f3w, sprawd\u017a <a href=\"https:\/\/mailcraft.eu\" target=\"_blank\" rel=\"noopener\">platform\u0119 do email marketingu MailCraft<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nowa domena wymaga warmupu. Rosn\u0105cy wolumen przez kilka tygodni, obserwacja zachowania du\u017cych filtr\u00f3w, reakcja na pierwszy spadek zamiast czekania. Wychodzenie z blokady trwa d\u0142u\u017cej ni\u017c jej unikni\u0119cie. Przy wi\u0119kszym wolumenie musisz te\u017c spe\u0142ni\u0107 <a href=\"https:\/\/www.mailcraft.eu\/pl\/wymogi-gmail-yahoo-nadawcy-masowi\/\">wymogi Gmaila i Yahoo dla nadawc\u00f3w masowych<\/a>, bo bez nich sam warmup niczego nie za\u0142atwi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uczciwie o granicach: cz\u0119\u015b\u0107 rzeczy z naszej roadmapy nie jest jeszcze dost\u0119pna w panelu. Opisujemy je tutaj jako praktyk\u0119 bran\u017cow\u0105, bo tak si\u0119 to rozwi\u0105zuje, a nie jako gotow\u0105 funkcj\u0119 do klikni\u0119cia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Zgoda_i_prawo_to_nie_jest_osobny_etap\"><\/span>Zgoda i prawo: to nie jest osobny etap<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">RODO i artyku\u0142 398 prawa komunikacji elektronicznej obowi\u0105zuj\u0105 tak\u017ce w B2B. Adres firmowy nie jest wyj\u0105tkiem, je\u015bli prowadzi do konkretnej osoby. Za\u0142o\u017cenie, \u017ce mo\u017cna pisa\u0107 do firm bez zgody, to kosztowna pomy\u0142ka.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zapisuj dow\u00f3d zgody: znacznik czasu, adres IP, \u017ar\u00f3d\u0142o zapisu i tre\u015b\u0107 klauzuli w brzmieniu z dnia jej udzielenia. P\u00f3\u017aniejsza zmiana regulaminu nie uniewa\u017cnia starej zgody, ale musisz umie\u0107 pokaza\u0107, na co dok\u0142adnie kto\u015b si\u0119 zgodzi\u0142.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Transakcyjne i marketingowe opieraj\u0105 si\u0119 na r\u00f3\u017cnych podstawach prawnych. Nie doklejaj oferty do potwierdzenia zam\u00f3wienia &#8211; jedno zdanie promocyjne zmienia kwalifikacj\u0119 ca\u0142ej wiadomo\u015bci.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rezygnacja musi dzia\u0142a\u0107 przez API tak samo szybko jak w panelu. Bez op\u00f3\u017anienia, bez dodatkowych krok\u00f3w dla odbiorcy, bez logowania. Utrudniona rezygnacja ko\u0144czy si\u0119 klikni\u0119ciem w przycisk zg\u0142oszenia spamu, a to boli bardziej ni\u017c utrata adresu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zgodno\u015b\u0107 przek\u0142ada si\u0119 wprost na dostarczalno\u015b\u0107. Czysta lista ze zgod\u0105 generuje mniej skarg, a mniej skarg to lepsza reputacja nadawcy u du\u017cych filtr\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Podsumowanie_dziesiec_minut_to_dopiero_poczatek\"><\/span>Podsumowanie: dziesi\u0119\u0107 minut to dopiero pocz\u0105tek<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pierwszy request faktycznie zajmuje kilka minut. Reszta pracy to obs\u0142uga b\u0142\u0119d\u00f3w, webhooki i higiena listy &#8211; i tam schodzi wi\u0119kszo\u015b\u0107 czasu integracji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kolejno\u015b\u0107, kt\u00f3ra si\u0119 sprawdza: najpierw DNS, potem jeden mail do siebie, nast\u0119pnie obs\u0142uga kod\u00f3w odpowiedzi, potem webhooki, dopiero na ko\u0144cu wolumen. Odwr\u00f3cenie tej kolejno\u015bci ko\u0144czy si\u0119 blokad\u0105 przy pierwszej wi\u0119kszej wysy\u0142ce.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bez SPF, DKIM i reakcji na bounce nawet technicznie poprawny request nie da ci dostarczalno\u015bci. API dowozi wiadomo\u015b\u0107 do kolejki, o reszt\u0119 dbaj\u0105 uwierzytelnienie domeny i jako\u015b\u0107 listy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli twoja integracja jest nietypowa &#8211; w\u0142asny system kolejkowania, wysokie szczyty wolumenu, migracja z innej platformy &#8211; napisz do naszego zespo\u0142u. Przejdziemy przez to razem, bez po\u015bpiechu i bez sztucznych termin\u00f3w.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pierwszy request do REST API wysy\u0142kowego zajmuje mniej czasu ni\u017c konfiguracja klienta pocztowego. Serio. Potrzebujesz klucza, zweryfikowanej domeny i jednego polecenia w terminalu. Cel tego tekstu jest w\u0105ski: doprowadzi\u0107 ci\u0119 do jednego dzia\u0142aj\u0105cego wywo\u0142ania, kt\u00f3re ko\u0144czy si\u0119 mailem w skrzynce&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":12225,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[247],"tags":[257,283,261,285],"class_list":["post-12227","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-marketing-emailowy","tag-email-marketing","tag-integracje","tag-poradnik","tag-rest-api"],"acf":[],"uagb_featured_image_src":{"full":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680.jpg",1200,800,false],"thumbnail":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680-150x150.jpg",150,150,true],"medium":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680-300x200.jpg",300,200,true],"medium_large":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680-768x512.jpg",768,512,true],"large":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680-1024x683.jpg",1024,683,true],"1536x1536":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680.jpg",1200,800,false],"2048x2048":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680.jpg",1200,800,false],"blog-featured":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680-1200x534.jpg",1200,534,true],"woocommerce_thumbnail":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680-300x300.jpg",300,300,true],"woocommerce_single":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680-600x400.jpg",600,400,true],"woocommerce_gallery_thumbnail":["https:\/\/www.mailcraft.eu\/wp-content\/uploads\/2026\/08\/rest-api-pierwszy-request-w-dziesiec-minut-680-100x100.jpg",100,100,true]},"uagb_author_info":{"display_name":"Krzysztof Balicki","author_link":"https:\/\/www.mailcraft.eu\/pl\/author\/websystems\/"},"uagb_comment_info":0,"uagb_excerpt":"Pierwszy request do REST API wysy\u0142kowego zajmuje mniej czasu ni\u017c konfiguracja klienta pocztowego. Serio. Potrzebujesz klucza, zweryfikowanej domeny i jednego polecenia w terminalu. Cel tego tekstu jest w\u0105ski: doprowadzi\u0107 ci\u0119 do jednego dzia\u0142aj\u0105cego wywo\u0142ania, kt\u00f3re ko\u0144czy si\u0119 mailem w skrzynce....","_links":{"self":[{"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/posts\/12227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/comments?post=12227"}],"version-history":[{"count":2,"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/posts\/12227\/revisions"}],"predecessor-version":[{"id":12327,"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/posts\/12227\/revisions\/12327"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/media\/12225"}],"wp:attachment":[{"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/media?parent=12227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/categories?post=12227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mailcraft.eu\/pl\/wp-json\/wp\/v2\/tags?post=12227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}