Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/ask-sage-chat-management-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Ask Sage User Chat Management API
description: Ask Sage User API for account management, organization administration, billing, and platform configuration.
version: '2.0'
contact:
name: Ask Sage Support
email: support@asksage.ai
url: https://asksage.ai
servers:
- url: '{baseUrl}/user'
description: Ask Sage User 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: Chat Management
description: Chat session operations
paths:
/get-chats:
post:
summary: Get all chat sessions for user
tags:
- Chat Management
responses:
'200':
description: Chat sessions retrieved
content:
application/json:
schema:
type: object
properties:
response:
type: string
description: JSON string containing chats and buttons arrays
operationId: postGetChats
x-operation-id-source: derived
/get-chat-session:
post:
summary: Get specific chat session
tags:
- Chat Management
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- session_id
properties:
session_id:
type: string
format: uuid
responses:
'200':
description: Chat session retrieved
operationId: postGetChatSession
x-operation-id-source: derived
/delete-chat-session:
post:
summary: Delete chat session
tags:
- Chat Management
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- session_id
properties:
session_id:
type: string
format: uuid
responses:
'200':
description: Chat session deleted
operationId: postDeleteChatSession
x-operation-id-source: derived
/append-chat:
post:
summary: Append chat message
tags:
- Chat Management
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- session_id
- message
properties:
session_id:
type: string
format: uuid
message:
type: string
responses:
'200':
description: Chat appended
operationId: postAppendChat
x-operation-id-source: derived
/copy-chat:
post:
summary: Copy chat session to another user
tags:
- Chat Management
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- chat_id
- email
properties:
chat_id:
type: string
format: uuid
description: UUID of the source chat session to copy. Must belong to the calling user.
email:
type: string
format: email
description: Email of the recipient user who receives the copy. The recipient must exist and share the caller's email domain or organization; the copied session is titled 'Copy of <original title>'.
responses:
'200':
description: 'Always HTTP 200. The JSON body carries the outcome in a ''status'' field: 200 ''Chats copied'' on success; 400 for missing chat_id/email, invalid chat_id UUID, an invalid/non-existent recipient email, a recipient outside the caller''s domain/organization, or a source session not owned by the caller. The HTTP status code is not used to signal errors.'
operationId: postCopyChat
x-operation-id-source: derived
/create-chat-session:
post:
summary: Create new chat session
tags:
- Chat Management
responses:
'200':
description: Chat session created
operationId: postCreateChatSession
x-operation-id-source: derived
/update-chat-session-title:
post:
summary: Update chat session title
tags:
- Chat Management
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- session_id
- new_title
properties:
session_id:
type: string
format: uuid
new_title:
type: string
minLength: 1
description: New session title. Must be non-empty; if absent or empty the response body reports status 400 with message 'Missing data' (the HTTP status is still 200).
responses:
'200':
description: 'Always HTTP 200. The JSON body carries the outcome in a ''status'' field: 200 with ''Title updated'' on success; 400 ''Missing data'' if session_id or new_title is missing; 404 ''Session not found'' if the session does not exist. The HTTP status code is not used to signal errors.'
operationId: postUpdateChatSessionTitle
x-operation-id-source: derived
/update-chat-session-json:
post:
summary: Update chat session JSON data
tags:
- Chat Management
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- session_id
properties:
session_id:
type: string
format: uuid
title:
type: string
description: Session title. Optional in the request, but the server ALWAYS rewrites the session title on this endpoint and defaults to 'New Chat' when this field is omitted, so callers should send the current title to avoid overwriting it.
json_data:
type: array
description: 'Ordered list of chat message objects. Optional in the request: if present it MUST be an array (the body reports status 400 ''Invalid input'' otherwise); if omitted the server defaults to an empty array, which overwrites the session''s existing messages. Callers should always send the full message list.'
items:
type: object
properties:
id:
type: string
user:
type: string
description: Message author, e.g. 'me' or 'gpt'.
message:
type: string
message_orig:
type: string
references:
type: string
follows:
type: string
additionalProperties: true
responses:
'200':
description: 'Always HTTP 200. The JSON body carries the outcome in a ''status'' field: 200 with ''Chat content updated'' on success; 400 ''Invalid input'' if session_id is missing or json_data is not an array; 400 ''Invalid session_id'' if the UUID is malformed. The HTTP status code is not used to signal errors. NOTE: this is an upsert, not a strict update - if session_id is a valid UUID with no existing session, the server CREATES a new session (using ''title'', defaulting to ''New Chat'') and returns status 200. A typo or stale session_id will therefore silently create a session rather than error.'
operationId: postUpdateChatSessionJson
x-operation-id-source: derived
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-access-tokens
description: JWT authentication token. Obtain a token by calling `/get-token-with-api-key` with your email and 64-character API key. Some admin and superadmin endpoints also require an email address in the request body to identify the target user.