diff --git a/docs/generators/crystal.md b/docs/generators/crystal.md
index 721384c810cc7220a28e9d5b211181f935ae60b6..93a893215ca444ec242c7ae8a2cf5b1bee32a505 100644
--- a/docs/generators/crystal.md
+++ b/docs/generators/crystal.md
@@ -58,6 +58,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
 <ul class="column-ul">
 <li>abstract</li>
 <li>alias</li>
+<li>annotation</li>
 <li>as</li>
 <li>as?</li>
 <li>asm</li>
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java
index 0ff2d657e7a09cb8ab2d5fa7941b3fb11fd07037..2e77181d7a3df9f2ed01bd23faffa2938b51174f 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java
@@ -132,7 +132,7 @@ public class CrystalClientCodegen extends DefaultCodegen {
         // reserved word. Ref: https://github.com/crystal-lang/crystal/wiki/Crystal-for-Rubyists#available-keywords
         reservedWords = new HashSet<>(
                 Arrays.asList(
-                        "abstract", "do", "if", "nil?", "select", "union",
+                        "abstract", "annotation", "do", "if", "nil?", "select", "union",
                         "alias", "else", "in", "of", "self", "unless",
                         "as", "elsif", "include", "out", "sizeof", "until",
                         "as?", "end", "instance", "sizeof", "pointerof", "struct", "verbatim",