diff --git a/src/applications/phriction/conduit/ConduitAPI_phriction_new_Method.php b/src/applications/phriction/conduit/ConduitAPI_phriction_new_Method.php
new file mode 100644
--- /dev/null
+++ b/src/applications/phriction/conduit/ConduitAPI_phriction_new_Method.php
@@ -0,0 +1,48 @@
+<?php
+
+final class ConduitAPI_phriction_new_Method
+  extends ConduitAPI_phriction_Method {
+
+  public function getMethodDescription() {
+    return 'Create a Phriction document.';
+  }
+
+  public function defineParamTypes() {
+    return array(
+      'slug'          => 'required string',
+      'title'         => 'optional string',
+      'content'       => 'optional string',
+      'description'   => 'optional string',
+    );
+  }
+
+  public function defineReturnType() {
+    return 'nonempty dict';
+  }
+
+  public function defineErrorTypes() {
+    return array(
+    );
+  }
+
+  protected function execute(ConduitAPIRequest $request) {
+    $slug = $request->getValue('slug');
+
+    $doc = id(new PhrictionDocumentQuery())
+      ->setViewer($request->getUser())
+      ->withSlugs(array(PhabricatorSlug::normalize($slug)))
+      ->executeOne();
+    if ($doc) {
+      throw new Exception(pht('Document already exists.'));
+    }
+
+    $editor = id(PhrictionDocumentEditor::newForSlug($slug))
+      ->setActor($request->getUser())
+      ->setTitle($request->getValue('title'))
+      ->setContent($request->getValue('content'))
+      ->setDescription($request->getvalue('description'))
+      ->save();
+
+    return $this->buildDocumentInfoDictionary($editor->getDocument());
+  }
+}