{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-en/developers/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Install & test your app before moderation","description":"Official Altegio API documentation for integrating online booking, CRM, scheduling, POS, and business management features into your applications.","siteUrl":"https://developer.alteg.io","lang":"en","keywords":["Altegio API","REST API","online booking API","appointment scheduling API","business management API","CRM integration","POS API"],"image":"/assets/og-image.5c9c342f49e4dd72b96f7a0faf29bb71fab6ff06bbf97cf4b230d6fcc0abcdb3.e746d8a7.jpg","meta":[{"name":"author","content":"Altegio"},{"name":"twitter:card","content":"summary_large_image"},{"name":"twitter:site","content":"@altegio"}]},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"install--test-your-app-before-moderation","__idx":0},"children":["Install & test your app before moderation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Get your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["draft"]}," application onto a test location you control and make your first"," ","authenticated calls — ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["before"]}," submitting for moderation. This is a supported,"," ","self-serve flow. You should not need to read any source code to finish it."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-youll-have-at-the-end","__idx":1},"children":["What you'll have at the end"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your application linked to your test location with status ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["system-user token"]}," authorized to read that test location's data."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A repeatable way to reinstall on any location you own — no moderation required."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-start","__idx":2},"children":["Before you start"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"You need"},"children":["You need"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Where to get it"},"children":["Where to get it"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Application ID"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Partner ID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Developer console — the console labels both clearly on your application's ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["General info"]}," page"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Partner Token"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Marketplace → ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Account settings"]}," (appears automatically after registration). See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/en/get-api-key"},"children":["How to Get API Keys"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["System User Token"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["In the application's ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API Access"]}," settings, enter the system user's ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["User ID"]},", save, and copy the generated ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["User Token"]},". Configure the required credentials and application access rights before installation"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Owner login"]}," on a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["test location you control"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Any location where your user has the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Manage user rights"]}," permission"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Throughout this guide the examples use ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["application ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2391"]}]}," and test ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["location"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4564"]}]},". Replace tokens with your own — never commit them."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-installation-works","__idx":3},"children":["How installation works"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Installing an app on a location is a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["two-step handshake"]},". Neither step alone"," ","installs the app:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"  owner grants access            partner confirms (within 1 hour)\nuninstalled ─────────────▶ pending ─────────────────────────────▶ active\n                              │\n                              └── no confirm within 1h ──▶ stays pending (reconnect)\n"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Owner connected the app; waiting for the partner to confirm"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Partner confirmed; system user linked, data calls allowed"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["freezed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Previously active, frozen (e.g. non-payment)"]}]}]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Draft apps are installable but hidden."]}," The public app-store card for a draft"," ","returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404"]},". That is expected — install via the API below, or via the console"," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["“Link to request a review”"]}," (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#test-from-the-console-no-api"},"children":["Test from the console"]},")."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1--owner-connects-the-app--grant_access-","__idx":4},"children":["Step 1 — Owner connects the app (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grant_access"]},")"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The location owner grants the app access. This creates the link in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}]},"."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Host:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api.alteg.io/api/v1"]}," (main API)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Auth:"]}," combined partner + owner user token"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Permission:"]}," the user must have ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Manage user rights"]}," on the location"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  'https://api.alteg.io/api/v1/company/4564/marketplace/applications/2391/grant_access' \\\n  -H 'Accept: application/vnd.api.v2+json' \\\n  -H 'Authorization: Bearer <PARTNER_TOKEN>, User <OWNER_USER_TOKEN>'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Expected:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["201 Created"]},". The link is now ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," (or immediately ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}," for"," ","non-public/whitelisted apps — fast install)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Reference: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/en/developers/openapi#tag/Marketplace/operation/marketplace_location_grant_access"},"children":["Connect an Application to a Location"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2--partner-confirms-installation-callback","__idx":5},"children":["Step 2 — Partner confirms (installation callback)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Confirm the installation with your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Partner Token"]},". This moves the link to"," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}]},", links the system user, and delivers your integration settings."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Host:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://app.alteg.io"]}," — ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["root, not"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api.alteg.io/api/v1"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Auth:"]}," Partner Token only"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deadline:"]}," within ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["1 hour"]}," of Step 1"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  'https://app.alteg.io/marketplace/partner/callback' \\\n  -H 'Accept: application/vnd.api.v2+json' \\\n  -H 'Authorization: Bearer <PARTNER_TOKEN>' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"salon_id\": 4564, \"application_id\": 2391}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Expected:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["201"]},". The link is now ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]},"."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["salon_id"]}," body field and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/marketplace/salon/…"]}," path segment are the"," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Location ID"]}," and Location scope — legacy identifier names kept for"," ","backwards compatibility."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Reference: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/en/developers/openapi#tag/Marketplace/operation/marketplace_notification_settings_callback"},"children":["Application Installation for a Location"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3--verify","__idx":6},"children":["Step 3 — Verify"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Check the installation status:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X GET \\\n  'https://app.alteg.io/marketplace/salon/4564/application/2391' \\\n  -H 'Accept: application/vnd.api.v2+json' \\\n  -H 'Authorization: Bearer <PARTNER_TOKEN>'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["You're done when"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.connection_status.status"]}," is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can also confirm the location shows up for your system user:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X GET \\\n  'https://api.alteg.io/api/v1/companies?my=1' \\\n  -H 'Accept: application/vnd.api.v2+json' \\\n  -H 'Authorization: Bearer <PARTNER_TOKEN>, User <SYSTEM_USER_TOKEN>'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["system-user token"]}," is the token in the application's ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API Access → User"," ","Token"]}," field; use it as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["User <...>"]}," for data calls against installed locations."," ","For how system-user rights work, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://alteg.io/en/support/knowledge-base/6756027118621-access-to-the-api/"},"children":["Access to the API"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Reference: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/en/developers/openapi#tag/Marketplace/operation/get_marketplace_integration_status"},"children":["Application Status Data for Any Location"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"test-from-the-console-no-api","__idx":7},"children":["Test from the console (no API)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you just want to place a draft on your own location through the UI:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the developer console open your application's ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["General info"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Copy the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["“Link to request a review”"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open it while signed in as an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["admin of your test location"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Press ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connect"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This runs Step 1 for you. Full walkthrough:"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://alteg.io/en/support/knowledge-base/6745848593181-step-by-step-guide-to-placement-in-the-marketplace"},"children":["Step-by-step guide to placement in the marketplace"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"if-something-goes-wrong","__idx":8},"children":["If something goes wrong"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Symptom"},"children":["Symptom"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Fix"},"children":["Fix"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Step 1 returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User lacks ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Manage user rights"]},", or install is blocked for the location"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use an owner/admin login; contact your account manager if blocked"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Link stuck in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Step 2 never sent, or sent after the 1-hour window"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Reconnect (Step 1), then send the callback within 1 hour"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Callback returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Wrong host — you called ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["api.alteg.io/api/v1/..."]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://app.alteg.io"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["root"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://app.alteg.io/marketplace/partner/callback"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Data calls return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing or wrong ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["User <...>"]}," token"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use the system-user token from the application's ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API Access → User Token"]}," field"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related","__idx":9},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/en#quickstarts"},"children":["API documentation start page"]}," — choose the right guide for your integration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/en/get-api-key"},"children":["How to Get API Keys (v1 and v2)"]}," — partner and user tokens"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://alteg.io/en/support/knowledge-base/6756027118621-access-to-the-api/"},"children":["Access to the API"]}," — user tokens and permissions (KB)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://alteg.io/en/support/knowledge-base/6746045060381-connecting-the-integration-via-the-marketplace"},"children":["Connecting integrations via the marketplace"]}," — the install callback (KB)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/en/developers/openapi"},"children":["Developer Tools reference"]}," — full marketplace endpoint reference"]}]}]},"headings":[{"value":"Install & test your app before moderation","id":"install--test-your-app-before-moderation","depth":1},{"value":"What you'll have at the end","id":"what-youll-have-at-the-end","depth":2},{"value":"Before you start","id":"before-you-start","depth":2},{"value":"How installation works","id":"how-installation-works","depth":2},{"value":"Step 1 — Owner connects the app ( grant_access )","id":"step-1--owner-connects-the-app--grant_access-","depth":2},{"value":"Step 2 — Partner confirms (installation callback)","id":"step-2--partner-confirms-installation-callback","depth":2},{"value":"Step 3 — Verify","id":"step-3--verify","depth":2},{"value":"Test from the console (no API)","id":"test-from-the-console-no-api","depth":2},{"value":"If something goes wrong","id":"if-something-goes-wrong","depth":2},{"value":"Related","id":"related","depth":2}],"frontmatter":{"title":"Install & Test Your App","rightSidebar":false,"seo":{"title":"Install & test your app before moderation"}},"lastModified":"2026-09-10T20:34:47.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/en/developers/marketplace-quickstart","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}