diff --git a/containers.py b/containers.py
index d4ec9ffcdd49d43b4dcdc629880cb28cf3f5f7be..4633ab49019c0985af6d37a16f6e5369c47faf7f 100644
--- a/containers.py
+++ b/containers.py
@@ -5,6 +5,7 @@ log = logging.getLogger('scitran.api')
 
 import os
 import bson
+import json
 import shutil
 import datetime
 import jsonschema
@@ -267,6 +268,14 @@ class Container(base.RequestHandler):
         if 'Content-MD5' not in self.request.headers:
             self.abort(400, 'Request must contain a valid "Content-MD5" header.')
         flavor = self.request.get('flavor', 'data')
+        try:
+            tags = json.loads(self.request.get('tags', '[]'))
+        except ValueError:
+            self.abort(400, 'invalid "tags" parameter')
+        try:
+            metadata = json.loads(self.request.get('metadata', '{}'))
+        except ValueError:
+            self.abort(400, 'invalid "metadata" parameter')
         if flavor not in ['data', 'attachment']:
             self.abort(400, 'Query must contain flavor parameter: "data" or "attachment".')
         with tempfile.TemporaryDirectory(prefix='.tmp', dir=self.app.config['upload_path']) as tempdir_path:
@@ -285,6 +294,8 @@ class Container(base.RequestHandler):
                         'filetype': filetype,
                         'flavor': flavor,
                         'mimetype': mimetype,
+                        'tags': tags,
+                        'metadata': metadata,
                         },
                     }
             log.info('Received    %s [%s] from %s' % (filename, util.hrsize(filesize), self.request.client_addr))