A US aircraft attacked a Medecins Sans Frontieres (MSF) clinic in the Afghan city of Kunduz because of "human error", a US military inquiry said.
The investigation found the crew of the AC-130 gunship mistook the clinic for a nearby government building that had been seized by Taliban fighters.
At least 30 civilians were killed in the 3 October attack, amid a campaign to retake Kunduz from Taliban forces.
MSF said the report demonstrates "gross negligence" by the US military.
The group said the incident constituted "violations of the rules of war" and reiterated calls for an "independent and impartial investigation into the attack".
Shortly after the incident, the medical charity disputed initial US justifications for the attack, which said US forces had struck the hospital because they had come under fire in the area.
The US military later admitted that the strike was a mistake and launched an investigation.
On Wednesday, the US commander in Afghanistan, Gen John Campbell, said the investigation had found that the attack on the hospital was "the direct result of avoidable human error, compounded by process and equipment failures".
He said that the crew of the AC-130 plane believed the building was a government compound, the NDS (or National Directorate of Security), which had been taken over by Taliban militants.
Analysis: Barbara Plett Usher, BBC News, Washington
The report catalogues a perfect storm of errors, at every level of the operation.
The most extraordinary admission was that military personnel failed to pick up on indicators the aircraft crew was shelling the wrong building, even though the target co-ordinates it transmitted to headquarters were clearly those of the MSF hospital.
Gen Campbell said he had ordered immediate changes to address the failures, but the long and detailed list of mistakes will prompt questions as to how often wrong targets have been struck before - without a group like MSF to raise the red flag - and whether something like this could happen again.
This is especially the case as the general noted that fatigue and the high tempo of operations in Kunduz contributed to the tragedy.
The fact that the crew thought it was hitting a Taliban command centre explains MSF's contention that the operation was conducted with a purpose to kill and destroy.
But predictably the report does nothing to address its accusation of war crimes: a military spokesman refused to talk about laws of war, saying only that the operation had violated US rules of engagement.
What we know about what happened
The aircraft identified the building based on a visual description provided by Afghan forces, he said, and did not refer to co-ordinates provided by MSF that were included on a no-strike list.
"Tragically this misidentification continued throughout the remainder of the operation, even though there were some contradictory indicators," he said.
"This was a tragic mistake. US forces would never intentionally strike a hospital or other protected facilities."
The gunship fired 211 shells at the MSF compound over 25 minutes, the US military said.
MSF General Director Christopher Stokes said on Wednesday: "It appears that 30 people were killed and hundreds of thousands of people are being denied life-saving care in Kunduz simply because the MSF hospital was the closest large building to an open field and 'roughly matched' a description of an intended target."
An MSF report released earlier this month said its staff contacted US-led forces several times during the attack, saying they were being bombed.
Gen Campbell said other factors that contributed to the mistake included:
"Fatigue and high operational tempo" endured by the troops
The loss of electronics communications systems on the aircraft
The nature of the "planning and approvals process for operations" in Kunduz
The absence of a single system to check targets for attack against the no-strike list
The US military said the troops involved in the attack had been suspended, and were awaiting disciplinary action.
Afghan President Ashraf Ghani on Wednesday described the incident as a "painful demonstration of the cost of war".
"Such mistakes can and should be avoided," he said in a statement.
Saturday 3 October - Col Brian Tribus, spokesman for US Forces in Afghan
US forces conducted an airstrike in Kunduz city at 2:15am (local), Oct 3, against individuals threatening the force. The strike may have resulted in collateral damage to a nearby medical facility. This incident is under investigation.
Sunday 4 October - Pentagon press office
US forces conducted an airstrike in Kunduz city at 2:15am (local), Oct 3, against insurgents who were directly firing upon US service members advising and assisting Afghan Security Forces in the city of Kunduz. The strike was conducted in the vicinity of a Doctors Without Borders medical facility.
Monday 5 October - Gen John Campbell, US military chief in Afghanistan
We have now learned that on October 3, Afghan forces advised that they were taking fire from enemy positions and asked for air support from US forces. An airstrike was then called to eliminate the Taliban threat and several civilians were accidentally struck. This is different from the initial reports, which indicated that US forces were threatened and that the airstrike was called on their behalf.
Tuesday 6 October - Gen John Campbell to the Senate committee
On Saturday morning our forces provided close air support to Afghan forces at their request. To be clear the decision to provide aerial fires was a US decision, made within the US chain of command. A hospital was mistakenly struck. We would never intentionally target a protected medical facility… I assure you that the investigation will be thorough, objective and transparent.
Wednesday 25 November - Gen John Campbell statement
The US strike upon the MSF Trauma Centre in Kunduz... was the direct result of human error, compounded by systems and procedural failures. The US forces directly involved in this incident did not know the targeted compound was the MSF Trauma Centre. The medical facility was misidentified as a target by US personnel who believed they were striking a different building several hundred meters away where there were reports of combatants.