{"templateId":"markdown","versions":[{"version":"opendelivery","label":"Open Delivery API","link":"/apis/opendelivery/docs/basicintegrationguide","default":true,"active":false,"folderId":"58c9a61d"},{"version":"standard","label":"Standard Keeta API","link":"/apis/standard/docs/basicintegrationguide","default":false,"active":false,"folderId":"58c9a61d"},{"version":"grocery","label":"Grocery Keeta API","link":"/apis/grocery/docs/basicintegrationguide","default":false,"active":true,"folderId":"58c9a61d"}],"sharedDataIds":{"sidebar":"sidebar-apis/@grocery/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Basic API Integration Guide","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"basic-api-integration-guide","__idx":0},"children":["Basic API Integration Guide"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1-authorization-overview","__idx":1},"children":["1. Authorization Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To access merchant data (products, orders, store information, etc.), Keeta mandates that developer applications obtain explicit merchant authorization via access tokens. This ensures compliance with data security and privacy regulations:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Chain Brands"]},": All stores under a single brand share one access token."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Independent Stores/Single Locations"]},": Each store maintains a unique access token."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2-token-acquisition-methods","__idx":2},"children":["2. Token Acquisition Methods"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Self-Service Authorization"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Follow the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/grocery/docs/selfauthor"},"children":["Merchant Self-Authorization Integration Guide"]}," to programmatically generate tokens."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Keeta Team Assistance"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Contact Keeta Team for manual token provisioning."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Token Response Example"]},":"]},{"$$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":"Parameter"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Parameter"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Description"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Example"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Example"]}]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["accessToken"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Authorization credential"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["361d6d7f2624497e9976073205c16227"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["tokenType"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Token format"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["bearer"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["expiresIn"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Validity period (seconds)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["7776000 (90 days)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["refreshToken"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Token renewal credential"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["223e556762ee42a78907d143ee9e83e7"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["scope"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Permission scope"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["all (default)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["issuedAtTime"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Issuance timestamp (milliseconds)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1703147284319"]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"accessToken\": \"361d6d7f2624497e9976073205c16227\",\n  \"tokenType\": \"bearer\",\n  \"expiresIn\": 7776000,\n  \"refreshToken\": \"223e556762ee42a78907d143ee9e83e7\",\n  \"scope\": \"all\",\n  \"issuedAtTime\": 1703147284319\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3-token-refresh-protocol","__idx":3},"children":["3. Token Refresh Protocol"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Time-Bound Validity"]},": Both accessToken and refreshToken share identical expiration timelines (90 days)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Proactive Management"]},": Monitor token expiration and initiate refresh 3-5 days before expiry."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"// Refresh Curl Example\ncurl -X POST 'https://open.mykeeta.com/api/open/base/oauth/token' \\\n-H 'Content-Type: application/json' \\\n--data-raw '{\n    \"appId\": 123456,\n    \"refreshToken\": \"223e556762ee42a78907d143ee9e83e7\",\n    \"timestamp\": \"1715687158\",\n    \"grantType\": \"refresh_token\",\n    \"sig\": \"10bca710d855804308011a66d2ccd7ddaaa06f38307431a77745c6c7f669dd5a\"\n}'\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4-important-notes","__idx":4},"children":["4. Important Notes"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Keeta's token management system requires developers to maintain strict vigilance over the expiration timelines of both ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["access tokens"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["refresh tokens"]},", as these credentials share identical validity periods and will ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["simultaneously become invalid once they reach their expiry"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When encountering failures during token refresh attempts, whether due to network instability, system anomalies, or transient errors, developers must implement a structured retry strategy with ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["3 to 5 sequential attempts"]}," before escalating the issue. If persistent failures occur despite these retries, immediate engagement with Keeta's technical support team is required for diagnostic investigation and resolution."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Following a successful token refresh operation, developers must observe critical usage constraints: the newly generated tokens are subject to a strict rate limit prohibiting more than one refresh attempt per minute. Additionally, while the new tokens become immediately operational, the previous tokens retain validity for a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["60-minute grace period"]},". This intentional overlap prevents concurrent request failures during the transition window, ensuring seamless continuity for in-flight operations still referencing the original credentials."]}]}]}]},"headings":[{"value":"Basic API Integration Guide","id":"basic-api-integration-guide","depth":1},{"value":"1. Authorization Overview","id":"1-authorization-overview","depth":2},{"value":"2. Token Acquisition Methods","id":"2-token-acquisition-methods","depth":2},{"value":"3. Token Refresh Protocol","id":"3-token-refresh-protocol","depth":2},{"value":"4. Important Notes","id":"4-important-notes","depth":2}],"frontmatter":{"seo":{"title":"Basic API Integration Guide"}},"lastModified":"2026-07-15T11:32:09.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/apis/grocery/docs/basicintegrationguide","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}