Key and input rules
The server hashes the canonical request with SHA-256. Object property order
does not create a conflict. array order and values do. The fingerprint includes
the tool and execution-affecting options. Keep the original payload when
retrying, including wait behavior and metadata.
Resume through the same SDK, CLI, or HTTP call shape. Response format and
metadata headers also participate in comparison, so switching between the
high-level SDK’s dataset response and the raw HTTP response can conflict.
Key lookup can inspect the saved response without resubmitting those options.
Use the original API key or caller identity for recovery. Another caller in
the same workspace cannot read the execution. attempting to submit the same
key from that caller conflicts. Rotating an API key does not transfer its
saved executions to the new key.
The key stays short even for a large batch. Send the normal payload once per
HTTP attempt. The server computes its digest. A digest cannot reconstruct your
input, and idempotency does not increase HTTP or provider batch limits.
--input @file reads local JSON. It does not enable an unsupported provider
file-upload action.
States and errors
Completed responses are replayable for 24 hours after completion. The key’s
record remains after replay expiry, so reusing an expired key produces an
explicit error. Active and ambiguous executions never age into permission to
launch another call. Save results in your own durable store if you need them
beyond the replay window.
An idempotency key cannot guarantee an external provider’s outcome when the
provider accepts work and the process dies before its job ID can be saved.
Deepline preserves that uncertainty and refuses duplicate dispatch. Once a
recoverable async job ID is durably saved, recovery follows that job.