NEWSAR
Multi-perspective news intelligence
SRCAssociated Press (AP)
LANGEN
LEANCenter
WORDS3 077
ENT11
WED · 2026-04-15 · 15:23 GMTBRIEF NSR-2026-0415-69521
News/Ukraine drone attack hits Russian Baltic/Ukraine’s Zelenskyy pursues more arms deals with allies to h…
NSR-2026-0415-69521News Report·EN·Conflict

Ukraine’s Zelenskyy pursues more arms deals with allies to help check Russia’s invasion

Ukrainian President Volodymyr Zelenskyy is seeking increased military aid from allies, particularly air defense systems, as Russia continues attacks on Ukrainian civilians and infrastructure in April 2026. Recent Russian strikes have resulted in casualties in multiple regions, highlighting the urgent need for enhanced defense capabilities.

Associated Press (AP)Filed 2026-04-15 · 15:23 GMTLean · CenterRead · 13 min
Ukraine’s Zelenskyy pursues more arms deals with allies to help check Russia’s invasion
Associated Press (AP)FIG 01
Reading time
13min
Word count
3 077words
Sources cited
5cited
Entities identified
11entities
Quality score
100%
§ 01

Briefing Summary

AI-generated
NEWSAR · AI

Ukrainian President Volodymyr Zelenskyy is seeking increased military aid from allies, particularly air defense systems, as Russia continues attacks on Ukrainian civilians and infrastructure in April 2026. Recent Russian strikes have resulted in casualties in multiple regions, highlighting the urgent need for enhanced defense capabilities. Zelenskyy is visiting European capitals, securing pledges of financial and military support from Germany and Norway, including a 4 billion euro defense package from Germany and 9 billion euros in assistance from Norway. Ukraine possesses drone interceptor expertise and air defense technology but lacks the funds for large-scale production. Zelenskyy is urging European countries to contribute to a fund for purchasing American-made weapons, especially Patriot air defense systems, to counter Russian missile attacks.

Confidence 0.90Sources 5Claims 5Entities 11
§ 02

Article analysis

Model · rule-based
Framing
Conflict
Diplomatic
Tone
Measured
AI-assessed
CalmNeutralAlarmist
Factuality
0.80 / 1.00
Factual
LowHigh
Sources cited
5
Well sourced
FewMany
§ 03

Key claims

5 extracted
01

Zelenskyy is asking European countries to add money to a fund to purchase American-made weapons.

factualnull
Confidence
1.00
02

Between November and March, Russia launched 27,000 Shahed-type drones at Ukraine.

statisticUkrainian Defense Minister Mykhailo Fedorov
Confidence
1.00
03

Norway has pledged 9 billion euros in assistance.

factualUkrainian officials
Confidence
1.00
04

Germany and Ukraine agreed a defense package valued at 4 billion euros.

factualUkrainian officials
Confidence
1.00
05

Russia's strikes killed an 8-year-old boy in Cherkasy and a woman in Zaporizhzhia.

factualZelenskyy and local officials
Confidence
1.00
§ 04

Full report

13 min read · 3 077 words
Cars damaged by Russia's drone attack are seen in Zaporizhzhia, Ukraine, Wednesday, April 15, 2026. (AP Photo/Kateryna Klochko) 2026-04-15T10:14:23Z KYIV, Ukraine (AP) — Ukraine’s top diplomatic priority is securing its allies’ help to buy and build more air defense systems, President Volodymyr Zelenskyy said Wednesday between meetings with European leaders, as Russia kept up its deadly attacks on civilians and public infrastructure. Russian strikes hit more than a half-dozen areas of Ukraine behind the front line from Tuesday to Wednesday, killing an 8-year-old boy in the central Cherkasy region and a woman who was in a kiosk near a bus stop that was hit in southern Zaporizhzhia, according to Zelenskyy and local officials. “Every day we need air defense missiles — every day Russia continues its strikes,” Zelenskyy said in a post on the Telegram messaging app. With no plans announced for further U.S.-mediated talks with Russia, Zelenskyy was visiting three European capitals in 48 hours, securing promises of further military and financial support from Germany and Norway ahead of his trip to Italy on Wednesday. Germany and Ukraine agreed a defense package valued at 4 billion euros ($4.7 billion), and Norway has pledged 9 billion euros ($10.6 billion) in assistance, Ukrainian officials said. After more than four years of fighting Russia’s full-scale invasion , Ukraine possesses battle-tested drone interceptor expertise and has developed groundbreaking air defense technology, but it lacks the money to scale up production to levels that would press its advantage. freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); Defense leaders from 50 countries aim to send more help to Ukraine Zelenskyy said he is asking European countries to keep adding money to a fund that allows the purchase from the United States of American-made weapons for Ukraine, especially the Patriot air defense system that can stop Russian cruise and ballistic missiles hitting civilian areas. Between November and March, Russia launched 27,000 Shahed-type drones, nearly 600 cruise missiles and 462 ballistic missiles at Ukraine, Ukrainian Defense Minister Mykhailo Fedorov said. Zelenskyy is also championing joint weapons production agreements, including for drones and missiles, while pushing for the European Union to move quickly on providing a promised 90 billion euro ($106 billion) loan. Defense leaders from the about 50 nations who regularly gather to coordinate weapons aid for Kyiv held an online meeting Wednesday, chaired by German Defense Minister Boris Pistorius and British Defense Secretary John Healey. NATO Secretary-General Mark Rutte also attended. Ahead of the meeting, Britain announced it will send 120,000 drones to Ukraine this year, its biggest delivery of the weapons so far. Officials didn’t say how soon they will be sent. /* Desktop-first: fully collapse by default */ #ap-readmore-embed { display: none; margin: 0; padding: 0; height: 0; min-height: 0; overflow: hidden; text-align: center; position: relative; z-index: 2; } /* Only show on mobile */ @media (max-width: 767px) { #ap-readmore-embed { display: block; margin: 28px 0; height: auto; overflow: visible; } } #ap-readmore-embed .ap-readmore-btn { appearance: none; -webkit-appearance: none; border: 0; background: #000; color: #fff; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 14px 22px; border-radius: 999px; font-family: inherit, "AP Sans", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif; font-weight: 700; font-size: 16px; letter-spacing: 0.2px; line-height: 1; box-shadow: 0 10px 18px rgba(0,0,0,0.12); transition: transform 120ms ease, box-shadow 120ms ease, opacity 120ms ease; touch-action: manipulation; -webkit-tap-highlight-color: transparent; position: relative; z-index: 3; } #ap-readmore-embed .ap-readmore-btn:hover { transform: translateY(-1px); box-shadow: 0 14px 22px rgba(0,0,0,0.16); } #ap-readmore-embed .ap-readmore-btn:active { transform: translateY(0); box-shadow: 0 10px 18px rgba(0,0,0,0.12); opacity: 0.95; } #ap-readmore-embed .ap-readmore-btn:focus-visible { outline: 3px solid rgba(228, 0, 43, 0.35); outline-offset: 3px; } #ap-readmore-embed .ap-readmore-icon { width: 10px; height: 10px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); margin-top: -2px; } #ap-readmore-embed .ap-readmore-fade { display: none; height: 48px; margin-top: -48px; pointer-events: none; background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,1)); } Read More (function () { var APRM_EMBED_ID = "ap-readmore-embed"; var APRM_MOBILE_MQ = "(max-width: 767px)"; function APRM_onReady(fn) { if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", fn); } else { fn(); } } APRM_onReady(function () { var APRM_embedEl = document.getElementById(APRM_EMBED_ID); if (!APRM_embedEl) return; // 🚨 DESKTOP: remove entire module wrapper and bail early if (!window.matchMedia(APRM_MOBILE_MQ).matches) { var APRM_rootModule = APRM_embedEl.closest(".HTMLModuleEnhancement") || APRM_embedEl.closest(".HtmlModule"); if (APRM_rootModule && APRM_rootModule.parentNode) { APRM_rootModule.parentNode.removeChild(APRM_rootModule); } else if (APRM_embedEl.parentNode) { APRM_embedEl.parentNode.removeChild(APRM_embedEl); } return; // stop the rest of the script from running } }); })(); (function () { var EMBED_ID = "ap-readmore-embed"; var BTN_ID = "apReadMoreBtn"; var FADE_ID = "apReadMoreFade"; var STOP_SELECTOR = ".Page-below"; var SIGN_IN_GATE_SELECTOR = ".sign-in-gate-content"; var HIDDEN_ATTR = "data-ap-readmore-hidden"; var MOBILE_MQ = "(max-width: 767px)"; function ready(fn) { if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", fn); } else { fn(); } } function isElementNode(n) { return n && n.nodeType === 1; } function cancelEvent(e) { if (!e) return; if (typeof e.preventDefault === "function") e.preventDefault(); if (typeof e.stopPropagation === "function") e.stopPropagation(); if (typeof e.stopImmediatePropagation === "function") e.stopImmediatePropagation(); e.cancelBubble = true; e.returnValue = false; } function collapseDesktopEmbed(embed) { if (!embed) return true; if (!window.matchMedia(MOBILE_MQ).matches) { var maybeWrappers = [ embed.parentElement, embed.closest(".html-embed"), embed.closest("[data-type='htmlembed']"), embed.closest("[class*='embed']"), embed.closest("[class*='Embed']") ].filter(Boolean); embed.style.display = "none"; embed.style.margin = "0"; embed.style.padding = "0"; embed.style.height = "0"; embed.style.minHeight = "0"; embed.style.overflow = "hidden"; maybeWrappers.forEach(function (el) { el.style.margin = "0"; el.style.padding = "0"; el.style.height = "0"; el.style.minHeight = "0"; el.style.overflow = "hidden"; }); if (embed.parentNode) { embed.parentNode.removeChild(embed); } return true; } return false; } ready(function () { var embed = document.getElementById(EMBED_ID); var btn = document.getElementById(BTN_ID); var fade = document.getElementById(FADE_ID); if (!embed || !btn) return; if (collapseDesktopEmbed(embed)) return; var signInGate = document.querySelector(SIGN_IN_GATE_SELECTOR); if (signInGate) { embed.innerHTML = ""; return; } // — Analytics: impression when embed enters viewport — if ("IntersectionObserver" in window) { var io = new IntersectionObserver(function (entries, observer) { if (entries[0].isIntersecting) { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "ap_readmore_impression" }); observer.disconnect(); } }, { threshold: 0 }); io.observe(btn); } var stopEl = document.querySelector(STOP_SELECTOR); if (!stopEl) return; var rootCandidates = [ embed.closest(".Page"), embed.closest("article"), embed.closest("main"), document.body ].filter(Boolean); var root = rootCandidates.find(function (c) { return c.contains(stopEl); }) || document.body; var all = root.getElementsByTagName("*"); var hidden = []; for (var i = 0; i Ukraine seeks to keep up its battlefield momentum Ukraine’s war effort has gained momentum in recent weeks, according to Western officials and analysts. Its short-handed troops have disrupted Russia’s spring offensive, thanks in part to drones and ground robots, and its long-range strikes have dented Russian oil exports and some manufacturing output. Ukraine’s top military commander Oleksandr Syrskyi said Wednesday that last month Ukrainian troops recaptured nearly 50 square kilometers (20 square miles) of territory from Russian forces. Also in March, Ukrainian deep strike operations hit 76 Russian targets, including 15 oil refining facilities, he said. freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); But clouds have also gathered, as the Iran war drains stockpiles of advanced air defense missiles that Ukraine needs, and Kyiv’s money is running short. “We cannot lose sight of Ukraine” amid the Middle East conflict, NATO chief Rutte said. Sign up for Morning Wire: Our flagship newsletter breaks down the biggest headlines of the day. Email address Sign up By checking this box, you agree to AP's Terms of Use and acknowledge that AP may collect and use your data pursuant to our Privacy Policy . [data-ap-newsletter-embed-nlmw25] { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; width: 100%; max-width: 720px; min-width: 0; padding: 16px 16px 16px 16px; box-sizing: border-box; border-radius: 8px; border: 1px solid #E6E6E7; background: #F2F2F2; box-shadow: 0 4px 4px 4px rgba(102, 102, 102, 0.40); font-family: "AP Var", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif; color: #000; container-type: inline-size; container-name: ap-nl-nlmw25; margin-left: auto; margin-right: auto; align-self: center; justify-self: center; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-accent-nlmw25 { width: 48px; height: 6px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-title-nlmw25 { align-self: stretch; color: #000; font-family: "AP Var", system-ui, sans-serif; font-size: 18px; font-style: normal; font-weight: 400; line-height: 150%; margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-title-nlmw25 strong { font-weight: 700; line-height: 130%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-form-nlmw25 { margin: 0; display: flex; flex-direction: column; gap: 16px; width: 100%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-row-nlmw25 { display: flex; align-items: center; gap: 12px; width: 100%; flex-wrap: nowrap; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25 { width: 100%; min-width: 0; border: 1px solid #E6E6E7; border-radius: 10px; padding: 11px 12px; font-size: 14px; line-height: 1.2; outline: none; box-sizing: border-box; background: #fff; color: #000; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-wrapper-nlmw25 { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; flex: 1 0 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25:focus { border-color: rgba(0,0,0,.35); box-shadow: 0 0 0 3px rgba(255, 50, 46, 0.18); } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25 { display: flex; justify-content: center; align-items: center; height: 40px; max-height: 40px; padding: 8px 16px; border-radius: 24px; background: #191919; color: #ffffff; border: none; font-size: 14px; font-weight: 600; line-height: 1; cursor: pointer; white-space: nowrap; transition: background 150ms ease, transform 120ms ease; flex: 0 0 auto; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25:hover { background: #000000; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25:active { transform: scale(0.98); } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-disclaimer-nlmw25 { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; align-self: stretch; background: rgba(255, 255, 255, 0); background-blend-mode: multiply; margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-check-nlmw25 { display: flex; gap: 8px; align-items: flex-start; user-select: none; cursor: pointer; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-checkbox-nlmw25 { margin-top: 2px; width: 16px; height: 16px; accent-color: var(--ap-accent); flex: 0 0 auto; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-checktext-nlmw25 { font-size: 12px; line-height: 1.35; color: var(--ap-muted); } [data-ap-newsletter-embed-nlmw25] a { color: var(--ap-text); text-decoration: underline; text-underline-offset: 2px; } [data-ap-newsletter-embed-nlmw25] a:hover { color: var(--ap-accent); } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-messages-nlmw25 { margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-error-nlmw25:empty, [data-ap-newsletter-embed-nlmw25] .ap-newsletter-help-nlmw25:empty { display: none; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-help-nlmw25 { margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-messages-nlmw25:has(.ap-newsletter-error-nlmw25:empty):has(.ap-newsletter-help-nlmw25:empty) { display: none; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-error-nlmw25 { margin: 0; font-size: 12px; line-height: 1.35; color: var(--ap-error); min-height: 1.2em; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-help-nlmw25 { margin: 6px 0 0; font-size: 12px; line-height: 1.35; color: var(--ap-muted); } [data-ap-newsletter-embed-nlmw25].is-submitted-nlmw25 .ap-newsletter-input-nlmw25 { background: rgba(0,0,0,.04); border-color: rgba(0,0,0,.10); color: rgba(0,0,0,.70); cursor: default; } [data-ap-newsletter-embed-nlmw25].is-submitted-nlmw25 .ap-newsletter-button-nlmw25 { display: none; } [data-ap-newsletter-embed-nlmw25].is-submitted-nlmw25 .ap-newsletter-disclaimer-nlmw25 { display: none; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-bot-field-nlmw25 { position: absolute !important; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none; } [data-ap-newsletter-embed-nlmw25] .ap-sr-only-nlmw25 { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } @container ap-nl-nlmw25 (max-width: 420px) { [data-ap-newsletter-embed-nlmw25] { max-width: 350px; padding: 16px; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-form-nlmw25 { gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-row-nlmw25 { flex-direction: column; align-items: stretch; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25 { width: 100%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-wrapper-nlmw25, [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25 { width: 100%; } } @media (max-width: 420px) { [data-ap-newsletter-embed-nlmw25] { max-width: 350px; padding: 16px; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-form-nlmw25 { gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-row-nlmw25 { flex-direction: column; align-items: stretch; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25 { width: 100%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-wrapper-nlmw25, [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25 { width: 100%; } } const NL_DEFAULT_CONFIG_NLMW25 = { apiUrl: '/api/newsletter/signup', defaultNewsletterList: ['Morning Wire Subscribers'], recaptchaSiteKey: '6Lf06WQrAAAAABB9Ms3Gru2SFLSxUYrLqP5YLDMn', recaptchaHeader: 'X-ReCaptcha-Token', /* UTM params to append to the page URL used as the request referrer. This does NOT modify the subscription payload. */ referrerUtmParams: { utm_source: 'embed' }, messages: { invalidEmail: 'Please use a valid email address.', disclaimerRequired: 'Please check disclaimer before proceeding.', invalidBoth: 'Please provide a valid email address, and check disclaimer.', genericError: 'Something went wrong. Please try again later.', botBlocked: 'Please try again.', recaptchaLoadFail: 'Failed to load reCAPTCHA. Please refresh the page and try again.', recaptchaRequired: 'reCAPTCHA verification is required. Please ensure reCAPTCHA is loaded on this page.', recaptchaFailed: 'reCAPTCHA verification failed. Please refresh the page and try again.', verificationFailed: 'Verification failed. Please try again.' } }; (function (nlConfigNLMW25) { const nlEmailRegexNLMW25 = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/; const nlRecaptchaCheckIntervalNLMW25 = 100; const nlRecaptchaMaxAttemptsNLMW25 = 50; function nlIsValidEmailNLMW25(email) { return nlEmailRegexNLMW25.test(String(email || '').trim()); } function nlBuildReferrerUrlNLMW25(utmParams) { try { const url = new URL(window.location.href); Object.entries(utmParams || {}).forEach(([key, value]) => { if (value !== undefined && value !== null && value !== '') { url.searchParams.set(key, value); } }); return url.toString(); } catch (err) { console.warn('Unable to build referrer URL with UTM params:', err); return window.location.href; } } function nlLoadRecaptchaScriptNLMW25(siteKey, callback) { if (typeof window.grecaptcha !== 'undefined') { callback && callback(); return; } const existingScript = document.querySelector('script[src*="recaptcha/api.js"]'); if (existingScript) { const checkInterval = setInterval(() => { if (typeof window.grecaptcha !== 'undefined') { clearInterval(checkInterval); callback && callback(); } }, nlRecaptchaCheckIntervalNLMW25); return; } const script = document.createElement('script'); script.src = `https://www.google.com/recaptcha/api.js?render=${encodeURIComponent(siteKey)}`; script.async = true; script.defer = true; script.onload = () => callback && callback(); script.onerror = () => { console.error('Failed to load reCAPTCHA script'); callback && callback(false); }; document.head.appendChild(script); } function nlWaitForRecaptchaNLMW25(callback, maxAttempts = nlRecaptchaMaxAttemptsNLMW25) { let attempts = 0; const checkRecaptcha = () => { attempts++; if ( typeof window.grecaptcha !== 'undefined' && typeof window.grecaptcha.execute === 'function' ) { callback(true); } else if (attempts token && token.length > 0 ? token : null) .catch(error => { const errorMsg = error?.message || String(error); if ( errorMsg.includes('No reCAPTCHA clients') || errorMsg.includes('not initialized') || errorMsg.includes('Invalid site key') ) { throw new Error('recaptcha_failed'); } throw error; }); } const nlEmbedsNLMW25 = document.querySelectorAll('[data-ap-newsletter-embed-nlmw25]'); nlEmbedsNLMW25.forEach((rootNLMW25, idxNLMW25) => { const formNLMW25 = rootNLMW25.querySelector('.ap-newsletter-form-nlmw25'); const emailInputNLMW25 = rootNLMW25.querySelector('.ap-newsletter-input-nlmw25'); const checkboxNLMW25 = rootNLMW25.querySelector('.ap-newsletter-checkbox-nlmw25'); const errorElNLMW25 = rootNLMW25.querySelector('.ap-newsletter-error-nlmw25'); const helpElNLMW25 = rootNLMW25.querySelector('.ap-newsletter-help-nlmw25'); const botFieldNLMW25 = rootNLMW25.querySelector('.ap-newsletter-bot-field-nlmw25'); const recaptchaDivNLMW25 = rootNLMW25.querySelector('.ap-newsletter-recaptcha-nlmw25'); let nlIsSubmittingNLMW25 = false; const newsletterListNLMW25 = nlConfigNLMW25.defaultNewsletterList; const recaptchaSiteKeyNLMW25 = nlConfigNLMW25.recaptchaSiteKey; const requestReferrerNLMW25 = nlBuildReferrerUrlNLMW25(nlConfigNLMW25.referrerUtmParams); const emailIdNLMW25 = `nl-email-nlmw25-${idxNLMW25}`; const helpIdNLMW25 = `nl-help-nlmw25-${idxNLMW25}`; const errIdNLMW25 = `nl-error-nlmw25-${idxNLMW25}`; const recaptchaIdNLMW25 = `recaptcha-nlmw25-${idxNLMW25}`; emailInputNLMW25.id = emailIdNLMW25; helpElNLMW25.id = helpIdNLMW25; errorElNLMW25.id = errIdNLMW25; if (recaptchaDivNLMW25) { recaptchaDivNLMW25.id = recaptchaIdNLMW25; if (recaptchaSiteKeyNLMW25) { recaptchaDivNLMW25.setAttribute('data-sitekey', recaptchaSiteKeyNLMW25); } } emailInputNLMW25.setAttribute('aria-describedby', `${helpIdNLMW25} ${errIdNLMW25}`); const nlSetErrorNLMW25 = (msg) => { errorElNLMW25.textContent = msg || ''; errorElNLMW25.style.display = msg ? 'block' : 'none'; }; const nlHideErrorNLMW25 = () => nlSetErrorNLMW25(''); const nlSetSubmittedNLMW25 = () => { rootNLMW25.classList.add('is-submitted-nlmw25'); emailInputNLMW25.value = 'SUBMITTED'; emailInputNLMW25.style.fontWeight = 'bold'; emailInputNLMW25.setAttribute('readonly', 'readonly'); emailInputNLMW25.setAttribute('aria-invalid', 'false'); nlHideErrorNLMW25(); }; const nlSubscribeNLMW25 = (tokenNLMW25) => { if (nlIsSubmittingNLMW25) return; if (botFieldNLMW25?.value) { console.warn('Bot field filled --', botFieldNLMW25.value); nlSetErrorNLMW25(nlConfigNLMW25.messages.botBlocked); return; } const emailNLMW25 = String(emailInputNLMW25.value || '').trim(); const emailOkNLMW25 = nlIsValidEmailNLMW25(emailNLMW25); const disclaimerOkNLMW25 = checkboxNLMW25.checked; if (!emailOkNLMW25 && !disclaimerOkNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.invalidBoth); emailInputNLMW25.setAttribute('aria-invalid', 'true'); emailInputNLMW25.focus(); return; } if (!emailOkNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.invalidEmail); emailInputNLMW25.setAttribute('aria-invalid', 'true'); emailInputNLMW25.focus(); return; } if (!disclaimerOkNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.disclaimerRequired); checkboxNLMW25.focus(); return; } nlIsSubmittingNLMW25 = true; const headersNLMW25 = { 'Content-Type': 'application/json' }; if (tokenNLMW25) { headersNLMW25[nlConfigNLMW25.recaptchaHeader] = tokenNLMW25; } fetch(nlConfigNLMW25.apiUrl, { method: 'POST', headers: headersNLMW25, body: JSON.stringify({ emailId: emailNLMW25, newsLetterListToSubscribe: newsletterListNLMW25 }), /* This is the key change: send the current page URL + UTM params as the referrer. Example: https://.../article/... ?utm_source=embed */ referrer: requestReferrerNLMW25, referrerPolicy: 'strict-origin-when-cross-origin' }) .then(response => response.json() .then(data => ({ status: response.status, data })) .catch(() => ({ status: response.status, data: null })) ) .then(result => { nlIsSubmittingNLMW25 = false; const hasVerificationErrorNLMW25 = result.data && ( result.data.message?.includes('Verification Failed') || result.data.error?.includes('Verification Failed') ); if (hasVerificationErrorNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.verificationFailed); return; } if (result.status === 200) { if (typeof window.NLSignup === 'function') { try { window.NLSignup(emailNLMW25); } catch (err) {} } window.dispatchEvent(new CustomEvent('nl:newsletterSignup:nlmw25', { detail: { email: emailNLMW25, source: 'Morning Wire Embed', newsletters: newsletterListNLMW25, referrer: requestReferrerNLMW25 } })); nlSetSubmittedNLMW25(); } else { const errorMsgNLMW25 = result.data?.message || result.data?.error || nlConfigNLMW25.messages.genericError; nlSetErrorNLMW25(errorMsgNLMW25); } }) .catch(error => { nlIsSubmittingNLMW25 = false; console.error('Newsletter subscription error:', error); nlSetErrorNLMW25(nlConfigNLMW25.messages.genericError); }); }; const nlAttemptRecaptchaNLMW25 = () => { if (!recaptchaSiteKeyNLMW25) { nlWaitForRecaptchaNLMW25(isAvailable => { if (!isAvailable) { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaRequired); nlIsSubmittingNLMW25 = false; return; } nlExecuteRecaptchaNLMW25() .then(token => nlSubscribeNLMW25(token)) .catch(() => nlSubscribeNLMW25(null)); }); return; } nlLoadRecaptchaScriptNLMW25(recaptchaSiteKeyNLMW25, success => { if (success === false) { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaLoadFail); nlIsSubmittingNLMW25 = false; return; } nlWaitForRecaptchaNLMW25(isAvailable => { if (!isAvailable) { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaRequired); nlIsSubmittingNLMW25 = false; return; } const runExecuteNLMW25 = () => { nlExecuteRecaptchaNLMW25() .then(token => nlSubscribeNLMW25(token)) .catch(error => { if (error?.message === 'recaptcha_failed') { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaFailed); nlIsSubmittingNLMW25 = false; } else { console.warn('reCAPTCHA error:', error); nlSubscribeNLMW25(null); } }); }; if (typeof window.grecaptcha.ready === 'function') { window.grecaptcha.ready(runExecuteNLMW25); } else { runExecuteNLMW25(); } }); }); }; formNLMW25.addEventListener('submit', e => { e.preventDefault(); if (rootNLMW25.classList.contains('is-submitted-nlmw25') || nlIsSubmittingNLMW25) return; nlHideErrorNLMW25(); nlAttemptRecaptchaNLMW25(); }); emailInputNLMW25.addEventListener('input', () => { nlHideErrorNLMW25(); emailInputNLMW25.setAttribute('aria-invalid', 'false'); }); checkboxNLMW25.addEventListener('change', nlHideErrorNLMW25); }); })(NL_DEFAULT_CONFIG_NLMW25); Russia fires more than 300 drones at Ukraine civilian areas Russia launched 324 drones and three ballistic missiles at Ukraine overnight, the Ukrainian air force said, in its biggest barrage in almost two weeks. Air defenses intercepted 309 of the drones. Russia also fired a powerful FAB-1500 glide bomb, weighing 1.5 metric tons, at the central part of Sloviansk before dawn Wednesday, the Sloviansk City Military Administration head Vadym Liakh said. The blast destroyed a children’s sports facility that was a city landmark, he said. In a nighttime strike on the southeastern city of Dnipro, Russian forces struck two universities overnight, damaging academic buildings, dormitories and nearby homes, Mayor Borys Filatov said. freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); The blast wave shattered more than 1,000 windows in surrounding buildings, he said, adding that there were no military targets in the area. freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); Meanwhile, Ukraine proceeded with its long-range drone attacks, with the Russian Defense Ministry reporting Wednesday that its air defenses intercepted 85 Ukrainian drones overnight. Ukrainian drones targeted an industrial facility in Sterlitamak, a Russian city about 1,300 kilometers (roughly 800 miles) east of the border with Ukraine, local authorities said. Radiy Khabirov, governor of the Bashkortostan region where Sterlitamak is located, said in an online statement Wednesday that several drones were shot down over Sterlitamak’s “industrial zone,” and debris fell on one of the facilities there, starting a fire. One person died in the attack, he said. freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); ___ Associated Press writers Jill Lawless in London, Kirsten Grieshaber in Berlin and Lorne Cook in Brussels contributed to this report. ___ Follow AP’s coverage of the war in Ukraine at https://apnews.com/hub/Russia-Ukraine HANNA ARHIROVA Arhirova is an Associated Press reporter covering Ukraine. She is based in Kyiv. twitter instagram mailto
§ 05

Entities

11 identified
§ 06

Keywords & salience

10 terms
ukraine
1.00
russia
0.90
zelenskyy
0.90
air defense systems
0.80
arms deals
0.80
military support
0.70
invasion
0.60
financial support
0.60
drone attacks
0.50
cruise missiles
0.50
§ 07

Topic connections

Interactive graph
Network visualization showing 51 related topics
View Full Graph
Person Organization Location Event|Click node to navigate|Edge numbers = shared articles