diff --git a/setup/doc/api/tickets.md b/setup/doc/api/tickets.md
new file mode 100644
index 0000000000000000000000000000000000000000..df74b092648cff7503ae024eea0f7c6542c56a13
--- /dev/null
+++ b/setup/doc/api/tickets.md
@@ -0,0 +1,114 @@
+Tickets
+=======
+The API supports ticket creation via the HTTP API (as well as via email,
+etc.). Currently, the API support creation of tickets only -- so no
+modifications and deletions of existing tickets is possible via the API for
+now.
+
+Create a Ticket
+---------------
+
+### Fields ######
+
+*   __email__:   *required* Email address of the submitter
+*   __name__:    *required* Name of the submitter
+*   __subject__: *required* Subject of the ticket
+*   __message__: *required* Initial message for the ticket thread
+
+*   __alert__:       If unset, disable alerts to staff. Default is `true`
+*   __autorespond__: If unset, disable autoresponses. Default is
+                     `true`
+*   __ip__:          IP address of the submitter
+*   __phone__:       Phone number of the submitter. See examples below for
+                     embedding the extension with the phone number
+*   __phone_ext__:   Phone number extension -- can also be embedded in
+                     *phone*
+*   __priorityId__:  Priority *id* for the new ticket to assume
+*   __source__:      Source of the ticket, default is `API`
+*   __topicId__:     Help topic *id* associated with the ticket
+
+*   __attachments__: An array of files to attach to the initial message.
+                     Each attachment must have some content and also the
+                     following fields:
+    *   __name__:     *required* name of the file to be attached. Multiple files
+                      with the same name are allowable
+    *   __type__:     Mime type of the file. Default is `text/plain`
+    *   __encoding__: Set to `base64` if content is base64 encoded 
+
+### XMl Payload Example ######
+
+The XML data format is extremely lax. Content can be either sent as an
+attribute or a named element if it has no sub-content.
+
+In the example below, the simple element could also be replaced as
+attributes on the root `<ticket>` element; however, if a `CDATA` element is
+necessary to hold special content, or difficult content such as double
+quotes is to be embedded, simple sub-elements are also supported.
+
+Notice that the phone extension can be sent as the `@ext` attribute of the
+`phone` sub-element.
+
+    <?xml version="1.0" encoding="UTF-8"?>
+    <ticket alert="true" autorespond="true" source="API">
+        <name>Peter Rotich</name>
+        <email>peter@osticket.com</email>
+        <subject>Testing API</subject>
+        <phone ext="123">504-305-8634</phone>
+        <message><![CDATA[Message content here]]></message>
+        <attachments>
+            <file name="file.txt" type="plain/text" 
+                encoding="base64"><![CDATA[
+                    File content is here and is automatically trimmed
+            ]]></file>
+        </attachments>
+        <ip>123.211.233.122</ip>
+    </ticket>
+
+### JSON Payload Example ###
+
+Attachment data for the JSON payload uses the [RFC 2397][] data URL format.
+As described above, the content-type and base64 encoding hints are optional.
+Furthermore, a character set can be optionally declared for each attachment
+and will be automatically converted to UTF-8 for database storage.
+
+Notice that the phone number extension can be embedded in the `phone` value
+denoted with a capital `X`
+
+Do also note that the JSON format forbids a comma after the last element in
+an object or array definition, and newlines are not allowed inside strings.
+
+    {
+        "alert": true,
+        "autorespond": true,
+        "source": "API",
+        "name": "Peter Rotich",
+        "email": "peter@osticket.com",
+        "phone": "5043058634X123",
+        "subject": "Testing API",
+        "ip": "123.211.233.122",
+        "message": "MESSAGE HERE",
+        "attachments": [
+            {"file.txt": "data:text/plain;charset=utf-8,content"},
+            {"image.png": "data:image/png;base64,R0lGODdhMAA..."},
+        ]
+    }
+
+[rfc 2397]:     http://www.ietf.org/rfc/rfc2397.txt     "Data URLs"
+
+### Response ######
+
+If successful, the server will send `HTTP/201 Created`. Otherwise, it will
+send an appropriate HTTP status with the content being the error
+description. Most likely offenders are
+
+* Required field not included
+* Data type mismatch (text send for numeric field)
+* Incorrectly encoded base64 data
+* Unsupported field sent
+* Incorrectly formatted payload (bad JSON or XML)
+
+Upon success, the content of the response will be the external ticket id of
+the newly-created ticket.
+
+    Status: 201 Created
+    123456