[{"data":1,"prerenderedAt":215},["ShallowReactive",2],{"content-query-JUcIYUzmIc":3,"reference-index-/http-errors":128},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"layout":9,"cta":10,"related":18,"body":31,"_type":121,"_id":122,"_source":123,"_file":124,"_stem":125,"_extension":126,"sitemap":127},"/http-errors","",false,"HTTP errors explained: causes and fixes for APIs, proxies and webhooks","What 502, 504, 429, 401, 403, 409, 413 and TLS certificate errors mean, why they happen behind proxies, tunnels and webhook endpoints, and how to fix each one.","reference",{"eyebrow":11,"title":12,"text":13,"to":14,"label":15,"secondaryTo":16,"secondaryLabel":17},"Webhook Relay","Don't lose webhooks to 5xx errors and rate limits","Durable retries keep a failed delivery and retry it with exponential backoff for up to 30 days. Throttling releases bursts at a pace your endpoint can handle, so they don't turn into 429s.","/features/durable-retries/","See durable retries","/features/throttling/","See throttling",[19,22,25,28],{"title":20,"to":21},"Webhook glossary","/glossary/",{"title":23,"to":24},"Localhost ports","/localhost/",{"title":26,"to":27},"Webhook retries","/glossary/webhook-retries/",{"title":29,"to":30},"Fix TLS/SSL handshake errors","/docs/webhooks/tls-ssl-errors/",{"type":32,"children":33,"toc":116},"root",[34,50,54,61,83,89],{"type":35,"tag":36,"props":37,"children":38},"element","p",{},[39,42,48],{"type":40,"value":41},"text","An HTTP error code tells you ",{"type":35,"tag":43,"props":44,"children":45},"strong",{},[46],{"type":40,"value":47},"which side failed and roughly why",{"type":40,"value":49},". Pick an error to see what causes it and how to fix it.",{"type":35,"tag":51,"props":52,"children":53},"reference-index",{"section":4},[],{"type":35,"tag":55,"props":56,"children":58},"h3",{"id":57},"_4xx-vs-5xx",[59],{"type":40,"value":60},"4xx vs 5xx",{"type":35,"tag":36,"props":62,"children":63},{},[64,66,73,75,81],{"type":40,"value":65},"A ",{"type":35,"tag":67,"props":68,"children":70},"code",{"className":69},[],[71],{"type":40,"value":72},"4xx",{"type":40,"value":74}," code means the server rejected the request: bad auth, a conflict, too many requests, a body that's too large. A ",{"type":35,"tag":67,"props":76,"children":78},{"className":77},[],[79],{"type":40,"value":80},"5xx",{"type":40,"value":82}," code means something on the server side broke, often a proxy or gateway sitting in front of your app.",{"type":35,"tag":55,"props":84,"children":86},{"id":85},"why-these-errors-matter-for-webhooks",[87],{"type":40,"value":88},"Why these errors matter for webhooks",{"type":35,"tag":36,"props":90,"children":91},{},[92,94,99,101,106,108,114],{"type":40,"value":93},"Each page also covers the case where you ",{"type":35,"tag":43,"props":95,"children":96},{},[97],{"type":40,"value":98},"receive webhooks",{"type":40,"value":100}," behind a proxy, tunnel or load balancer. These codes decide whether a provider retries a delivery or drops it: a ",{"type":35,"tag":67,"props":102,"children":104},{"className":103},[],[105],{"type":40,"value":80},{"type":40,"value":107}," or a timeout usually triggers a retry, and a ",{"type":35,"tag":67,"props":109,"children":111},{"className":110},[],[112],{"type":40,"value":113},"410 Gone",{"type":40,"value":115}," can tell the sender to stop for good.",{"title":5,"searchDepth":117,"depth":117,"links":118},3,[119,120],{"id":57,"depth":117,"text":60},{"id":85,"depth":117,"text":88},"markdown","content:http-errors:index.md","content","http-errors/index.md","http-errors/index","md",{"loc":4},[129,137,144,151,157,164,171,179,186,193,200,208],{"_path":130,"title":131,"description":132,"crumb":133,"summary":134,"group":135,"order":136},"/http-errors/400-vs-422","400 vs 422: Bad Request vs Unprocessable Content","400 vs 422: 400 Bad Request is a malformed request, HTTP 422 Unprocessable Content is valid syntax that fails validation. When to use each.","400 vs 422","400: I can't parse this. 422: I parsed it, and it's invalid.","4xx client errors",400,{"_path":138,"title":139,"description":140,"crumb":141,"summary":142,"group":135,"order":143},"/http-errors/401-vs-403","401 vs 403: Unauthorized vs Forbidden explained","401 vs 403: 401 Unauthorized means not authenticated, 403 Forbidden means authenticated but not allowed. When to use each and how to fix them.","401 vs 403","401: who are you? 403: I know who you are, and no.",401,{"_path":145,"title":146,"description":147,"crumb":148,"summary":149,"group":135,"order":150},"/http-errors/409-conflict","409 Conflict: what it means and how to fix it","HTTP 409 Conflict means the request clashes with the resource's current state. Causes, fixes, 409 vs 412 vs 422, and duplicate webhooks.","409 Conflict","The request clashes with the resource's current state.",409,{"_path":152,"title":153,"description":154,"crumb":113,"summary":155,"group":135,"order":156},"/http-errors/410-gone","410 Gone: what it means, 410 vs 404, and webhooks","HTTP 410 Gone means a resource was removed on purpose and won't return. 410 vs 404, SEO effects, and why webhook senders disable 410 endpoints.","Removed on purpose, permanently. Senders often stop calling.",410,{"_path":158,"title":159,"description":160,"crumb":161,"summary":162,"group":135,"order":163},"/http-errors/413-payload-too-large","413 Payload Too Large (Request Entity Too Large): how to fix it","413 Payload Too Large (Request Entity Too Large) means the body exceeds a size limit. Fix nginx client_max_body_size, Express, Cloudflare and AWS.","413 Payload Too Large","The request body is over a size limit somewhere in the chain.",413,{"_path":165,"title":166,"description":167,"crumb":168,"summary":169,"group":135,"order":170},"/http-errors/429-too-many-requests","429 Too Many Requests: what it means and how to fix it","HTTP 429 Too Many Requests means you hit a rate limit. What causes it, how to read Retry-After, how to back off correctly, and how to stop webhook bursts from causing it.","429 Too Many Requests","You hit a rate limit. Back off, honour Retry-After, or smooth the bursts.",429,{"_path":172,"title":173,"description":174,"crumb":175,"summary":176,"group":177,"order":178},"/http-errors/500-internal-server-error","500 Internal Server Error: what it means and how to fix it","HTTP 500 Internal Server Error means the server hit an unexpected error. How to find the cause in your logs, fix it, and handle 500s from webhooks.","500 Internal Server Error","Something broke inside the app. The logs have the answer.","5xx server errors",500,{"_path":180,"title":181,"description":182,"crumb":183,"summary":184,"group":177,"order":185},"/http-errors/502-bad-gateway","502 Bad Gateway: what it means and how to fix it","502 Bad Gateway means a proxy got no valid response from the server behind it. Causes and fixes for nginx, Cloudflare, AWS ALB, tunnels and webhook endpoints.","502 Bad Gateway","A proxy couldn't get a valid response from the app behind it.",502,{"_path":187,"title":188,"description":189,"crumb":190,"summary":191,"group":177,"order":192},"/http-errors/503-service-unavailable","503 Service Unavailable: what it means and how to fix it","503 Service Unavailable means the server is overloaded or down for maintenance. Causes, Retry-After, and fixes for nginx, Kubernetes and AWS ALB.","503 Service Unavailable","The server is temporarily overloaded or in maintenance. Retry later.",503,{"_path":194,"title":195,"description":196,"crumb":197,"summary":198,"group":177,"order":199},"/http-errors/504-gateway-timeout","504 Gateway Timeout: what it means and how to fix it","504 Gateway Timeout means a proxy waited too long for the server behind it. Fixes for nginx proxy_read_timeout, Cloudflare 524, AWS ALB and webhooks.","504 Gateway Timeout","A proxy gave up waiting for the app behind it.",504,{"_path":201,"title":202,"description":203,"crumb":204,"summary":205,"group":206,"order":207},"/http-errors/err-cert-authority-invalid","NET::ERR_CERT_AUTHORITY_INVALID: what it means and how to fix it","NET::ERR_CERT_AUTHORITY_INVALID means the browser doesn't trust the certificate's issuer: self-signed, missing intermediate or private CA. How to fix it.","ERR_CERT_AUTHORITY_INVALID","The certificate isn't signed by a CA the browser trusts.","TLS and certificate errors",900,{"_path":209,"title":210,"description":211,"crumb":212,"summary":213,"group":206,"order":214},"/http-errors/err-ssl-version-or-cipher-mismatch","ERR_SSL_VERSION_OR_CIPHER_MISMATCH: what it means and how to fix it","ERR_SSL_VERSION_OR_CIPHER_MISMATCH means browser and server share no TLS version or cipher. Causes (TLS 1.0/1.1, Cloudflare SSL) and fixes.","ERR_SSL_VERSION_OR_CIPHER_MISMATCH","Browser and server have no TLS version or cipher in common.",901,1793199699817]