diff --git a/jenkins/jobs/api-jobs.yaml b/jenkins/jobs/api-jobs.yaml
index 6149a46b5f..2755595ada 100644
--- a/jenkins/jobs/api-jobs.yaml
+++ b/jenkins/jobs/api-jobs.yaml
@@ -96,6 +96,42 @@
           remove-prefix: 'api-guide/build/html/'
       - console-log
 
+- job-template:
+    name: gate-{name}-api-ref
+    description: Build and draft the API Reference from source.
+    node: ubuntu-trusty
+
+    builders:
+      - gerrit-git-prep
+      - install-distro-packages
+      - revoke-sudo
+      - tox:
+          envlist: 'api-ref'
+
+    publishers:
+      - console-log
+      - upload-api-ref-draft
+
+- job-template:
+    name: '{name}-api-ref'
+    description: Build and publish the API Reference from source.
+    node: ubuntu-trusty
+
+    builders:
+      - gerrit-git-prep
+      - install-distro-packages
+      - revoke-sudo
+      - tox:
+          envlist: 'api-ref'
+
+    publishers:
+      - ftp:
+          site: developer.openstack.org
+          source: 'api-ref/build/html/**'
+          target: 'api-ref/{service}'
+          remove-prefix: 'api-ref/build/html/'
+      - console-log
+
 - job:
     name: python-openstacksdk-docs
     description: Build and publish the Python SDK docs from source.
diff --git a/jenkins/jobs/macros.yaml b/jenkins/jobs/macros.yaml
index 88c792ab41..a24b8c57a6 100644
--- a/jenkins/jobs/macros.yaml
+++ b/jenkins/jobs/macros.yaml
@@ -965,6 +965,17 @@
               keep-hierarchy: true
               copy-after-failure: true
 
+- publisher:
+    name: upload-api-ref-draft
+    publishers:
+      - scp:
+          site: 'static.openstack.org'
+          files:
+            - target: 'docs-draft/$LOG_PATH'
+              source: 'api-ref/build/html/**'
+              keep-hierarchy: true
+              copy-after-failure: true
+
 - publisher:
     name: upload-docs-draft
     publishers:
diff --git a/jenkins/jobs/projects.yaml b/jenkins/jobs/projects.yaml
index c571c8aa7f..b8f8abbbb4 100644
--- a/jenkins/jobs/projects.yaml
+++ b/jenkins/jobs/projects.yaml
@@ -3937,6 +3937,9 @@
       - gate-{name}-api-guide
       - '{name}-api-guide':
           service: compute
+      - gate-{name}-api-ref
+      - '{name}-api-ref':
+          service: compute
 
 - project:
     name: nova-docker
diff --git a/zuul/layout.yaml b/zuul/layout.yaml
index de8c1de753..1a84800121 100755
--- a/zuul/layout.yaml
+++ b/zuul/layout.yaml
@@ -960,7 +960,7 @@ jobs:
         all-files-match-any:
           - ^.*\.rst$
           - ^doc/.*$
-          - ^api-guide/.*$
+          - ^api-.*$
           - ^nova/hacking/.*$
           - ^nova/locale/.*$
           - ^nova/tests/.*$
@@ -1058,7 +1058,7 @@ jobs:
       - project: ^openstack/nova$
         all-files-match-any:
           - ^.*\.rst$
-          - ^api-guide/.*$
+          - ^api-.*$
           - ^doc/.*$
           - ^nova/locale/.*$
 
@@ -1412,7 +1412,7 @@ jobs:
         all-files-match-any:
           - ^.*\.rst$
           - ^doc/.*$
-          - ^api-guide/.*$
+          - ^api-.*$
           - ^nova/tests/unit/.*$
           - ^nova/tests/functional/.*$
           - ^nova/tests/.*\.py$
@@ -1705,10 +1705,22 @@ jobs:
       - '^tox.ini$'
       - '^api-guide/.*'
 
+  - name: ^gate-.*-api-ref$
+    success-pattern: http://docs-draft.openstack.org/{build.parameters[LOG_PATH]}/api-ref/build/html/
+    voting: false
+    branch: master
+    files:
+      - '^tox.ini$'
+      - '^api-ref/.*'
+
   - name: ^(?!gate-).*-api-guide$
     # Only publish from master
     branch: master
 
+  - name: ^(?!gate-).*-api-ref$
+    # Only publish from master
+    branch: master
+
   - name: ^gate-.*-js-draft
     success-pattern: http://docs-draft.openstack.org/{build.parameters[LOG_PATH]}/dist/
 
@@ -7654,6 +7666,7 @@ projects:
       - gate-tempest-dsvm-full-devstack-plugin-ceph-nv
       - gate-tempest-dsvm-multinode-full
       - gate-nova-api-guide
+      - gate-nova-api-ref
     gate:
       - gate-nova-tox-db-functional
       - gate-grenade-dsvm-partial-ncpu