1. Platform Overview

Oshaani is the workspace for creating, training, publishing, and calling AI agents. Agents can use tools, MCP servers, and your documents (RAG). You chat in the app, expose an API, or trigger agents from automation.

Key capabilities:
  • Create, train, test, and publish agents (own models plus Bedrock and Ollama)
  • 16+ built-in tools, including image, video, and speech generation
  • Video: text_to_video, image_to_video, combine_video_audio
  • Speech: text_to_speech for narration and videos with sound
  • Media tools run only when the user actually asks for an image, video, or voiceover—short replies like “A” or “Done” stay text
  • MCP servers for extra tools; RAG from uploaded training data
  • In-app chat with background polling (you never see “Please poll again”)
  • REST API and agent webhooks for Zapier, n8n, Make, cron, and pipelines
  • Public marketplace, email sharing, and public share URLs
  • Pay-as-you-go credits — new accounts get 200 welcome credits
  • Contact / demo forms, plus WhatsApp technical support
Oshaani Ecosystem:

The Oshaani platform is part of a growing ecosystem of AI-powered solutions:

  • AI Agents Platform (oshaani.com): Create, train, and deploy AI agents
  • Oshaani Social (social.oshaani.com): Connect, share, and collaborate with AI agents in a social environment
  • Developer Tools: Advanced APIs, SDKs, and developer resources (coming soon)

2. What You Can Do

2.1 Agent lifecycle

Each agent moves through: draft → training → testing → published. Only published agents accept API keys, public chat, marketplace listing, and webhooks. After you change tools or instructions, republish so callers pick up the new behavior.

  • Model: Bedrock or Ollama, chosen on the train page
  • Owner: billed for agent-API-key usage; public marketplace chat/API bills the caller and pays the owner revenue share (default 2%)
  • API keys: Agent keys on the agent page (owner integrations); User keys on Profile → User API keys (MCP + calling public agents)

2.2 Conversations

Chat in the app at /chat/ or /agent/{slug}/. Replies run in the background: the UI keeps polling until the answer is ready. Do not show or forward poll status text (for example “Please poll again”) as a message. The same async pattern is available over REST via /api/create_conversation and /api/get_answer.

2.3 Tools you can enable

Built-in, custom HTTP, and MCP tools. Toggle them on the train page. If video tools are on, URL fetch, speech, and muxing stay available for videos with sound.

  • Built-in: web_search, url_resolver, code_executor, transcription, text_to_image, text_to_video, image_to_video, text_to_speech, combine_video_audio, svg_diagram, ocr, summarization, question_answering, translation, read_file, write_file
  • Custom: HTTP tools you define (up to 10 per agent)
  • MCP: tools discovered from servers you connect

3. Authentication & Authorization

3.1 Authentication methods

  • User API keys: MCP, user-scoped APIs, and calling public marketplace agents (pass agent_slug / agent_id). Header: Authorization: ApiKey … or Bearer …. Create under Profile → User API keys.
  • Agent API keys: chat, query, webhook, and get_answer for that published agent (owner billed). Header: Authorization: ApiKey … or X-API-Key.
  • Session: dashboard and in-app chat after sign-in

3.2 Access rules

  • You can only manage your own agents (unless an agent was shared with you)
  • Public-share / marketplace agents can be used in UI chat after login, or via API with your user API key
  • Agent API keys only work on published agents and always bill the owner (no marketplace revenue share)
  • Do not share an agent API key to “open” a public agent — use user API keys + agent_slug instead
Security Best Practices:
  • API keys are hashed using SHA-256
  • Keys are shown only once when generated
  • Last used timestamps are tracked
  • Keys can be revoked at any time

4. Tools Configuration & Feature Enabling

4.1 Available Tools

Agents have access to multiple types of tools:

✅ Built-in Tools (16+ tools)
  • read_file - Read files from storage
  • write_file - Write files to storage
  • web_search - Search the web
  • url_resolver - Resolve and fetch URLs (auto-adds https:// if missing)
  • code_executor - Execute Python code
  • transcription - Transcribe audio (AWS Transcribe)
  • text_to_image - Generate images (AWS Bedrock)
  • text_to_video - Generate video from text (Bedrock Luma/Nova)
  • image_to_video - Generate video from image
  • text_to_speech - Generate speech from text (AWS Polly, synchronous)
  • combine_video_audio - Mux video + audio for demo videos with sound
  • svg_diagram - Generate SVG diagrams for buildings/architecture
  • ocr - Extract text from images/PDFs (AWS Textract)
  • summarization - Summarize content (AWS Bedrock)
  • question_answering - Answer questions (AWS Bedrock)
  • translation - Translate text (AWS Translate)
✅ Custom Tools
  • User-defined HTTP-based tools
  • Up to 10 custom tools per agent
  • Configurable endpoints and methods
  • Custom authentication headers
✅ MCP Tools
  • Tools from MCP servers
  • Automatically discovered
  • Prefixed with server name
  • Dynamic tool registration

4.2 Enabling and Disabling Tools

You can control which tools are available to your agent by enabling or disabling them. This allows you to customize agent capabilities based on your needs.

4.2.1 Via Dashboard (Recommended)
Steps to Enable/Disable Tools:
  1. Navigate to your agent's training page: /dashboard/{agent_id}/train/
  2. Scroll to the "Tools Configuration" section
  3. You'll see three categories:
    • Default Tools - Built-in system tools
    • Custom Tools - Your custom HTTP-based tools
    • MCP Tools - Tools from connected MCP servers
  4. Toggle tools on/off using the checkboxes
  5. Click "Save Tool Configuration" to apply changes
4.2.2 Via API

Update agent configuration to enable/disable tools:

Enable Specific Tools:
PATCH /api/agents/{agent_id}/
Authorization: Bearer YOUR_USER_TOKEN
Content-Type: application/json

{
  "configuration": {
    "enabled_tools": ["web_search", "url_resolver", "code_executor"],
    "disabled_tools": []
  }
}
Disable Specific Tools:
PATCH /api/agents/{agent_id}/
Authorization: Bearer YOUR_USER_TOKEN
Content-Type: application/json

{
  "configuration": {
    "disabled_tools": ["text_to_image", "transcription"]
  }
}
4.2.3 Tool Configuration Logic
How Tool Filtering Works:
  • If enabled_tools is empty: All tools are available (except those in disabled_tools)
  • If enabled_tools has items: Only tools listed in enabled_tools are available
  • If a tool is in disabled_tools: It's always disabled (unless also in enabled_tools)
  • Priority: enabled_tools takes precedence over disabled_tools
4.2.4 Example Configurations
Example 1: Enable Only Web Search and URL Resolver
{
  "enabled_tools": ["web_search", "url_resolver"]
}
Example 2: Disable Image Generation Tools
{
  "disabled_tools": ["text_to_image"]
}
Example 3: Enable All Tools Except Code Execution
{
  "disabled_tools": ["code_executor"]
}

4.3 Feature Enabling

Beyond tools, you can enable/disable various features for your agent:

4.3.1 RAG (Retrieval-Augmented Generation)
Enable RAG:
{
  "configuration": {
    "use_rag": true,
    "rag_top_k": 5,
    "rag_threshold": 0.7
  }
}
  • use_rag: Enable/disable RAG feature
  • rag_top_k: Number of relevant chunks to retrieve (default: 5)
  • rag_threshold: Similarity threshold for retrieval (default: 0.7)
4.3.2 Tool Calling
Enable/Disable Tool Calling:
{
  "configuration": {
    "tools_enabled": true,
    "max_tool_iterations": 10
  }
}
  • tools_enabled: Enable/disable tool calling capability
  • max_tool_iterations: Maximum tool call iterations (default: 10)
4.3.3 Conversation Memory
Configure Memory:
{
  "configuration": {
    "use_memory": true,
    "max_history_messages": 50
  }
}
  • use_memory: Enable conversation memory
  • max_history_messages: Maximum messages to keep in context

4.4 Checking Tool Status

View Enabled Tools:
  • Via Dashboard: Go to agent training page → Tools Configuration section
  • Via API: GET /api/agents/{agent_id}/ → Check configuration.enabled_tools and configuration.disabled_tools
Important Notes:
  • Tool configuration changes take effect immediately for new requests
  • Published agents may need to be republished to apply configuration changes
  • Disabled tools won't appear in tool schemas sent to the LLM
  • Custom tools and MCP tools follow the same enable/disable rules
  • Media tools (text_to_image, text_to_video, image_to_video, text_to_speech, combine_video_audio) run only when the user asks for that media. The agent will not invent images or sandbox:/mnt/data/ links.

5. API Usage Guide

5.1 API Types Overview

The platform provides multiple API types to suit different use cases:

REST API
  • Standard REST endpoints
  • Django REST Framework
  • Full CRUD operations
  • Session or API key auth
REST API v1
  • Simple chat/query endpoints
  • Agent API key auth
  • Streamlined interface
  • Quick integration
MCP API
  • Model Context Protocol
  • Tool discovery
  • Server management
  • User API key auth
Mobile API v1
  • Native iOS / Android apps
  • JWT access + refresh
  • Marketplace, chat, credits
  • Base: /api/mobile/v1/

5.1.1 Mobile Consumer API (JWT)

Use this API for native mobile apps (consumer: browse public agents, chat, credits, profile). Do not use agent API keys in the mobile app. Header: Authorization: Bearer <access_token>.

Base URL: /api/mobile/v1/

Auth
  • POST /auth/register/ — username, email, password → access + refresh + user
  • POST /auth/login/ — username or email + password → tokens
  • POST /auth/refresh/ — {"refresh": "..."} → new access (and rotated refresh)
  • POST /auth/logout/ — blacklist refresh (Bearer required)
  • GET /auth/me/ — current user profile
Marketplace
  • GET /agents/public/ — paginated public agents (?search=)
  • GET /agents/public/{slug}/ — detail
  • POST /agents/public/{slug}/like/ — feedback_type: like | dislike | clear
Chat (same Celery async model as web UI)
  • POST /chat/send/ — agent_slug or agent_id, message, optional conversation_id → 202 with task_id
  • GET /chat/tasks/{task_id}/ — poll until success / failure
  • GET /chat/conversations/, detail, messages, delete
  • POST /chat/upload/, POST /chat/feedback/
Credits / profile
  • GET /credits/balance/, GET /credits/packages/ (checkout remains web /dashboard/credits/)
  • GET|PATCH /profile/
  • GET /notifications/, POST /notifications/mark-read/
Client flow: login → store refresh securely → browse public agents → POST /chat/send/ → poll task every 1–2s → on HTTP 401 refresh once, then re-login if needed.

5.2 REST API Endpoints

The REST API provides comprehensive access to all platform features.

5.2.1 Agent Management
Base URL: /api/agents/
Authentication: User API Key or Session

Endpoints:
  • GET /api/agents/ - List all user's agents
  • POST /api/agents/ - Create new agent
  • GET /api/agents/{id}/ - Get agent details
  • PATCH /api/agents/{id}/ - Update agent
  • DELETE /api/agents/{id}/ - Delete agent
  • POST /api/agents/{id}/publish/ - Publish agent
  • POST /api/agents/{id}/unpublish/ - Unpublish agent
5.2.2 Agent Interaction (Requires Agent API Key)
Base URL: /api/agents/{id}/
Authentication: Agent API Key

Endpoints:
  • POST /api/agents/{id}/chat/ - Chat with agent
  • POST /api/agents/{id}/query/ - Query agent
  • POST /api/agents/{id}/invoke/ - Invoke agent action
  • GET /api/agents/{id}/status/ - Get agent status
  • GET /api/agents/{id}/history/ - Get interaction history
5.2.3 Example: Create Agent via REST API
POST /api/agents/
Authorization: Bearer YOUR_USER_API_KEY
Content-Type: application/json

{
  "name": "Customer Support Bot",
  "description": "Helps customers with common questions",
  "model_id": 1,
  "agent_type": "quick_bot",
  "configuration": {
    "system_prompt": "You are a helpful customer support assistant.",
    "enabled_tools": ["web_search", "url_resolver"],
    "use_rag": true
  }
}
5.2.4 Example: Chat with Agent via REST API
POST /api/agents/{agent_id}/chat/
Authorization: ApiKey YOUR_AGENT_API_KEY
Content-Type: application/json

{
  "message": "What is the weather today?",
  "conversation_id": "optional-conversation-id"
}
Response:
{
  "response": "I'll search for today's weather information...",
  "tool_calls": [
    {
      "tool_name": "web_search",
      "parameters": {"query": "weather today"},
      "result": "..."
    }
  ],
  "conversation_id": "conv-123",
  "iterations": 2
}

5.3 REST API v1 Endpoints

Simplified API endpoints for quick integration.

5.3.1 Simple Endpoints
Base URL: /api/v1/
Authentication: Agent API key or User API key (for public/accessible agents)

Endpoints:
  • POST /api/v1/chat - Sync chat (agent key, or user key + agent_slug/agent_id)
  • POST /api/v1/query - Sync query (same auth rules as chat)
  • GET /api/v1/agents - List accessible agents (agent API key)
  • GET /api/v1/agents/{id} - Get agent info (agent API key)
5.3.2 Example: REST API v1 Chat

Your own agent (agent API key — owner billed):

POST /api/v1/chat
Authorization: ApiKey YOUR_AGENT_API_KEY
Content-Type: application/json

{
  "message": "Hello, how can you help me?"
}

Public marketplace agent (user API key — caller billed + owner revenue share):

POST /api/v1/chat
Authorization: ApiKey YOUR_USER_API_KEY
Content-Type: application/json

{
  "message": "Hello, how can you help me?",
  "agent_slug": "doctor-rahul"
}
Response:
{
  "response": "Hello! I can help you with...",
  "tool_calls": [],
  "iterations": 1,
  "conversation_id": "conv-abc123",
  "agent_id": 42,
  "agent_slug": "doctor-rahul"
}

Tip: On the Agent Marketplace, open Use Via API on any card for copy-ready curls. Manage keys under Profile → User API keys.

5.3.3 REST Conversation API (async)
Base URL: /api/
Authentication: Agent API key or User API key (public/accessible agents)

Endpoints:
  • POST /api/create_conversation - Create conversation (user key requires agent_slug or agent_id)
  • POST /api/continue_conversation - Continue (your conversations only when using a user key)
  • GET /api/get_answer - Poll by request_id
  • POST /api/find_conversation - Conversation history
  • POST /api/webhook/agent/ - Agent webhook (agent API key only; see §5.3.5)
  • GET /api/public_profile?email= or POST /api/public_profile — public GenAI resume profile by email (no auth)
  • PUT /api/upload_file / GET /api/download_file — files (agent API key)
  • POST /api/create_upload_url / POST /api/get_download_url — signed URLs (agent API key)
5.3.4 Example: Create Conversation
POST /api/create_conversation
Authorization: ApiKey YOUR_AGENT_API_KEY
Content-Type: application/json

{
  "message": "What is machine learning?"
}

Public agent (user API key — caller pays + owner revenue share):

POST /api/create_conversation
Authorization: ApiKey YOUR_USER_API_KEY
Content-Type: application/json

{
  "message": "What is machine learning?",
  "agent_slug": "doctor-rahul"
}
Response (Async):
{
  "request_id": "req-550e8400-e29b-41d4-a716",
  "conversation_id": "conv-550e8400-e29b-41d4-a716",
  "status": "pending"
}
Key Points:
  • conversation_id is returned immediately - use it to continue the conversation
  • request_id is used to poll for the initial response
  • You can use conversation_id with /api/continue_conversation to maintain chat context
Poll for Results:
GET /api/get_answer?request_id=req-550e8400-e29b-41d4-a716
Authorization: ApiKey YOUR_AGENT_API_KEY
# or YOUR_USER_API_KEY if you created the conversation as a caller
Continue Conversation:
POST /api/continue_conversation
Authorization: ApiKey YOUR_AGENT_API_KEY
Content-Type: application/json

{
  "conversation_id": "conv-550e8400-e29b-41d4-a716",
  "message": "Tell me more about that"
}

With a user API key, you may only continue / poll / find conversations where conversation.user is you (the caller who created them).

5.3.4b Public marketplace agents via API

Any agent listed on the Agent Marketplace (active public share + published) can be called with your User API key. Billing matches UI chat: the caller pays; the owner receives revenue share (default 2%, team-approved overrides).

Requirements
  • User API key from Profile → User API keys
  • Published agent with an active public share
  • Body field agent_slug or agent_id on sync chat and create_conversation
  • Positive credit balance on the caller’s account (HTTP 402 if insufficient)
Sync
POST /api/v1/chat
Authorization: ApiKey YOUR_USER_API_KEY
{"message": "Hello", "agent_slug": "doctor-rahul"}
Async
POST /api/create_conversation
Authorization: ApiKey YOUR_USER_API_KEY
{"message": "Hello", "agent_slug": "doctor-rahul"}
→ poll GET /api/get_answer?request_id=...
→ POST /api/continue_conversation {"conversation_id": "...", "message": "..."}
Do not use the agent’s own API key for marketplace access. That path bills the owner and does not pay revenue share.

5.3.5 Agent Webhooks

Agent webhooks let external systems trigger a published agent asynchronously. Each inbound HTTP request returns immediately with request_id and conversation_id. Poll GET /api/get_answer for the result. Use webhooks for Zapier, n8n, Make, cron jobs, internal backends, and multi-step pipelines.

5.3.5.1 When to use a webhook vs other APIs
NeedEndpointNotes
Sync reply in one HTTP round-trip POST /api/v1/chat or POST /api/agents/{id}/chat/ Blocks until the agent finishes. Agent key or user key + agent_slug for public agents.
Async chat (plain message) POST /api/create_conversation Enqueue + poll. Agent key, or user key + agent_slug for public agents.
Async job from automation with JSON event data POST /api/webhook/agent/ Supports payload (sent to the model) and metadata (echoed only).
Follow-up in an existing thread POST /api/continue_conversation Pass conversation_id from webhook or create_conversation response.
5.3.5.2 Production endpoint (POST /api/webhook/agent/)
URL: POST /api/webhook/agent/ (Django name: agent-webhook)

Authentication: Agent API key only (same as other agent-scoped REST calls).
Authorization: ApiKey YOUR_AGENT_API_KEY

Alternative header:

X-API-Key: YOUR_AGENT_API_KEY

Requirements:
  • The agent must be published. Draft, training, and testing agents reject agent API key calls.
  • Every successful POST starts a new conversation. Webhook calls do not continue each other automatically. To send a follow-up in the same thread, use POST /api/continue_conversation with the conversation_id returned in the webhook response.
  • Processing is asynchronous. Poll GET /api/get_answer?request_id=... until status is completed or failed. See §7 Async Requests & Polling.
5.3.5.3 Request body
JSON fields
  • At least one of message, text, or payload is required.
  • message or text: natural-language instruction (either key; if both are set, message wins).
  • payload: optional JSON object. Appended to the composed user message under a [Webhook payload] section so tools and RAG see structured caller data (ticket ids, CRM fields, webhook event bodies, etc.).
  • metadata: optional JSON object. Not sent to the model; echoed back in the HTTP 202 response for correlation (trace_id, upstream job id, Zapier run id, etc.).
Message composition: The worker receives a single user message built as: primary text (message or text) + optional [Webhook payload] block with pretty-printed JSON.
5.3.5.4 Example: enqueue and poll
Enqueue
POST /api/webhook/agent/
Authorization: ApiKey YOUR_AGENT_API_KEY
Content-Type: application/json

{
  "message": "Summarize this inbound event for the team.",
  "payload": {
    "event": "ticket.created",
    "ticket_id": "TKT-4412",
    "priority": "high"
  },
  "metadata": {
    "trace_id": "run-2026-04-27-001",
    "source": "zendesk"
  }
}
Response (202 Accepted):
{
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "conversation_id": "660e8400-e29b-41d4-a716-446655440001",
  "agent_id": 123,
  "status": "pending",
  "metadata": {
    "trace_id": "run-2026-04-27-001",
    "source": "zendesk"
  }
}

Do not display this JSON (or any poll payload) as a chat message. Keep polling until status is completed or failed.

Poll:
GET /api/get_answer?request_id=550e8400-e29b-41d4-a716-446655440000
Authorization: ApiKey YOUR_AGENT_API_KEY
5.3.5.5 Poll responses (GET /api/get_answer)
  • 202 + status: pending or processing — keep polling in the background (1–2s, with backoff). These responses have no user-facing answer; do not print them in chat or as the next user message.
  • 200 + status: completed — includes answer, tool_calls, iterations, conversation_id, created_at. Show answer only.
  • 200 + status: failed — includes error (agent loop, tools, or insufficient credits). Stop polling; this is not an HTTP outage.
  • 404 — unknown request_id for this agent.
  • 403 — missing/invalid API key or agent not published.
  • 402 on enqueue — agent owner lacks minimum credits; the request is not queued.
Legacy: GET /api/get_answer?conversation_id=... returns the latest agent message for that conversation (no request_id).
5.3.5.6 Python example (webhook + poll)
import time
import requests

BASE = "https://your-domain.com/api"
HEADERS = {
    "Authorization": "ApiKey YOUR_AGENT_API_KEY",
    "Content-Type": "application/json",
}

enqueue = requests.post(
    f"{BASE}/webhook/agent/",
    headers=HEADERS,
    json={
        "message": "Triage this support ticket.",
        "payload": {"ticket_id": "TKT-99", "subject": "Billing issue"},
        "metadata": {"trace_id": "zapier-run-42"},
    },
    timeout=30,
)
enqueue.raise_for_status()
body = enqueue.json()
request_id = body["request_id"]
conversation_id = body["conversation_id"]

while True:
    poll = requests.get(
        f"{BASE}/get_answer",
        headers=HEADERS,
        params={"request_id": request_id},
        timeout=30,
    )
    data = poll.json()
    status = data.get("status")
    if status in ("pending", "processing"):
        time.sleep(1.5)
        continue
    if status == "completed":
        print(data["answer"])
        break
    raise RuntimeError(data.get("error") or data)
5.3.5.7 Automation and multi-agent pipelines

Chain agents in your automation by calling one webhook (or /api/v1/chat) per specialist and passing prior outputs in the next message or payload.

Trigger
Zapier · n8n · cron · queue
↓
POST /api/webhook/agent/
Agent A (e.g. triage)
↓ poll get_answer
POST /api/webhook/agent/
Agent B — payload includes A's answer
↓
Downstream action
Slack · email · CRM update
In-app alternative: One agent can call others via custom HTTP tools pointing at each agent's /api/v1/chat (see §4 Custom Tools). Webhooks are better when the caller is Zapier, n8n, cron, or another backend.
5.3.5.8 Dashboard testing (no API key required)
UI: Agent → Test (/dashboard/<slug>/test/#webhook-section) — Webhook test card and link from Chat (Webhook button).

Dashboard endpoint: POST /dashboard/<slug>/test/webhook/ — same JSON body as production; uses your login session. Allowed agent statuses: testing or published.
Poll (dashboard): GET /dashboard/<slug>/test/webhook/?request_id=... — same session; no agent API key.

Production path from the UI: Paste the agent API key in the test card to hit POST /api/webhook/agent/ and GET /api/get_answer (requires published agent).
Webhook runs can appear in the Live chat panel on the Test page for quick visual confirmation.

5.4 MCP API Endpoints

API endpoints for managing MCP servers and discovering tools.

5.4.1 MCP Server Management
Base URL: /api/mcp-servers/
Authentication: User API Key or Session

Endpoints:
  • GET /api/mcp-servers/ - List MCP servers
  • POST /api/mcp-servers/ - Create MCP server
  • GET /api/mcp-servers/{id}/ - Get server details
  • PUT /api/mcp-servers/{id}/ - Update server
  • DELETE /api/mcp-servers/{id}/ - Delete server
  • POST /api/mcp-servers/{id}/test_connection/ - Test connection
  • GET /api/mcp-servers/list_tools/?agent_id={id} - List available tools
5.4.2 Example: Create MCP Server
POST /api/mcp-servers/
Authorization: Bearer YOUR_USER_API_KEY
Content-Type: application/json

{
  "agent": 1,
  "name": "filesystem",
  "description": "Local filesystem access",
  "transport_type": "stdio",
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
  "auto_connect": true
}

5.5 Authentication Methods

5.5.1 User API Key Authentication
Use Case: MCP, user resources, and calling public marketplace agents (with agent_slug/agent_id)
Header Format:
Authorization: ApiKey YOUR_USER_API_KEY
# also accepted:
Authorization: Bearer YOUR_USER_API_KEY
X-API-Key: YOUR_USER_API_KEY
Where to Get: Profile → User API keys
Examples: Profile → API examples
5.5.2 Agent API Key Authentication
Use Case: Integrating with your published agent (owner billed)
Header Format:
Authorization: ApiKey YOUR_AGENT_API_KEY
Alternative:
X-API-Key: YOUR_AGENT_API_KEY
Where to Get: Agent Detail → API Access, or Profile → Agent API keys
5.5.3 Session Authentication
Use Case: Web dashboard access
Method: Django session cookies (automatic in browser)
Note: Only works for web requests, not API clients

5.6 API Response Formats

5.6.1 Success Response
{
  "success": true,
  "data": { ... },
  "message": "Operation completed successfully"
}
5.6.2 Error Response
{
  "error": "Error message here",
  "detail": "Additional error details"
}
5.6.3 Async Response
{
  "request_id": "req-550e8400-e29b-41d4-a716",
  "conversation_id": "conv-550e8400-e29b-41d4-a716",
  "status": "pending"
}

Note: The conversation_id is now returned immediately when creating a conversation, allowing you to maintain chat context across multiple API calls.

5.7 Complete API Examples

5.7.1 Python Example: Full Agent Workflow
import requests

# Configuration
BASE_URL = "https://your-domain.com/api"
AGENT_API_KEY = "your-agent-api-key"

# Chat with agent
response = requests.post(
    f"{BASE_URL}/v1/chat",
    headers={
        "Authorization": f"ApiKey {AGENT_API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "message": "What is artificial intelligence?"
    }
)

result = response.json()
print(f"Response: {result['response']}")
print(f"Tool calls: {result.get('tool_calls', [])}")
5.7.2 JavaScript Example: Async Conversation

Replace the agent key with a user API key and add agent_slug in the create body to call a public marketplace agent (caller billed + owner revenue share).

const API_KEY = "your-agent-api-key";
const BASE_URL = "https://your-domain.com/api";

// Create conversation (async)
const createResponse = await fetch(`${BASE_URL}/create_conversation`, {
  method: 'POST',
  headers: {
    'Authorization': `ApiKey ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    message: "Hello, agent!"
    // For public agents with a user API key, also pass:
    // agent_slug: "doctor-rahul"
  })
});

const { request_id, conversation_id } = await createResponse.json();

// Store conversation_id for maintaining context
console.log('Conversation ID:', conversation_id);

// Poll for results
const pollAnswer = async () => {
  const response = await fetch(
    `${BASE_URL}/get_answer?request_id=${request_id}`,
    {
      headers: { 'Authorization': `ApiKey ${API_KEY}` }
    }
  );
  return response.json();
};

// Poll until completed
let result = await pollAnswer();
while (result.status === 'pending' || result.status === 'processing') {
  await new Promise(resolve => setTimeout(resolve, 1000));
  result = await pollAnswer();
}

console.log('Final response:', result.response);

// Continue the conversation using conversation_id
const continueResponse = await fetch(`${BASE_URL}/continue_conversation`, {
  method: 'POST',
  headers: {
    'Authorization': `ApiKey ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    conversation_id: conversation_id,
    message: "Tell me more about that"
  })
});

const continueResult = await continueResponse.json();
console.log('Continued conversation response:', continueResult);
Benefits of conversation_id:
  • Maintains chat context across multiple API calls
  • Available immediately after creating a conversation
  • Enables multi-turn conversations with context preservation
5.7.3 cURL Example: Multiple API Types
REST API:
curl -X POST https://your-domain.com/api/agents/1/chat/ \
  -H "Authorization: ApiKey YOUR_AGENT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello"}'
REST API v1:
curl -X POST https://your-domain.com/api/v1/chat \
  -H "Authorization: ApiKey YOUR_AGENT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello"}'
Public agent via user API key (caller pays + owner revenue share):
curl -X POST https://your-domain.com/api/v1/chat \
  -H "Authorization: ApiKey YOUR_USER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello", "agent_slug": "doctor-rahul"}'
MCP API:
curl -X GET https://your-domain.com/api/mcp-servers/list_tools/?agent_id=1 \
  -H "Authorization: Bearer YOUR_USER_API_KEY"
API Best Practices:
  • Always use HTTPS in production
  • Store API keys securely (environment variables, secrets manager)
  • Handle errors gracefully with retry logic
  • Use appropriate API type for your use case
  • Monitor API usage and rate limits
  • Keep API keys rotated regularly

6. File Upload and Download

6.1 File Upload

Endpoint: PUT /api/upload_file
Authentication: Agent API Key
Max File Size: 100MB
Supported Formats: All file types (PDF, images, text, etc.)

6.2 File Download

Endpoint: GET /api/download_file?file_id=<file_id>
Purpose: Get download URL for uploaded or generated files
Authentication: Agent API Key

6.3 Generated Files

Files generated by tools (e.g., images from text_to_image) are automatically registered and accessible via the download_file endpoint. The file_id is included in tool call results.

Tools that generate files:
  • text_to_image — images
  • text_to_video / image_to_video — video files
  • text_to_speech — audio
  • combine_video_audio — video with sound
  • ocr / transcription — may attach extracted files

7. Async Requests & Polling

7.1 How it works

POST /api/create_conversation, POST /api/continue_conversation, and POST /api/webhook/agent/ return immediately with request_id and conversation_id (HTTP 202). Poll GET /api/get_answer?request_id=... until the job finishes. In-app chat does this for you automatically.

7.2 Status values

  • pending — queued; keep polling in the background
  • processing — still running; keep polling; do not show this to the end user
  • completed — use answer (and tool_calls if you need them)
  • failed — use error; stop polling (HTTP 200, not 5xx)
Never print poll payloads. Pending/processing responses are for your client loop only. Do not show “Please poll again”, do not post that text as the next user message, and do not treat message (if present) as the agent answer. Show answer only when status is completed.

7.3 Conversation ID

  • request_id — poll for this turn’s result
  • conversation_id — returned immediately; use it with /api/continue_conversation for follow-ups even while the first turn is still running

8. RAG (Retrieval Augmented Generation)

8.1 Overview

RAG lets the agent retrieve relevant passages from training data so answers stay grounded in your documents.

8.2 Using RAG

  1. Upload training files on the agent train page (or via API)
  2. Index: POST /api/agents/{id}/index_rag/
  3. Check status: GET /api/agents/{id}/rag_status/
  4. Turn RAG on or off with use_rag in agent configuration

You are notified when indexing finishes (chunk count) or fails. Optional email: SEND_RAG_NOTIFICATIONS=true.

9. MCP Integration

9.1 Overview

Connect MCP servers so the agent can use extra tools (filesystem, SaaS APIs, and so on) alongside built-in tools.

9.2 Transports

  • STDIO: run a local MCP command (for example npx -y @modelcontextprotocol/server-filesystem)
  • HTTP/SSE: remote MCP servers

9.3 Adding MCP servers

Step 1: Create MCP Server Configuration
POST /api/mcp-servers/
{
  "agent": 1,
  "name": "filesystem",
  "description": "Local filesystem access",
  "transport_type": "stdio",
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
  "auto_connect": true
}
Step 2: Test Connection
POST /api/mcp-servers/{id}/test_connection/
Step 3: List Available Tools
GET /api/mcp-servers/list_tools/?agent_id=1

9.4 MCP tools

  • Tools are automatically discovered from connected MCP servers
  • Tool names are prefixed with server name (e.g., mcp_filesystem_read_file)
  • Tools are integrated into the agent's tool system
  • MCP tools work alongside built-in tools seamlessly

10. Operating Your Agents

10.1 Publish and test

  • Train and enable tools, then move the agent to Testing or Published
  • Use the agent Test page (and publish/republish from there) before sharing a URL or API key
  • In-app chat and public URLs require a published agent
  • API keys, webhooks, and marketplace listings only work when the agent is published

10.2 Credits and access

  • New accounts receive 200 welcome credits
  • In-app chat with your own agent bills you; chatting a public-share agent bills the visitor
  • /api/v1/chat and /api/v1/query with an agent API key bill the agent owner
  • With a user API key + agent_id/agent_slug, public agents bill the caller and pay revenue share to the owner (same as UI chat)
  • If the billed user is below the minimum balance, requests return 402 and are not queued

10.3 Chat and files

  • Chat replies run in the background; the UI polls until the answer is ready
  • Generated images, video, and audio appear as files in the thread (authenticated media URLs)
  • Image/video/speech tools run only when the user asks for that media

10.4 Support

Technical support on WhatsApp: https://wa.me/917291059787 (floating Support button, sidebar, and footer on every page).

11. Connectors & OAuth Callback URLs

12.1 Overview

The platform supports integration with multiple external services through OAuth 2.0 connectors. Each connector requires a callback URL to be registered with the OAuth provider.

Supported Connector Types:
  • JIRA - Atlassian JIRA Cloud (OAuth 2.0 3LO)
  • Confluence - Atlassian Confluence (OAuth 2.0 3LO)
  • GitLab - GitLab repositories (OAuth 2.0)
  • GitHub - GitHub repositories (OAuth 2.0)
  • Google - Google Workspace (Drive, Docs, Sheets, Gmail) (OAuth 2.0)
  • Microsoft - Microsoft 365 (OneDrive, SharePoint, Outlook, Teams) (OAuth 2.0)
  • Slack - Slack workspace (OAuth 2.0) - Coming soon

11.2 Callback URL format

All connectors use the same callback URL pattern:

Callback URL Pattern:
https://your-domain.com/api/connectors/{connector_id}/oauth/callback/
  • Replace {connector_id} with the actual connector ID after creating the connector
  • The callback URL is provided in the API response when creating a connector
  • The URL must match EXACTLY (including protocol, domain, path, and trailing slash)

11.3 Getting callback URLs

Callback URLs are automatically generated when you create a connector. You can get the callback URL in two ways:

  1. When Creating a Connector: The API response includes the callback_url field
  2. When Initiating OAuth: The POST /api/connectors/{connector_id}/oauth/initiate/ endpoint returns the callback URL

11.4 Connector-specific callback URL registration

JIRA Connector

OAuth Provider: Atlassian Developer Console

OAuth Type: OAuth 2.0 (3-Legged OAuth / 3LO)

Registration Steps:

  1. Go to Atlassian Developer Console
  2. Click Create → New app
  3. Choose OAuth 2.0 (3LO) integration type
  4. Fill in app details (name, logo, description)
  5. Navigate to APIS AND FEATURES → OAuth 2.0 (3LO)
  6. Add Authorization callback URL: https://your-domain.com/api/connectors/{connector_id}/oauth/callback/
  7. Add Jira platform REST API under APIS AND FEATURES
  8. Configure required scopes:
    • read:jira-work - Read JIRA issues and work items
    • read:jira-user - Read user information
    • offline_access - Required for refresh tokens
  9. Copy the Client ID and Client Secret

Important Notes:

  • This connector is designed for JIRA Cloud (atlassian.net domains)
  • JIRA Server/Data Center requires OAuth 1.0a, which is not currently supported
  • Each connector requires its own callback URL - add multiple URLs for different connectors
  • The callback URL must match EXACTLY (including protocol, domain, path, and trailing slash)
Confluence Connector

OAuth Provider: Atlassian Developer Console

OAuth Type: OAuth 2.0 (3-Legged OAuth / 3LO)

Registration Steps:

  1. Go to Atlassian Developer Console
  2. Click Create → New app
  3. Choose OAuth 2.0 (3LO) integration type
  4. Fill in app details (name, logo, description)
  5. Navigate to APIS AND FEATURES → OAuth 2.0 (3LO)
  6. Add Authorization callback URL: https://your-domain.com/api/connectors/{connector_id}/oauth/callback/
  7. Add Confluence REST API under APIS AND FEATURES
  8. Configure required scopes:
    • read:confluence-content.all - Read all Confluence content
    • read:confluence-space.summary - Read space information
    • offline_access - Required for refresh tokens
  9. Copy the Client ID and Client Secret

Important Notes:

  • This connector is designed for Confluence Cloud (atlassian.net domains)
  • Each connector requires its own callback URL
  • The callback URL must match EXACTLY (including protocol, domain, path, and trailing slash)
GitLab Connector

OAuth Provider: GitLab Application Settings

OAuth Type: OAuth 2.0

Registration Steps:

  1. Go to your GitLab instance (e.g., https://gitlab.com or your self-hosted instance)
  2. Navigate to User Settings → Applications (for user-level apps)
  3. Or go to Admin Area → Applications (for instance-wide apps)
  4. Click Add new application
  5. Fill in the application details:
    • Name: Your application name
    • Redirect URI: https://your-domain.com/api/connectors/{connector_id}/oauth/callback/
    • Scopes: Select the following scopes:
      • read_api - Read API data
      • read_repository - Read repository contents
      • read_user - Read user information (optional)
  6. Click Save application
  7. Copy the Application ID (Client ID) and Secret (Client Secret)

Important Notes:

  • Works with both GitLab.com and self-hosted GitLab instances
  • For self-hosted instances, use your instance URL as the base URL
  • Each connector requires its own callback URL
GitHub Connector

OAuth Provider: GitHub Developer Settings

OAuth Type: OAuth 2.0

Registration Steps:

  1. Go to GitHub Developer Settings
  2. Click New OAuth App (or OAuth Apps → New OAuth App)
  3. Fill in the application details:
    • Application name: Your application name
    • Homepage URL: Your application homepage (e.g., https://your-domain.com)
    • Authorization callback URL: https://your-domain.com/api/connectors/{connector_id}/oauth/callback/
  4. Click Register application
  5. Copy the Client ID and click Generate a new client secret
  6. Save the Client Secret immediately (it's only shown once)

OAuth Scopes: The connector automatically requests the following scopes:

  • repo - Full control of private repositories (if accessing private repos)
  • read:org - Read org and team membership (if accessing organization repos)

Important Notes:

  • For GitHub Enterprise Server, use your instance's OAuth app settings (usually at https://your-ghe-instance.com/settings/developers)
  • Each connector requires its own callback URL
  • The callback URL must match EXACTLY (including protocol, domain, path, and trailing slash)
Google Connector

OAuth Provider: Google Cloud Console

OAuth Type: OAuth 2.0

Registration Steps:

  1. Go to Google Cloud Console
  2. Select your project or create a new one
  3. Enable the required APIs:
    • Navigate to APIs & Services → Library
    • Enable Google Drive API (for Drive access)
    • Enable Google Docs API (for Google Docs)
    • Enable Google Sheets API (for Google Sheets)
    • Enable Gmail API (for Gmail access, if needed)
  4. Navigate to APIs & Services → Credentials
  5. Click Create Credentials → OAuth client ID
  6. If prompted, configure the OAuth consent screen first:
    • Select External or Internal user type
    • Fill in app information (name, support email, developer contact)
    • Add scopes: https://www.googleapis.com/auth/drive.readonly, https://www.googleapis.com/auth/documents.readonly, etc.
  7. Select Web application as application type
  8. Add Authorized redirect URIs: https://your-domain.com/api/connectors/{connector_id}/oauth/callback/
  9. Click Create
  10. Copy the Client ID and Client Secret

OAuth Scopes: The connector uses the following scopes:

  • https://www.googleapis.com/auth/drive.readonly - Read Google Drive files
  • https://www.googleapis.com/auth/documents.readonly - Read Google Docs
  • https://www.googleapis.com/auth/spreadsheets.readonly - Read Google Sheets
  • https://www.googleapis.com/auth/gmail.readonly - Read Gmail messages (if enabled)

Important Notes:

  • Each connector requires its own callback URL
  • The OAuth consent screen must be configured before creating OAuth credentials
  • For production use, you may need to verify your app with Google
Microsoft Connector

OAuth Provider: Azure Portal (Azure Active Directory)

OAuth Type: OAuth 2.0 (Microsoft Identity Platform)

Registration Steps:

  1. Go to Azure Portal
  2. Navigate to Azure Active Directory → App registrations
  3. Click New registration
  4. Fill in the application details:
    • Name: Your application name
    • Supported account types: Select appropriate option:
      • Accounts in this organizational directory only - Single tenant
      • Accounts in any organizational directory - Multi-tenant
      • Accounts in any organizational directory and personal Microsoft accounts - Multi-tenant + personal
    • Redirect URI: Select Web and enter https://your-domain.com/api/connectors/{connector_id}/oauth/callback/
  5. Click Register
  6. Copy the Application (client) ID from the Overview page
  7. Create a Client secret:
    • Go to Certificates & secrets
    • Click New client secret
    • Add description and select expiration
    • Click Add and copy the secret value immediately (it's only shown once)
  8. Configure API permissions:
    • Go to API permissions
    • Click Add a permission
    • Select Microsoft Graph
    • Select Delegated permissions
    • Add the following permissions:
      • Files.Read - Read files in OneDrive
      • Sites.Read.All - Read items in SharePoint
      • Mail.Read - Read mail in Outlook
      • ChannelMessage.Read.All - Read Teams messages (if needed)
      • offline_access - Required for refresh tokens
    • Click Add permissions
    • Click Grant admin consent if you have admin rights (recommended)

OAuth Scopes: The connector uses Microsoft Graph API with the following scopes:

  • Files.Read - Read OneDrive files
  • Sites.Read.All - Read SharePoint sites and documents
  • Mail.Read - Read Outlook mail
  • ChannelMessage.Read.All - Read Teams channel messages
  • offline_access - Required for refresh tokens

Important Notes:

  • Each connector requires its own callback URL
  • Admin consent may be required for organization-wide access
  • The callback URL must match EXACTLY (including protocol, domain, path, and trailing slash)
Slack Connector

Status: Coming Soon - OAuth implementation in progress

OAuth Provider: Slack API

OAuth Type: OAuth 2.0

Note: The Slack connector is defined in the system but OAuth integration is not yet implemented. Check back for updates.

12.5 Common Callback URL Issues

Common Errors and Solutions:
  • "Invalid callback URL" or "Redirect URI mismatch"
    • Ensure the callback URL matches exactly (including https://, domain, path, and trailing /)
    • Check for typos in the URL
    • Verify the connector ID is correct
  • "The app's callback URL is invalid" (Atlassian)
    • Get the exact callback URL from the API response when creating the connector
    • Copy the URL exactly as shown (including trailing slash)
    • Ensure you're registering it in the correct OAuth app
  • Multiple Connectors
    • Each connector has a unique callback URL based on its ID
    • You must register each callback URL separately with the OAuth provider
    • Some providers support wildcard patterns, but exact URLs are recommended

12.6 Example Callback URLs

Example Callback URLs (replace with your actual domain and connector IDs):
  • https://example.com/api/connectors/1/oauth/callback/ (JIRA connector #1)
  • https://example.com/api/connectors/2/oauth/callback/ (GitHub connector #2)
  • https://example.com/api/connectors/3/oauth/callback/ (Google connector #3)
  • https://example.com/api/connectors/4/oauth/callback/ (Microsoft connector #4)

12.7 API Endpoints

Key Endpoints:
  • Create Connector: POST /api/connectors/ (returns callback_url)
  • Initiate OAuth: POST /api/connectors/{connector_id}/oauth/initiate/ (returns callback_url)
  • OAuth Callback: GET /api/connectors/{connector_id}/oauth/callback/ (handled automatically)
Best Practices:
  • Always get the callback URL from the API response when creating a connector
  • Register the callback URL in your OAuth provider before initiating the OAuth flow
  • Use HTTPS in production environments
  • Keep track of which callback URLs are registered for which connectors
  • Test the OAuth flow after registering the callback URL

12. Agent Sharing & Public URLs

12.1 Overview

Published agents can be shared through email invites and public share URLs (marketplace). Callers can use public agents in the UI chat or via API with their User API key — see §5.3.4b Public marketplace agents via API. Email shares do not earn revenue share; public share usage (UI and API) does.

📧 Email-Based Sharing
  • Share with specific users via email
  • Requires recipient to accept invitation
  • Optional expiration dates
  • Track acceptance status
  • Can revoke access anytime
🔗 Public Share URLs
  • Generate shareable link
  • Anyone with URL can access
  • No email required
  • Track access count
  • Can deactivate anytime

12.2 Email-Based Sharing

How It Works:
  1. Navigate to your published agent's detail page
  2. Click "Share Agent (Email)" button
  3. Enter recipient's email address
  4. Optionally add a message and set expiration
  5. An email with a unique share link is sent to the recipient
  6. Recipient clicks the link and accepts the share
  7. They can now access and use your agent
12.2.1 API Endpoints
Share Agent:
POST /dashboard/{agent_id}/share/
Parameters:
  • email - Recipient's email address (required)
  • message - Optional message to include
  • expires_days - Optional expiration in days
12.2.2 Managing Shares
Available Actions:
  • Resend Email: Resend share invitation email
  • Withdraw Share: Remove pending invitations
  • Revoke Access: Remove access from accepted shares

12.3 Public Share URLs

How It Works:
  1. Navigate to your published agent's detail page
  2. Click "Public Share URL" button
  3. Optionally set expiration date
  4. Copy the generated share URL
  5. Share the URL with anyone (via email, social media, website, etc.)
  6. Anyone with the URL can access your agent (after login/registration)
12.3.1 Generating Public Share URLs
Via Dashboard:
  1. Go to agent detail page: /dashboard/{agent_id}/
  2. Click "Public Share URL" button
  3. Set optional expiration (in days)
  4. Click "Generate Share URL"
  5. Copy the generated URL
Via API:
POST /dashboard/{agent_id}/public-share/
{
  "expires_days": 30  // Optional: expiration in days
}
12.3.2 Public Share URL Format
URL Pattern:
https://your-domain.com/dashboard/public/{token}/

Features:
  • Unique token for each share
  • Accessible by anyone with the URL
  • Requires user login/registration to use
  • Automatically redirects to agent chat after authentication
12.3.3 Managing Public Shares
View Active Share:
  • Active public share URL is displayed on agent detail page
  • Shows access count and last accessed time
  • Shows expiration date if set
Deactivate Share:
  • Click "Deactivate" button on agent detail page
  • Or use API: POST /dashboard/{agent_id}/public-share/deactivate/
  • Deactivated URLs no longer grant access

12.4 Access Control

Important Security Notes:
  • Only published agents can be shared
  • Shared users can use the agent but cannot modify it
  • Agent owner retains full control and can revoke access anytime
  • Public share URLs can be deactivated instantly
  • Expired shares automatically lose access
  • Usage is tracked and billed to the agent owner

12.5 Use Cases

Email-Based Sharing:
  • Sharing with specific team members
  • Client access to custom agents
  • Controlled access with expiration
  • Tracking who has accepted shares
Public Share URLs:
  • Sharing on social media
  • Embedding in websites or blogs
  • Demo links for potential clients
  • Public showcase of agent capabilities
  • Community sharing and collaboration

12.6 API Examples

Generate Public Share URL:
POST /dashboard/{agent_id}/public-share/
Authorization: Session or User API Key
Content-Type: application/json

{
  "expires_days": 30
}
Response:
{
  "success": true,
  "share_url": "https://your-domain.com/dashboard/public/{token}/",
  "expires_at": "2024-02-15T00:00:00Z"
}

13. Billing & Subscription Plans

13.1 Overview

The platform uses a flexible billing system with multiple subscription tiers and a Pay-As-You-Go model for usage-based pricing.

💳 Subscription Plans
  • Free Tier
  • Starter Plan
  • Professional Plan
  • Enterprise Plan
  • Pay-As-You-Go
📊 Usage Tracking
  • Messages sent
  • Tool calls executed
  • API calls made
  • Storage used (MB)
  • Agents created
💰 Credits System
  • Pay-As-You-Go billing (credits-only)
  • Credit balance and ledger (UserCredits, CreditLedger)
  • Automatic deduction on message, API call, tool, video
  • Free credits for new users (configurable amount)
  • Low-balance email notifications

13.2 Subscription Plans

Available Plans:
  • Free Tier: Basic features with daily limits
  • Starter: Increased limits for individuals
  • Professional: Advanced features for teams
  • Enterprise: Unlimited features for organizations
  • Pay-As-You-Go: Flexible usage-based pricing with no monthly commitment

13.3 Pay-As-You-Go Model

Pay-As-You-Go Features:
  • No Monthly Commitment: Pay only for what you use
  • Flexible Pricing: Per-message, per-tool-call, and per-storage pricing
  • Credit-Based: Purchase credits and use as needed
  • Unlimited Access: No hard limits on usage
  • All Features: Access to all platform features
13.3.1 Credit Costs (per action)
Credits are deducted per action (approximate; check billing_app for current values):
  • Message (chat): 3 credits per message
  • API call (REST): 0.08 credits per /api/v1/chat or /api/v1/query call (agent owner is billed)
  • Tool call: 0.15 credits per tool execution
  • Storage: 0.002 credits per MB
  • Agent creation: 1.5 credits per agent
  • Video generation: 30–75 credits depending on duration and model (text_to_video, image_to_video)

Welcome credits: New accounts receive 200 credits on first login. Usage is deducted from that balance; buy more anytime.

REST API: Agent API key → agent owner is charged. User API key + public agent_slug → caller is charged and the owner receives revenue share (same as marketplace chat). Insufficient credits return 402.

13.4 Usage Limits

Tracked Metrics:
  • Messages: Chat messages sent to agents
  • Tool Calls: Tools executed by agents
  • API Calls: API requests made
  • Storage: File storage used (in MB)
  • Agent Creations: Number of agents created

13.5 Viewing Usage

Analytics Dashboard:
  • Click "Analytics" in the header navigation
  • View real-time usage statistics
  • See usage by metric type
  • Monitor remaining limits
  • Track usage trends

13.6 Credits Management

Managing Credits:
  1. Navigate to Credits section in header
  2. View current credit balance
  3. Purchase additional credits
  4. Monitor credit usage
  5. Set up auto-recharge (coming soon)
Important Notes:
  • Credits are deducted automatically as you use the platform
  • Usage is tracked in real-time
  • Low credit balance warnings are sent via email
  • Some features may be restricted if credits are depleted

14. Oshaani Ecosystem & Products

14.1 Overview

The Oshaani platform is part of a growing ecosystem of AI-powered solutions designed to help developers, businesses, and creators build, deploy, and share intelligent AI agents.

🌐 Oshaani Social
  • URL: social.oshaani.com
  • Social platform for AI agents
  • Connect and collaborate
  • Share AI creations
  • Discover innovative agents
  • Build communities
🤖 AI Agents Platform
  • URL: oshaani.com
  • Create AI agents
  • Train and deploy
  • 100+ AI models
  • RAG capabilities
  • Custom tools & MCP
🔧 Developer Tools
  • Status: Coming Soon
  • Advanced APIs
  • SDKs & libraries
  • Developer resources
  • Integration guides
  • Code examples

14.2 Oshaani Social Platform

What is Oshaani Social?

Oshaani Social (social.oshaani.com) is a dedicated social platform where users can:

  • Share AI Agents: Publish your created agents and showcase them to the community
  • Discover Agents: Browse and discover innovative AI agents created by others
  • Build Communities: Connect with other developers and AI enthusiasts
  • Collaborate: Work together on AI projects and share knowledge
  • Get Feedback: Receive community feedback on your AI creations
  • Learn: Access tutorials, best practices, and use cases
Integration with AI Agents Platform:
  • Agents created on oshaani.com can be shared to social.oshaani.com
  • Social platform provides additional visibility and community engagement
  • Seamless workflow between creation and sharing
  • Community-driven improvements and feedback

14.3 Platform Workflow

Create Agent
oshaani.com
↓
Train & Configure
Add knowledge, tools, MCP
↓
Test & Deploy
Publish with API keys
↓
Share to Social
social.oshaani.com
↓
Community Engagement
Feedback & collaboration

14.4 Benefits of the Ecosystem

For Developers:
  • Complete toolchain from creation to deployment to sharing
  • Community support and knowledge sharing
  • Access to pre-built agents and templates
  • Learning resources and best practices
For Businesses:
  • Professional AI agent creation platform
  • Scalable deployment options
  • Enterprise-grade security and reliability
  • Integration with existing tools and workflows
For Creators:
  • Showcase your AI creations
  • Build a following and reputation
  • Monetization opportunities (coming soon)
  • Collaboration with other creators

14.5 Accessing the Platforms

Platform URLs:
Note:
  • Both platforms share the same authentication system
  • Your account works across all Oshaani platforms
  • Agents created on one platform can be accessed from others
  • API keys and credentials are platform-specific

14.6 Future Roadmap

Upcoming Features:
  • Developer Tools: Advanced APIs, SDKs, and developer resources
  • Marketplace: Buy and sell AI agents and templates
  • Analytics Dashboard: Enhanced analytics across platforms
  • Mobile Apps: iOS and Android applications
  • Enterprise Features: Advanced security, SSO, and team management
  • Auto-Recharge: Automatic credit top-up when balance is low
  • Team Sharing: Share agents with entire teams or organizations

15. Contact, Demo & Support

15.1 WhatsApp technical support

Message the Oshaani support agent on WhatsApp: https://wa.me/917291059787.

The same link is on every page (floating Support button, sidebar Tech support, and footer).

15.2 Contact form and demo booking

Visitors can send an inquiry or book a demo from the homepage. Submissions go to support@oshaani.com.

  • Contact: name, email, country, optional company and phone, message
  • Demo: same fields plus preferred date/time and use case
  • New users may also be asked for a few details after first login (they can skip)

15.3 API

POST /api/contact/ (JSON, public). Example:

{
  "form_type": "contact",
  "name": "Jane Doe",
  "email": "jane@example.com",
  "company": "Example Corp",
  "phone": "+1 555 123 4567",
  "country": "India",
  "message": "I would like a walkthrough of public agents."
}

For a demo, set form_type to "demo" and optionally include demoDate and demoTime.

{
  "success": true,
  "message": "Thank you! Your message has been sent successfully."
}

15.4 Response times

  • WhatsApp: use for technical issues while using the product
  • Contact / demo: aim to reply within 24–48 hours