Hello Umar,
Checkvist has some history of operations associated with list items, but this history does not cover all possible operations and it is not and probably won't be exposed in OpenAPI, sorry :(
You're right that updated_at is changed on every modification of the task, so you cannot rely on it entirely. On the other hand, you can cache this value locally in your system, i.e. if you detect a closed task, you can store its completion date locally in your system, and do not update it on subsequent requests to Checkvist. May be it will be good enough solution.
Hope this helps,
KIR