⚡ Quick Start

Get Karinda live on your website in under 10 minutes. No coding experience needed.

Step 1 — Create your account

Go to karinda-dashboard.pages.dev/signup.html and sign up with your business name and email.

Step 2 — Train your bot

In your dashboard, enter your website URL (e.g. https://yourbusiness.com) and click Train My Bot. Karinda crawls your website and trains the AI — takes 1–3 minutes.

Step 3 — Get your embed code

Once training is complete, your dashboard shows a <script> tag. Copy it.

Step 4 — Paste on your website

Paste the script tag just before the </body> closing tag on every page of your website. Save and publish. Done — the chat bubble appears instantly.

<!-- Karinda AI Widget — paste before </body> --> <script src="https://karinda.in/widget.js" data-business-id="YOUR_BUSINESS_ID" data-primary-color="#007AFF" data-bot-name="Karinda"> </script>

📎 Embed the Widget

The Karinda widget is a single JavaScript file that injects a floating chat bubble into your page. It works on any website with any hosting.

Minimum embed

<script src="https://karinda.in/widget.js" data-business-id="YOUR_ID"></script>

Full embed with all options

<script src="https://karinda.in/widget.js" data-business-id="YOUR_ID" data-primary-color="#FF6B35" data-bot-name="Priya" data-api-url="https://api.karinda.in"> </script>

WordPress Guide

Two ways to add Karinda to your WordPress site:

Option A — Using a plugin (easiest)

  • Install the Insert Headers and Footers plugin (free on wordpress.org)
  • Go to Settings → Insert Headers and Footers
  • Paste your Karinda <script> tag into the Scripts in Footer box
  • Click Save — done

Option B — Theme editor

  • Go to Appearance → Theme File Editor
  • Open footer.php
  • Paste the script just before <?php wp_footer(); ?>
  • Click Update File
💡 If you use a page builder like Elementor or Divi, you can also paste the script in their "Custom Code" or "Header/Footer" section.

Shopify Guide

  • Go to your Shopify Admin → Online Store → Themes
  • Click the ••• menu next to your active theme → Edit Code
  • Open layout/theme.liquid
  • Find the </body> tag near the bottom
  • Paste your Karinda script just before it
  • Click Save

The bot will now appear on every page of your Shopify store — product pages, home page, cart — everywhere.

🔐 Auth API

Base URL: https://karinda-auth.dhruv-iimj.workers.dev

All authenticated endpoints require the header: Authorization: Bearer YOUR_API_KEY

POST/signup
Create a new business account. Returns an API key.
Body paramRequiredDescription
namerequiredBusiness name
emailrequiredOwner email address
passwordrequiredMin 8 characters
// Response { "success": true, "api_key": "kar_abc123...", "business_id": "d996..." }
POST/login
Authenticate and retrieve your API key.
Body paramRequiredDescription
emailrequiredYour email
passwordrequiredYour password
GET/me
Get your business profile, crawl status, and recent leads. Requires auth header.
POST/save-lead
Save a visitor lead manually (also called automatically by the widget).
Body paramRequiredDescription
business_idrequiredYour business ID
visitor_nameoptionalVisitor's name
visitor_phoneoptionalVisitor's phone number
visitor_messageoptionalSummary of conversation

🕷️ Crawler API

Base URL: https://karinda-crawler.dhruv-iimj.workers.dev

POST/crawl
Start crawling a website. Requires auth header. This is a long-running operation (1–3 min).
Body paramRequiredDescription
website_urlrequiredFull URL including https://
// Response (after crawl completes) { "success": true, "pages_crawled": 14, "vectors_stored": 87, "status": "ready" }
GET/status
Check crawl status. Poll this every 5s after starting a crawl. Requires auth header.
// Response { "crawl_status": "ready", "website_url": "https://example.com" } // crawl_status: "pending" | "crawling" | "ready" | "error"

💬 Chat API

Base URL: https://karinda-chat.dhruv-iimj.workers.dev

This is the endpoint the widget calls on every message. You can also call it directly to build custom integrations.

POST/chat
Send a message and receive an AI-generated response based on your website content.
Body paramRequiredDescription
business_idrequiredYour business ID (from dashboard or /me)
messagerequiredThe visitor's question (plain text)
historyoptionalArray of prior messages: [{role, content}]. Max 8 turns.
// Request example { "business_id": "d996923f...", "message": "What tours do you offer to Goa?", "history": [ { "role": "user", "content": "Hello" }, { "role": "assistant", "content": "Hi! How can I help?" } ] } // Response { "answer": "We have 3 Goa packages starting from ₹12,500...", "ready": true, "sources": ["https://example.com/goa-packages"] }
GET/health
Health check. Returns {"status":"ok"}.

🎨 Widget Attributes

Control the widget's appearance and behaviour using data-* attributes on the script tag.

AttributeDefaultDescription
data-business-idrequiredYour unique business ID from the dashboard
data-primary-color#007AFFHex color for the chat bubble, header, and send button
data-bot-nameKarindaName displayed in the chat header
data-api-urlauto-detectOverride the chat API endpoint URL

🔔 JavaScript Events

The widget fires custom events on the window object so you can react to user interactions.

// Listen for when a lead is captured window.addEventListener('karinda:lead', (e) => { console.log(e.detail); // { name, phone, businessId } // Send to your CRM, analytics, etc. }); // Listen for when a chat message is sent window.addEventListener('karinda:message', (e) => { console.log(e.detail); // { message, businessId } });

⚡ Rate Limits

EndpointLimitNotes
/chat60 req/min per businessResets every minute
/crawl5 crawls/day per businessOne crawl per website update
/signup10 req/hour per IPAnti-abuse
/login20 req/hour per IPAnti-brute-force

All limits return HTTP 429 Too Many Requests when exceeded. Retry after 60 seconds.