For errors returned by the API, details.status is the HTTP status. When the server supplies its own error code it goes in details.serverCode, with extra information in details.serverDetails.
Invalid arguments: unknown option, value not among the choices, missing option value, non-positive --timeout, and so on. Errors from argument parsing carry details.commanderCode
Check tufty <tool> -h
unknown_command
No such command; details.suggestions lists close matches
Fix the command name
tool_not_found
No tool with that id for tufty tools describe; details.availableTools lists them all
Fix the tool id
missing_input
Fewer inputs than the tool needs; details has flag, min, got
Add the missing inputs
too_many_inputs
More inputs than allowed, or more than 4 images joined with + for one product
Pass fewer inputs
too_many_images
Products × models × --count exceeds 16; details has pairs, count, max
Split into several runs or lower --count
file_not_found
A local file doesn't exist; details.path is the path
Check the path
invalid_video
The video is truncated or missing its moov index; details.filename is the file