Hookbase
Free Tools
LoginGet Started Free

HTTP Status Code Reference

Complete HTTP status code reference with webhook-specific context. Understand what each status code means for your webhook deliveries and integrations.

Showing 60 of 60 status codes

1xx
Informational

Continue

The server has received the request headers, and the client should proceed to send the request body.

Switching Protocols

The server is switching protocols as requested by the client via the Upgrade header.

Used when upgrading an HTTP connection to WebSocket, such as for real-time webhook streaming or tunnel connections.

Processing

The server has received and is processing the request, but no response is available yet.

Some webhook endpoints return 102 to indicate they have received the payload and are processing it asynchronously. Treat as a successful receipt.

Early Hints

Used to return some response headers before the final HTTP message.

2xx
Success

OK

The request has succeeded. The meaning depends on the HTTP method used.

The most common success response for webhook deliveries. Your endpoint processed the payload successfully. Hookbase marks the delivery as successful.

Created

The request has been fulfilled and a new resource has been created.

Some webhook endpoints return 201 to indicate the event created a new record in their system. Treated as a successful delivery.

Accepted

The request has been accepted for processing, but processing has not been completed.

Ideal response for webhook endpoints. Signals the payload was received and queued for async processing. Providers like Stripe and GitHub treat this as success.

Non-Authoritative Information

The returned metadata is not exactly the same as available from the origin server.

No Content

The server has fulfilled the request but does not need to return a response body.

A perfectly valid webhook response. Tells the sender "received, nothing to report back." Minimizes bandwidth. Hookbase treats this as success.

Reset Content

The server has fulfilled the request and the client should reset the document view.

Partial Content

The server is delivering only part of the resource due to a Range header sent by the client.

Multi-Status

Conveys information about multiple resources in situations where multiple status codes might be appropriate.

Already Reported

Used inside a DAV response to avoid repeatedly enumerating members of the same collection.

IM Used

The server has fulfilled a GET request for the resource with instance-manipulations applied.

3xx
Redirection

Multiple Choices

The request has more than one possible response. The client should choose one of them.

Moved Permanently

The URL of the requested resource has been changed permanently. The new URL is given in the response.

The destination URL has permanently moved. Update your destination configuration to the new URL to avoid unnecessary redirects and latency.

Found

The URI of requested resource has been changed temporarily.

The destination is temporarily at a different URL. Most webhook delivery systems will follow the redirect, but the original URL should still be used for future requests.

See Other

The server sent this response to direct the client to get the requested resource at another URI with a GET request.

Not Modified

Indicates that the resource has not been modified since the version specified by the request headers.

Temporary Redirect

The server sends this response to direct the client to get the requested resource at another URI with the same method.

Unlike 302, this preserves the HTTP method (POST stays POST). Webhook delivery systems should follow this redirect and re-send the payload to the new URL.

Permanent Redirect

The resource has been permanently moved to the URL specified by the Location header, and the request method should not be changed.

Like 301 but preserves the HTTP method. Update your destination URL permanently. The POST request and payload will be forwarded correctly.

4xx
Client Error

Bad Request

The server cannot or will not process the request due to something that is perceived to be a client error.

Your webhook payload is malformed or missing required fields. Check your transform output, content-type header, and payload structure. This is not retried by default since the same payload will fail again.

Unauthorized

The client must authenticate itself to get the requested response.

The destination requires authentication. Check that your API key, Bearer token, or webhook signing secret in the destination config is correct and not expired.

Forbidden

The client does not have access rights to the content.

The destination server recognized your credentials but denied access. Check IP allowlists at the destination, API key permissions, or CORS settings. Retrying will not help without fixing the auth issue.

Not Found

The server cannot find the requested resource.

The destination webhook URL does not exist. Verify the endpoint path in your destination configuration. The endpoint may have been removed or the URL may contain a typo.

Method Not Allowed

The request method is known by the server but is not supported by the target resource.

The destination does not accept the HTTP method used (usually POST). Check if the endpoint expects a different method, or if a reverse proxy is blocking POST requests.

Not Acceptable

The server cannot produce a response matching the list of acceptable values defined in the request headers.

Proxy Authentication Required

Authentication is required by a proxy between the client and server.

Request Timeout

The server timed out waiting for the request.

The destination server did not receive the complete request in time. This is usually a network issue and is safe to retry. Consider if the destination is behind a slow proxy or firewall.

Conflict

The request conflicts with the current state of the server.

The webhook event conflicts with existing state at the destination (e.g., duplicate event, out-of-order update). Check your deduplication strategy. The destination may have already processed this event.

Gone

The requested content has been permanently deleted from the server with no forwarding address.

The destination endpoint has been permanently removed. Unlike 404, this is intentional and permanent. Remove or update this destination in your route configuration.

Length Required

The server requires the Content-Length header field to be defined in the request.

Precondition Failed

The client has indicated preconditions in its headers which the server does not meet.

Content Too Large

The request entity is larger than limits defined by the server.

Your webhook payload exceeds the destination's size limit. Use a transform to trim unnecessary fields, or split large payloads into smaller chunks. Common limits: 256KB-10MB depending on the provider.

URI Too Long

The URI requested by the client is longer than the server is willing to interpret.

Unsupported Media Type

The media format of the requested data is not supported by the server.

The destination does not accept the Content-Type of your payload. Most webhook endpoints expect application/json. Check your destination config and transform output format.

Range Not Satisfiable

The range specified by the Range header field in the request cannot be fulfilled.

Expectation Failed

The expectation indicated by the Expect header field cannot be met by the server.

I'm a Teapot

The server refuses to brew coffee because it is, permanently, a teapot. Defined by RFC 2324.

If your webhook endpoint returns this, it has a sense of humor. Not a valid webhook response in production. Check if a mock server or test stub is accidentally deployed.

Misdirected Request

The request was directed at a server that is not able to produce a response.

Unprocessable Content

The request was well-formed but the server was unable to process the contained instructions.

The payload is valid JSON but semantically incorrect for the destination. Your transform may be producing output that doesn't match the destination's expected schema. Check field names, types, and required fields.

Locked

The resource that is being accessed is locked.

Failed Dependency

The request failed because it depended on another request which failed.

Too Early

The server is unwilling to risk processing a request that might be replayed.

Upgrade Required

The server refuses to perform the request using the current protocol.

Precondition Required

The origin server requires the request to be conditional.

Too Many Requests

The user has sent too many requests in a given amount of time (rate limiting).

The destination is rate-limiting your deliveries. Check the Retry-After header in the response. Configure rate limits on your route to match the destination's limits. Hookbase will automatically back off and retry.

Request Header Fields Too Large

The server is unwilling to process the request because its header fields are too large.

Your webhook request headers exceed the destination's limits. Review custom headers in your destination config and remove unnecessary ones.

Unavailable For Legal Reasons

The user agent requested a resource that cannot legally be provided.

5xx
Server Error

Internal Server Error

The server has encountered a situation it does not know how to handle.

The destination server crashed while processing your webhook. This is a server-side issue at the destination. Safe to retry with backoff. If persistent, contact the destination service's support team.

Not Implemented

The request method is not supported by the server and cannot be handled.

Bad Gateway

The server, while acting as a gateway or proxy, received an invalid response from the upstream server.

A proxy or load balancer in front of the destination received a bad response from the actual server. Common during deployments or when the destination is overloaded. Retry with backoff.

Service Unavailable

The server is not ready to handle the request, commonly due to maintenance or overload.

The destination is temporarily down for maintenance or overloaded. Check the Retry-After header. Hookbase will automatically retry with exponential backoff. If your circuit breaker triggers, the destination may need attention.

Gateway Timeout

The server, while acting as a gateway or proxy, did not get a response in time from the upstream server.

The destination server took too long to respond. The webhook may have been received but processing was slow. Check if the destination does heavy synchronous processing — it should return 202 quickly and process asynchronously.

HTTP Version Not Supported

The HTTP version used in the request is not supported by the server.

Variant Also Negotiates

The server has an internal configuration error: the chosen variant resource is itself configured to engage in content negotiation.

Insufficient Storage

The server is unable to store the representation needed to complete the request.

Loop Detected

The server detected an infinite loop while processing the request.

May indicate a webhook loop — your webhook delivery is triggering another webhook back to itself. Check your routing rules for circular references.

Not Extended

Further extensions to the request are required for the server to fulfill it.

Network Authentication Required

The client needs to authenticate to gain network access, typically from a captive portal.

The delivery is hitting a captive portal or network login page instead of the actual destination. This usually means the destination is behind a corporate network that requires VPN or proxy authentication.

Webhook Endpoint Best Practices
  • Return 200 or 202 quickly — Acknowledge receipt immediately, then process the payload asynchronously.
  • Use 204 for minimal responses — If you have nothing to send back, 204 saves bandwidth.
  • Never return 301/302 — Update the source's configuration directly instead of relying on redirects.
  • Return 429 with Retry-After — If you're overloaded, tell the sender exactly when to retry.
  • Avoid 500 for validation errors — Return 400 or 422 with a descriptive error body instead.
Which Codes Are Retried?
  • Retried automatically: 408, 429, 500, 502, 503, 504 — These are typically transient and likely to succeed on retry.
  • Not retried: 400, 401, 403, 404, 405, 410, 413, 415, 422 — These indicate a permanent problem that won't resolve by retrying the same request.
  • Redirects followed: 301, 302, 307, 308 — The delivery system follows the redirect to the new URL.

Want more? Try automatic retry and error handling in Hookbase

Get started free with no credit card required.

Get Started Free Learn More
Hookbase

Reliable webhook infrastructure for modern teams. Built on Cloudflare's global edge network.

Product

  • Features
  • Pricing
  • Use Cases
  • Integrations
  • ngrok Alternative

Resources

  • Documentation
  • API Reference
  • CLI Guide
  • Blog
  • FAQ

Free Tools

  • All Tools
  • Webhook Bin
  • HMAC Calculator
  • JSONata Playground
  • Cron Builder
  • Payload Formatter
  • Local Testing

Legal

  • Privacy Policy
  • Terms of Service
  • Contact
  • Status

© 2026 Hookbase. All rights reserved.