diff --git a/help/context-content.html b/help/context-content.html
index 8af5df4..774d2af 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 name of the operation ('create'), and the name of the subtype. While seemingly redundant, the 'create' operation is passed first since most access callbacks use that signature.</dd>
 </dl>
 
 <h2>Rendered content</h2>
diff --git a/includes/content.inc b/includes/content.inc
index 890ec23..fabf864 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']) && !$subtype['create content access']('create', $subtype_id)) {
+        continue;
+      }
+
       // If we made it through all the tests, then we can use this content.
       $available[$id][$subtype_id] = $subtype;
     }
