For Static DNS records, use whatever TTL makes sense in a traditional setup. If you're ever planning to change the answers associated with a record, keep the TTL within your tolerance for delay in making the change.
For Filter Chain records, we recommend implementing the lowest TTL you're comfortable using. Our Filter Chain makes highly dynamic decisions about which answers to respond with, but if DNS recursors downstream have cached an old answer with a long TTL, then users will get old answers until they expire.
NS1 supports very low TTLs (the lowest we'd suggest is 1 second), but our customers more commonly use 30 second TTLs as many resolvers will not respect lower values. For some applications with Filter Chain records, TTLs on the order of a few minutes may make sense.