Skip to main content
Use Recover a tool request for the SDK, CLI and HTTP procedure. These rules apply to direct tool executions; Play workflows recover through their saved run IDs.

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.

Dispatch support

Recovery is opt-in. Existing calls without a key keep their current behavior. The SDK dispatches keyed work through the recovery-specific POST endpoint, which enforces recovery support and compares the submitted input before provider dispatch. Older servers use a read-only capability check before the legacy execute POST.