openapi: 3.2.0 info: title: VoyantIO AI Assistant API description: ' ## Brand Context Intelligence Platform VoyantIO provides AI-powered brand context management for GTM teams. ### Core Capabilities - **Context Streams** - Centralized brand knowledge that any AI tool can use - **Telemetry** - Visitor tracking with IP geolocation and company enrichment - **Signals** - Social listening across 10+ platforms: GitHub, Reddit, HackerNews, LinkedIn, Twitter/X, Discord, ProductHunt, YouTube, G2, Slack, and government sources - **Target Graph** - Account and contact intelligence with engagement tracking - **RAG** - Retrieval-augmented content generation with brand awareness ### Authentication Most endpoints require a Bearer token from Clerk authentication. Public endpoints (telemetry ingestion, well-known files) are clearly marked. ### Rate Limits - Telemetry ingestion: 100 req/min per IP - API endpoints: 1000 req/min per org ' version: 1.0.0 servers: - url: https://voice-forge-production.up.railway.app description: Production tags: - name: ai-assistant description: Conversational AI with full brand context. Chat interface for content generation and Q&A. paths: /api/ai-assistant/: post: tags: - ai-assistant summary: Chat With Assistant description: Chat with the AI assistant operationId: chat_with_assistant_api_ai_assistant__post requestBody: content: application/json: schema: $ref: '#/components/schemas/AssistantRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] /api/ai-assistant/suggestions: post: tags: - ai-assistant summary: Get Suggestions description: Get contextual suggestions based on current state operationId: get_suggestions_api_ai_assistant_suggestions_post responses: '200': description: Successful Response content: application/json: schema: {} security: - HTTPBearer: [] /api/ai-assistant/intro-prompts: get: tags: - ai-assistant summary: Get Intro Prompts description: Get organization-specific suggested prompts for the assistant intro screen. operationId: get_intro_prompts_api_ai_assistant_intro_prompts_get responses: '200': description: Successful Response content: application/json: schema: {} security: - HTTPBearer: [] /api/ai-assistant/train: post: tags: - ai-assistant summary: Train Content description: 'Training endpoint for active learning on content. Streams regenerated content and extracts terminology rules from feedback.' operationId: train_content_api_ai_assistant_train_post requestBody: content: application/json: schema: $ref: '#/components/schemas/TrainingRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] /api/ai-assistant/train/apply-rules: post: tags: - ai-assistant summary: Apply Training Rules description: 'Apply detected rules from training session to Brand Standards. Called when user approves rules from the training drawer.' operationId: apply_training_rules_api_ai_assistant_train_apply_rules_post requestBody: content: application/json: schema: items: additionalProperties: true type: object type: array title: Rules required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] components: schemas: AssistantRequest: properties: message: type: string title: Message context: anyOf: - additionalProperties: true type: object - type: 'null' title: Context persona: anyOf: - type: string - type: 'null' title: Persona type: object required: - message title: AssistantRequest HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError TrainingRequest: properties: content: type: string title: Content feedback: type: string title: Feedback content_type: anyOf: - type: string - type: 'null' title: Content Type default: general conversation_history: anyOf: - items: additionalProperties: type: string type: object type: array - type: 'null' title: Conversation History type: object required: - content - feedback title: TrainingRequest ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError securitySchemes: HTTPBearer: type: http scheme: bearer