diff --git a/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java
index c17683c..cc6444a 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java
@@ -193,11 +193,13 @@
     @Produces(MediaType.APPLICATION_JSON)
     public Response addDevices(@PathParam("regionId") String regionId,
                                InputStream stream) {
-        final RegionId rid = RegionId.regionId(regionId);
+        RegionId rid = RegionId.regionId(regionId);
+        Region region = nullIsNotFound(regionService.getRegion(rid),
+                REGION_NOT_FOUND + rid);
 
         URI location;
         try {
-            regionAdminService.addDevices(rid, extractDeviceIds(stream));
+            regionAdminService.addDevices(region.id(), extractDeviceIds(stream));
             location = new URI(rid.id());
         } catch (IOException | URISyntaxException e) {
             throw new IllegalArgumentException(e);
@@ -219,7 +221,9 @@
     @Consumes(MediaType.APPLICATION_JSON)
     public Response removeDevices(@PathParam("regionId") String regionId,
                                   InputStream stream) {
-        final RegionId rid = RegionId.regionId(regionId);
+        RegionId rid = RegionId.regionId(regionId);
+        Region region = nullIsNotFound(regionService.getRegion(rid),
+                REGION_NOT_FOUND + rid);
 
         try {
             regionAdminService.removeDevices(rid, extractDeviceIds(stream));
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java
index 574f7e0..a00edc8 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java
@@ -422,6 +422,26 @@
     }
 
     /**
+     * Tests creating a flow with POST.
+     */
+    @Test
+    public void testAddDevicesPostWithoutRegion() {
+        expect(mockRegionService.getRegion(anyObject())).andReturn(null).anyTimes();
+        replay(mockRegionService);
+
+        WebTarget wt = target();
+        InputStream jsonStream = RegionsResourceTest.class
+                .getResourceAsStream("region-deviceIds.json");
+
+        Response response = wt.path("regions/" + region1.id() + "/devices")
+                .request(MediaType.APPLICATION_JSON_TYPE)
+                .post(Entity.json(jsonStream));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NOT_FOUND));
+
+        verify(mockRegionService);
+    }
+
+    /**
      * Tests adding a set of devices in region with POST.
      */
     @Test
@@ -430,12 +450,14 @@
         expectLastCall();
         replay(mockRegionAdminService);
 
+        expect(mockRegionService.getRegion(anyObject())).andReturn(region1).anyTimes();
+        replay(mockRegionService);
+
         WebTarget wt = target();
         InputStream jsonStream = RegionsResourceTest.class
                 .getResourceAsStream("region-deviceIds.json");
 
-        Response response = wt.path("regions/" +
-                region1.id().toString() + "/devices")
+        Response response = wt.path("regions/" + region1.id().toString() + "/devices")
                 .request(MediaType.APPLICATION_JSON_TYPE)
                 .post(Entity.json(jsonStream));
         assertThat(response.getStatus(), is(HttpURLConnection.HTTP_CREATED));
@@ -452,6 +474,8 @@
         expectLastCall();
         replay(mockRegionAdminService);
 
+        expect(mockRegionService.getRegion(anyObject())).andReturn(region1).anyTimes();
+        replay(mockRegionService);
 
         WebTarget wt = target()
                 .property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true);
@@ -459,8 +483,7 @@
                 .getResourceAsStream("region-deviceIds.json");
 
         // FIXME: need to consider whether to use jsonStream for entry deletion
-        Response response = wt.path("regions/" +
-                region1.id().toString() + "/devices")
+        Response response = wt.path("regions/" + region1.id().toString() + "/devices")
                 .request().method("DELETE", Entity.json(jsonStream));
         assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
         verify(mockRegionAdminService);
