[{"data":1,"prerenderedAt":784},["ShallowReactive",2],{"navigation_docs":3,"-docs-cms-getting-started-keys-and-access":357,"-docs-cms-getting-started-keys-and-access-surround":779,"docs-site-config":768},[4,74,135,139,161,195,273],{"title":5,"path":6,"stem":7,"children":8},"Assets API","\u002Fdocs\u002Fassets","docs\u002Fassets\u002Findex",[9,10,32,57],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"children":14,"page":31},"Getting Started","\u002Fdocs\u002Fassets\u002Fgetting-started","docs\u002Fassets\u002F1.getting-started",[15,19,23,27],{"title":16,"path":17,"stem":18},"Base URL","\u002Fdocs\u002Fassets\u002Fgetting-started\u002Fbase-url","docs\u002Fassets\u002F1.getting-started\u002F1.base-url",{"title":20,"path":21,"stem":22},"Important Notes","\u002Fdocs\u002Fassets\u002Fgetting-started\u002Fimportant-notes","docs\u002Fassets\u002F1.getting-started\u002F2.important-notes",{"title":24,"path":25,"stem":26},"URL Format","\u002Fdocs\u002Fassets\u002Fgetting-started\u002Furl-format","docs\u002Fassets\u002F1.getting-started\u002F3.url-format",{"title":28,"path":29,"stem":30},"Custom Domains","\u002Fdocs\u002Fassets\u002Fgetting-started\u002Fcustom-domains","docs\u002Fassets\u002F1.getting-started\u002F4.custom-domains",false,{"title":33,"path":34,"stem":35,"children":36,"page":31},"Usage","\u002Fdocs\u002Fassets\u002Fusage","docs\u002Fassets\u002F2.usage",[37,41,45,49,53],{"title":38,"path":39,"stem":40},"Transforms","\u002Fdocs\u002Fassets\u002Fusage\u002Ftransforms","docs\u002Fassets\u002F2.usage\u002F1.transforms",{"title":42,"path":43,"stem":44},"Caching","\u002Fdocs\u002Fassets\u002Fusage\u002Fcaching","docs\u002Fassets\u002F2.usage\u002F2.caching",{"title":46,"path":47,"stem":48},"Recipes","\u002Fdocs\u002Fassets\u002Fusage\u002Frecipes","docs\u002Fassets\u002F2.usage\u002F3.recipes",{"title":50,"path":51,"stem":52},"Best Practices","\u002Fdocs\u002Fassets\u002Fusage\u002Fbest-practices","docs\u002Fassets\u002F2.usage\u002F4.best-practices",{"title":54,"path":55,"stem":56},"Reference","\u002Fdocs\u002Fassets\u002Fusage\u002Freference","docs\u002Fassets\u002F2.usage\u002F5.reference",{"title":58,"path":59,"stem":60,"children":61,"page":31},"Integration","\u002Fdocs\u002Fassets\u002Fintegration","docs\u002Fassets\u002F3.integration",[62,66,70],{"title":63,"path":64,"stem":65},"Nuxt","\u002Fdocs\u002Fassets\u002Fintegration\u002Fnuxt","docs\u002Fassets\u002F3.integration\u002F1.nuxt",{"title":67,"path":68,"stem":69},"Next.js","\u002Fdocs\u002Fassets\u002Fintegration\u002Fnextjs","docs\u002Fassets\u002F3.integration\u002F2.nextjs",{"title":71,"path":72,"stem":73},"Plain HTML","\u002Fdocs\u002Fassets\u002Fintegration\u002Fhtml","docs\u002Fassets\u002F3.integration\u002F3.html",{"title":75,"path":76,"stem":77,"children":78},"Avvyr CMS","\u002Fdocs\u002Fcms","docs\u002Fcms\u002Findex",[79,80,92,105,118,131],{"title":75,"path":76,"stem":77},{"title":11,"path":81,"stem":82,"children":83,"page":31},"\u002Fdocs\u002Fcms\u002Fgetting-started","docs\u002Fcms\u002F1.getting-started",[84,88],{"title":85,"path":86,"stem":87},"Quickstart","\u002Fdocs\u002Fcms\u002Fgetting-started\u002Fquickstart","docs\u002Fcms\u002F1.getting-started\u002F1.quickstart",{"title":89,"path":90,"stem":91},"Keys and access","\u002Fdocs\u002Fcms\u002Fgetting-started\u002Fkeys-and-access","docs\u002Fcms\u002F1.getting-started\u002F2.keys-and-access",{"title":93,"path":94,"stem":95,"children":96,"page":31},"Content Model","\u002Fdocs\u002Fcms\u002Fcontent-model","docs\u002Fcms\u002F2.content-model",[97,101],{"title":98,"path":99,"stem":100},"Types and fields","\u002Fdocs\u002Fcms\u002Fcontent-model\u002Ftypes-and-fields","docs\u002Fcms\u002F2.content-model\u002F1.types-and-fields",{"title":102,"path":103,"stem":104},"Entries and publishing","\u002Fdocs\u002Fcms\u002Fcontent-model\u002Fentries-and-publishing","docs\u002Fcms\u002F2.content-model\u002F2.entries-and-publishing",{"title":106,"path":107,"stem":108,"children":109,"page":31},"Delivery","\u002Fdocs\u002Fcms\u002Fdelivery","docs\u002Fcms\u002F3.delivery",[110,114],{"title":111,"path":112,"stem":113},"Delivery API","\u002Fdocs\u002Fcms\u002Fdelivery\u002Fdelivery-api","docs\u002Fcms\u002F3.delivery\u002F1.delivery-api",{"title":115,"path":116,"stem":117},"Preview and live editing","\u002Fdocs\u002Fcms\u002Fdelivery\u002Fpreview","docs\u002Fcms\u002F3.delivery\u002F2.preview",{"title":119,"path":120,"stem":121,"children":122,"page":31},"Frameworks","\u002Fdocs\u002Fcms\u002Fframeworks","docs\u002Fcms\u002F4.frameworks",[123,127],{"title":124,"path":125,"stem":126},"JavaScript client","\u002Fdocs\u002Fcms\u002Fframeworks\u002Fjavascript-client","docs\u002Fcms\u002F4.frameworks\u002F1.javascript-client",{"title":128,"path":129,"stem":130},"Nuxt layer","\u002Fdocs\u002Fcms\u002Fframeworks\u002Fnuxt","docs\u002Fcms\u002F4.frameworks\u002F2.nuxt",{"title":132,"path":133,"stem":134},"Management API","\u002Fdocs\u002Fcms\u002Fmanagement-api","docs\u002Fcms\u002F5.management-api",{"title":136,"path":137,"stem":138},"Early Access","\u002Fdocs\u002Fearly-access","docs\u002Fearly-access",{"title":140,"path":141,"stem":142,"children":143},"Events API","\u002Fdocs\u002Fevents","docs\u002Fevents\u002Findex",[144,145],{"title":140,"path":141,"stem":142},{"title":11,"path":146,"stem":147,"children":148,"page":31},"\u002Fdocs\u002Fevents\u002Fgetting-started","docs\u002Fevents\u002F1.getting-started",[149,153,157],{"title":150,"path":151,"stem":152},"Subscribing","\u002Fdocs\u002Fevents\u002Fgetting-started\u002Fsubscribing","docs\u002Fevents\u002F1.getting-started\u002F1.subscribing",{"title":154,"path":155,"stem":156},"Event Delivery","\u002Fdocs\u002Fevents\u002Fgetting-started\u002Fevent-delivery","docs\u002Fevents\u002F1.getting-started\u002F2.event-delivery",{"title":158,"path":159,"stem":160},"Event Reference","\u002Fdocs\u002Fevents\u002Fgetting-started\u002Fevent-reference","docs\u002Fevents\u002F1.getting-started\u002F3.event-reference",{"title":162,"path":163,"stem":164,"children":165},"Integrations API","\u002Fdocs\u002Fintegrations","docs\u002Fintegrations\u002Findex",[166,167],{"title":162,"path":163,"stem":164},{"title":11,"path":168,"stem":169,"children":170,"page":31},"\u002Fdocs\u002Fintegrations\u002Fgetting-started","docs\u002Fintegrations\u002F1.getting-started",[171,175,179,183,187,191],{"title":172,"path":173,"stem":174},"Why Use It?","\u002Fdocs\u002Fintegrations\u002Fgetting-started\u002Fwhy-integrations-api","docs\u002Fintegrations\u002F1.getting-started\u002F1.why-integrations-api",{"title":176,"path":177,"stem":178},"Use Cases","\u002Fdocs\u002Fintegrations\u002Fgetting-started\u002Fwho-is-it-for","docs\u002Fintegrations\u002F1.getting-started\u002F2.who-is-it-for",{"title":180,"path":181,"stem":182},"Pre-built Connectors","\u002Fdocs\u002Fintegrations\u002Fgetting-started\u002Fpre-built-integrations","docs\u002Fintegrations\u002F1.getting-started\u002F3.pre-built-integrations",{"title":184,"path":185,"stem":186},"Custom Inbound","\u002Fdocs\u002Fintegrations\u002Fgetting-started\u002Fcustom-inbound-api","docs\u002Fintegrations\u002F1.getting-started\u002F4.custom-inbound-api",{"title":188,"path":189,"stem":190},"Event Lifecycle","\u002Fdocs\u002Fintegrations\u002Fgetting-started\u002Fevent-lifecycle","docs\u002Fintegrations\u002F1.getting-started\u002F5.event-lifecycle",{"title":192,"path":193,"stem":194},"API Endpoints","\u002Fdocs\u002Fintegrations\u002Fgetting-started\u002Fmanagement-api-endpoints","docs\u002Fintegrations\u002F1.getting-started\u002F6.management-api-endpoints",{"title":196,"path":197,"stem":198,"children":199},"MCP Server","\u002Fdocs\u002Fmcp","docs\u002Fmcp\u002Findex",[200,201,225,234,244],{"title":196,"path":197,"stem":198},{"title":11,"path":202,"stem":203,"children":204,"page":31},"\u002Fdocs\u002Fmcp\u002Fgetting-started","docs\u002Fmcp\u002F1.getting-started",[205,209,213,217,221],{"title":206,"path":207,"stem":208},"Claude","\u002Fdocs\u002Fmcp\u002Fgetting-started\u002Fclaude","docs\u002Fmcp\u002F1.getting-started\u002F1.claude",{"title":210,"path":211,"stem":212},"Claude Code","\u002Fdocs\u002Fmcp\u002Fgetting-started\u002Fclaude-code","docs\u002Fmcp\u002F1.getting-started\u002F2.claude-code",{"title":214,"path":215,"stem":216},"VS Code","\u002Fdocs\u002Fmcp\u002Fgetting-started\u002Fvscode","docs\u002Fmcp\u002F1.getting-started\u002F3.vscode",{"title":218,"path":219,"stem":220},"Cursor","\u002Fdocs\u002Fmcp\u002Fgetting-started\u002Fcursor","docs\u002Fmcp\u002F1.getting-started\u002F4.cursor",{"title":222,"path":223,"stem":224},"Verify the connection","\u002Fdocs\u002Fmcp\u002Fgetting-started\u002Fverify","docs\u002Fmcp\u002F1.getting-started\u002F5.verify",{"title":226,"path":227,"stem":228,"children":229,"page":31},"Docs Server","\u002Fdocs\u002Fmcp\u002Fdocs-server","docs\u002Fmcp\u002F2.docs-server",[230],{"title":231,"path":232,"stem":233},"Docs server tools","\u002Fdocs\u002Fmcp\u002Fdocs-server\u002Ftools","docs\u002Fmcp\u002F2.docs-server\u002F1.tools",{"title":235,"path":236,"stem":237,"children":238},"API Server","\u002Fdocs\u002Fmcp\u002Fapi-server","docs\u002Fmcp\u002F3.api-server\u002Findex",[239,240],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"Available tools","\u002Fdocs\u002Fmcp\u002Fapi-server\u002Ftools","docs\u002Fmcp\u002F3.api-server\u002F1.tools",{"title":245,"path":246,"stem":247,"children":248,"page":31},"Examples","\u002Fdocs\u002Fmcp\u002Fexamples","docs\u002Fmcp\u002F4.examples",[249,253,257,261,265,269],{"title":250,"path":251,"stem":252},"Exploring an API","\u002Fdocs\u002Fmcp\u002Fexamples\u002Fexploring-an-api","docs\u002Fmcp\u002F4.examples\u002F1.exploring-an-api",{"title":254,"path":255,"stem":256},"Building a Feature","\u002Fdocs\u002Fmcp\u002Fexamples\u002Fbuilding-a-feature","docs\u002Fmcp\u002F4.examples\u002F2.building-a-feature",{"title":258,"path":259,"stem":260},"Understanding Models","\u002Fdocs\u002Fmcp\u002Fexamples\u002Funderstanding-models","docs\u002Fmcp\u002F4.examples\u002F3.understanding-models",{"title":262,"path":263,"stem":264},"Code Review","\u002Fdocs\u002Fmcp\u002Fexamples\u002Fcode-review","docs\u002Fmcp\u002F4.examples\u002F4.code-review",{"title":266,"path":267,"stem":268},"Combining MCP Servers","\u002Fdocs\u002Fmcp\u002Fexamples\u002Fmulti-mcp","docs\u002Fmcp\u002F4.examples\u002F5.multi-mcp",{"title":270,"path":271,"stem":272},"Tips","\u002Fdocs\u002Fmcp\u002Fexamples\u002Ftips","docs\u002Fmcp\u002F4.examples\u002F6.tips",{"title":274,"path":275,"stem":276,"children":277,"page":31},"Storefront SDK","\u002Fdocs\u002Fstorefront-sdk","docs\u002Fstorefront-sdk",[278,290,323,338],{"title":11,"path":279,"stem":280,"children":281,"page":31},"\u002Fdocs\u002Fstorefront-sdk\u002Fgetting-started","docs\u002Fstorefront-sdk\u002F1.getting-started",[282,286],{"title":283,"path":284,"stem":285},"Installation","\u002Fdocs\u002Fstorefront-sdk\u002Fgetting-started\u002Finstallation","docs\u002Fstorefront-sdk\u002F1.getting-started\u002F1.installation",{"title":287,"path":288,"stem":289},"Configuration","\u002Fdocs\u002Fstorefront-sdk\u002Fgetting-started\u002Fconfiguration","docs\u002Fstorefront-sdk\u002F1.getting-started\u002F2.configuration",{"title":291,"path":292,"stem":293,"children":294,"page":31},"Resources","\u002Fdocs\u002Fstorefront-sdk\u002Fresources","docs\u002Fstorefront-sdk\u002F2.resources",[295,299,303,307,311,315,319],{"title":296,"path":297,"stem":298},"Products","\u002Fdocs\u002Fstorefront-sdk\u002Fresources\u002Fproducts","docs\u002Fstorefront-sdk\u002F2.resources\u002F1.products",{"title":300,"path":301,"stem":302},"Cart","\u002Fdocs\u002Fstorefront-sdk\u002Fresources\u002Fcart","docs\u002Fstorefront-sdk\u002F2.resources\u002F2.cart",{"title":304,"path":305,"stem":306},"Auth","\u002Fdocs\u002Fstorefront-sdk\u002Fresources\u002Fauth","docs\u002Fstorefront-sdk\u002F2.resources\u002F3.auth",{"title":308,"path":309,"stem":310},"Checkout & Shipping","\u002Fdocs\u002Fstorefront-sdk\u002Fresources\u002Fcheckout-shipping","docs\u002Fstorefront-sdk\u002F2.resources\u002F4.checkout-shipping",{"title":312,"path":313,"stem":314},"Orders, Returns & Reviews","\u002Fdocs\u002Fstorefront-sdk\u002Fresources\u002Forders-returns-reviews","docs\u002Fstorefront-sdk\u002F2.resources\u002F5.orders-returns-reviews",{"title":316,"path":317,"stem":318},"Customer assistant","\u002Fdocs\u002Fstorefront-sdk\u002Fresources\u002Fassistant","docs\u002Fstorefront-sdk\u002F2.resources\u002F6.assistant",{"title":320,"path":321,"stem":322},"Products in images","\u002Fdocs\u002Fstorefront-sdk\u002Fresources\u002Fproducts-in-images","docs\u002Fstorefront-sdk\u002F2.resources\u002F7.products-in-images",{"title":128,"path":324,"stem":325,"children":326,"page":31},"\u002Fdocs\u002Fstorefront-sdk\u002Fnuxt-layer","docs\u002Fstorefront-sdk\u002F3.nuxt-layer",[327,331,335],{"title":328,"path":329,"stem":330},"Overview","\u002Fdocs\u002Fstorefront-sdk\u002Fnuxt-layer\u002Foverview","docs\u002Fstorefront-sdk\u002F3.nuxt-layer\u002F1.overview",{"title":332,"path":333,"stem":334},"Composables","\u002Fdocs\u002Fstorefront-sdk\u002Fnuxt-layer\u002Fcomposables","docs\u002Fstorefront-sdk\u002F3.nuxt-layer\u002F2.composables",{"title":316,"path":336,"stem":337},"\u002Fdocs\u002Fstorefront-sdk\u002Fnuxt-layer\u002Fassistant","docs\u002Fstorefront-sdk\u002F3.nuxt-layer\u002F3.assistant",{"title":67,"path":339,"stem":340,"children":341,"page":31},"\u002Fdocs\u002Fstorefront-sdk\u002Fnextjs","docs\u002Fstorefront-sdk\u002F4.nextjs",[342,345,349,353],{"title":328,"path":343,"stem":344},"\u002Fdocs\u002Fstorefront-sdk\u002Fnextjs\u002Foverview","docs\u002Fstorefront-sdk\u002F4.nextjs\u002F1.overview",{"title":346,"path":347,"stem":348},"Hooks","\u002Fdocs\u002Fstorefront-sdk\u002Fnextjs\u002Fhooks","docs\u002Fstorefront-sdk\u002F4.nextjs\u002F2.hooks",{"title":350,"path":351,"stem":352},"Server helpers and proxy","\u002Fdocs\u002Fstorefront-sdk\u002Fnextjs\u002Fserver","docs\u002Fstorefront-sdk\u002F4.nextjs\u002F3.server",{"title":354,"path":355,"stem":356},"Components","\u002Fdocs\u002Fstorefront-sdk\u002Fnextjs\u002Fcomponents","docs\u002Fstorefront-sdk\u002F4.nextjs\u002F4.components",{"id":358,"title":89,"body":359,"description":766,"extension":767,"links":768,"meta":769,"navigation":776,"path":90,"seo":777,"stem":91,"__hash__":778},"docs\u002Fdocs\u002Fcms\u002F1.getting-started\u002F2.keys-and-access.md",{"type":360,"value":361,"toc":757},"minimark",[362,366,450,454,460,485,491,495,505,540,565,570,608,619,623,631,634,642,660,666,670,753],[363,364,365],"p",{},"The CMS uses three kinds of credentials. Keep them apart: a delivery key never works on the Management API, and an API key never works on the delivery API.",[367,368,369,388],"table",{},[370,371,372],"thead",{},[373,374,375,379,382,385],"tr",{},[376,377,378],"th",{},"Credential",[376,380,381],{},"Header",[376,383,384],{},"Where it lives",[376,386,387],{},"What it can do",[389,390,391,413,432],"tbody",{},[373,392,393,397,403,406],{},[394,395,396],"td",{},"Avvyr API key",[394,398,399],{},[400,401,402],"code",{},"x-api-key",[394,404,405],{},"Scripts, CI, your backend",[394,407,408,409,412],{},"Everything under ",[400,410,411],{},"\u002Fv1\u002Fcms",": sites, types, entries, publishing",[373,414,415,421,426,429],{},[394,416,417,418],{},"Public delivery key ",[400,419,420],{},"cms_pub_…",[394,422,423],{},[400,424,425],{},"x-cms-key",[394,427,428],{},"Anywhere, the browser included",[394,430,431],{},"Read published content of one site",[373,433,434,440,444,447],{},[394,435,436,437],{},"Preview key ",[400,438,439],{},"cms_prv_…",[394,441,442],{},[400,443,425],{},[394,445,446],{},"Your site's server only",[394,448,449],{},"Read published content and drafts of one site",[451,452,132],"h2",{"id":453},"management-api",[363,455,456,459],{},[400,457,458],{},"https:\u002F\u002Fapi.avvyr.com\u002Fv1\u002Fcms"," takes a normal Avvyr API key (or a signed-in user in the app).",[461,462,463,471,482],"ul",{},[464,465,466,467,470],"li",{},"The tenant needs the CMS add-on. Without it every call returns ",[400,468,469],{},"403 ADDON_NOT_AVAILABLE",".",[464,472,473,474,477,478,481],{},"A key restricted to scopes needs ",[400,475,476],{},"product:read"," to read and ",[400,479,480],{},"product:write"," to change anything.",[464,483,484],{},"An unrestricted key needs the same administrator rights as a person editing the CMS in the app.",[363,486,487,490],{},[400,488,489],{},"GET \u002Fv1\u002Fcms\u002Fsites"," lists the tenant's sites and their ids.",[451,492,494],{"id":493},"delivery-keys","Delivery keys",[363,496,497,498,500,501,504],{},"Each site gets one public key and one preview key when it is created. Send the key in the ",[400,499,425],{}," header. ",[400,502,503],{},"?key="," works too, for places where you cannot set a header.",[506,507,512],"pre",{"className":508,"code":509,"language":510,"meta":511,"style":511},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl https:\u002F\u002Fapi.avvyr.com\u002Fv1\u002Fcontent\u002F{siteId}\u002Fversion -H \"x-cms-key: cms_pub_…\"\n","bash","",[400,513,514],{"__ignoreMap":511},[515,516,519,523,527,530,534,537],"span",{"class":517,"line":518},"line",1,[515,520,522],{"class":521},"sBMFI","curl",[515,524,526],{"class":525},"sfazB"," https:\u002F\u002Fapi.avvyr.com\u002Fv1\u002Fcontent\u002F{siteId}\u002Fversion",[515,528,529],{"class":525}," -H",[515,531,533],{"class":532},"sMK4o"," \"",[515,535,536],{"class":525},"x-cms-key: cms_pub_…",[515,538,539],{"class":532},"\"\n",[461,541,542,548,555,558],{},[464,543,544,545,470],{},"A key belongs to one site. A key for another site returns ",[400,546,547],{},"401 CMS_KEY_INVALID",[464,549,550,551,554],{},"Delivery responses send ",[400,552,553],{},"Access-Control-Allow-Origin: *"," and never read cookies, so the public key can be used straight from the browser. Published content is public on your site anyway.",[464,556,557],{},"The preview key reads drafts. Keep it in server-only environment variables.",[464,559,560,561,564],{},"The plain-text keys are shown once, in the response to ",[400,562,563],{},"POST \u002Fv1\u002Fcms\u002Fsites",". Avvyr only stores a hash; the app shows each key's prefix.",[566,567,569],"h3",{"id":568},"rotating-a-key","Rotating a key",[506,571,573],{"className":508,"code":572,"language":510,"meta":511,"style":511},"curl -X POST https:\u002F\u002Fapi.avvyr.com\u002Fv1\u002Fcms\u002Fsites\u002F{siteId}\u002Fkeys\u002Fpublic\u002Frotate -H \"x-api-key: $AVVYR_API_KEY\"\n# { \"key\": \"cms_pub_…\" }\n",[400,574,575,601],{"__ignoreMap":511},[515,576,577,579,582,585,588,590,592,595,599],{"class":517,"line":518},[515,578,522],{"class":521},[515,580,581],{"class":525}," -X",[515,583,584],{"class":525}," POST",[515,586,587],{"class":525}," https:\u002F\u002Fapi.avvyr.com\u002Fv1\u002Fcms\u002Fsites\u002F{siteId}\u002Fkeys\u002Fpublic\u002Frotate",[515,589,529],{"class":525},[515,591,533],{"class":532},[515,593,594],{"class":525},"x-api-key: ",[515,596,598],{"class":597},"sTEyZ","$AVVYR_API_KEY",[515,600,539],{"class":532},[515,602,604],{"class":517,"line":603},2,[515,605,607],{"class":606},"sHwdD","# { \"key\": \"cms_pub_…\" }\n",[363,609,610,611,614,615,618],{},"Use ",[400,612,613],{},"preview"," instead of ",[400,616,617],{},"public"," for the preview key. The old key stops working within a minute, because validated keys are cached for 60 seconds.",[451,620,622],{"id":621},"preview-tokens","Preview tokens",[363,624,625,626,630],{},"Reading a draft needs two things: the preview key, which proves the request comes from your site's server, and a ",[627,628,629],"strong",{},"preview token",", which proves an editor opened the preview recently.",[363,632,633],{},"The editor creates the token when someone clicks preview, and opens your site's preview URL with it:",[506,635,640],{"className":636,"code":638,"language":639},[637],"language-text","https:\u002F\u002Fwww.example.com\u002F?entryId=…&path=%2Fom-oss&locale=sv&token=1767225600000.Q2x…\n","text",[400,641,638],{"__ignoreMap":511},[363,643,644,645,648,649,652,653,656,657,470],{},"Your server passes the token on in ",[400,646,647],{},"x-cms-preview-token"," (or ",[400,650,651],{},"?token=",") together with the preview key. A token is valid for one hour and is signed per site. You can also create a link yourself with ",[400,654,655],{},"GET \u002Fv1\u002Fcms\u002Fsites\u002F{siteId}\u002Fpreview-link?entryId=&locale=",", which returns ",[400,658,659],{},"{ url, token, expiresAt }",[363,661,662,663,470],{},"See ",[664,665,115],"a",{"href":116},[451,667,669],{"id":668},"errors","Errors",[367,671,672,687],{},[370,673,674],{},[373,675,676,679,684],{},[376,677,678],{},"Status",[376,680,681],{},[400,682,683],{},"errorCode",[376,685,686],{},"Meaning",[389,688,689,704,716,729,741],{},[373,690,691,694,699],{},[394,692,693],{},"401",[394,695,696],{},[400,697,698],{},"CMS_KEY_REQUIRED",[394,700,701,702],{},"No ",[400,703,425],{},[373,705,706,708,713],{},[394,707,693],{},[394,709,710],{},[400,711,712],{},"CMS_KEY_INVALID",[394,714,715],{},"Unknown key, or a key for another site",[373,717,718,721,726],{},[394,719,720],{},"403",[394,722,723],{},[400,724,725],{},"CMS_PREVIEW_KEY_REQUIRED",[394,727,728],{},"A draft route called with the public key",[373,730,731,733,738],{},[394,732,693],{},[394,734,735],{},[400,736,737],{},"CMS_PREVIEW_TOKEN_INVALID",[394,739,740],{},"Missing or expired preview token",[373,742,743,745,750],{},[394,744,720],{},[394,746,747],{},[400,748,749],{},"ADDON_NOT_AVAILABLE",[394,751,752],{},"The tenant does not have the CMS add-on (Management API)",[754,755,756],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":511,"searchDepth":603,"depth":603,"links":758},[759,760,764,765],{"id":453,"depth":603,"text":132},{"id":493,"depth":603,"text":494,"children":761},[762],{"id":568,"depth":763,"text":569},3,{"id":621,"depth":603,"text":622},{"id":668,"depth":603,"text":669},"Which key goes where, the Management API key versus the site's delivery and preview keys","md",null,{"questions":770},{"en":771},[772,773,774,775],"Can I use the public CMS key in the browser?","Which scope does an API key need for the CMS?","How do I rotate a delivery key?","What is the preview token and how long is it valid?",true,{"title":89,"description":766},"8vh2cevxNZxO3ZOwv_RUDVpAUfOcoGWNWTkXrwOTvHw",[780,782],{"title":85,"path":86,"stem":87,"description":781,"children":-1},"Create a site, define a page type, publish a page and read it from the delivery API",{"title":98,"path":99,"stem":100,"description":783,"children":-1},"Entry and block types, every field type with its draft and published value, localization and schema as code",1793388934933]