Documentation

Everything you need to embed, host, or integrate your AI chatbot.

Quick Start

  1. 1

    Create an account

    Sign up at nuovabot.com. Your first chatbot and workspace are provisioned automatically. No credit card required on the Free plan.

  2. 2

    Upload your documents

    Go to Knowledge → Upload. Supported formats: PDF, DOCX, TXT. Documents are automatically chunked, embedded, and indexed. Processing typically takes under 30 seconds.

  3. 3

    Deploy your chatbot

    Open the Embed & Deploy tab on your chatbot. Choose a deployment method: copy the widget snippet, share the hosted link, or use the API.

Widget Embed

Add a chat bubble to any website with a single script tag. Copy your snippet from the Embed & Deploy tab — it already contains your chatbot's API key.

<script
  src="https://nuovabot.com/widget.js"
  data-chatbot-id="your-chatbot-id"
  data-api-key="your-api-key"
  async
></script>

The widget renders inside a Shadow DOM — it won't conflict with your existing styles. Lazy-loads after the page is interactive.

Hosted Chat Page

Each chatbot gets a public, branded chat page you can share directly — no embedding required.

https://nuovabot.com/chat/your-chatbot-slug

The slug is shown in your Embed & Deploy tab. You can share this URL in emails, support pages, or anywhere a direct link works better than an embedded widget.

REST API

Description

POST /api/v1/chat

Send a message to your chatbot and receive a streaming SSE response.

curl -X POST https://nuovabot.com/api/v1/chat \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "What is your return policy?",
    "conversationId": "optional-existing-conversation-id"
  }'

Request body

FieldTypeDescription
messagestring (required)The user's message
conversationIdstring (optional)Continue an existing conversation. Omit to start a new one.

SSE Response Format

Responses are streamed as Server-Sent Events. Each event has an event: type and a JSON data: payload.

Event typePayloadDescription
token{ "token": "Hello" }A chunk of the assistant response text
done{ "conversationId": "...", "messageId": "...", "model": "claude-haiku-..." }Stream complete. Contains conversation metadata.
error{ "message": "Rate limit exceeded" }An error occurred. Stream ends after this event.
tool_start{ "toolCallId": "...", "toolName": "create_ticket" }Chatbot is performing an action (e.g. creating a ticket)
tool_result{ "toolCallId": "...", "toolName": "create_ticket", "success": true, "result": "TK-0042" }Action completed. Includes result data.

Rate Limits

Rate limits are enforced per organization using a sliding window. Exceeding a limit returns HTTP 429.

PlanMessages/minMessages/dayMessages/month
Free510025
Starter153001,000
Pro301,0004,000
Business602,50010,000

Authentication

Two authentication methods are supported depending on where you're calling from.

API Key (widget & server-side)

Pass your chatbot's API key in the X-API-Key header.

X-API-Key: your-chatbot-api-key

API keys are shown once at chatbot creation. Store them securely — they cannot be retrieved again (only rotated).

Bearer JWT (dashboard & internal)

Dashboard API calls use Supabase session tokens via the Authorization header. This is handled automatically by the dashboard frontend.

Authorization: Bearer <supabase-session-jwt>

Ready to build?

Create your first chatbot for free — no credit card required.

Start for free