openapi: 3.0.3 info: title: Ask Sage Server Admin 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: Admin description: Admin operations for organization management paths: /admin-total-purchased-tokens-organization: post: summary: Get total purchased tokens for organization tags: - Admin responses: '200': description: Token information retrieved /admin-used-tokens-for-organization: post: summary: Get used tokens for organization tags: - Admin responses: '200': description: Used tokens retrieved /admin-get-dataset: post: summary: Get datasets for user (admin) tags: - Admin requestBody: required: true content: application/json: schema: type: object required: - email properties: email: type: string format: email responses: '200': description: Datasets retrieved /admin-export-users-csv: post: summary: Export organization users to CSV tags: - Admin requestBody: content: application/json: schema: type: object properties: full: type: boolean default: false responses: '200': description: CSV file content: text/csv: schema: type: string /admin-update-user-verified: post: summary: Verify user email (admin) tags: - Admin requestBody: required: true content: application/json: schema: type: object required: - id properties: id: type: integer responses: '200': description: User verified /admin-update-user-paid: post: summary: Update user paid status (admin) tags: - Admin requestBody: required: true content: application/json: schema: type: object required: - id properties: id: type: integer paid: type: integer enum: - 0 - 1 responses: '200': description: Paid status updated /admin-update-user-banned: post: summary: Ban/unban user (admin) tags: - Admin requestBody: required: true content: application/json: schema: type: object required: - id properties: id: type: integer banned: type: integer enum: - 0 - 1 responses: '200': description: Ban status updated /admin-update-user-tokens: post: summary: Update user token limit (admin) tags: - Admin requestBody: required: true content: application/json: schema: type: object required: - id properties: id: type: integer tokens: type: integer responses: '200': description: Tokens updated /admin-update-user-train-tokens: post: summary: Update user training token limit (admin) tags: - Admin requestBody: required: true content: application/json: schema: type: object required: - id properties: id: type: integer tokens: type: integer responses: '200': description: Training tokens updated /admin-get-token-stats: post: summary: Get token usage statistics (admin) tags: - Admin responses: '200': description: Statistics retrieved /admin-get-user-count: post: summary: Get user count for organization (admin) tags: - Admin requestBody: content: application/json: schema: type: object properties: email: type: string paid: type: boolean hide_banned: type: boolean responses: '200': description: User count retrieved /admin-get-all-users-with-tokens: post: summary: Get all organization users with token info (admin) tags: - Admin requestBody: content: application/json: schema: type: object properties: full: type: boolean start: type: integer limit: type: integer default: 500 email: type: string sort_by: type: string enum: - id - organization_id - type - first_name - last_name - phone - email - company - paid - max_tokens - max_train_tokens - banned - email_verified - country - mfa_secret - x509_cn sort_direction: type: string enum: - asc - desc responses: '200': description: Users retrieved /admin-get-all-logs: post: summary: Get user logs (admin) tags: - Admin requestBody: required: true content: application/json: schema: type: object required: - user_id properties: user_id: type: integer responses: '200': description: Logs retrieved /admin-get-token-requests: post: summary: Get token requests (admin) description: Get token requests for the admin's organization tags: - Admin requestBody: content: application/json: schema: type: object properties: status: type: string default: pending limit: type: integer default: 50 maximum: 100 offset: type: integer default: 0 responses: '200': description: Token requests retrieved /admin-review-token-request: post: summary: Review token request (admin) description: Approve or deny a pending token request tags: - Admin requestBody: required: true content: application/json: schema: type: object required: - request_id - action properties: request_id: type: integer action: type: string enum: - approve - deny approved_amount: type: integer admin_note: type: string responses: '200': description: Token request reviewed 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.