{"id":15507,"date":"2026-04-19T16:58:09","date_gmt":"2026-04-19T14:58:09","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=15507"},"modified":"2026-04-19T16:58:10","modified_gmt":"2026-04-19T14:58:10","slug":"troubleshooting-email-delivery-to-microsoft-users","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2026\/04\/19\/troubleshooting-email-delivery-to-microsoft-users\/","title":{"rendered":"Troubleshooting Email Delivery to Microsoft Users"},"content":{"rendered":"\n<p>I&#8217;m pretty sure that many technicians who maintain email systems have encountered this problem: let&#8217;s thank <a href=\"https:\/\/rozumem.xyz\/\">rozumem<\/a> for his <a href=\"https:\/\/rozumem.xyz\/posts\/14\">Troubleshooting Email Delivery to Microsoft Users<\/a><\/p>\n\n\n\n<!--more-->\n\n\n\n<!--nextpage-->\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h1 class=\"wp-block-heading\" id=\"troubleshooting-email-delivery-to-microsoft-users\"><a href=\"https:\/\/rozumem.xyz\/posts\/14\">Troubleshooting Email Delivery to Microsoft Users<\/a><\/h1>\n\n\n\n<p>2026-04-12, last update: 2026-04-15<\/p>\n\n\n\n<p>On Feb 24, 2026 we started to see a rise in user complaints saying they&#8217;re not receiving our emails. They all had one in thing in common: Microsoft as their email provider. Since I&#8217;d never encountered this before, my first reaction was to check my Sendgrid logs for details. According to the logs, emails to Hotmail, Live, MSN, and Outlook email addresses were being <code class=\"\" data-line=\"\">Deferred<\/code>. Emails to other email addresses were flowing normally. Digging deeper, Sendgrid showed this reason for the deferral:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>451 4.7.650 The mail server [redacted] has been temporarily rate limited due to IP reputation. For e-mail delivery information, see https:\/\/aka.ms\/postmaster (S775) [Name=Protocol Filter Agent][AGT=PFA][MxId=redacted]<\/p>\n<\/blockquote>\n\n\n\n<p>This raised even more questions. First, no emails were being delivered to Microsoft users <em>at all<\/em>. It wasn&#8217;t a &#8216;temporary rate limit&#8217;. It was more like a temporary <em>ban<\/em>. For how long? Unclear. And due to IP reputation? Sendgrid showed a 99% sending reputation. I opened Gmail Postmaster Tools and the spam rate looked normal. I was following all the best practices with SPF, DKIM, and DMARC. I also hadn&#8217;t made any changes to my email setup recently.<\/p>\n\n\n\n<p>A quick Google search for this error code led me to this: <a href=\"https:\/\/learn.microsoft.com\/en-us\/answers\/questions\/5786144\/all-sending-ips-temporarily-rate-limited-451-4-7\">https:\/\/learn.microsoft.com\/en-us\/answers\/questions\/5786144\/all-sending-ips-temporarily-rate-limited-451-4-7<\/a>. Interestingly, this was posted less than 24 hours ago. Seems like I wasn&#8217;t alone. This led me to believe that the problem lay with Microsoft and not me; either an outage or a misconfiguration on their end was penalizing legitimate senders. Surely, it would resolve itself&#8230;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Email deliverability is crucial for the smooth running of our business. We send ~350k emails per month of which ~39k emails are transactional in nature (login, billing, password reset, etc&#8230;). Currently, all these emails are sent from two dedicated IPs irrespective of whether the email is transactional or not. Both IPs were being rate limited.<\/p>\n\n\n\n<p>Complaints were flowing in on Helpscout. I first instructed my CX reps to create a saved reply to calm users down. Lucky for us, emails sent via Helpscout don&#8217;t go through our Sendgrid IPs.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Hi {%customer.firstName,fallback=there%},<br \/><br \/>It appears Microsoft is throttling some of our emails which is preventing the email from reaching your inbox in a timely manner.<br \/><br \/>We recommend waiting for 24 hours. If you still haven&#8217;t received the email, please reply back.<br \/><br \/>We apologize for the inconvenience.<\/p>\n<\/blockquote>\n\n\n\n<p>Even though I firmly believed this was a Microsoft problem which would eventually fix itself, I couldn&#8217;t rest easy knowing this was happening. So I busied myself with research about email deliverability to Microsoft users. I&#8217;ve picked up many email deliverability quirks during times of crisis like this. This time, I learned that Microsoft has a reputation for being hypersensitive compared to other email providers like Gmail.<\/p>\n\n\n\n<p>I also learned about <a href=\"https:\/\/sendersupport.olc.protection.outlook.com\/snds\/Index\">SNDS<\/a>, Microsoft&#8217;s version of Gmail Postmaster Tools, and immediately created an account. This allowed me to confirm my IP reputation from Microsoft&#8217;s perspective. As I expected, everything was normal. Complaint rate was &lt; 0.1% and days leading up the incident showed all green boxes, no red flags. This further convinced me it was a Microsoft issue.<\/p>\n\n\n\n<p>Nevertheless, some mysterious inner drive prevented me from just resigning to Microsoft to fix the problem or lift the ban. It bothered me that loyal users of my site were being affected, and I couldn&#8217;t remedy it immediately.<\/p>\n\n\n\n<p>As a next step, I emailed Microsoft via their support portal: <a href=\"https:\/\/olcsupport.office.com\/\">https:\/\/olcsupport.office.com\/<\/a>. I made sure to include as much relevant information as possible, including a subset of Sendgrid logs. This also forced me to clarify my understanding of the issue. I hit submit, not very optimistic that I&#8217;d hear back anytime soon.<\/p>\n\n\n\n<p>The process of gathering all the evidence and submitting that ticket brought my attention to something I had ignored earlier. The error said <code class=\"\" data-line=\"\">has been temporarily rate limited due to IP reputation<\/code>. So far, I had been focused on the <code class=\"\" data-line=\"\">IP reputation<\/code> part of that message. But during my research on Microsoft deliverability, I learned that senders can be rate limited for other reasons too, most notably spiky send traffic. Part of their motivation is to contain a potential threat before it does more harm. A temporary ban, like the one I was experiencing, fit into this theory.<\/p>\n\n\n\n<p>We send out a weekly personalized newsletter. We split the sends into four batches, Monday through Thursday, to spread out the traffic. Each batch is sent as fast as our system can call Sendgrid&#8217;s Mail API. We don&#8217;t throttle. And I confirmed with Sendgrid&#8217;s support team that they don&#8217;t throttle either.<\/p>\n\n\n\n<p>Is it possible Microsoft imposed a temporary ban on my IPs after it saw a sudden spike in emails originating from them?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">SELECT\n  DATE_TRUNC(&#039;minute&#039;, created_at) AS minute_group,\n  COUNT(*)\nFROM notifications\nWHERE\n  email ~ &#039;hotmail|live|msn|outlook&#039; AND\n  DATE(created_at) &lt;= &#039;2026-02-25&#039;\nGROUP BY 1\nHAVING COUNT(*) &gt; 0\nORDER BY 2 DESC\n<\/code><\/pre>\n\n\n\n<p>This gave the number of emails we attempted to send to Microsoft users each minute leading up the incident. After filtering for counts &lt; 50, here&#8217;s the result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">2026-02-23 21:48:00,53\n2025-11-26 15:36:00,66\n2025-10-28 21:48:00,52\n2025-08-05 21:51:00,54\n<\/code><\/pre>\n\n\n\n<p>The first row looked suspicious because it occurred right before the incident started. Before that, we hadn&#8217;t sent that many emails to Microsoft users in a single minute since November 2025.<\/p>\n\n\n\n<p>By now, I had received a boilerplate response from Microsoft saying my sending IPs were fine. I responded saying things were not fine and tried my best to sound professional even though I was panicked. My CX reps were doing a great job handling the fallout on Helpscout. Sendgrid was periodically retrying deferred emails. It would continue to do so for up to 72 hours. I still had no clue how long this ban would last. The uncertainty was weighing on me.<\/p>\n\n\n\n<p>But the results of my SQL query and deliverability research convinced me that regardless of the cause, I needed a way to control my sending rate to Microsoft users. Coding is a great cure for uncertainty. It&#8217;s predictable, controlled, and gives a sense of accomplishment. So I dived right into this task. I needed something simple and performant. Since Redis was already a part of my infrastructure, I decided to implement a simple Redis-backed throttler.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">class RedisRateLimiter(BaseRedisModel, ABC):\n    def is_allowed(self, limit, window_seconds) -&gt; Tuple&#091;bool, int, float]:\n        &quot;&quot;&quot;\n        Check if action is allowed under rate limit.\n\n        Returns:\n        - allowed: bool\n        - remaining: int\n        - retry_after: float\n        &quot;&quot;&quot;\n        assert Redis is not None, &#039;Redis not configured&#039;\n\n        now = time.time()\n        window_start = now - window_seconds\n\n        # Use pipeline for atomic operations\n        pipe = Redis.pipeline()\n        # Remove old entries\n        pipe.zremrangebyscore(\n            self.cache_key,\n            &#039;-inf&#039;,\n            window_start\n        )\n        # Count current entries\n        pipe.zcard(self.cache_key)\n        # Get oldest entry timestamp\n        pipe.zrange(\n            self.cache_key,\n            0,\n            0,\n            withscores=True\n        )\n        results = pipe.execute()\n        current_count = results&#091;1]\n        oldest_entry = results&#091;2]\n\n        if current_count &lt; limit:\n            # Allowed\n            Redis.zadd(\n                self.cache_key,\n                {f&quot;{now}:{id(now)}&quot;: now}\n            )\n            Redis.expire(\n                self.cache_key,\n                window_seconds\n            )\n            return True, limit - current_count - 1, 0\n\n        # Rate limited\n        if oldest_entry:\n            retry_after = \\\n                (oldest_entry&#091;0]&#091;1] + window_seconds) - now\n        else:\n            retry_after = window_seconds\n\n        return False, 0, retry_after\n\n    def count(self, window_seconds):\n        &quot;&quot;&quot;\n        Get current count.\n        &quot;&quot;&quot;\n        assert Redis is not None, &#039;Redis not configured&#039;\n\n        now = time.time()\n        window_start = now - window_seconds\n        count = Redis.zcount(\n            self.cache_key,\n            window_start,\n            now\n        )\n        return count\n<\/code><\/pre>\n\n\n\n<p>I used it like follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">class IPPoolRateLimiter(RedisRateLimiter):\n    name = &#039;ip-pool-rate-limiter&#039;\n\ndef send_email(recipient_email, ip_pool, ...):\n    &quot;&quot;&quot;\n    Sends email.\n    &quot;&quot;&quot;\n    def _rate_limit(name,\n                    limit,\n                    window_seconds=60):\n        &quot;&quot;&quot;\n        Rate limit helper method.\n        &quot;&quot;&quot;\n        limiter = IPPoolRateLimiter(\n            f&#039;{ip_pool.name}-{name}&#039;\n        )\n        while True:\n            is_allowed, _, retry_after = \\\n                limiter.is_allowed(\n                    limit,\n                    window_seconds\n                )\n            if is_allowed:\n                break\n            else:\n                logger.warning(\n                    f&#039;Throttled email &#039;\n                    f&#039;due to {name} limiter.&#039;\n                )\n                time.sleep(retry_after)\n\n    is_outlook = is_outlook_email(\n        recipient_email\n    )\n    if is_outlook:\n        # Outlook is very sensitive to spiky traffic\n        _rate_limit(&#039;outlook&#039;, 10)\n<\/code><\/pre>\n\n\n\n<p>While I shipped and monitored this in production, I was also surprised to hear back from a human being, Anthony, to my escalation email.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The connection and throttling limitation against your IP [redacted;redacted] has been set to a more appropriate level based on your reputation.<\/p>\n<\/blockquote>\n\n\n\n<p>A few hours after receiving Anthony&#8217;s response, Sendgrid started to deliver our emails to Hotmail, Live, MSN, and Outlook email addresses. Lucky for us, all this happened within 72 hours of the start of the incident, so no emails were dropped completely. Some emails were just delayed by ~72 hours.<\/p>\n\n\n\n<p>Since implementing the throttling mechanism, my send rate to Microsoft&#8217;s email addresses has not exceeded 10 emails per minute per IP. Users don&#8217;t seem to care about the few seconds of delay this introduces.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-i-think-happened\">What I Think Happened<\/h2>\n\n\n\n<p>It&#8217;s hard to say for sure because the <code class=\"\" data-line=\"\">451 error<\/code> does not offer much detail. Anthony in his response also did not acknowledge any outage or change on Microsoft&#8217;s end. Therefore, my theory is that, during one of our batch newsletter send jobs, Microsoft received what it considered to be a spike of email traffic from both our IPs. Thinking it suspicious, it blocked both IPs for an undisclosed period of time.<\/p>\n\n\n\n<p>Even though we sent a similar volume to Microsoft during a one-minute interval in November 2025, this time was different. This could be either due to a recent configuration change to be more sensitive or due to how &#8220;spiky&#8221; the sends felt this time compared to last time. Their algorithms are probably more sophisticated than my one-minute send count heuristic.<\/p>\n\n\n\n<p>The problem was exacerbated for us because we send transaction and bulk emails through both IPs. Majority of user complaints were about not receiving transactional emails. I eventually want to warm up an IP solely for transactional emails. But our transaction email volume of ~39k emails per month doesn&#8217;t justify such a move yet. Research suggests we need a send volume of ~100k emails per month to keep an IP warm. In retrospect, having the ability to send emails via a shared IP would have been handy.<\/p>\n\n\n\n<p>Finally, Sendgrid is fantastic. I&#8217;ve used them for almost a decade and been happy with their service. But I feel they should be responsible for throttling sends to Microsoft at the IP level. Otherwise, I could hit their API a hundred times in a minute and get my sending IP blocked by Microsoft for an indefinite period of time&#8230;<\/p>\n\n\n\n<p><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">I&#8217;m pretty sure that many technicians who maintain email systems have encountered this problem: let&#8217;s thank rozumem for his Troubleshooting Email Delivery to Microsoft Users<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2026\/04\/19\/troubleshooting-email-delivery-to-microsoft-users\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-15507","post","type-post","status-publish","format-standard","hentry","category-senza-categoria"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-427","jetpack-related-posts":[{"id":14868,"url":"https:\/\/monodes.com\/predaelli\/2026\/01\/28\/yartam3\/","url_meta":{"origin":15507,"position":0},"title":"YARTAM+3","author":"Paolo Redaelli","date":"2026-01-28","format":false,"excerpt":"Bing\"real name\" is \"Microsoft Bing\" as it is owned by Microsoft, so reading that Neocities Is Blocked by Bing makes me desire to avoid Bing, especially because Bing gave no reason for this blockage. It is not a real censorship but since most people tend to reach any website throught\u2026","rel":"","context":"In &quot;Yet another reason to avoid&quot;","block_context":{"text":"Yet another reason to avoid","link":"https:\/\/monodes.com\/predaelli\/category\/ethics\/yet-another-reason-to-avoid\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":14626,"url":"https:\/\/monodes.com\/predaelli\/2026\/01\/05\/windows-activation-is-now-online-only\/","url_meta":{"origin":15507,"position":1},"title":"Windows activation is now online-only&#8230;","author":"Paolo Redaelli","date":"2026-01-05","format":false,"excerpt":"If you needed yet another reason to leave Windows, Slashdot tells us that Microsoft has \"quietluy\" discontinued the offline activation of Windows. Neowin reports that: Offline Windows activation has been possible to do using the phone. However, it looks like Microsoft has quietly killed off that method as users online\u2026","rel":"","context":"In &quot;Yet another reason to avoid Microsoft&quot;","block_context":{"text":"Yet another reason to avoid Microsoft","link":"https:\/\/monodes.com\/predaelli\/category\/ethics\/yet-another-reason-to-avoid\/yet-another-reason-to-avoid-microsoft\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2026\/01\/image.png?fit=1024%2C768&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2026\/01\/image.png?fit=1024%2C768&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2026\/01\/image.png?fit=1024%2C768&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2026\/01\/image.png?fit=1024%2C768&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":13954,"url":"https:\/\/monodes.com\/predaelli\/2026\/02\/16\/first-came-wine\/","url_meta":{"origin":15507,"position":2},"title":"First came Wine\u2026","author":"Paolo Redaelli","date":"2026-02-16","format":false,"excerpt":"First came Wine, i.e. Wine Is Not an Emulator, a free-as-in-freedom re-implementation of Windows API, allowing to run Windows application with various grade of effectiveness. Then came those: WinBoat Run Windows apps on \ud83d\udc27 Linux with \u2728 seamless integration, which uses WinApps Run Windows apps such as Microsoft Office\/Adobe in\u2026","rel":"","context":"In &quot;Wine&quot;","block_context":{"text":"Wine","link":"https:\/\/monodes.com\/predaelli\/category\/wine\/"},"img":{"alt_text":"","src":"https:\/\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2026\/02\/winboat_logo.svg","width":350,"height":200,"srcset":"https:\/\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2026\/02\/winboat_logo.svg 1x, https:\/\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2026\/02\/winboat_logo.svg 1.5x, https:\/\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2026\/02\/winboat_logo.svg 2x, https:\/\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2026\/02\/winboat_logo.svg 3x"},"classes":[]},{"id":4365,"url":"https:\/\/monodes.com\/predaelli\/2018\/06\/05\/microsoft-github-and-the-flying-donkeys\/","url_meta":{"origin":15507,"position":3},"title":"Microsoft, GitHub and the flying donkeys","author":"Paolo Redaelli","date":"2018-06-05","format":false,"excerpt":"And Microsoft is all-in on open source Sorgente: Microsoft + GitHub = Empowering Developers - The Official Microsoft Blog Ok Nadella, prove it. Release all source code of Windows 10 AND Office as AGPL3+ and I'll beleive you. And of course the entire documentation how to sign kernels for SecureBoot","rel":"","context":"In &quot;Proprietary software&quot;","block_context":{"text":"Proprietary software","link":"https:\/\/monodes.com\/predaelli\/category\/software\/proprietary-software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4991,"url":"https:\/\/monodes.com\/predaelli\/2018\/12\/04\/microsoft-is-building-its-own-chrome-browser-to-replace-edge-the-verge\/","url_meta":{"origin":15507,"position":4},"title":"Microsoft is building its own Chrome browser to replace Edge &#8211; The Verge","author":"Paolo Redaelli","date":"2018-12-04","format":false,"excerpt":"Microsoft is building its own Chrome browser to replace Edge - The Verge Another sound and strong reason to stick to Firefox!","rel":"","context":"In &quot;Ethics&quot;","block_context":{"text":"Ethics","link":"https:\/\/monodes.com\/predaelli\/category\/ethics\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":41,"url":"https:\/\/monodes.com\/predaelli\/2014\/09\/12\/bye-bye-nokia\/","url_meta":{"origin":15507,"position":5},"title":"Bye bye Nokia","author":"Paolo Redaelli","date":"2014-09-12","format":false,"excerpt":"I was sure that Microsoft would have dropped Nokia brand. They seems to be in hurry to erase Nokia brand from memory and brains of people. As usual Microsoft buys brands and companies, sacks and plunder whatever they want and throw away the bought brand like an empty skin. Farewell\u2026","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"Lumia Branding","src":"https:\/\/i0.wp.com\/geekongadgets.com\/wp-content\/uploads\/2014\/09\/Lumia-Branding.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/geekongadgets.com\/wp-content\/uploads\/2014\/09\/Lumia-Branding.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/geekongadgets.com\/wp-content\/uploads\/2014\/09\/Lumia-Branding.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/geekongadgets.com\/wp-content\/uploads\/2014\/09\/Lumia-Branding.png?resize=700%2C400 2x, https:\/\/i0.wp.com\/geekongadgets.com\/wp-content\/uploads\/2014\/09\/Lumia-Branding.png?resize=1050%2C600 3x, https:\/\/i0.wp.com\/geekongadgets.com\/wp-content\/uploads\/2014\/09\/Lumia-Branding.png?resize=1400%2C800 4x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/15507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=15507"}],"version-history":[{"count":1,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/15507\/revisions"}],"predecessor-version":[{"id":15524,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/15507\/revisions\/15524"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=15507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=15507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=15507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}