diff --git a/src/managers/zoneManager.ts b/src/managers/zoneManager.ts
index 7f34512..9ce92fd 100644
--- a/src/managers/zoneManager.ts
+++ b/src/managers/zoneManager.ts
@@ -25,19 +25,26 @@ class ZoneManager {
   }
 
   // For now only current zone.
-  public async getAssetsNeeded(zone: Zone) {
-    zone.tiles
-    const tiles = JSON.parse(zone.tiles as string) as string[][];
+  public async getNeededAssets(zone: Zone) {
+    const tiles = this.getUnique((JSON.parse(JSON.stringify(zone.tiles)) as string[][]).reduce((acc, val) => [...acc, ...val]));
     const objects = await zoneRepository.getObjects(zone.id);
-    console.log(tiles);
-    console.log(objects);
+    let mappedObjects = this.getUnique(objects.map(x => x.objectId));
+
+    return {
+      tiles,
+      objects: mappedObjects
+    };
+  }
+
+  private getUnique<T>(array: T[]) {
+    return [...new Set<T>(array)]
   }
 
   // Method to handle individual zoneEditor loading
   public async loadZone(zone: Zone) {
     const loadedZone = new LoadedZone(zone)
     this.loadedZones.push(loadedZone)
-    await this.getAssetsNeeded(zone);
+    await this.getNeededAssets(zone);
     logger.info(`Zone ID ${zone.id} loaded`)
   }
 
diff --git a/src/utilities/http.ts b/src/utilities/http.ts
index a582203..2121dea 100644
--- a/src/utilities/http.ts
+++ b/src/utilities/http.ts
@@ -10,6 +10,8 @@ import objectRepository from '../repositories/objectRepository'
 import spriteRepository from '../repositories/spriteRepository'
 import fs from 'fs'
 import logger from './logger'
+import zoneRepository from '../repositories/zoneRepository'
+import zoneManager from '../managers/zoneManager'
 
 async function addHttpRoutes(app: Application) {
   app.get('/assets', async (req: Request, res: Response) => {
@@ -49,6 +51,44 @@ async function addHttpRoutes(app: Application) {
     res.json(assets)
   })
 
+  app.get('/assets/:zoneId', async (req: Request, res: Response) => {
+    const zoneId = req.params.zoneId
+    if(zoneId && parseInt(zoneId)) {
+      const zone = await zoneRepository.getById(parseInt(zoneId))
+      if(zone) {
+        const assets = await zoneManager.getNeededAssets(zone);
+        const sprites = await spriteRepository.getAll()
+        const spritesArray: TAsset[] = [];
+        sprites.forEach((sprite) => {
+          sprite.spriteActions.forEach((spriteAction) => {
+            spritesArray.push({
+              key: sprite.id + '-' + spriteAction.action,
+              url: '/assets/sprites/' + sprite.id + '/' + spriteAction.action + '.png',
+              group: spriteAction.isAnimated ? 'sprite_animations' : 'sprites',
+              frameWidth: spriteAction.frameWidth,
+              frameHeight: spriteAction.frameHeight
+            })
+          })
+        })
+
+        res.json([
+          ...spritesArray,
+          ...assets.tiles.map(x => { return {
+            key: x,
+            url: '/assets/tiles/' + x + '.png',
+            group: 'tiles'
+          }}),
+          ...assets.objects.map(x => { return {
+            key: x,
+            url: '/assets/objects/' + x + '.png',
+            group: 'objects'
+          }})
+        ]);
+        // res.json( );
+      }
+    }
+  })
+
   app.get('/assets/:type/:spriteId?/:file', (req: Request, res: Response) => {
     const assetType = req.params.type
     const spriteId = req.params.spriteId