{
  "browserTitle": "Roman Vail — NYC Fashion Photographer | Editorial. Commercial. Brooklyn.",
  "copyright": "<span style=\"font-size: 0.675rem;\">ART OFFICIAL PHOTOS ©2026</span>",
  "metaDescription": "Roman Vail is a Brooklyn-based editorial tension photographer shooting fashion, commercial campaigns, and portraits in NYC and beyond. Art, not algorithms. Experience, not presets.",
  "metaKeywords": "editorial tension photography, fashion photographer Brooklyn, editorial photographer NYC, commercial fashion photographer New York,  Brooklyn fashion photographer, NYC fashion photographer, editorial fashion photography,  commercial photography New York, magazine photographer Brooklyn, brand photography NYC,  lookbook photographer New York, campaign photographer Brooklyn, fashion editorial photographer,  Roman Vail photographer, Artofficial Photos, New York editorial photographer,  fashion photographer for hire NYC, high fashion photography Brooklyn",
  "backgroundImages": [
    11822,
    11875,
    11739,
    11976,
    11977,
    11836,
    11889,
    11731,
    11765,
    11851
  ],
  "filters": [
    "Aicha Bassoum",
    "Aissatou Traore",
    "Alexis Henry & Grace Brown",
    "Alexus Gordon",
    "Alyssa Ferdinand",
    "Amber Distance",
    "Anissa Drabo",
    "Anya Kile",
    "Anya Kile & Samayah Jaramillo",
    "Awa Kaday Doumbia",
    "Bianca Stephens",
    "Bre Scullark",
    "Britteny Bell",
    "Candide",
    "Cara Castro",
    "Carmen Peruzzini",
    "Cassidy Williams",
    "Chioma Obiegbu",
    "Chudeir Chuol",
    "Cyrene Renee",
    "DO NOT USE-Nicole Caceres",
    "Darien Anay Wilson",
    "Eddie James",
    "Ericka Neely",
    "Fanta Camara",
    "Fatihah Saahir",
    "ICONS",
    "JNG",
    "Janella Taylor",
    "Jani Matthew",
    "Jasmine Smartt",
    "Jazzmine Thomas",
    "Karla Del Orbe",
    "Kellyann Concepcion",
    "Keziah Watters",
    "Keziah Watters & Faneca Banks",
    "King NYC",
    "Kourtney Michelle Edwards",
    "Kyiona Carswell",
    "LANDING MEDIA CROPPED",
    "Laniya Brielle",
    "Liz  Havird",
    "MCMG",
    "Mango Jewelry",
    "Marlene Mauwa",
    "Munira Zulka",
    "NUDES",
    "Niara Johnson",
    "Nic Hanson",
    "Nina Mackey",
    "Olivia Nicole",
    "PORTRAITS",
    "Pesi Sikyala",
    "Priscilla Sefu",
    "Rian Barksdale",
    "Rocci Maxwell",
    "Rona Williams",
    "SOCIAL MEDIA LINKS",
    "Salwa Emerson",
    "Samaya Jaramilla & Natashia Diaz",
    "Samayah Jaramilla & friend",
    "Sandra Zhang",
    "Serenity Ford",
    "Shakira Glover",
    "Shaniece Brown",
    "Shareena Delgado",
    "Shareena Delgado & Jessica Fenix",
    "Shauna Lee",
    "Sheri Thorn",
    "Sidney Simone",
    "Sokhna Diop",
    "Stacy & Oumar",
    "Stay Golden Cosmetics",
    "Susan Jacobs",
    "Taj Cutting",
    "Tayllor Pharris",
    "Temora Helena",
    "Theo Oronsaye & Nicodie Mayling",
    "Tiffany Wilburn",
    "VIDEOS",
    "Vanessa Bredy",
    "Veronika Collins",
    "Yona"
  ],
  "portfolioEmailMessage": "Check out this photograph:",
  "socialLinks": [
    11653
  ],
  "useHTML": true,
  "globalBrowserTitle": 0,
  "facebookImage": "AOP-FBSite-Sharing-v11-1.png",
  "facebookAdmins": "",
  "facebookUseMeta": 1,
  "podUseDesktop": 1,
  "padUseDesktop": 1,
  "generalEmail": "roman@artofficialphotos.com",
  "inquiryTitle": "ART OFFICIAL PHOTOS | Inquiry",
  "inquiryInfo": "",
  "lang": "en",
  "advancedSeo": 1,
  "adminSortDefault": "dateAdded descending",
  "enablePinterest": 1,
  "currentTemplate": 11,
  "enableCookieBanner": 0,
  "cookieBannerPosition": "bottom",
  "cookieBannerLink": "",
  "cookieBannerMessage": "By continuing to visit this site you agree to our use of cookies.",
  "siteHead": "<!-- Google tag (gtag.js) -->\n<script async src=\"https://www.googletagmanager.com/gtag/js?id=G-ET498NG6X0\"></script>\n<script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n\n  gtag('config', 'G-ET498NG6X0');\n</script>\n<!-- AOP_OG_REFRESH_V1 -->\n\n\n\n\n\n\n\n\n<script>\n(function() {\n  const STORAGE_KEY = 'aop_scroll_positions';\n\n  function normalizePath(path) {\n    return path.replace(/\\/thumbs\\/?$/, '').replace(/\\/$/, '') || '/';\n  }\n\n  function getPositions() {\n    try {\n      return JSON.parse(sessionStorage.getItem(STORAGE_KEY)) || {};\n    } catch (e) {\n      return {};\n    }\n  }\n\n  function savePosition() {\n    const positions = getPositions();\n    positions[normalizePath(location.pathname)] = window.scrollY;\n    sessionStorage.setItem(STORAGE_KEY, JSON.stringify(positions));\n  }\n\n  let ticking = false;\n  window.addEventListener('scroll', function() {\n    if (!ticking) {\n      window.requestAnimationFrame(function() {\n        savePosition();\n        ticking = false;\n      });\n      ticking = true;\n    }\n  });\n\n  window.addEventListener('beforeunload', savePosition);\n  window.addEventListener('pagehide', savePosition);\n\n  function restoreScroll() {\n    const positions = getPositions();\n    const target = positions[normalizePath(location.pathname)];\n    if (target === undefined) return;\n\n    let attempts = 0;\n    const maxAttempts = 20;\n\n    const tryRestore = function() {\n      attempts++;\n      window.scrollTo(0, target);\n\n      if (attempts < maxAttempts && document.body.scrollHeight < target + window.innerHeight) {\n        setTimeout(tryRestore, 150);\n      } else {\n        setTimeout(function() { window.scrollTo(0, target); }, 300);\n      }\n    };\n\n    tryRestore();\n  }\n\n  window.addEventListener('load', restoreScroll);\n  window.addEventListener('pageshow', function(e) {\n    if (e.persisted) restoreScroll();\n  });\n})();\n</script>",
  "siteBody": 0,
  "customFonts": [
    "Fraunces:100:latin:google",
    "Fraunces:200:latin:google",
    "Fraunces:300:latin:google",
    "Fraunces:400:latin:google",
    "Fraunces:500:latin:google",
    "Fraunces:600:latin:google",
    "Fraunces:700:latin:google",
    "Outfit:200:latin:google",
    "Outfit:500:latin:google",
    "Outfit:600:latin:google",
    "Outfit:700:latin:google",
    "Outfit:100:latin:google",
    "Outfit:300:latin:google",
    "Outfit:400:latin:google"
  ],
  "favicon": "AOP_Logo_v11-FAVICON.png",
  "blogSectionId": "",
  "logoFile": "AOPLogov11-1500-2000.png",
  "logoText": "ART OFFICIAL PHOTOS",
  "logoHtml": 0,
  "introFile": "AOP-Intro-Site-v11.png",
  "tabletLogoFile": "AOPLogov11__at__2x.png",
  "demoDataIds": {
    "mediaIds": [],
    "sectionIds": []
  },
  "cdnSslUri": "/pf-media",
  "defaultEditorMode": "source",
  "contactInfo": "",
  "accountName": "aop",
  "redirects": [],
  "landingMedia": [
    11019,
    11020,
    11017,
    11007,
    11010,
    11011,
    10980,
    11003,
    10982,
    11006
  ],
  "allowAICrawlers": 1,
  "mobileLogoFile": "AOPLogov11-1500-2000-M.png",
  "siteDarkMode": 0,
  "siteAutoDarkMode": 0,
  "searchLabels": 1,
  "globalMediaSearch": 1,
  "searchCaptions": 1
}