Calculating new date with date/time operators fails with variables
To construct the interval, multiply the number with the 1 second interval:
 duration * interval '1 second'

select calldate + duration * interval '1 second' as "completion_date";


or:

select calldate + duration * '1 second'::interval as "completion_date";


Postgres docs have a page about Date/Time Functions and Operators, where there are similar examples:

Operator    Example                     Result
  *         900 * interval '1 second'   interval '00:15:00'
  *         21 * interval '1 day'       interval '21 days'