arkennemasis fal · Recover Result (free)
You restarted ComfyUI mid-render. fal Recover Result gets the file back for free.
- file_paths
- result_json
Here's the scenario: you kicked off a 2K H3 render, it's four minutes in, and you close the wrong window. Or ComfyUI crashes. Or you get impatient and stop the node. Under a naive API node you've just paid for a video you'll never see. Here you haven't, because the job lives on fal's servers and this little node goes and fetches it - without submitting anything, which means it bills nothing.
It's the least glamorous node in the pack and probably the one that saves the most money.
How it works
Every submit in this pack is written to output/fal/_requests.jsonl along with its request id and the URL fal returns its result on. request_id is the only required input: paste the id and the node looks it up in that log, then downloads whatever fal produced into output/fal/recovered/<request id>/. There's no generation call anywhere in the path - it's a lookup and a download, hence "free" in the display name.
If the id isn't in the log - because you cleared output/, or because the job came from a node run in a different ComfyUI install - the optional endpoint_id input is how you tell it what the job was, e.g. fal-ai/sync-lipsync/v3. That's the whole interface.
Finding the id is a text-file job. The log is one JSON object per line:
tail -n 5 ComfyUI/output/fal/_requests.jsonl
Grab the request_id from the run you care about. The node's own info output on the original node also carries it, so if you still have that node in the graph the id may be right there in the saved graph.
Outputs
file_paths is what you want - the paths of everything it recovered. result_json is fal's full response for that request, which is how you find out what the job actually was, what parameters it ran with, and whether it failed upstream rather than just being slow. If the node comes back saying it couldn't find the request, the job either failed on fal's side or hasn't finished yet; the result_json (and the entry in the log) will tell you which.
Install
Same pack, same steps as every other node here:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install httpx
Manager → arkennemasis. Restart, then look under arkennemasis/fal/Tools, where this sits next to the free History node that loads previous fal runs back into a graph.
You do still need FAL_KEY in the .env next to run_nvidia_gpu.bat - recovery is free but it's still an authenticated call to fal's API:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
Honest limitations
- It can only fetch what fal still has. This is a recovery tool, not an archive. If a job failed on fal's side, there's nothing to download and no refund from this node.
- Not every endpoint puts files where it expects.
file_pathscan come back empty whileresult_jsonis full of useful information - read the JSON before assuming the recovery failed. - Deleting
output/deletes the log. The ledger lives atoutput/fal/_requests.jsonl, so if you clean out your outputs (or use an auto-numbered run-folder setup and prune aggressively), you lose the id→response mapping. Then it's endpoint_id and your own notes.
The one habit worth building: before you re-run an expensive node after a crash, check the log for its request id first. Re-running pays twice for something you probably already own.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| request_id | STRING | The fal request id - every run logs it in output/fal/_requests.jsonl. | |
| endpoint_idopt | STRING | Only needed when the id is not in the request log, e.g. fal-ai/sync-lipsync/v3. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| file_paths | STRING | — |
| result_json | STRING | — |