diff --git a/internal/o2o/setapi/setapi.go b/internal/o2o/setapi/setapi.go
index 32d48d9..4a9acdf 100644
--- a/internal/o2o/setapi/setapi.go
+++ b/internal/o2o/setapi/setapi.go
@@ -393,6 +393,13 @@
 	return slices.Insert(in, beginByte, insert...), nil
 }
 
+func levelLineFor(fopt *protoparse.FileOpt, targetAPI gofeaturespb.GoFeatures_APILevel) (string, error) {
+	if fopt.Syntax == "editions" {
+		return fmt.Sprintf("option features.(pb.go).api_level = %s;", targetAPI), nil
+	}
+	return "", fmt.Errorf("file %s is not using Protobuf Editions (https://protobuf.dev/editions/overview/) yet", fopt.File)
+}
+
 func setFileAPI(path string, content []byte, targetAPI gofeaturespb.GoFeatures_APILevel, skipCleanup, errorOnExempt bool) ([]byte, error) {
 	fopt, err := parse(path, content, true)
 	if err != nil {
@@ -426,6 +433,11 @@
 		return slices.Delete(content, from, to), nil
 	}
 
+	levelLine, err := levelLineFor(fopt, targetAPI)
+	if err != nil {
+		return nil, err
+	}
+
 	if !fopt.IsExplicit {
 		logf("Inserting API flag %q into file %s", targetAPI, path)
 
@@ -433,10 +445,6 @@
 		if err != nil {
 			return nil, fmt.Errorf("fileOptionLineNumber: %v", err)
 		}
-		levelLine := fmt.Sprintf("option go_api_flag = %q;", fromFeatureToOld(targetAPI))
-		if fopt.Syntax == "editions" {
-			levelLine = fmt.Sprintf("option features.(pb.go).api_level = %s;", targetAPI)
-		}
 		return insertLine(content, levelLine, ln), nil
 	}
 
@@ -454,11 +462,7 @@
 		return content, nil
 	}
 	logf("Replacing the API flag of file %s", path)
-	insert := fmt.Sprintf("option go_api_flag = %q;", fromFeatureToOld(targetAPI))
-	if fopt.Syntax == "editions" {
-		insert = fmt.Sprintf("option features.(pb.go).api_level = %s;", targetAPI)
-	}
-	content, err = replaceTextRange(content, fopt.APIInfo.TextRange, []byte(insert))
+	content, err = replaceTextRange(content, fopt.APIInfo.TextRange, []byte(levelLine))
 	if err != nil {
 		return nil, fmt.Errorf("replaceTextRange: %v", err)
 	}
