openapi: 3.2.0 info: title: VoyantIO Ontology 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: ontology paths: /api/ontology/packs: get: tags: - ontology summary: List Packs description: Ontology packs present in this org's brand graph (e.g. mmm). operationId: list_packs_api_ontology_packs_get responses: '200': description: Successful Response content: application/json: schema: {} security: - HTTPBearer: [] /api/ontology/graph: get: tags: - ontology summary: Get Graph description: 'The knowledge graph as {nodes, edges}. Edges carry numeric model output (e.g. contributes_to.incr_roas); nodes carry type + provenance.' operationId: get_graph_api_ontology_graph_get security: - HTTPBearer: [] parameters: - name: ontology in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter to one ontology pack, e.g. 'mmm' title: Ontology description: Filter to one ontology pack, e.g. 'mmm' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/ontology/audience/people: get: tags: - ontology summary: Resolve Audience People description: 'Drill an ontology audience (segment) node down to the resolved people it represents. Joins the kg segment label to a resolved-audience Organization of the same name (the Semcasting/Target-Graph identity layer). Org-scoped.' operationId: resolve_audience_people_api_ontology_audience_people_get security: - HTTPBearer: [] parameters: - name: label in: query required: true schema: type: string description: Audience node label, e.g. 'In-market truck intenders' title: Label description: Audience node label, e.g. 'In-market truck intenders' - name: limit in: query required: false schema: type: integer maximum: 500 default: 50 title: Limit responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError 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