Garcia, 69, was rushed to the hospital in the capital Lima on Wednesday, the agency said.
“The former president made the decision to shoot himself,” his lawyer Erasmo Reyna said outside the Casimiro Ulloa hospital.
Health minister Zulema Tomas told reporters that Garcia is still “very critical” and his injuries are “very serious.”
Garcia is being treated by neurologists and had to be resuscitate three times by his medical team, Tomas said.
Garcia, who served as president from 1985 to 1990 and from 2006 to 2011, is under investigation for bribery in connection with a massive corruption scandal that has engulfed a number of former Latin American leaders.
Sources close to the investigation told CNN that Peruvian authorities had issued an order for his immediate arrest.
Garcia is accused of receiving kickbacks from one of Latin America’s largest construction firms — the Brazil-based company Odebrecht — during the building of an electric train for the Lima metro while he was president during his second term. He has denied the claims.
In his most recent tweet, posted on Tuesday, Garcia said there was “no shred of evidence” against him, accused Peruvian prosecutors of “SPECULATION,” and said he had “never sold out and that is proven.”
In November last year, Garcia had requested asylum at the Uruguayan embassy after a judge banned him from leaving the country for 18 months. The Uruguayan government denied the request in December.
Global corruption scandal
Odebrecht is accused of doling out nearly $800 million in bribes between 2001 and 2016 to get contracts from governments to build roads, bridges, dams and highways.
Authorities say Odebrecht officials shipped cash across the globe — from one shell bank account to the next — en route to politicians’ pockets in a dozen countries, including Peru, Mexico, Venezuela, Colombia, Argentina, and Mozambique. Some of the bribes filtered through the United States.
The corruption scandal — one of the biggest in modern history — implicated several former Latin American presidents.