diff --git a/gracedb/views.py b/gracedb/views.py
index d372ff84866d0fa797111de96629cbfe6308d622..71f4fe3def39a610a293899e7273455c7b674edf 100644
--- a/gracedb/views.py
+++ b/gracedb/views.py
@@ -36,8 +36,9 @@ def create(request):
             # str(x) is *often* the same as json(x), but not always.
             # It's not, because we don't reliably have json on the client side.
             response = HttpResponse(mimetype='application/json')
-            d['output'] = "%s" % d['graceid']
-            d['graceid'] = "%s" % d['graceid']
+            if 'graceid' in d:
+                d['output'] = "%s" % d['graceid']
+                d['graceid'] = "%s" % d['graceid']
             msg = str(d)
         else: # Old client
             response = HttpResponse(mimetype='text/plain')
@@ -94,8 +95,8 @@ def _create(request):
                 #rv['error'] = msg
                 rv['error'] = ""
                 for key in form.errors:
-                    #rv['error'] += "%s: %s\n" % (key, "/".join(form.errors[key]))
-                    rv['error'] += "%s: %s\n" % (key, form.errors[key])
+                    # as_text() not str() otherwise we get HTML.
+                    rv['error'] += "%s: %s\n" % (key, form.errors[key].as_text())
     return rv
 
 def _createEventFromForm(request, form):