diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java
index b0a38d96c6d69196fbb025f0d0a26f43a70a1ee7..8d7b1c1b1e5cc53ca710409cdc70ba9d0d58b06c 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java
@@ -22,6 +22,9 @@ import io.swagger.v3.parser.util.SchemaTypeUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.openapitools.codegen.*;
 import org.openapitools.codegen.meta.features.DocumentationFeature;
+import org.openapitools.codegen.utils.ModelUtils;
+
+import java.io.File;
 import java.util.*;
 
 public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodegen {
@@ -34,6 +37,9 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege
 
     protected String npmRepository = null;
 
+    protected String apiDocPath = "docs/api/";
+    protected String modelDocPath = "docs/models/";
+
     private String tsModelPackage = "";
 
     public TypeScriptAxiosClientCodegen() {
@@ -45,6 +51,11 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege
         // at the moment
         importMapping.clear();
 
+        modelDocTemplateFiles.put("model_doc.mustache", ".md");
+        apiDocTemplateFiles.put("api_doc.mustache", ".md");
+        additionalProperties.put("apiDocPath", apiDocPath);
+        additionalProperties.put("modelDocPath", modelDocPath);
+
         outputFolder = "generated-code/typescript-axios";
         embeddedTemplateDir = templateDir = "typescript-axios";
 
@@ -86,6 +97,16 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege
         return sb.toString();
     }
 
+    @Override
+    public String apiDocFileFolder() {
+        return (outputFolder + "/" + apiDocPath).replace('/', File.separatorChar);
+    }
+
+    @Override
+    public String modelDocFileFolder() {
+        return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar);
+    }
+
     @Override
     public void processOpts() {
         super.processOpts();
diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/api_doc.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/api_doc.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..16a433932e8fe760e818061576e2be55e5e2c288
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/typescript-axios/api_doc.mustache
@@ -0,0 +1,65 @@
+# {{classname}}{{#description}}
+{{description}}{{/description}}
+
+All URIs are relative to *{{basePath}}*
+
+| Method | HTTP request | Description |
+| ------------- | ------------- | ------------- |
+{{#operations}}{{#operation}}| [**{{operationId}}**]({{classname}}.md#{{operationIdLowerCase}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} |
+{{/operation}}{{/operations}}
+
+{{#operations}}
+{{#operation}}
+# **{{{operationId}}}**
+> {{#returnType}}{{{returnType}}} {{/returnType}}{{{operationId}}}({{#allParams}}{{#required}}{{{paramName}}}{{/required}}{{^required}}{{{paramName}}}={{{paramName}}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}})
+
+{{{summary}}}{{#notes}}
+
+{{{notes}}}{{/notes}}
+
+### Example
+
+{{#hasAuthMethods}}
+{{#authMethods}}
+{{#isBasic}}
+{{#isBasicBasic}}
+* Basic Authentication ({{name}}):
+{{/isBasicBasic}}
+{{#isBasicBearer}}
+* Bearer{{#bearerFormat}} ({{{.}}}){{/bearerFormat}} Authentication ({{name}}):
+{{/isBasicBearer}}
+{{/isBasic}}
+{{#isApiKey}}
+* Api Key Authentication ({{name}}):
+{{/isApiKey }}
+{{#isOAuth}}
+* OAuth Authentication ({{name}}):
+{{/isOAuth }}
+{{> api_doc_example }}
+{{/authMethods}}
+{{/hasAuthMethods}}
+{{^hasAuthMethods}}
+{{> api_doc_example }}
+{{/hasAuthMethods}}
+### Parameters
+{{^allParams}}This endpoint does not need any parameter.{{/allParams}}{{#allParams}}{{#-last}}
+| Name | Type | Description  | Notes |
+| ------------- | ------------- | ------------- | ------------- |{{/-last}}{{/allParams}}
+{{#allParams}}| **{{paramName}}** | {{#isFile}}**{{dataType}}**{{/isFile}}{{^isFile}}{{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{dataType}}**]({{baseType}}.md){{/isPrimitiveType}}{{/isFile}}| {{description}} | {{^required}}[optional] {{/required}}{{#defaultValue}}[default to {{defaultValue}}]{{/defaultValue}} |
+{{/allParams}}
+
+### Return type
+
+{{#returnType}}{{#returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{{returnType}}}**](../models/{{{returnType}}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void (empty response body){{/returnType}}
+
+### Authorization
+
+{{^authMethods}}No authorization required{{/authMethods}}{{#authMethods}}{{{name}}}{{^-last}}, {{/-last}}{{/authMethods}}
+
+### HTTP request headers
+
+ - **Content-Type**: {{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}{{^consumes}}Not defined{{/consumes}}
+ - **Accept**: {{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}{{^produces}}Not defined{{/produces}}
+
+{{/operation}}
+{{/operations}}
diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/api_doc_example.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/api_doc_example.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..215565ef1b0f46400c3e130b93f8b5a5eb1c9fe5
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/typescript-axios/api_doc_example.mustache
@@ -0,0 +1,15 @@
+```javascript
+const ionoscloud = require('@ionos-cloud/sdk-nodejs')
+{{#hasAuthMethods}}
+# setup authorization
+const config = new ionoscloud.Configuration({
+    username: 'YOUR_USERNAME',
+    password: 'YOUR_PASSWORD'
+});
+{{/hasAuthMethods}}
+api_instance = ionoscloud.{{{classname}}}(config)
+{{#summary}}# {{{.}}}{{/summary}}
+{{#returnType}}{{/returnType}}api_instance.{{{operationId}}}{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}options{{/-last}}{{/optionalParams}}){{/hasParams}}.then((response) => console.log(response));
+{{#returnType}}
+{{/returnType}}
+```
diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/model_doc.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/model_doc.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..c629f5930c24224e97f33bd07ea9a79b14e8daaf
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/typescript-axios/model_doc.mustache
@@ -0,0 +1,11 @@
+{{#models}}{{#model}}# {{classname}}
+
+{{#description}}{{&description}}
+{{/description}}
+## Properties
+| Name | Type | Description | Notes |
+| ------------ | ------------- | ------------- | ------------- |
+{{#vars}}| **{{name}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{dataType}}**]({{complexType}}.md){{/isPrimitiveType}} | {{{description}}} | {{^required}}[optional] {{/required}}{{#isReadOnly}}[readonly] {{/isReadOnly}}{{#defaultValue}}[default to {{{.}}}]{{/defaultValue}} |
+{{/vars}}
+
+{{/model}}{{/models}}