Opener Devon Conway hit 91 before being bowled while he attempted a reverse sweep off spinner Ravichandran Ashwin on a dramatic day two in Bengaluru.
New Zealand were 180-3 at stumps with Rachin Ravindra on 22 and Daryl Mitchell on 14 when bad light stopped play in an extended session.
India were dismissed in 31.2 overs in the second session after they elected to bat in overcast conditions. The opening day of the Test -- the first of a three-match series -- was washed out.
It was India's third-lowest Test score ever and lowest on home turf. Their previous lowest at home was 75 against the West Indies in New Delhi in 1987.
Their lowest overall is 36 against Australia in a pink-ball Adelaide Test in 2020.
"Sometimes you make the right call, sometimes you don't," said India skipper Rohit Sharma.
"I was on the other side of it this time around," he added. "I'm hurting a little bit because I made that call."
New Zealand launched a strong reply. Conway put on 67 runs for the first wicket with new skipper Tom Latham, who made 15.
The left-handed Conway took on the Indian attack and handled the spinners with aplomb as he reached 50 off 54 balls with a six off Ashwin.
Kuldeep Yadav struck next ball to send back Latham with his left-arm wrist spin. India successfully reviewed the decision in their favour after the umpire denied the appeal.
Conway put on a partnership of 75 with Will Young, who hit 33 and was in for the injured Kane Williamson.
- 'Keep mounting pressure' -
Young fell to Ravindra Jadeja before Indian wicketkeeper Rishabh Pant missed a stumping and injured his knee, hobbling off the ground.
Dhruv Jurel came in as the substitute wicketkeeper.
Rohit said Pant injured the same knee that was operated upon after his near-fatal car crash in December 2022, but hoped the glovesman would return to the field on Friday.
Earlier, Pant top-scored with 20 in a disastrous Indian innings that witnessed five ducks, including that of star batsman Virat Kohli.
Henry wrapped up the innings with a five-wicket haul, and his last strike of Kuldeep was his 100th Test wicket.
"We can't be complacent at all," said Henry. "We've just got to keep mounting pressure."
Tim Southee struck the first blow in the seventh over with the score on nine, bowling Rohit through the gate with a sharp inswinger after he had made two.
O'Rourke struck in his first over to get Kohli caught at leg gully without adding to the score, silencing a stunned home crowd.
There was a brief rain interruption but there was no respite for India when the players returned as the shell-shocked hosts slumped to 33-5, and then 34-6 at lunch.
Wickets continued to tumble and soon after lunch O'Rourke (4-22) and Henry (5-15) packed off the remaining four batsmen, assisted by some great catching.