diff --git a/geomagio/api/db/MetadataDatabaseFactory.py b/geomagio/api/db/MetadataDatabaseFactory.py
index 748bbabc8d3f01cf78ff435b457560280840ddc0..e97afd77261ec76e7209cfe482cb57a224aefad9 100644
--- a/geomagio/api/db/MetadataDatabaseFactory.py
+++ b/geomagio/api/db/MetadataDatabaseFactory.py
@@ -1,5 +1,5 @@
 from datetime import datetime
-from typing import List
+from typing import List, Optional
 
 from databases import Database
 from obspy import UTCDateTime
@@ -16,6 +16,7 @@ class MetadataDatabaseFactory(object):
 
     async def create_metadata(self, meta: Metadata) -> Metadata:
         query = metadata.insert()
+        meta.status = meta.status or "new"
         values = meta.datetime_dict(exclude={"id", "metadata_id"}, exclude_none=True)
         query = query.values(**values)
         meta.id = await self.database.execute(query)
@@ -36,7 +37,7 @@ class MetadataDatabaseFactory(object):
         created_before: datetime = None,
         data_valid: bool = None,
         metadata_valid: bool = None,
-        status: str = None,
+        status: List[str] = None,
     ):
         query = metadata.select()
         if id:
@@ -74,7 +75,7 @@ class MetadataDatabaseFactory(object):
         if metadata_valid is not None:
             query = query.where(metadata.c.metadata_valid == metadata_valid)
         if status is not None:
-            query = query.where(metadata.c.status == status)
+            query = query.where(metadata.c.status.in_(status))
         rows = await self.database.fetch_all(query)
         return [Metadata(**row) for row in rows]
 
@@ -98,6 +99,14 @@ class MetadataDatabaseFactory(object):
             metadata.reverse()
             return metadata
 
+    async def get_metadata_history_by_id(self, id: int) -> Optional[Metadata]:
+        query = metadata_history.select()
+        query = query.where(metadata_history.c.id == id)
+        meta = await self.database.fetch_one(query)
+        if meta is None:
+            return meta
+        return Metadata(**meta)
+
     async def update_metadata(self, meta: Metadata, updated_by: str) -> Metadata:
         async with self.database.transaction() as transaction:
             # write current record to metadata history table
diff --git a/geomagio/api/secure/metadata.py b/geomagio/api/secure/metadata.py
index d397faca167ba4caf279b2e90e4a4a36cc791108..8a5251bdcb8d2cc85f737ab6013806d3b0607ce1 100644
--- a/geomagio/api/secure/metadata.py
+++ b/geomagio/api/secure/metadata.py
@@ -16,7 +16,7 @@ Configuration:
 import os
 from typing import List
 
-from fastapi import APIRouter, Body, Depends, Request, Response
+from fastapi import APIRouter, Body, Depends, Request, Response, Query
 from obspy import UTCDateTime
 
 from ...metadata import Metadata, MetadataCategory, MetadataQuery
@@ -54,7 +54,7 @@ async def get_metadata(
     location: str = None,
     data_valid: bool = None,
     metadata_valid: bool = True,
-    status: str = None,
+    status: List[str] = Query(None),
 ):
     query = MetadataQuery(
         category=category,
@@ -90,6 +90,16 @@ async def get_metadata_history(
     )
 
 
+@router.get("/metadata/history/{id}", response_model=Metadata)
+async def get_metadata_history_by_id(id: int):
+    metadata = await MetadataDatabaseFactory(
+        database=database
+    ).get_metadata_history_by_id(id=id)
+    if metadata is None:
+        return Response(status_code=400)
+    return metadata
+
+
 @router.put("/metadata/{id}", response_model=Metadata)
 async def update_metadata(
     id: int,
diff --git a/geomagio/api/ws/metadata.py b/geomagio/api/ws/metadata.py
index 1dc77ee2c7fbcbee927707629dbf60703207c3f1..300dc3340428fcef198621378b226d9ee316d0b2 100644
--- a/geomagio/api/ws/metadata.py
+++ b/geomagio/api/ws/metadata.py
@@ -1,6 +1,6 @@
 from typing import List
 
-from fastapi import APIRouter
+from fastapi import APIRouter, Query
 from obspy import UTCDateTime
 
 from ...metadata import Metadata, MetadataCategory, MetadataQuery
@@ -21,7 +21,7 @@ async def get_metadata(
     location: str = None,
     data_valid: bool = None,
     metadata_valid: bool = True,
-    status: str = None,
+    status: List[str] = Query(None),
 ):
     query = MetadataQuery(
         category=category,
diff --git a/geomagio/metadata/Metadata.py b/geomagio/metadata/Metadata.py
index dff97fbeb4d448951f0503950a77ea052ac2f851..84f52c5e59477604f9a982a92d0c2cb00494b166 100644
--- a/geomagio/metadata/Metadata.py
+++ b/geomagio/metadata/Metadata.py
@@ -78,7 +78,7 @@ class Metadata(BaseModel):
     comment: str = None
     # review specific comment
     review_comment: str = None
-    # deletion status indicator
+    # metadata status indicator
     status: str = None
 
     def datetime_dict(self, **kwargs):
diff --git a/geomagio/metadata/MetadataQuery.py b/geomagio/metadata/MetadataQuery.py
index 5b5214849e1d3bb74821c4389052631f20c868c6..f776f34cb2bd075345980273f66dedb5dbb41c6e 100644
--- a/geomagio/metadata/MetadataQuery.py
+++ b/geomagio/metadata/MetadataQuery.py
@@ -2,7 +2,7 @@ from datetime import timezone
 
 from obspy import UTCDateTime
 from pydantic import BaseModel
-from typing import Optional
+from typing import List, Optional
 
 from .. import pydantic_utcdatetime
 from .MetadataCategory import MetadataCategory
@@ -21,7 +21,7 @@ class MetadataQuery(BaseModel):
     location: str = None
     data_valid: Optional[bool] = None
     metadata_valid: Optional[bool] = None
-    status: Optional[str] = None
+    status: Optional[List[str]] = None
 
     def datetime_dict(self, **kwargs):
         values = self.dict(**kwargs)
diff --git a/geomagio/metadata/main.py b/geomagio/metadata/main.py
index 69e8eeecc3f6e718610547f74df5266cddd86591..c5546573e17d4e8d020a866ab038be14c326e75a 100644
--- a/geomagio/metadata/main.py
+++ b/geomagio/metadata/main.py
@@ -1,7 +1,7 @@
 import sys
 import json
 import os
-from typing import Dict, Optional
+from typing import Dict, List, Optional
 
 from obspy import UTCDateTime
 import typer
@@ -84,6 +84,7 @@ def create(
     network: str = None,
     starttime: str = None,
     station: str = None,
+    status: str = None,
     url: str = GEOMAG_API_URL,
     wrap: bool = True,
 ):
@@ -105,6 +106,7 @@ def create(
             network=network,
             starttime=UTCDateTime(starttime) if starttime else None,
             station=station,
+            status=status or "new",
         )
     metadata = MetadataFactory(url=url).create_metadata(metadata=metadata)
     print(metadata.json())
@@ -129,7 +131,7 @@ def get(
     location: Optional[str] = None,
     metadata_valid: Optional[bool] = None,
     network: Optional[str] = None,
-    status: Optional[str] = None,
+    status: Optional[List[str]] = typer.Argument(None),
     starttime: Optional[str] = None,
     station: Optional[str] = None,
     url: str = GEOMAG_API_URL,