Count actual sends, not just the outer loop
If business code permits only two retries but logs show more HTTP attempts, first check whether the client, business wrapper or queue redelivery also repeats the operation. Flux Art is a multi-model AI visual creation and production platform. This article concerns how an integrator organizes its own calls; it does not claim that the platform provides a particular official SDK or default automatic retry behavior. Investigate the actual layers traversed by one business operation rather than assuming every component is faulty.
Distinguish retries from attempts
The initial call counts as an attempt. Suppose each of three layers permits one initial attempt plus two retries, and every layer fully repeats its inner call while failures continue. The deepest layer can then be called up to three times three times three, or twenty-seven times. This is a hypothetical arithmetic example illustrating nesting, not a real API load test or a Flux Art quota. If a layer succeeds early, does not retry that error or exhausts its budget sooner, the actual count can be lower. The presence of any three-layer structure does not establish that it will send twenty-seven requests.
Build the responsibility table from the actual call path
Work downward from where the user operation enters the system. Check whether the task queue redelivers, whether the business wrapper uses a decorator or loop, whether the actual HTTP client enables its own policy, and whether a deployed proxy also replays requests. Record library and configuration versions, trigger conditions, the meaning of each count and its owner. Mark absent layers as absent and unconfirmed ones as unknown. The table below lists diagnostic fields, not components you need to add. Environment variables or deployment settings may override a layer's configuration, so development-machine defaults are not enough.
| Layer or record | What to specify | Do not confuse |
|---|---|---|
| Business entry point | One operation identifier and request version | A retry with a new operation |
| Queue | Whether redelivery occurs and what triggers it | Receiving a task again with its first execution |
| Business wrapper | What loop or decorator counts mean | Two retries with two total attempts |
| HTTP client | Current version and effective configuration | Library defaults with proven production behavior |
| Lowest sending point | Actual attempt count and error classes | Outer loop counts with actual sends |
| Stop record | Budget, deadline and remote state | Stopping local attempts with canceling the remote task |
Choose a retry owner that understands the business state
After establishing each layer's behavior, decide where retries for this operation belong and how the other layers will disable duplicate policies or participate in a shared budget. That decision depends on the actual libraries and system; do not copy one library's parameter name into every client. Make changes in an isolated environment first, then check whether the lowest sending layer's counts match expectations. Both AWS and Microsoft warn that independent retries at multiple layers can amplify requests. Citing that principle does not mean every system should indiscriminately disable all lower-level safeguards.
Limit total attempts, total duration and per-call timeouts separately
A timeout for one network call is not the maximum wait for the entire business operation. Outer retries, inner waits, backoff and queuing consume additional time. Define a total attempt budget and an overall observation deadline for each operation while retaining reasonable per-call timeouts. Respect server-requested waits rather than retrying early because the local deadline is approaching. If the remaining budget cannot accommodate the next wait, stop automatic attempts and retain a record for follow-up instead of silently bypassing the limit.
Count creation requests and status queries separately
Once a task identifier is available, query that original task. A queued or processing state should not trigger creation of the same task again. If the creation result is unknown, preserve the original request body, original idempotency key and known response evidence. Changing the key or model is not an ordinary retry. Count creation attempts separately from query attempts so that it is clear which request class is increasing. Idempotency controls duplicate business side effects; it does not make repeated HTTP attempts disappear or replace request-count management.
Verify offline sequences instead of experimenting on real tasks
In your own tests, replace the remote API with a controllable test double. Cover success on the first attempt, success after a retryable error, persistent failure, a non-retryable error and an existing task identifier. Count at the lowest sending point in every case and verify that the outer operation identifier remains unchanged. These tests target control flow and do not require paid generation requests. Mark unrun cases as awaiting evidence. Correct arithmetic does not establish that all timeout, redirect and retry settings in the real client have passed verification.
Preserve a traceable state when the budget runs out
When the attempt or time limit is reached, stop local automatic attempts. Retain the original operation identifier, sanitized request version, task identifier, last response and reason for stopping. Do not report local stopping as cancellation of the remote task or automatically delete records whose outcomes remain unconfirmed. If a person must decide whether to retry, wait or create a new business operation, provide enough evidence to distinguish those choices. Logs must not contain API keys or unprotected sensitive request content; attempt-count records must not become another route for exposing credentials that grant access to source material.
References and API entry point
For the principles of layered retries, see https://builder.aws.com/content/3EumjoZascWd1oZiEgL8ORlv3qE/timeouts-retries-and-backoff-with-jitter ; for reviewing retry strategies, see https://learn.microsoft.com/en-us/azure/architecture/best-practices/transient-faults . The Flux Art OpenAPI reference is https://flux-art.net/en/openapi/reference , and the platform entry point is https://flux-art.net/en . This article reports no real generation tests. Before deployment, verify the implementation against current API documentation, the actual client version and project authorization. Do not disable TLS or bypass rate limits.