diff --git a/restws.entity.inc b/restws.entity.inc
index 4c18ec6..962195c 100644
--- a/restws.entity.inc
+++ b/restws.entity.inc
@@ -111,6 +111,19 @@ class RestWSEntityResourceController implements RestWSResourceControllerInterfac
   }
 
   public function create(array $values) {
+    // Make sure that only known properties come in.
+    $property_info = entity_get_property_info($this->entityType);
+    $properties = $property_info['properties'];
+    // Add bundle specific properties if there are any.
+    $bundle_key = $this->entityInfo['entity keys']['bundle'];
+    if (!empty($bundle_key) && !empty($values[$bundle_key]) && !empty($property_info['bundles'][$values[$bundle_key]]['properties'])) {
+      $bundle_properties = $property_info['bundles'][$values[$bundle_key]]['properties'];
+      $properties += $bundle_properties;
+    }
+    $diff = array_diff_key($values, $properties);
+    if (!empty($diff)) {
+      throw new RestWSException('Unknown data properties: ' . implode(' ', array_keys($diff)) . '.', 406);
+    }
     try {
       $wrapper = entity_property_values_create_entity($this->entityType, $values);
     }
diff --git a/restws.test b/restws.test
index 6b14430..8f15942 100644
--- a/restws.test
+++ b/restws.test
@@ -137,7 +137,7 @@ class RestWSTestCase extends DrupalWebTestCase {
     );
     $json = drupal_json_encode($new_node);
     $result = $this->httpRequest('node', 'PUT', $account, $json);
-    $this->assertEqual($result, "406 Not Acceptable: Unknown data property $property_name.", 'Response body is correct');
+    $this->assertEqual($result, "406 Not Acceptable: Unknown data properties: $property_name.", 'Response body is correct');
     $this->assertResponse('406', 'HTTP response code is correct.');
   }
 
