diff --git a/help/context-content.html b/help/context-content.html
index 8af5df4..c1c6a35 100644
--- a/help/context-content.html
+++ b/help/context-content.html
@@ -116,6 +116,10 @@
   <dt>required context [Optional]</dt>
 
   <dd>Either a ctools_context_required or ctools_context_optional or array of contexts for this content. If omitted, no contexts are used.</dd>
+
+  <dt>create content access [Optional]</dt>
+
+  <dd>An optional callback to determine if a user can access this subtype. The callback will receive two arguments, the type and subtype.</dd>
 </dl>
 
 <h2>Rendered content</h2>
diff --git a/includes/content.inc b/includes/content.inc
index 890ec23..e0e5534 100644
--- a/includes/content.inc
+++ b/includes/content.inc
@@ -687,6 +687,11 @@ function ctools_content_get_available_types($contexts = NULL, $has_content = FAL
         }
       }
 
+      // Check if the content type provides an access callback.
+      if (isset($subtype['create content access']) && function_exists($subtype['create content access']) && !$subtype['create content access']($plugin, $subtype)) {
+        continue;
+      }
+
       // If we made it through all the tests, then we can use this content.
       $available[$id][$subtype_id] = $subtype;
     }
