diff --git a/.gitignore b/.gitignore
index 3ac98724019bfc5da5b4405d651dde26cf2360a7..fc66581708f400e3b6f3258ca9525a6cdd321136 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 /vendor/
 /components/
 /composer.lock
+/apigen
diff --git a/apigen.neon b/apigen.neon
new file mode 100644
index 0000000000000000000000000000000000000000..7de11cc0c73825ffb0b8d06b9f4688d592a8f1ac
--- /dev/null
+++ b/apigen.neon
@@ -0,0 +1,9 @@
+source: . 
+destination: apigen
+exclude:
+    - vendor
+    - Tests
+tree: true
+deprecated: true
+templateTheme: bootstrap
+noSourceCode: true
diff --git a/composer.json b/composer.json
index afda20384c2c61ddc6c307e813557fce40860c6e..f9bfd71872f01c360471cf497cf02b8a2a0e0a58 100644
--- a/composer.json
+++ b/composer.json
@@ -43,6 +43,7 @@
         "cleentfaar/tissue": "dev-master",
         "cleentfaar/tissue-bundle": "dev-master",
         "cleentfaar/tissue-clamav-adapter": "dev-master",
+        "apigen/apigen": "~4.0"
     },
     "suggest": {
         "cleentfaar/tissue": "Pour le scan antivirus.",
diff --git a/phpci.yml b/phpci.yml
index 0d7fc2078e317bb5ad2f5c70f4286780e2d3edf8..5f4138f682ac9848dbb0dc96fa39c4d13f46a37e 100755
--- a/phpci.yml
+++ b/phpci.yml
@@ -28,4 +28,5 @@ complete:
 
 success:
   shell:
+    - "vendor/bin/apigen generate && rsync -r --delete apigen/ /var/www/api/irstea-file-upload-bundle/%BRANCH%"
     - curl 'http://istest.lyon.cemagref.fr/satis/trigger.php?package=irstea/file-upload-bundle'