openapi: 3.0.3 info: title: Ask Sage Server Admin Tabular Data API description: 'Ask Sage is an AI-powered platform providing intelligent completions, knowledge management, and workflow automation. ## Base URL `https://api.asksage.ai` ## Authentication All endpoints require a valid JWT token passed via the `x-access-tokens` header, unless otherwise noted. Obtain a token by authenticating through the User API (`/user/get-token-with-api-key`). ## Message Format The `message` field in API requests can be either: - A single string prompt: `"What is Ask Sage?"` - An array of conversation messages: `[{"user": "me", "message": "what is Ask Sage?"}, {"user": "gpt", "message": "Ask Sage is an..."}]` ## Key Features - **AI Completions** — Query multiple LLM providers with a unified interface - **Knowledge Training** — Upload documents, files, and data to build custom datasets - **Tabular Data** — Ingest and query structured data (CSV, XLSX) with natural language - **Agent Builder** — Create, configure, and execute multi-step AI workflows - **Plugins** — Extend capabilities with built-in and custom plugins - **MCP Servers** — Connect to Model Context Protocol servers for tool integration' version: '2.0' contact: name: Ask Sage Support email: support@asksage.ai url: https://asksage.ai servers: - url: '{baseUrl}/server' description: Ask Sage Server API variables: baseUrl: default: https://api.asksage.ai description: API base URL. Use https://api.asksage.ai for production, or your self-hosted instance URL. security: - ApiKeyAuth: [] tags: - name: Tabular Data description: Tabular data ingestion and querying paths: /train-tabular: post: summary: Train tabular data description: Ingest tabular files (CSV/TSV/XLSX/XLSB) into the tabular database. Dedicated endpoint separate from /train-with-file. tags: - Tabular Data requestBody: required: true content: multipart/form-data: schema: type: object required: - file - dataset properties: file: type: string format: binary description: Tabular file (CSV, TSV, XLSX, or XLSB) dataset: type: string description: Target dataset name responses: '200': description: Tabular data ingested successfully content: application/json: schema: type: object properties: response: type: string tabular: type: boolean dataset_id: type: integer file_id: type: integer table_count: type: integer total_rows: type: integer total_columns: type: integer tables: type: array items: type: object status: type: integer '400': description: Bad request '413': description: File too large /query-tabular: post: summary: Query tabular dataset description: Query a tabular dataset using natural language. Translates question to SQL, executes against tabular DB, narrates results. tags: - Tabular Data requestBody: required: true content: application/json: schema: type: object required: - dataset_id - question - model properties: dataset_id: type: integer description: ID of the tabular dataset question: type: string maxLength: 10000 description: Natural language question about the data model: type: string description: Model to use for SQL generation and narration responses: '200': description: Query results content: application/json: schema: type: object properties: response: type: string row_count: type: integer status: type: integer /tabular-schema: post: summary: Get tabular schema description: Returns tabular table schemas for a dataset tags: - Tabular Data requestBody: required: true content: application/json: schema: type: object required: - dataset_id properties: dataset_id: type: integer description: Dataset ID responses: '200': description: Schema retrieved content: application/json: schema: type: object properties: response: type: array items: type: object properties: table_name: type: string sheet_name: type: string column_count: type: integer row_count: type: integer status: type: string schema: type: object nullable: true table_count: type: integer status: type: integer components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: x-access-tokens description: JWT authentication token. Obtain a token by calling the User API endpoint `/user/get-token-with-api-key` with your email and API key.