Developers · REST API

Build with Reapdat

Voice calls, chat, bookings, and leads — one REST API. Authenticate with a key and send your first request in minutes.

Quick Start

1

Get Your API Key

Sign up and generate an API key from the portal dashboard.

Step 1
# 1. Sign up at your-domain.com/signup
# 2. Complete onboarding
# 3. Go to Portal > Integrate > API Keys
# 4. Click "Generate API Key"
# Your key will look like: ua_aBcDeFgHiJkLmNoPqRsTuVwXyZ...
2

Install the Widget

Add the chat widget to your website with a single script tag.

Step 2
<!-- Add before </body> on your website -->
<script
  src="https://your-domain.com/widget.js"
  data-tenant-id="your_tenant_id"
  data-theme="dark"
  data-position="bottom-right"
  async
></script>
3

Make Your First API Call

Send a chat message or initiate a voice call via the REST API.

Step 3
curl -X POST https://your-domain.com/api/v1/chat/message \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ua_your_api_key" \
  -d '{
    "message": "Hello, I want to book an appointment",
    "tenant_id": "your_tenant_id",
    "client_name": "Jane Smith"
  }'

Authentication

The API supports two authentication methods. Use API keys for server-to-server integrations and JWT cookies for browser-based sessions.

API Key Header
# API Key Authentication
# Pass your key in the X-API-Key header

curl https://your-domain.com/api/v1/leads \
  -H "X-API-Key: ua_your_api_key"

# Key prefixes:
#   ua_        — Standard keys (read/write calls, leads, bookings)
#   ua_admin_  — Admin keys (tenant management, full access)
Security notes:
  • Never expose API keys in client-side code
  • JWT tokens are stored in HttpOnly cookies (not accessible via JavaScript)
  • All requests must use HTTPS in production
  • Admin keys (ua_admin_) should only be used in secure backend environments

API Reference

Base URL: https://your-domain.com All endpoints require authentication unless noted otherwise.

SDK Examples

Copy-paste examples for common operations in your language of choice.

Python
import requests

API_KEY = "ua_your_api_key"
BASE_URL = "https://your-domain.com/api/v1"

headers = {
    "Content-Type": "application/json",
    "X-API-Key": API_KEY,
}

# Send a chat message
response = requests.post(f"{BASE_URL}/chat/message", headers=headers, json={
    "message": "I'd like to book an appointment for tomorrow",
    "tenant_id": "your_tenant_id",
    "client_name": "Jane Smith",
})
print(response.json())

# Initiate an AI voice call
call = requests.post(f"{BASE_URL}/calls/initiate", headers=headers, json={
    "phone_number": "+15551234567",
    "client_name": "John Doe",
    "call_type": "outbound",
    "custom_prompt": "Greet the caller and schedule an appointment.",
})
print(call.json())

# Get all leads
leads = requests.get(f"{BASE_URL}/leads", headers=headers)
print(leads.json())

Webhooks

Configure webhook URLs in your portal settings to receive real-time event notifications. All payloads are signed with HMAC-SHA256 for verification.

Webhook Events
call.completedVoice call finished (includes transcript, duration, sentiment)
call.startedVoice call initiated and connected
call.failedVoice call failed to connect or errored
booking.createdNew booking made (via widget, API, or AI)
booking.updatedBooking was rescheduled or modified
booking.cancelledBooking was cancelled
lead.capturedNew lead captured from conversation or form
lead.updatedLead status or details changed
chat.messageNew chat message received from a visitor
chat.session_endedChat session closed
crm.sync_completedCRM sync finished successfully
crm.sync_failedCRM sync encountered an error
Example Payload
{
  "event": "call.completed",
  "timestamp": "2026-02-27T14:30:00Z",
  "tenant_id": "tenant_abc123",
  "data": {
    "call_id": "call_xyz789",
    "phone_number": "+15551234567",
    "client_name": "John Doe",
    "duration": 142,
    "direction": "outbound",
    "sentiment": "positive",
    "transcript": [
      { "role": "agent", "text": "Hello, this is AI assistant..." },
      { "role": "user", "text": "Hi, I'd like to schedule..." }
    ],
    "lead": {
      "name": "John Doe",
      "phone": "+15551234567",
      "email": "john@example.com",
      "intent": "booking"
    },
    "actions": ["booking_created"]
  }
}
Signature Verification (Python)
import hmac
import hashlib

def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
    """Verify HMAC-SHA256 webhook signature."""
    expected = hmac.new(
        secret.encode("utf-8"),
        payload,
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(f"sha256={expected}", signature)

# In your webhook handler:
# signature = request.headers.get("X-Webhook-Signature")
# is_valid = verify_webhook(request.body, signature, WEBHOOK_SECRET)

Rate Limits

Rate limits protect the platform and ensure fair usage. When a limit is exceeded, the API returns 429 Too Many Requests with a Retry-After header.

CategoryLimit
Authentication5 req / 15 min
Chat Messages200 req / hour
Voice Calls60 req / min
Knowledge Ingest100 req / hour
Analytics120 req / min
Widget Endpoints300 req / min
General API1000 req / min

Error Codes

All error responses include a JSON body with a detail field describing the error. Production errors never expose stack traces.

CodeStatusDescription
200OKRequest succeeded
201CreatedResource created successfully
400Bad RequestInvalid request body or parameters
401UnauthorizedMissing or invalid API key / JWT token
403ForbiddenInsufficient permissions (e.g., non-admin accessing admin endpoint)
404Not FoundResource not found or does not belong to your tenant
409ConflictResource already exists (e.g., duplicate email registration)
422Validation ErrorRequest body failed validation (Pydantic)
429Too Many RequestsRate limit exceeded. Check Retry-After header
500Internal ErrorServer error. No stack traces in production
Error Response Format
{
  "detail": "Invalid API key or insufficient permissions"
}

// Validation errors (422) include field-level details:
{
  "detail": [
    {
      "loc": ["body", "email"],
      "msg": "value is not a valid email address",
      "type": "value_error.email"
    }
  ]
}

Widget Integration

Add the Reapdat chat widget to any website with a single script tag. The widget provides live chat, voice calls, and booking functionality. Your website domain must be registered in your tenant's allowed_domains list for origin validation.

HTML Embed Snippet
<!-- Reapdat Widget -->
<!-- Add this snippet before the closing </body> tag -->

<script
  src="https://your-domain.com/widget.js"
  data-tenant-id="your_tenant_id"
  data-theme="dark"
  data-position="bottom-right"
  data-accent-color="#FF3621"
  data-greeting="Hi! How can I help you today?"
  async
></script>

<!--
  Configuration attributes:
  data-tenant-id     (required) Your unique tenant identifier
  data-theme         "dark" | "light" (default: "dark")
  data-position      "bottom-right" | "bottom-left" (default: "bottom-right")
  data-accent-color  Hex color for widget accent (default: "#FF3621")
  data-greeting      Custom greeting message
-->
Widget features:
  • AI-powered chat with RAG context from your knowledge base
  • In-browser voice calls via WebRTC
  • Phone call initiation (connects to Twilio)
  • Appointment booking with calendar availability
  • Lead capture and CRM sync
  • Fully responsive and mobile-friendly

Ready to integrate?

Try the API playground or sign up to get your key.

FAQ

Questions, answered

API, widget, and integration questions lead here — everything else businesses ask follows.

Talk to us

Developers

06 questions

Yes — a REST API covering chat, calls, leads, and bookings. Generate an API key from Portal → Integrate, then authenticate with the X-API-Key header. The full reference and examples live on the developers page.

One script tag before the closing body tag, with your tenant ID and optional theme and position attributes. The script loads async, so it never blocks your page render.

No. The widget script loads asynchronously after your page renders and stays out of the critical path — your content paints first, the widget appears when it's ready.

Yes. Custom webhooks can notify your systems about new leads, bookings, and conversations, and the Zapier integration connects Reapdat to thousands of other tools alongside the native CRM syncs.

Widget requests are validated against your allowed domains, so only sites you've whitelisted can open sessions with your agent. Built-in rate limiting and spam protection cover the rest.

Yes — the interactive playground on the developers page lets you send real requests and inspect responses right in the browser before you integrate.

General

06 questions

Reapdat is an AI front desk assistant platform. It answers phone calls, chats with website visitors, replies to emails, and books appointments — all automatically, 24/7. Think of it as a tireless front-desk employee that handles every channel and never misses a customer.

No. Every account gets a hosted chat page with a unique link and a QR code. Share it on WhatsApp, Instagram, Google Business Profile, business cards, or text messages — your customers chat with your AI from anywhere, no website required.

Under 10 minutes. Sign up, paste your website URL or upload your FAQs for the AI to learn from, set your agent's personality, and you're live. No coding, no developer needed.

Yes. The chat widget, browser voice calls, booking, and email auto-replies all run from one account and share one knowledge base — so a customer who emails at 2 AM and chats the next morning gets consistent answers on both channels.

Every conversation is logged with a full transcript. Correct the answer once in your knowledge base and every channel learns instantly. The AI also detects frustrated or urgent customers and escalates them straight to your team.

Yes. All data is encrypted in transit (TLS 1.3) and at rest, with strict per-business data isolation. We're GDPR-ready and VAPT security-tested. We never sell or share your data, and you can delete your records at any time.

Product

07 questions

Website chat, browser voice calls, phone, email, and anywhere you can paste your hosted chat link — WhatsApp, Instagram bio, Google Business, SMS, QR codes, email signatures. One AI brain answers on all of them.

Paste your website URL or upload FAQs and documents — the AI builds its knowledge base from them in minutes. When you correct or add an answer, chat, voice, and email all update at once.

Visitors click the widget and talk to your AI through their microphone, right in the browser — no phone number to dial, no app to install. The AI answers questions, captures the lead, and can book an appointment mid-call, with a full transcript saved.

Yes. The AI checks your Google Calendar availability, books the slot, and sends confirmations and reminders. Customers can reschedule or cancel on their own, directly inside the chat.

It doesn't guess. Uncertain emails and conversations land in your Needs You queue with an AI-drafted reply ready for review — you approve, edit, or answer yourself, and the AI learns from the correction.

Forward your support inbox to Reapdat and the AI reads every incoming email and replies in about 30 seconds, using the same knowledge base and tone as your chat and voice agent.

Yes — set the greeting, tone of voice, speaking voice, and handling rules, like training a new hire. On the Growth plan and up you can also white-label the widget so it's fully your brand.

Pricing

06 questions

Starter is $59/mo (100 bookings, 1,500 chats, 300 voice minutes, 300 AI-handled emails). Growth is $129/mo (400 bookings, 3,500 chats, 700 voice minutes, 1,000 emails). Scale is $349/mo (1,000 bookings, 14,000 chats, 1,800 voice minutes, 3,000 emails). Every paid plan includes chat, voice, booking, and email.

14 days with 10 bookings, 200 chats, 30 voice minutes, 30 AI-handled emails, and 3 knowledge documents — no credit card required. Add a payment method on day 8 to unlock the full feature set, including unlimited voice testing.

Your account pauses — no charge, no data deleted. Pick a paid plan whenever you're ready and your AI picks up exactly where it left off.

Each plan includes a monthly allowance of bookings, chat conversations, voice minutes, and AI-handled emails. Your dashboard shows live usage, so you always know where you stand before you hit a limit.

Yes — upgrade or downgrade any time from the billing page in your dashboard, and the change applies to your next billing cycle.

Yes. Annual plans save up to 20% compared to paying monthly — the annual price is shown next to each plan on the pricing page.

Industries

06 questions

Real Estate, Healthcare, Legal, Restaurants, Auto Dealerships, Insurance, Salons & Spas, Fitness, Education, Financial Services, Home Services, and Travel — each with tailored starting templates so the AI speaks your industry's language from day one.

Almost certainly. Reapdat learns any business from its website, FAQs, and documents. If your customers call, chat, or email you, the AI can answer them — the industry templates are a head start, not a requirement.

Yes. The AI answers from your knowledge base — your services, prices, hours, policies, and FAQs. It only says what you've taught it, and escalates to your team when a question falls outside that.

The big three: answering after-hours calls and chats that used to go to voicemail, booking appointments directly into the calendar, and capturing every lead into the CRM. Each industry page on this site shows worked examples.

All conversations are encrypted in transit and at rest, with strict per-business data isolation, and the AI escalates sensitive or uncertain requests to your team instead of guessing. If your industry has specific compliance requirements, talk to us and we'll walk through how Reapdat fits them.

Yes — the live demo page has ready-made agents for several industries, so you can chat or talk to one that already sounds like your business before you sign up.

Contact & Support

05 questions

Use the form on the contact page, or reach us directly by email or phone — both are listed there. For quick product questions, the chat widget on this site answers instantly, any hour.

Our team is available Monday to Friday, 9 AM – 6 PM EST. The AI assistant on this site — the same product we sell — covers questions 24/7.

Yes. The demo page lets you chat and talk with live industry agents right now, and there's a recorded walkthrough on the demo video page if you'd rather watch first.

Setup is self-serve and takes about 10 minutes, with guides at every step. Scale plan customers get a dedicated account manager; on any plan, contact us and we'll help you get live.

We're based in Brampton, Ontario, Canada, and serve businesses worldwide. Your AI agent works in whatever timezone your customers are in.