openapi: 3.2.0 info: title: Gypsum Context Chat API description: '## Brand Context Management API Gypsum provides the messaging framework, personas, positioning, and brand context for VoyantIO integrations. ### Core Capabilities - **Context Endpoints** - Retrieve brand messaging, personas, products, use cases, and positioning - **ICP Management** - Ideal Customer Profile CRUD operations - **Campaign Management** - Marketing campaign tracking - **AI Chat** - Brand-aware conversational AI ### Authentication Most endpoints require `user_id` query parameter (Clerk organization ID). Demo access is available for testing. ### Base URL Production: `https://gypsum.voyant.io` Local: `http://localhost:3001`' version: 1.0.0 contact: name: VoyantIO url: https://voyant.io servers: - url: https://gypsum.voyant.io description: Production - url: http://localhost:3001 description: Local development tags: - name: chat description: Brand-aware AI chat paths: /api/chat: post: tags: - chat summary: AI Chat description: Send a message to the brand-aware AI assistant. The assistant has access to Voyant.io context and can answer questions about the platform. operationId: chat requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChatRequest' responses: '200': description: Chat response content: application/json: schema: $ref: '#/components/schemas/ChatResponse' '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limited content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: ChatRequest: type: object required: - message properties: message: type: string maxLength: 2000 description: User message conversationHistory: type: array maxItems: 20 items: type: object properties: type: type: string enum: - user - assistant content: type: string persona: type: string description: Visitor persona for tailored responses organization_id: type: string ChatResponse: type: object properties: success: type: boolean response: type: string usage: type: object properties: input_tokens: type: integer output_tokens: type: integer Error: type: object properties: error: type: string message: type: string