You can pass keys to TTL but xargs must take one key at a time to run it with TTL since it’s what command requires. This is done with -n1 argument.
In the list of executions below, we set some keys without TTL. Then, we pass the keys to TTL. Initially, they all had -1 values since nothing was set. We can see the TTL result became different when we set a TTL to a key.
➜ docker exec -it redis redis-cli
127.0.0.1:6379> SET domain1:key1 value1
OK
127.0.0.1:6379> SET domain1:key2 value2
OK
127.0.0.1:6379> SET domain2:key3 value3
OK
127.0.0.1:6379> KEYS 'domain*'
1) "domain1:key1"
2) "domain1:key2"
3) "domain2:key3"
127.0.0.1:6379> exit
➜ redis-cli KEYS 'domain*'
1) "domain1:key1"
2) "domain1:key2"
3) "domain2:key3"
➜ redis-cli KEYS 'domain*' | xargs -r -n1 redis-cli TTL
(integer) -1
(integer) -1
(integer) -1
➜ redis-cli SET 'domain1:key1' value1 EX 5
OK
➜ redis-cli KEYS 'domain*' | xargs -r -n1 redis-cli TTL
(integer) 2
(integer) -1
(integer) -1
➜ redis-cli KEYS 'domain*' | xargs -r -n1 redis-cli TTL
(integer) -1
(integer) -1