A 424 error code means your request failed because a required earlier step failed, most often in WebDAV or chained API calls.
If you hit this status in a client, it can feel confusing because the resource you asked for may be fine. The problem sits one step earlier. Something your request depends on didn’t complete, so the server refuses to keep going.
This page shows today what 424 means, where it shows up, and how to clear it with a repeatable workflow. You’ll also get a small checklist you can hand to a teammate, plus a few patterns for preventing repeat failures in your own services.
What 424 Failed Dependency Means In Plain Terms
HTTP status 424 is named “Failed Dependency.” In the WebDAV spec, it signals that an operation couldn’t run because another operation in the same request or sequence failed. In practice, 424 often appears when you send a batch-style request, a multi-step write, or a request that assumes a prior lock, property update, or auth step succeeded.
A simple way to think about it is: step B can’t run until step A works. If step A fails, step B returns 424. The response is telling you “fix the earlier failure, then retry the dependent call.”
Where You’ll See 424 Most Often
- Send a WebDAV PROPPATCH batch — One property change fails, and the rest fail too, so the server reports 424 for the dependent parts.
- Run chained API calls — A later request expects a token, a created record ID, or a finished job, yet the prerequisite step failed or returned a different state.
- Rely on a gateway workflow — A gateway calls multiple services; one upstream call fails and the gateway returns 424 to the client.
Taking 424 Error Code From Symptom To Root Cause
To fix this quickly, treat 424 as a signpost, not the problem itself. Your goal is to identify the earlier action that failed and the reason it failed. Once you do, the dependent request almost always starts working without any special tricks.
Start With The Dependency Map
Before you touch logs, write down the minimum chain required for the request to succeed. Many teams skip this and end up hunting across random services. Keep it short: auth, lookup, lock, write, post-process, notify.
- List prerequisites — Note every prior call, header, token, lock, or state that must exist before this endpoint can complete.
- Confirm ordering — Make sure your client calls steps in the same order the server expects.
- Mark shared state — Flag anything stored outside the request: cookies, session IDs, cache entries, idempotency tokens, background jobs.
Use The Response Body Like A Trailhead
Many servers return a response body with a sub-status, an error code, or a Multi-Status payload in WebDAV. If you see a list of per-item errors, the first failure in that list is usually the real cause, and the later 424 entries are just fallout.
- Read the first failing item — Start with the earliest failure in the payload, not the last line shown in a client UI.
- Match IDs and paths — Track which resource, property, or job ID triggered the first error.
- Capture request IDs — If your server emits a correlation ID, keep it; it speeds log searches across services.
Common Triggers And The Fastest Fixes
424 is a wrapper around an earlier failure, so the “fix” depends on what that earlier failure was. The patterns below match most real cases for WebDAV, REST APIs, and service-to-service calls.
Auth Tokens That Are Missing Or Expired
If a token request fails, every call that assumes the token exists can return 424 from a gateway or orchestration layer. In API workflows, many 424 cases trace back to auth and prerequisite setup steps.
- Refresh the token — Re-run the auth flow and confirm scopes match the endpoint’s needs.
- Check clock drift — A client clock that’s off can break short-lived tokens.
- Verify headers — Confirm the Authorization header is present on every dependent request, not just the first one.
Missing Prerequisite Records Or IDs
A common chain is “create, then update.” If the create step failed or returned a non-success response that your client ignored, the update step may return 424 when it can’t find the referenced record.
- Stop on non-2xx — Fail fast when the create call returns an error, even if a UI tries to keep going.
- Validate IDs — Log the created ID and confirm it matches the one used in the next call.
- Handle eventual consistency — If the record appears a moment later, add a short retry with backoff on the dependent call.
WebDAV Property Updates That Partially Fail
WebDAV servers can process multiple property changes in one request. If one change is rejected, the dependent parts can fail with 424. This shows up often with PROPPATCH, where one command fails and the rest fail too.
- Split the batch — Send smaller PROPPATCH requests so you can isolate the single bad property.
- Check namespaces — A wrong XML namespace or property name can trigger the first failure.
- Confirm permissions — A property write can fail if the user can read but can’t write metadata.
Locked Or Conflicting Resource State
Some dependency failures are often state conflicts: a file is locked, a revision is stale, or a previous step expected a lock token that wasn’t present. In WebDAV-heavy stacks, you may see 423 for the lock itself and 424 for the dependent operation that tried to proceed.
- Fetch the latest state — Re-GET the resource and confirm etags, revision IDs, or lock tokens.
- Remove stale locks — If you own the lock, remove the lock before retrying a write.
- Retry with idempotency — If a write is safe to retry, add an idempotency token so duplicates don’t create extra records.
A Practical 10-Minute Triage Checklist
If you only have a short window to debug, run this in order. It keeps you from bouncing between layers and missing the earliest failure.
- Reproduce once — Trigger the request again so you capture fresh timestamps and IDs.
- Log the whole chain — Record every request in the sequence, including auth, preflight, and any background job kickoffs.
- Find the first non-success — Identify the earliest request that didn’t return success; that is usually the real failure.
- Inspect server logs — Search by correlation ID, request ID, or timestamp range.
- Check upstream health — If a dependent service is down or timing out, fix that first, then retry the original call.
- Confirm permissions — Verify the caller can perform both the prerequisite action and the final action.
- Retest with clean state — Clear stale sessions, refresh tokens, and retry the full sequence.
Quick Reference Table For 424 Scenarios
| Where It Appears | What Usually Failed First | What To Check |
|---|---|---|
| WebDAV PROPPATCH | A single property update | XML property name, namespace, write permission |
| API gateway workflow | Auth, token, or upstream call | Scopes, token expiry, upstream error logs |
| Batch create then update | Record creation step | Non-2xx handling, ID capture, retry policy |
Preventing Repeat 424 Failures In Your App
Once you’ve cleared the immediate issue, you can reduce repeat incidents by making the dependency chain visible and resilient. Most fixes are small, yet they pay off fast in reduced on-call noise and fewer mysterious client errors.
Make Dependencies Explicit In Your API Contract
If a request depends on a prior step, say so in docs and in error payloads. Add a machine-readable error field that points to the missing prerequisite, such as “missing_lock_token” or “token_required.” This keeps clients from guessing and makes 424 less likely to appear as a surprise.
- Return actionable errors — Include which prerequisite failed and how to fix it, without dumping raw stack traces.
- Use consistent fields — Standardize on fields like code, message, retryable, and dependency.
- Align status mapping — If you use 424, keep it for true dependency failure, not generic server issues.
Design Idempotent Writes For Safe Retries
Dependency chains often fail mid-stream. If clients can retry without causing duplicates, you get a cleaner recovery path. Idempotency tokens, conditional requests, and optimistic concurrency checks help here.
- Add idempotency tokens — Let clients retry create calls without spawning duplicates.
- Use conditional headers — Guard updates with etags or revision IDs to prevent stale writes.
- Separate side effects — Move emails, webhooks, and long processing into async jobs that can retry independently.
Instrument The Chain With Correlation IDs
If your gateway or service mesh can attach a request ID, carry it across every hop and write it into logs. When a 424 appears, you can trace the earliest upstream failure in minutes instead of hours.
- Propagate request IDs — Pass the same ID in headers between services.
- Log prerequisite outcomes — Record success or failure for each step in the chain.
- Alert on first failure — Trigger alerts on the upstream error, not the final 424 symptom.
When 424 Is The Wrong Status To Return
Some teams use 424 as a catch-all for “something went wrong upstream.” That can confuse clients. 424 is a WebDAV-defined code that fits best when one action in a set depends on another and the earlier action failed. Many regular web servers never emit it at all.
If the server itself failed with an unexpected exception, a 5xx response is often a better fit. If the client sent invalid input, a 4xx like 400 or 422 may be clearer. If a dependency is temporarily down, 503 with retry hints can be a cleaner signal.
- Return 400-series for bad input — Validation errors should point to the field that failed.
- Return 500-series for server faults — Use 500, 502, or 503 when your service can’t complete due to internal or upstream failure.
- Reserve 424 for true dependency chains — Use it when you can point to the prerequisite action that failed.
One Clean Workflow You Can Reuse
When a 424 error code shows up again, you don’t need a new playbook. Use the same sequence every time: map dependencies, find the first failure, fix that failure, then retry the dependent call. If you log the chain and keep errors actionable, the status becomes a fast pointer instead of a dead end.
If you run WebDAV, read the section that defines 424 in RFC 4918 so your status usage matches the spec. If you run an API gateway, decide whether 424 is the clearest signal for clients, or if your case fits another status better.
Often, the fix is boring in the best way: a missing token, a skipped create call, a locked resource, or a batch item that failed early. Find that first break, patch it, and your 424 disappears.
Links you can bookmark: MDN on 424, RFC 4918.
