Charthop ai API
The ai API from Charthop — 17 operation(s) for ai.
The ai API from Charthop — 17 operation(s) for ai.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/charthop-ai-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
description: REST API for ChartHop
version: V1.0.0
title: ChartHop access AI API
contact:
name: ChartHop
url: https://www.charthop.com
email: support@charthop.com
servers:
- url: https://localhost
- url: http://localhost
tags:
- name: ai
paths:
/v1/org/{orgId}/ai/agent-memory:
get:
tags:
- ai
summary: List memories for an agent
operationId: listMemories
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: agentUserId
in: query
description: Agent user ID
required: false
schema:
type: string
- name: userId
in: query
description: User ID (defaults to current user)
required: false
schema:
type: string
- name: actionId
in: query
description: Action ID, if filtering for a particular action
required: false
schema:
type: string
responses:
'200':
description: successful operation
'401':
description: not authorized
'403':
description: permission denied
post:
tags:
- ai
summary: Create a new memory
operationId: createMemory
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'201':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAiAgentMemory'
required: true
/v1/org/{orgId}/ai/agent-memory/{memoryId}:
get:
tags:
- ai
summary: Get a single memory
operationId: getMemory
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: memoryId
in: path
description: Memory ID
required: true
schema:
type: string
responses:
'200':
description: successful operation
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
patch:
tags:
- ai
summary: Update a memory
operationId: updateMemory
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: memoryId
in: path
description: Memory ID
required: true
schema:
type: string
responses:
'204':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAiAgentMemory'
required: true
delete:
tags:
- ai
summary: Delete a memory
operationId: deleteMemory
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: memoryId
in: path
description: Memory ID
required: true
schema:
type: string
responses:
'204':
description: successful operation
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/{orgId}/ai/chat:
post:
tags:
- ai
summary: Start a new AI chat with an initial message or question
operationId: startChat
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'201':
description: successful operation
content:
text/event-stream:
schema:
$ref: '#/components/schemas/AiChat'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiChatRequest'
required: true
get:
tags:
- ai
summary: Retrieve previous AI chats
operationId: findChats
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: userId
in: query
description: User id
required: false
schema:
type: string
- name: agentUserId
in: query
description: Filter by agent user id
required: false
schema:
type: string
- name: fromAt
in: query
description: Timestamp to search from
required: false
schema:
type: string
- name: untilAt
in: query
description: Timestamp to search up until
required: false
schema:
type: string
- name: from
in: query
description: Identifier to paginate from
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return
required: false
schema:
type: integer
format: int32
- name: sort
in: query
description: Sort by (default is createAt, can also use updateAt)
required: false
schema:
type: string
- name: returnAccess
in: query
description: 'Return access information -- pass a list of actions to check, for example: create,update,delete'
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ResultsAiChat'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/{orgId}/ai/chat/prompt-suggest:
get:
tags:
- ai
summary: Retrieve some suggested prompts for starting an AI chat
operationId: getSuggestedPrompts
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: limit
in: query
description: Number of suggestions to return (defaults to 5)
required: false
schema:
type: integer
format: int32
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/AiSuggestedPromptsResponse'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/{orgId}/ai/chat/top-users:
get:
tags:
- ai
summary: Find users with the most AI chats over a date range
operationId: findTopUsers
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: startDate
in: query
description: Start date (inclusive)
required: false
schema:
type: string
format: date
- name: endDate
in: query
description: End date (inclusive)
required: false
schema:
type: string
format: date
- name: fields
in: query
description: Fields to retrieve, comma-separated
required: false
schema:
type: string
- name: format
in: query
description: Data format to use; default is json, can also use json-extended or json-readable
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return
required: false
schema:
type: integer
format: int32
- name: filter
in: query
description: CQL filter to apply on the person
required: false
schema:
type: string
responses:
'200':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/{orgId}/ai/chat/{chatId}:
get:
tags:
- ai
summary: Retrieve a previous AI chat
operationId: getChat
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: chatId
in: path
description: Chat identifier
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/AiChat'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
patch:
tags:
- ai
summary: Update an existing AI chat's metadata, such as label or shareAccess information
operationId: updateChat
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: chatId
in: path
description: Chat identifier
required: true
schema:
type: string
responses:
'204':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAiChat'
description: Chat data to update
required: true
delete:
tags:
- ai
summary: Delete an AI chat
operationId: deleteChat
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: chatId
in: path
description: Chat identifier
required: true
schema:
type: string
responses:
'204':
description: chat deleted
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/{orgId}/ai/chat/{chatId}/answer-tool:
post:
tags:
- ai
summary: Answer a pending AskUserQuestion tool call in an AI chat
operationId: answerToolQuestion
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: chatId
in: path
description: Chat identifier
required: true
schema:
type: string
responses:
'200':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiChatAnswerToolRequest'
required: true
/v1/org/{orgId}/ai/chat/{chatId}/approve-tool:
post:
tags:
- ai
summary: Approve pending tool calls in an AI chat
operationId: approveToolUses
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: chatId
in: path
description: Chat identifier
required: true
schema:
type: string
responses:
'200':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiChatApproveToolRequest'
required: true
/v1/org/{orgId}/ai/chat/{chatId}/message:
post:
tags:
- ai
summary: Send an additional message to an existing AI chat
operationId: sendMessageToChat
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: chatId
in: path
description: Chat identifier
required: true
schema:
type: string
responses:
'201':
description: successful operation
content:
text/event-stream:
schema:
$ref: '#/components/schemas/AiChatMessage'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiChatRequest'
required: true
/v1/org/{orgId}/ai/chat/{chatId}/message/{messageId}:
get:
tags:
- ai
summary: Retrieve an individual message from an existing AI chat
operationId: getChatMessage
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: chatId
in: path
description: Chat identifier
required: true
schema:
type: string
- name: messageId
in: path
description: Message identifier
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/AiChatMessage'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/{orgId}/ai/chat/{chatId}/message/{messageId}/feedback:
post:
tags:
- ai
summary: Send feedback on a message in an AI chat
operationId: sendChatMessageFeedback
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: chatId
in: path
description: Chat identifier
required: true
schema:
type: string
- name: messageId
in: path
description: Message identifier
required: true
schema:
type: string
responses:
'204':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiChatFeedback'
required: true
/v1/org/{orgId}/ai/chat/{chatId}/reject-tool:
post:
tags:
- ai
summary: Reject pending tool calls in an AI chat
operationId: rejectToolUses
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: chatId
in: path
description: Chat identifier
required: true
schema:
type: string
responses:
'200':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiChatRejectToolRequest'
required: true
/v1/org/{orgId}/ai/config:
patch:
tags:
- ai
summary: Update configuration of AI models for this org (ChartHop staff only)
operationId: configureModelForOrg
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'200':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAiConfig'
required: true
/v1/org/{orgId}/ai/form-response/summary:
post:
tags:
- ai
summary: Use AI to generate a summary of text form responses
operationId: summarizeFormResponses
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'204':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/SummarizeResponse'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SummarizeFormResponsesRequest'
required: true
/v1/org/{orgId}/ai/translate:
post:
tags:
- ai
summary: Translate from one language to another using AI
operationId: translate
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'204':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/AiTranslateResponse'
'400':
description: invalid request
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiTranslateRequest'
required: true
/v1/org/{orgId}/ai/translate/detect-language:
post:
tags:
- ai
summary: Detect the dominant language of a text
operationId: detectLanguage
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/DetectLanguageResponse'
'400':
description: invalid request
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DetectLanguageRequest'
required: true
/v1/org/{orgId}/ai/translate/expression:
post:
tags:
- ai
summary: Translate natural language into a CQL filter expression
operationId: translateExpression
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/AiExpressionTranslateResponse'
'400':
description: invalid request
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiExpressionTranslateRequest'
required: true
delete:
tags:
- ai
summary: Invalidate all cached expression translation responses
operationId: invalidateExpressionTranslations
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'204':
description: successful operation
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
components:
schemas:
AiExpressionTranslateRequest:
type: object
required:
- text
properties:
text:
type: string
AiToolResult:
type: object
required:
- toolUseId
- success
properties:
toolUseId:
type: string
success:
type: boolean
outputText:
type: string
outputJson:
type: object
additionalProperties:
type: object
outputCsv:
$ref: '#/components/schemas/TabularData'
navigateUrl:
type: string
format: uri
actionButton:
$ref: '#/components/schemas/AiToolActionButton'
userRejected:
type: boolean
userRejectedReason:
type: string
hintIds:
type: array
items:
type: string
example: 588f7ee98f138b19220041a7
UpdateAiChat:
type: object
properties:
label:
type: string
description: label for the chat (defaults to the first question asked)
shareAccess:
type: array
description: users who are specifically granted permission to view or edit this chat
items:
$ref: '#/components/schemas/ShareAccess'
AiToolUse:
type: object
required:
- toolUseId
- name
- input
properties:
toolUseId:
type: string
name:
type: string
input:
type: object
additionalProperties:
type: object
entity:
$ref: '#/components/schemas/AiToolEntity'
summary:
type: string
readOnly:
type: boolean
AiChatFeedback:
type: object
required:
- score
properties:
score:
type: integer
format: int32
DetectLanguageResponse:
type: object
required:
- language
properties:
language:
type: string
ShareAccess:
type: object
required:
- access
properties:
access:
type: string
description: access permission level
enum:
- NONE
- LIMITED_READ
- LIMITED_WRITE
- STANDARD_READ
- STANDARD_WRITE
- COMPENSATION_READ
- FULL_READ
- COMP_PLANNING_PARTICIPANT
- COMPENSATION_WRITE
- WRITE
- COMPENSATION_OWNER
- OWNER
userId:
type: string
description: user id
example: 5887a7718f138b6a2a0041a7
groupId:
type: string
description: group id
example: 5887a7718f138b6a2a0041a7
fields:
type: string
description: fields
example: name,image,title
SummarizeResponse:
type: object
required:
- summary
- responseCount
properties:
summary:
type: string
responseCount:
type: integer
format: int32
AiChatChannel:
type: object
required:
- type
properties:
type:
type: string
enum:
- WEB
- MOBILE
- SLACK
- TEAMS
- MCP
externalId:
type: string
threadId:
type: string
name:
type: string
AiChatMessage:
type: object
required:
- id
- blocks
- at
properties:
id:
type: string
example: 588f7ee98f138b19220041a7
userId:
type: string
example: 588f7ee98f138b19220041a7
userName:
type: string
externalUserId:
type: string
externalId:
type: string
blocks:
type: array
items:
$ref: '#/components/schemas/AiChatMessageBlock'
at:
type: string
latencyMs:
type: integer
format: int64
inputTokenCount:
type: integer
format: int32
outputTokenCount:
type: integer
format: int32
cacheReadInputTokenCount:
type: integer
format: int32
cacheWriteInputTokenCount:
type: integer
format: int32
feedbackScore:
type: integer
format: int32
feedbackText:
type: string
actionButtons:
type: array
items:
$ref: '#/components/schemas/AiToolActionButton'
fileIds:
type: array
items:
type: string
example: 588f7ee98f138b19220041a7
UpdateAiConfig:
type: object
properties:
prompts:
type: array
description: list of configured prompts for various use cases
items:
$ref: '#/components/schemas/AiPromptConfig'
UpdateAiAgentMemory:
type: object
properties:
content:
type: string
description: text content of the memory
minItems: 0
maxItems: 2000
importance:
type: number
format: double
description: importance score from 0.0 (low) to 1.0 (high)
expireAt:
type: string
description: optional expiration timestamp; memory is auto-deleted after this time
example: '2017-01-24T13:57:52Z'
ResultsAccess:
type: object
required:
- allowed
properties:
ids:
type: array
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
allowed:
type: array
uniqueItems: true
items:
$ref: '#/components/schemas/AccessAction'
CreateAiAgentMemory:
type: object
required:
- agentUserId
- content
properties:
agentUserId:
type: string
description: AI agent user id that owns this memory
example: 588f7ee98f138b19220041a7
userId:
type: string
description: user id this memory is scoped to; null means org-wide
example: 588f7ee98f138b19220041a7
actionId:
type: string
description: action id this memory is scoped to; null means not action-scoped
example: 588f7ee98f138b19220041a7
content:
type: string
description: text content of the memory
minItems: 0
maxItems: 2000
importance:
type: number
format: double
description: importance score from 0.0 (low) to 1.0 (high)
expireAt:
type: string
description: optional expiration timestamp; memory is auto-deleted after this time
example: '2017-01-24T13:57:52Z'
sourceAiChatId:
type: string
description: id of the AI chat that created this memory
example: 588f7ee98f138b19220041a7
SummarizeFormResponsesRequest:
type: object
required:
- questionId
properties:
questionId:
type: string
example: 588f7ee98f138b19220041a7
formId:
type: string
example: 588f7ee98f138b19220041a7
assessmentId:
type: string
example: 588f7ee98f138b19220041a7
submitPersonFilter:
type: string
targetPersonFilter:
type: string
AiChatRejectToolRequest:
type: object
required:
- toolUseIds
properties:
toolUseIds:
type: array
items:
type: string
message:
type: string
AiPromptConfig:
type: object
required:
- type
- aiPromptId
properties:
type:
type: string
enum:
- AUTO_CHAT
- CHAT
- CHAT_SHOULD_RESPOND
- CHAT_SUMMARY
- FORM_RESPONSE_SUMMARY
- REPORT_RESULT_SUMMARY
- SCENARIO_PLANNING
- CQL
- CQL_TRANSLATE
- PROMPT_SUGGEST
- JOB_CODE_MATCH
aiPromptId:
type: string
example: 588f7ee98f138b19220041a7
userId:
type: string
example: 588f7ee98f138b19220041a7
DetectLanguageRequest:
type: object
required:
- text
properties:
text:
type: string
AiToolActionButton:
type: object
required:
- label
- url
properties:
label:
type: string
url:
type: string
format: uri
iconUrl:
type: string
format: uri
AccessAction:
type: object
required:
- action
properties:
action:
type: string
fields:
type: array
uniqueItems: true
items:
type: string
types:
type: array
uniqueItems: true
items:
type: string
TabularData:
type: object
required:
- columnNames
- rows
properties:
columnNames:
type: array
items:
type: string
rows:
type: array
items:
type: object
additionalProperties:
type: object
# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/charthop/refs/heads/main/openapi/charthop-ai-api-openapi.yml