<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Api on Sohil Ladhani Blog</title><link>https://sohilladhani.com/blog/tags/api/</link><description>Recent content in Api on Sohil Ladhani Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 03 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://sohilladhani.com/blog/tags/api/index.xml" rel="self" type="application/rss+xml"/><item><title>Webhook Signatures: HMAC and Replay Prevention</title><link>https://sohilladhani.com/blog/post/2026-08-03-webhook-signature-verification/</link><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid>https://sohilladhani.com/blog/post/2026-08-03-webhook-signature-verification/</guid><description>Your service delivers webhooks to customer endpoints. How does the customer know the POST came from you and not an attacker? Without authentication, any party that knows a customer&amp;rsquo;s webhook URL can forge events. Webhook signatures solve this: you sign each payload with a shared secret, the customer verifies the signature before processing.
HMAC-SHA256 Signing Generate a secret per customer endpoint (not one global secret: if one leaks, only that customer is affected).</description></item><item><title>Webhook Delivery: At-Least-Once HTTP</title><link>https://sohilladhani.com/blog/post/2026-08-02-webhook-delivery-guarantees/</link><pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate><guid>https://sohilladhani.com/blog/post/2026-08-02-webhook-delivery-guarantees/</guid><description>Webhooks are outbound HTTP calls your service makes to customer endpoints when events occur. A payment completes: you POST to https://merchant.example.com/webhooks/payment. Unlike inbound requests where you control the client, webhook delivery fires into unknown infrastructure. Customer servers go down, time out, return 500s. Building reliable webhook delivery means treating outbound HTTP as a distributed messaging problem with at-least-once semantics.
The Core Problem Naive webhook delivery: event fires, you make an HTTP call, move on.</description></item></channel></rss>