diff --git a/core/api/src/main/java/org/onosproject/net/intent/MplsPathIntent.java b/core/api/src/main/java/org/onosproject/net/intent/MplsPathIntent.java
index caa5fbb..4548c44 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/MplsPathIntent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/MplsPathIntent.java
@@ -42,6 +42,7 @@
      * ports and using the specified explicit path.
      *
      * @param appId application identifier
+     * @param key intent key
      * @param selector traffic selector
      * @param treatment treatment
      * @param path traversed links
@@ -51,11 +52,11 @@
      * @param priority    priority to use for flows generated by this intent
      * @throws NullPointerException {@code path} is null
      */
-    private MplsPathIntent(ApplicationId appId, TrafficSelector selector,
+    private MplsPathIntent(ApplicationId appId, Key key, TrafficSelector selector,
             TrafficTreatment treatment, Path path, Optional<MplsLabel> ingressLabel,
             Optional<MplsLabel> egressLabel, List<Constraint> constraints,
             int priority) {
-        super(appId, selector, treatment, path, constraints,
+        super(appId, key, selector, treatment, path, constraints,
               priority);
 
         this.ingressLabel = checkNotNull(ingressLabel);
@@ -149,6 +150,7 @@
 
             return new MplsPathIntent(
                     appId,
+                    key,
                     selector,
                     treatment,
                     path,
diff --git a/core/api/src/main/java/org/onosproject/net/intent/PathIntent.java b/core/api/src/main/java/org/onosproject/net/intent/PathIntent.java
index 0c831fd..9bf137a 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/PathIntent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/PathIntent.java
@@ -42,6 +42,7 @@
      * ports and using the specified explicit path.
      *
      * @param appId     application identifier
+     * @param key       intent key
      * @param selector  traffic selector
      * @param treatment treatment
      * @param path      traversed links
@@ -50,12 +51,13 @@
      * @throws NullPointerException {@code path} is null
      */
     protected PathIntent(ApplicationId appId,
+                         Key key,
                          TrafficSelector selector,
                          TrafficTreatment treatment,
                          Path path,
                          List<Constraint> constraints,
                          int priority) {
-        super(appId, null, resources(path.links()), selector, treatment, constraints,
+        super(appId, key, resources(path.links()), selector, treatment, constraints,
                 priority);
         PathIntent.validate(path.links());
         this.path = path;
@@ -138,6 +140,7 @@
 
             return new PathIntent(
                     appId,
+                    key,
                     selector,
                     treatment,
                     path,
@@ -184,6 +187,7 @@
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("id", id())
+                .add("key", key())
                 .add("appId", appId())
                 .add("priority", priority())
                 .add("resources", resources())
