# Status codes

Understand HTTP status codes returned by Edge Functions to properly debug issues and handle responses.

Edge Functions can return following status codes.

When invoking an Edge Function, the response may return a variety of HTTP status codes. The most common status codes are listed below.

Note: Error responses may also include an `sb-error-code` header that identifies the specific error condition. See [Error Codes](/docs/guides/functions/error-codes) for a complete list of error codes and their meanings.

## Success Responses

### 2XX Success

Your Edge Function executed successfully and returned a valid response. This includes any status code in the 200-299 range that your function explicitly returns.

### 3XX Redirect

Your Edge Function used the `Response.redirect()` API to redirect the client to a different URL. This is a normal response when implementing authentication flows or URL forwarding.

***

## Client Errors

These errors indicate issues with the request itself, which typically require changing how the function is called.

### 401 Unauthorized

**Cause:** The Edge Function has JWT verification enabled, but the request was made with an invalid or missing JWT token.

**Solution:**

- Ensure you're passing a valid JWT token in the `Authorization` header
- Check that your token hasn't expired
- For webhooks or public endpoints, consider disabling JWT verification

### 404 Not Found

**Cause:** The requested Edge Function doesn't exist or the URL path is incorrect.

**Solution:**

- Verify the function name and project reference in your request URL
- Check that the function has been deployed successfully

### 405 Method Not Allowed

**Cause:** You're using an unsupported HTTP method. Edge Functions only support: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`, and `OPTIONS`.

**Solution:** Update your request to use a supported HTTP method.

***

## Server Errors

These errors indicate issues with the function execution or underlying platform.

### 500 Internal Server Error

**Cause:** Your Edge Function threw an uncaught exception (`WORKER_ERROR`).

**Common causes:**

- Unhandled JavaScript errors in your function code
- Missing error handling for async operations
- Invalid JSON parsing

**Solution:** Check your Edge Function logs to identify the specific error and add proper error handling to your code.

```tsx
// ✅ Good error handling
try {
  const result = await someAsyncOperation()
  return new Response(JSON.stringify(result))
} catch (error) {
  console.error('Function error:', error)
  return new Response('Internal error', { status: 500 })
}
```

You can see the output in the [Edge Function Logs](/docs/guides/functions/logging).

### 503 Service Unavailable

**Cause:** Your Edge Function failed to start (`BOOT_ERROR`).

**Common causes:**

- Syntax errors preventing the function from loading
- Import errors or missing dependencies
- Invalid function configuration

**Solution:** Check your Edge Function logs and verify your function code can be executed locally with `supabase functions serve`.

### 504 Gateway Timeout

**Cause:** Your Edge Function didn't respond within the [request timeout limit](/docs/guides/functions/limits).

**Common causes:**

- Long-running database queries
- Slow external API calls
- Infinite loops or blocking operations

**Solution:**

- Optimize slow operations
- Add timeout handling to external requests
- Consider breaking large operations into smaller chunks

### 546 Resource Limit (Custom Error Code)

**Cause:** Your Edge Function execution was stopped due to exceeding resource limits (`WORKER_RESOURCE_LIMIT`, previously it was `WORKER_LIMIT`). Edge Function logs should provide which [resource limit](/docs/guides/functions/limits) was exceeded.

**Common causes:**

- Memory usage exceeded available limits
- CPU time exceeded execution quotas
- Too many concurrent operations

**Solution:** Check your Edge Function logs to see which resource limit was exceeded, then optimize your function accordingly.
