Skip to content

API Reference ​

Complete reference documentation for the Chat SDK React components, hooks, and types.

Table of Contents ​

Components ​

CyborgProvider ​

The main provider component that wraps your application and manages chat state.

Signature:

tsx
function CyborgProvider(props: CyborgProviderProps): JSX.Element

Props:

typescript
interface CyborgProviderProps {
  config: CyborgConfig;   // Required: SDK configuration
  children: ReactNode;    // Required: Child components
}

Returns: JSX.Element (Chat context provider and UI)

Example:

tsx
import { CyborgProvider } from '@cyborg-sdk/react';

function App() {
  return (
    <CyborgProvider config={{ publishableKey: 'YOUR_API_KEY' }}>
      <YourApp />
    </CyborgProvider>
  );
}

Features:

  • Manages chat state (messages, loading, errors)
  • Provides dual contexts: CyborgChatContext and CyborgContext
  • Automatically renders chat UI
  • Persists conversation IDs to localStorage
  • Handles SSE streaming from backend
  • Manages tool execution lifecycle

Related Documentation: CyborgProvider Guide


Hooks ​

useChat ​

Access chat state and methods from any component within CyborgProvider.

Signature:

tsx
function useChat(): CyborgChatContextValue

Returns:

typescript
interface CyborgChatContextValue {
  messages: Message[];
  isLoading: boolean;
  error: Error | null;
  conversationId: string | null;
  isOpen: boolean;
  hasUniqueIdentifier: boolean;
  isLoadingConversation: boolean;
  sendMessage: (content: string) => Promise<void>;
  clearMessages: () => void;
  startNewConversation: () => void;
  loadConversation: (conversationId: string) => Promise<void>;
  listConversations: () => Promise<ConversationSummary[]>;
  openChat: () => void;
  closeChat: () => void;
  triggerPrompt: (prompt: string, options?: TriggerPromptOptions) => Promise<void>;
}

Example:

tsx
import { useChat } from '@cyborg-sdk/react';

function MyComponent() {
  const { messages, sendMessage, isLoading, triggerPrompt } = useChat();

  return (
    <div>
      {messages.map(msg => (
        <div key={msg.id}>{msg.content}</div>
      ))}
      <button onClick={() => sendMessage('Hello')} disabled={isLoading}>
        Send
      </button>
    </div>
  );
}

Throws:

  • Error if used outside of CyborgProvider

Related Documentation: useChat Hook Guide


useCyborg ​

Register context, instructions, tools, and suggested prompts from components.

Signature:

tsx
function useCyborg(options?: UseCyborgOptions): UseCyborgReturn

Parameters:

typescript
interface UseCyborgOptions {
  context?: CyborgContext;
  instructions?: string;
  tools?: ToolDefinition[];
  suggestedPrompts?: string[];
}

Returns:

typescript
interface UseCyborgReturn {
  setContext: (data: CyborgContext) => void;
  setInstructions: (instructions: string) => void;
  registerTool: (tool: ToolDefinition) => void;
  setSuggestedPrompts: (prompts: string[]) => void;
  setTriggerPrompt: (prompt: string, options?: TriggerPromptOptions) => void;
}

Example:

tsx
import { useCyborg } from '@cyborg-sdk/react';

function ProductPage({ product }) {
  useCyborg({
    context: {
      page: 'product',
      productId: product.id,
      productName: product.name
    },
    instructions: 'Help users understand this product.',
    tools: [{
      name: 'addToCart',
      description: 'Add the product to cart',
      parameters: {
        type: 'object',
        properties: {
          quantity: { type: 'number' }
        },
        required: ['quantity']
      },
      handler: async ({ quantity }) => {
        await cart.add(product.id, quantity);
        return { success: true };
      }
    }],
    suggestedPrompts: ['What are the features?', 'Compare with alternatives']
  });

  return <ProductDetails product={product} />;
}

Related Documentation: useCyborg Hook Guide


Types ​

CyborgConfig ​

Configuration object for CyborgProvider.

Definition:

typescript
interface CyborgConfig {
  publishableKey: string;
  apiUrl?: string;
  debug?: boolean;
  zIndex?: number;
  maxToolResultSizeKb?: number;
  initialContext?: CyborgContext;
  globalInstructions?: string;
  uniqueIdentifier?: string;
  theme?: 'auto' | 'light' | 'dark';
  suggestedPrompts?: string[];
}

Properties:

PropertyTypeRequiredDefaultDescription
publishableKeystringYes-Publishable key for authentication
apiUrlstringNohttps://api.cyborgsdk.dev/api/v1Custom API endpoint
debugbooleanNofalseEnable debug logging
zIndexnumberNo2147483647Z-index for chat widget
maxToolResultSizeKbnumberNo100Max tool result size in KB
initialContextCyborgContextNo-Base context always present
globalInstructionsstringNo-Global AI behavior instructions
uniqueIdentifierstringNo-User ID for conversation history
theme'auto' | 'light' | 'dark'No'auto'Theme mode
suggestedPromptsstring[]No-Default suggested prompts

CyborgContext ​

Key-value data about the current state.

Definition:

typescript
type CyborgContext = Record<string, unknown>;

Example:

typescript
const context: CyborgContext = {
  page: 'dashboard',
  userId: 'user123',
  metrics: {
    revenue: 45000,
    orders: 127
  }
};

Message ​

Represents a chat message.

Definition:

typescript
interface Message {
  id: string;
  content: string;
  role: 'user' | 'assistant' | 'system' | 'tool';
  timestamp: Date;
  toolCallId?: string;
  metadata?: Record<string, unknown>;
}

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier (UUID)
contentstringYesMessage text
role'user' | 'assistant' | 'system' | 'tool'YesWho sent the message
timestampDateYesWhen message was created
toolCallIdstringNoID of the tool call (for tool role)
metadataRecord<string, unknown>NoAdditional message metadata

ToolDefinition ​

Definition of a tool the AI can execute.

Definition:

typescript
interface ToolDefinition {
  name: string;
  description: string;
  parameters: ToolParameter;
  handler: (params: any) => Promise<any>;
  timeout?: number;
}

Properties:

PropertyTypeRequiredDefaultDescription
namestringYes-Unique tool identifier
descriptionstringYes-What the tool does (shown to AI)
parametersToolParameterYes-JSON Schema-like parameter definition
handlerfunctionYes-Function to execute
timeoutnumberNo30000Timeout in milliseconds

ToolParameter ​

JSON Schema-like parameter definition.

Definition:

typescript
interface ToolParameter {
  type: 'string' | 'number' | 'boolean' | 'object' | 'array';
  description?: string;
  enum?: string[];
  properties?: Record<string, ToolParameter>;
  required?: string[];
  items?: ToolParameter;
}

Example:

typescript
const parameters: ToolParameter = {
  type: 'object',
  properties: {
    title: {
      type: 'string',
      description: 'Ticket title'
    },
    priority: {
      type: 'string',
      enum: ['low', 'medium', 'high'],
      description: 'Priority level'
    },
    tags: {
      type: 'array',
      items: { type: 'string' }
    }
  },
  required: ['title', 'priority']
};

TriggerPromptOptions ​

Options for the triggerPrompt function.

Definition:

typescript
interface TriggerPromptOptions {
  startNew?: boolean;
  instruction?: string;
}

Properties:

PropertyTypeRequiredDefaultDescription
startNewbooleanNotrueWhether to start a new conversation
instructionstringNo-Additional instruction for this prompt

ConversationSummary ​

Summary of a conversation for listing purposes.

Definition:

typescript
interface ConversationSummary {
  id: string;
  title?: string;
  createdAt: Date;
  updatedAt: Date;
}

UseCyborgOptions ​

Options for the useCyborg hook.

Definition:

typescript
interface UseCyborgOptions {
  context?: CyborgContext;
  instructions?: string;
  tools?: ToolDefinition[];
  suggestedPrompts?: string[];
}

UseCyborgReturn ​

Return value of the useCyborg hook.

Definition:

typescript
interface UseCyborgReturn {
  setContext: (data: CyborgContext) => void;
  setInstructions: (instructions: string) => void;
  registerTool: (tool: ToolDefinition) => void;
  setSuggestedPrompts: (prompts: string[]) => void;
  setTriggerPrompt: (prompt: string, options?: TriggerPromptOptions) => void;
}

Interfaces ​

Complete Type Exports ​

The following types are exported from the main package:

tsx
import {
  // Components
  CyborgProvider,

  // Hooks
  useChat,
  useCyborg,

  // Types
  CyborgConfig,
  CyborgContext,
  Message,
  CyborgChatContextValue,
  UseCyborgOptions,
  UseCyborgReturn,
  ConversationSummary,
  TriggerPromptOptions,
  ToolDefinition,
  ToolParameter,
  ComputedContextData,

  // Component - low-level
  ToolCallBadge,
} from '@cyborg-sdk/react';

Error Handling ​

Error Types ​

Errors are standard JavaScript Error objects:

typescript
const { error } = useChat();

if (error instanceof Error) {
  console.error('Chat error:', error.message);
}

Common Error Messages ​

MessageCauseSolution
"useChat must be used within a CyborgProvider"Hook used outside providerMove hook usage inside CyborgProvider
"useCyborg must be used within a CyborgProvider"Hook used outside providerMove hook usage inside CyborgProvider
"HTTP error! status: 401"Invalid or missing API keyCheck API key in config
"HTTP error! status: 403"API key doesn't have permissionVerify key permissions
"HTTP error! status: 500"Backend server errorCheck backend logs
"Tool execution timeout"Tool handler took too longIncrease timeout or optimize handler

Streaming Response Format ​

The SDK expects SSE (Server-Sent Events) format from the backend:

data: {"type":"token","fullContent":"Hello"}

data: {"type":"token","fullContent":"Hello world"}

data: {"type":"tool_call","toolCalls":[{"id":"tc_123","toolName":"createTicket","parameters":{}}]}

data: {"type":"done","metadata":{"model":"claude-3.5-sonnet"}}

Expected Response Headers:

  • Content-Type: text/event-stream
  • X-Conversation-Id: <conversation-id> (optional, for new conversations)

Peer Dependencies ​

The SDK requires the following packages to be installed:

json
{
  "peerDependencies": {
    "react": "^18.0.0",
    "react-dom": "^18.0.0"
  }
}

Build Targets ​

The SDK is built for the following environments:

  • JavaScript Version: ES2020
  • Module Formats:
    • CommonJS (CJS) - dist/index.js
    • ECMAScript Modules (ESM) - dist/index.mjs
  • TypeScript Definitions: dist/index.d.ts

Browser Support ​

Minimum browser versions:

BrowserVersionNotes
Chrome90+Full support
Firefox88+Full support
Safari14+Full support
Edge90+Full support

Requires browser support for:

  • ES2020 JavaScript
  • Fetch API
  • LocalStorage API
  • Web Crypto API (for UUID generation)

Package Information ​

  • Name: @cyborg-sdk/react
  • Latest Version: 0.1.0
  • License: MIT
  • Repository: GitHub

Next Steps ​

Built with VitePress