[{"data":1,"prerenderedAt":463},["ShallowReactive",2],{"navigation_docs":3,"-auth-security-scopes-permissions":155,"-auth-security-scopes-permissions-surround":458},[4,26,47,68,93,106,127],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Getting Started","\u002Fgetting-started","1.getting-started",[9,13,17,21],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F2.quick-start",{"title":18,"path":19,"stem":20},"Authentication","\u002Fgetting-started\u002Fauthentication","1.getting-started\u002F3.authentication",{"title":22,"path":23,"stem":24},"Rate Limits","\u002Fgetting-started\u002Frate-limits","1.getting-started\u002F4.rate-limits",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"API Reference","\u002Fapi-reference","2.api-reference",[31,35,39,43],{"title":32,"path":33,"stem":34},"Overview","\u002Fapi-reference\u002Foverview","2.api-reference\u002F1.overview",{"title":36,"path":37,"stem":38},"REST API","\u002Fapi-reference\u002Frest-api","2.api-reference\u002F2.rest-api",{"title":40,"path":41,"stem":42},"Error Codes","\u002Fapi-reference\u002Ferror-codes","2.api-reference\u002F3.error-codes",{"title":44,"path":45,"stem":46},"Pagination","\u002Fapi-reference\u002Fpagination","2.api-reference\u002F4.pagination",{"title":48,"path":49,"stem":50,"children":51,"page":25},"Map Integration","\u002Fmap-integration","3.map-integration",[52,56,60,64],{"title":53,"path":54,"stem":55},"Embed Maps","\u002Fmap-integration\u002Fembed-maps","3.map-integration\u002F1.embed-maps",{"title":57,"path":58,"stem":59},"Custom Styles","\u002Fmap-integration\u002Fcustom-styles","3.map-integration\u002F2.custom-styles",{"title":61,"path":62,"stem":63},"Tile Rendering","\u002Fmap-integration\u002Ftile-rendering","3.map-integration\u002F3.tile-rendering",{"title":65,"path":66,"stem":67},"Static Maps","\u002Fmap-integration\u002Fstatic-maps","3.map-integration\u002F4.static-maps",{"title":69,"path":70,"stem":71,"children":72,"page":25},"Geocoding","\u002Fgeocoding","4.geocoding",[73,77,81,85,89],{"title":74,"path":75,"stem":76},"Forward Geocoding (Search)","\u002Fgeocoding\u002Fforward-geocoding","4.geocoding\u002F1.forward-geocoding",{"title":78,"path":79,"stem":80},"Reverse Geocoding","\u002Fgeocoding\u002Freverse-geocoding","4.geocoding\u002F2.reverse-geocoding",{"title":82,"path":83,"stem":84},"Autocomplete","\u002Fgeocoding\u002Fautocomplete","4.geocoding\u002F3.autocomplete",{"title":86,"path":87,"stem":88},"Place Lookup","\u002Fgeocoding\u002Fplace-lookup","4.geocoding\u002F4.place-lookup",{"title":90,"path":91,"stem":92},"Nearby Search","\u002Fgeocoding\u002Fnearby","4.geocoding\u002F5.nearby",{"title":94,"path":95,"stem":96,"children":97,"page":25},"Routing","\u002Frouting","5.routing",[98,102],{"title":99,"path":100,"stem":101},"Directions","\u002Frouting\u002Fdirections","5.routing\u002F1.directions",{"title":103,"path":104,"stem":105},"Isochrones","\u002Frouting\u002Fisochrones","5.routing\u002F2.isochrones",{"title":107,"path":108,"stem":109,"children":110,"page":25},"Auth & Security","\u002Fauth-security","6.auth-security",[111,115,119,123],{"title":112,"path":113,"stem":114},"API Keys","\u002Fauth-security\u002Fapi-keys","6.auth-security\u002F1.api-keys",{"title":116,"path":117,"stem":118},"Scopes & Permissions","\u002Fauth-security\u002Fscopes-permissions","6.auth-security\u002F2.scopes-permissions",{"title":120,"path":121,"stem":122},"Rate Limiting","\u002Fauth-security\u002Frate-limiting","6.auth-security\u002F3.rate-limiting",{"title":124,"path":125,"stem":126},"Best Practices","\u002Fauth-security\u002Fbest-practices","6.auth-security\u002F4.best-practices",{"title":128,"path":129,"stem":130,"children":131,"page":25},"Mcp","\u002Fmcp","7.mcp",[132,135,139,143,147,151],{"title":32,"path":133,"stem":134},"\u002Fmcp\u002Foverview","7.mcp\u002F1.overview",{"title":136,"path":137,"stem":138},"Setup","\u002Fmcp\u002Fsetup","7.mcp\u002F2.setup",{"title":140,"path":141,"stem":142},"Available Tools","\u002Fmcp\u002Favailable-tools","7.mcp\u002F3.available-tools",{"title":144,"path":145,"stem":146},"GIS Integration","\u002Fmcp\u002Fgis-integration","7.mcp\u002F4.gis-integration",{"title":148,"path":149,"stem":150},"Examples","\u002Fmcp\u002Fexamples","7.mcp\u002F5.examples",{"title":152,"path":153,"stem":154},"Troubleshooting","\u002Fmcp\u002Ftroubleshooting","7.mcp\u002F6.troubleshooting",{"id":156,"title":116,"body":157,"description":451,"extension":452,"links":453,"meta":454,"navigation":455,"path":117,"seo":456,"stem":118,"__hash__":457},"docs\u002F6.auth-security\u002F2.scopes-permissions.md",{"type":158,"value":159,"toc":439},"minimark",[160,164,169,172,251,256,275,279,282,292,295,301,305,308,389,393,398,403,408,412,415,436],[161,162,163],"p",{},"maps.guru uses two levels of access control: API key scopes (what services a key can access) and organization roles (what a user can do).",[165,166,168],"h2",{"id":167},"api-key-scopes","API Key Scopes",[161,170,171],{},"Each API key can be configured with specific service scopes:",[173,174,175,191],"table",{},[176,177,178],"thead",{},[179,180,181,185,188],"tr",{},[182,183,184],"th",{},"Scope",[182,186,187],{},"Endpoints",[182,189,190],{},"Description",[192,193,194,215,233],"tbody",{},[179,195,196,203,212],{},[197,198,199],"td",{},[200,201,202],"code",{},"maps",[197,204,205,208,209],{},[200,206,207],{},"\u002Fv1\u002Fstyles\u002F*",", ",[200,210,211],{},"\u002Fv1\u002Ftiles\u002F*",[197,213,214],{},"Vector tiles, style JSON, static maps",[179,216,217,222,230],{},[197,218,219],{},[200,220,221],{},"geocoding",[197,223,224,208,227],{},[200,225,226],{},"\u002Fv1\u002Fgeocode",[200,228,229],{},"\u002Fv1\u002Freverse",[197,231,232],{},"Forward and reverse geocoding",[179,234,235,240,248],{},[197,236,237],{},[200,238,239],{},"routing",[197,241,242,208,245],{},[200,243,244],{},"\u002Fv1\u002Fdirections",[200,246,247],{},"\u002Fv1\u002Fisochrone",[197,249,250],{},"Route calculation and isochrones",[252,253,255],"h3",{"id":254},"scope-behavior","Scope Behavior",[257,258,259,266,272],"ul",{},[260,261,262,263,265],"li",{},"A key with ",[200,264,202],{}," scope can only access map-related endpoints",[260,267,268,269],{},"Requests to endpoints outside the key's scopes return ",[200,270,271],{},"403 Forbidden",[260,273,274],{},"The default key created on signup has all scopes enabled",[252,276,278],{"id":277},"minimal-scopes-example","Minimal Scopes Example",[161,280,281],{},"For a mobile app that only displays maps:",[283,284,290],"pre",{"className":285,"code":287,"language":288,"meta":289},[286],"language-text","Key: \"Mobile App Key\"\nScopes: [maps]\n","text","",[200,291,287],{"__ignoreMap":289},[161,293,294],{},"For a backend service that only does geocoding:",[283,296,299],{"className":297,"code":298,"language":288,"meta":289},[286],"Key: \"Geocoding Service\"\nScopes: [geocoding]\n",[200,300,298],{"__ignoreMap":289},[165,302,304],{"id":303},"organization-roles","Organization Roles",[161,306,307],{},"Users within an organization have roles that determine their permissions:",[173,309,310,332],{},[176,311,312],{},[179,313,314,317,320,323,326,329],{},[182,315,316],{},"Role",[182,318,319],{},"Create Keys",[182,321,322],{},"Revoke Keys",[182,324,325],{},"Invite Members",[182,327,328],{},"Manage Billing",[182,330,331],{},"Delete Org",[192,333,334,353,371],{},[179,335,336,342,345,347,349,351],{},[197,337,338],{},[339,340,341],"strong",{},"Owner",[197,343,344],{},"Yes",[197,346,344],{},[197,348,344],{},[197,350,344],{},[197,352,344],{},[179,354,355,360,362,364,366,368],{},[197,356,357],{},[339,358,359],{},"Admin",[197,361,344],{},[197,363,344],{},[197,365,344],{},[197,367,344],{},[197,369,370],{},"No",[179,372,373,378,380,383,385,387],{},[197,374,375],{},[339,376,377],{},"Member",[197,379,344],{},[197,381,382],{},"Own only",[197,384,370],{},[197,386,370],{},[197,388,370],{},[252,390,392],{"id":391},"role-descriptions","Role Descriptions",[161,394,395,397],{},[339,396,341],{}," — Full control over the organization. Can manage billing, invite members, and delete the organization. Each organization has exactly one owner.",[161,399,400,402],{},[339,401,359],{}," — Can manage API keys and team members but cannot delete the organization or transfer ownership.",[161,404,405,407],{},[339,406,377],{}," — Can create and manage their own API keys. Cannot invite members or manage billing.",[165,409,411],{"id":410},"invitations","Invitations",[161,413,414],{},"Organization owners and admins can invite new members via email:",[416,417,418,424,430,433],"ol",{},[260,419,420,421],{},"Go to ",[339,422,423],{},"Dashboard → Organizations → Members",[260,425,426,427],{},"Click ",[339,428,429],{},"Invite Member",[260,431,432],{},"Enter the email address and select a role",[260,434,435],{},"The invitee receives an email with a link to accept",[161,437,438],{},"Invitations expire after 7 days.",{"title":289,"searchDepth":440,"depth":440,"links":441},3,[442,447,450],{"id":167,"depth":443,"text":168,"children":444},2,[445,446],{"id":254,"depth":440,"text":255},{"id":277,"depth":440,"text":278},{"id":303,"depth":443,"text":304,"children":448},[449],{"id":391,"depth":440,"text":392},{"id":410,"depth":443,"text":411},"Understanding API key scopes and organization permissions.","md",null,{},true,{"title":116,"description":451},"2mYK55frFybeuYkAVMK_ZrOyYoFQhzNE6PMKYoguIQE",[459,461],{"title":112,"path":113,"stem":114,"description":460,"children":-1},"Create, manage, and secure your maps.guru API keys.",{"title":120,"path":121,"stem":122,"description":462,"children":-1},"How rate limiting and quota enforcement work in maps.guru.",1777621084424]