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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/honcho-dev:honcho-dev-messages-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: 3.2.0
info:
title: Honcho Messages API
summary: The Identity Layer for the Agentic World
description: Honcho is a platform for giving agents user-centric memory and social cognition
contact:
name: Plastic Labs
url: https://honcho.dev/
email: hello@plasticlabs.ai
version: 1.1.0
servers:
- url: http://localhost:8000
description: Local Development Server
- url: https://demo.honcho.dev
description: Demo Server
- url: https://api.honcho.dev
description: Production SaaS Platform
tags:
- name: Messages
paths:
/v1/apps/{app_id}/users/{user_id}/sessions/{session_id}/messages:
post:
tags:
- Messages
summary: Create Message For Session
description: Adds a message to a session
operationId: create_message_for_session_v1_apps__app_id__users__user_id__sessions__session_id__messages_post
security:
- HTTPBearer: []
- {}
parameters:
- name: app_id
in: path
required: true
schema:
type: string
description: ID of the app
title: App Id
description: ID of the app
- name: user_id
in: path
required: true
schema:
type: string
description: ID of the user
title: User Id
description: ID of the user
- name: session_id
in: path
required: true
schema:
type: string
description: ID of the session
title: Session Id
description: ID of the session
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MessageCreate'
description: Message creation parameters
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Message'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: JavaScript
source: "import Honcho from 'honcho-ai';\n\nconst client = new Honcho({\n apiKey: process.env['HONCHO_API_KEY'], // This is the default and can be omitted\n});\n\nasync function main() {\n const message = await client.apps.users.sessions.messages.create('app_id', 'user_id', 'session_id', {\n content: 'content',\n is_user: true,\n });\n\n console.log(message.id);\n}\n\nmain();"
- lang: Python
source: "import os\nfrom honcho import Honcho\n\nclient = Honcho(\n api_key=os.environ.get(\"HONCHO_API_KEY\"), # This is the default and can be omitted\n)\nmessage = client.apps.users.sessions.messages.create(\n session_id=\"session_id\",\n app_id=\"app_id\",\n user_id=\"user_id\",\n content=\"content\",\n is_user=True,\n)\nprint(message.id)"
/v1/apps/{app_id}/users/{user_id}/sessions/{session_id}/messages/batch:
post:
tags:
- Messages
summary: Create Batch Messages For Session
description: Bulk create messages for a session while maintaining order. Maximum 100 messages per batch.
operationId: create_batch_messages_for_session_v1_apps__app_id__users__user_id__sessions__session_id__messages_batch_post
security:
- HTTPBearer: []
- {}
parameters:
- name: app_id
in: path
required: true
schema:
type: string
description: ID of the app
title: App Id
description: ID of the app
- name: user_id
in: path
required: true
schema:
type: string
description: ID of the user
title: User Id
description: ID of the user
- name: session_id
in: path
required: true
schema:
type: string
description: ID of the session
title: Session Id
description: ID of the session
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MessageBatchCreate'
description: Batch of messages to create
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Message'
title: Response Create Batch Messages For Session V1 Apps App Id Users User Id Sessions Session Id Messages Batch Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: JavaScript
source: "import Honcho from 'honcho-ai';\n\nconst client = new Honcho({\n apiKey: process.env['HONCHO_API_KEY'], // This is the default and can be omitted\n});\n\nasync function main() {\n const messages = await client.apps.users.sessions.messages.batch('app_id', 'user_id', 'session_id', {\n messages: [{ content: 'content', is_user: true }],\n });\n\n console.log(messages);\n}\n\nmain();"
- lang: Python
source: "import os\nfrom honcho import Honcho\n\nclient = Honcho(\n api_key=os.environ.get(\"HONCHO_API_KEY\"), # This is the default and can be omitted\n)\nmessages = client.apps.users.sessions.messages.batch(\n session_id=\"session_id\",\n app_id=\"app_id\",\n user_id=\"user_id\",\n messages=[{\n \"content\": \"content\",\n \"is_user\": True,\n }],\n)\nprint(messages)"
/v1/apps/{app_id}/users/{user_id}/sessions/{session_id}/messages/list:
post:
tags:
- Messages
summary: Get Messages
description: Get all messages for a session
operationId: get_messages_v1_apps__app_id__users__user_id__sessions__session_id__messages_list_post
security:
- HTTPBearer: []
- {}
parameters:
- name: app_id
in: path
required: true
schema:
type: string
description: ID of the app
title: App Id
description: ID of the app
- name: user_id
in: path
required: true
schema:
type: string
description: ID of the user
title: User Id
description: ID of the user
- name: session_id
in: path
required: true
schema:
type: string
description: ID of the session
title: Session Id
description: ID of the session
- name: reverse
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Whether to reverse the order of results
default: false
title: Reverse
description: Whether to reverse the order of results
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
description: Page number
default: 1
title: Page
description: Page number
- name: size
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
description: Page size
default: 50
title: Size
description: Page size
requestBody:
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/MessageGet'
- type: 'null'
description: Filtering options for the messages list
title: Options
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Page_Message_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: JavaScript
source: "import Honcho from 'honcho-ai';\n\nconst client = new Honcho({\n apiKey: process.env['HONCHO_API_KEY'], // This is the default and can be omitted\n});\n\nasync function main() {\n // Automatically fetches more pages as needed.\n for await (const message of client.apps.users.sessions.messages.list('app_id', 'user_id', 'session_id')) {\n console.log(message.id);\n }\n}\n\nmain();"
- lang: Python
source: "import os\nfrom honcho import Honcho\n\nclient = Honcho(\n api_key=os.environ.get(\"HONCHO_API_KEY\"), # This is the default and can be omitted\n)\npage = client.apps.users.sessions.messages.list(\n session_id=\"session_id\",\n app_id=\"app_id\",\n user_id=\"user_id\",\n)\npage = page.items[0]\nprint(page.id)"
/v1/apps/{app_id}/users/{user_id}/sessions/{session_id}/messages/{message_id}:
get:
tags:
- Messages
summary: Get Message
description: Get a Message by ID
operationId: get_message_v1_apps__app_id__users__user_id__sessions__session_id__messages__message_id__get
security:
- HTTPBearer: []
- {}
parameters:
- name: app_id
in: path
required: true
schema:
type: string
description: ID of the app
title: App Id
description: ID of the app
- name: user_id
in: path
required: true
schema:
type: string
description: ID of the user
title: User Id
description: ID of the user
- name: session_id
in: path
required: true
schema:
type: string
description: ID of the session
title: Session Id
description: ID of the session
- name: message_id
in: path
required: true
schema:
type: string
description: ID of the message to retrieve
title: Message Id
description: ID of the message to retrieve
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Message'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: JavaScript
source: "import Honcho from 'honcho-ai';\n\nconst client = new Honcho({\n apiKey: process.env['HONCHO_API_KEY'], // This is the default and can be omitted\n});\n\nasync function main() {\n const message = await client.apps.users.sessions.messages.get(\n 'app_id',\n 'user_id',\n 'session_id',\n 'message_id',\n );\n\n console.log(message.id);\n}\n\nmain();"
- lang: Python
source: "import os\nfrom honcho import Honcho\n\nclient = Honcho(\n api_key=os.environ.get(\"HONCHO_API_KEY\"), # This is the default and can be omitted\n)\nmessage = client.apps.users.sessions.messages.get(\n message_id=\"message_id\",\n app_id=\"app_id\",\n user_id=\"user_id\",\n session_id=\"session_id\",\n)\nprint(message.id)"
put:
tags:
- Messages
summary: Update Message
description: Update the metadata of a Message
operationId: update_message_v1_apps__app_id__users__user_id__sessions__session_id__messages__message_id__put
security:
- HTTPBearer: []
- {}
parameters:
- name: app_id
in: path
required: true
schema:
type: string
description: ID of the app
title: App Id
description: ID of the app
- name: user_id
in: path
required: true
schema:
type: string
description: ID of the user
title: User Id
description: ID of the user
- name: session_id
in: path
required: true
schema:
type: string
description: ID of the session
title: Session Id
description: ID of the session
- name: message_id
in: path
required: true
schema:
type: string
description: ID of the message to update
title: Message Id
description: ID of the message to update
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MessageUpdate'
description: Updated message parameters
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Message'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: JavaScript
source: "import Honcho from 'honcho-ai';\n\nconst client = new Honcho({\n apiKey: process.env['HONCHO_API_KEY'], // This is the default and can be omitted\n});\n\nasync function main() {\n const message = await client.apps.users.sessions.messages.update(\n 'app_id',\n 'user_id',\n 'session_id',\n 'message_id',\n { metadata: { foo: 'bar' } },\n );\n\n console.log(message.id);\n}\n\nmain();"
- lang: Python
source: "import os\nfrom honcho import Honcho\n\nclient = Honcho(\n api_key=os.environ.get(\"HONCHO_API_KEY\"), # This is the default and can be omitted\n)\nmessage = client.apps.users.sessions.messages.update(\n message_id=\"message_id\",\n app_id=\"app_id\",\n user_id=\"user_id\",\n session_id=\"session_id\",\n metadata={\n \"foo\": \"bar\"\n },\n)\nprint(message.id)"
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
Message:
properties:
id:
type: string
title: Id
content:
type: string
title: Content
is_user:
type: boolean
title: Is User
session_id:
type: string
title: Session Id
metadata:
additionalProperties: true
type: object
title: Metadata
default: {}
created_at:
type: string
format: date-time
title: Created At
app_id:
type: string
title: App Id
user_id:
type: string
title: User Id
type: object
required:
- id
- content
- is_user
- session_id
- created_at
- app_id
- user_id
title: Message
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
MessageGet:
properties:
filter:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Filter
type: object
title: MessageGet
MessageUpdate:
properties:
metadata:
additionalProperties: true
type: object
title: Metadata
type: object
required:
- metadata
title: MessageUpdate
MessageBatchCreate:
properties:
messages:
items:
$ref: '#/components/schemas/MessageCreate'
type: array
maxItems: 100
title: Messages
type: object
required:
- messages
title: MessageBatchCreate
description: Schema for batch message creation with a max of 100 messages
MessageCreate:
properties:
content:
type: string
maxLength: 50000
minLength: 0
title: Content
is_user:
type: boolean
title: Is User
metadata:
additionalProperties: true
type: object
title: Metadata
default: {}
type: object
required:
- content
- is_user
title: MessageCreate
Page_Message_:
properties:
items:
items:
$ref: '#/components/schemas/Message'
type: array
title: Items
total:
type: integer
minimum: 0
title: Total
page:
type: integer
minimum: 1
title: Page
size:
type: integer
minimum: 1
title: Size
pages:
type: integer
minimum: 0
title: Pages
type: object
required:
- items
- total
- page
- size
title: Page[Message]
securitySchemes:
HTTPBearer:
type: http
scheme: bearer