# Happeo Documentation > The Happeo API to be used by 3rd-party clients. Append .md to any documentation page URL to get its markdown version. ## Guides - [🤖 Build widget with Claude Code](https://developers.happeo.com/docs/build-widget-with-claude-code.md): Install the happeo-widget Claude Code skill and use it to build Happeo custom widgets through conversation. - [Building a Search Connector](https://developers.happeo.com/docs/building-a-search-connector.md): Build a Happeo search connector that authenticates requests, integrates with a third-party search API, and returns results in Happeo’s expected format. - [Claude Code](https://developers.happeo.com/docs/claude-code.md): Use the `happeo-search-connector-skill` Claude Code skill to scaffold a Happeo federated search connector for a third-party service. ## API Reference - [OAuth 2.0 ](https://developers.happeo.com/reference/oauth-20.md): This document explains how your application can securely connect to Happeo's API using OAuth 2.0 with an important security feature called PKCE. This is the best way for web applications (like SPAs) and mobile apps to get access. - [Creating OAuth app](https://developers.happeo.com/reference/creating-oauth-app.md) - [Authorizing users](https://developers.happeo.com/reference/authorizing-users.md) - [Using token in API calls](https://developers.happeo.com/reference/using-token-in-api-calls.md) - [User management](https://developers.happeo.com/reference/user-management.md) - [System Accounts](https://developers.happeo.com/reference/system-accounts.md): Connect to Happeo using system accounts. - [List posts](https://developers.happeo.com/reference/listposts.md): Use this when you want to list posts. Without an `includeChannel` query parameter, will get posts from all the channels the authenticated user is authorized to view. You can pass channel ids (`includeChannel`) to get posts only from those channels. Sorts posts by most recently published on top. This will return 403 if you are trying to list posts from a channel the user is not a member of. - [Create a post](https://developers.happeo.com/reference/createpost.md): Use this when you want to create a new post in a channel. - [Get a post](https://developers.happeo.com/reference/getpost.md): Use this when you want to get a post by its id. - [Update a post](https://developers.happeo.com/reference/updatepost.md): This updates/replaces the post identified by the id that is given in the path parameters. - [Patch a post](https://developers.happeo.com/reference/patchpost.md): Used to update a post by patch style. Only the 'pinned' and commentsDisabled property can be patched currently. - [Delete a post](https://developers.happeo.com/reference/deletepost.md): This is used to delete a post. - [List users](https://developers.happeo.com/reference/listusers.md): Returns a list of users. Can only be called by an admin of the organisation. - [Get one user](https://developers.happeo.com/reference/getuser.md): Gets one User by its id. Currently only admins can call this. - [License a user](https://developers.happeo.com/reference/licenseuser.md): Licenses (activates) one User account. Can only be called by an admin of the organisation. - [Unlicense a user](https://developers.happeo.com/reference/unlicenseuser.md): Unlicenses (deactivates) one User account. Can only be called by an admin of the organisation. A user can not unlicense itself. - [AI Powered keyword search](https://developers.happeo.com/reference/getkeywordsearchresults-1.md): Keyword & Semantic-based search combining traditional keyword search with vector search. Works best with keywords. - [AI-powered search with streaming response](https://developers.happeo.com/reference/getaisearchresults-1.md): Performs an AI-powered search that streams results as NDJSON. The response contains multiple objects that are progressively enhanced as the search and AI processing pipeline completes. - [Search Data](https://developers.happeo.com/reference/search-datacontentposts.md): Search Data API provides the ability to export Happeo data or index data from Happeo to customer's own index. - [Principal Groups](https://developers.happeo.com/reference/get_search-data-principal-groups.md): Returns principal data since the last update if there is any. - [Principal Users](https://developers.happeo.com/reference/get_search-data-principal-users.md): Returns new principal data since the last update if there is any. - [Index Groups](https://developers.happeo.com/reference/get_search-data-content-page-groups.md): Returns new data since the last update if there is any. - [Index Pages](https://developers.happeo.com/reference/get_search-data-content-pages.md): Returns new data since the last update if there is any. - [Index Channels](https://developers.happeo.com/reference/get_search-data-content-channels.md): Returns new data since the last update if there is any. - [Index Comments](https://developers.happeo.com/reference/get_search-data-content-comments.md): Returns new data since the last update if there is any. - [Index Posts](https://developers.happeo.com/reference/get_search-data-content-posts.md): Returns new data since the last update if there is any. - [Start a new discussion or return existing one](https://developers.happeo.com/reference/post_chats-1.md): Creates a new discussion with the specified agentId and optional contextId. If a discussion already exists with the same parameters, returns the existing discussion. - [List discussions or get by agentId/contextId](https://developers.happeo.com/reference/get_chats-1.md): Retrieves a list of discussions or a specific discussion using agentId and optional contextId parameters - [Get a discussion by ID](https://developers.happeo.com/reference/get_chats-discussionid-1.md): Retrieves a complete discussion with all entries and available REL links - [Delete a discussion](https://developers.happeo.com/reference/delete_chats-discussionid-1.md): Permanently deletes a discussion and all its entries - [Continue a discussion with a new message](https://developers.happeo.com/reference/post_chats-discussionid-entries-1.md): Sends a new user message to continue the conversation. Returns an NDJSON stream with AI response chunks and final entry data. - [Get a discussion entry](https://developers.happeo.com/reference/get_chats-discussionid-entries-entryid-1.md): Retrieves a specific discussion entry with metadata and available REL links - [Delete a discussion entry](https://developers.happeo.com/reference/delete_chats-discussionid-entries-entryid-1.md): Deletes a specific entry and all subsequent entries in the conversation - [Edit a discussion entry](https://developers.happeo.com/reference/patch_chats-discussionid-entries-entryid-1.md): Edits an entry by deleting it and continuing with new content. Only available for the last model entry. - [Retry a discussion entry](https://developers.happeo.com/reference/post_chats-discussionid-entries-entryid-retry-1.md): Retries generation from the previous user entry, replacing the specified model entry and all subsequent entries - [Get a specific tool task](https://developers.happeo.com/reference/get_chats-discussionid-tool-tasks-tooltaskid-1.md): Retrieves detailed information about a specific tool task including its current status, arguments, and response data. - [Update a tool task status](https://developers.happeo.com/reference/put_chats-discussionid-tool-tasks-tooltaskid-1.md): Updates the status, message, and response of a tool task. Used by frontend applications to report tool execution results or status changes. This endpoint only updates the tool task and returns the updated task as JSON. It does not trigger AI responses. To update a tool task AND trigger AI continuation, use the POST /chats/{discussionId}/tool-tasks/{toolTaskId} endpoint instead. - [Continue conversation with tool task update](https://developers.happeo.com/reference/post_chats-discussionid-tool-tasks-tooltaskid-1.md): Updates a tool task and continues the conversation if appropriate. This endpoint: 1. Optionally updates the tool task with provided data (if request body is provided) 2. Checks if the tool task state requires AI continuation (input-required, completed, failed) 3. If the entry is the last entry in the discussion and AI continuation is needed, streams the AI response 4. Otherwise, returns the discussion entry with updated tool task information This is the preferred endpoint for frontend applications that want to update tool tasks and potentially trigger AI responses. - [List all agents](https://developers.happeo.com/reference/get_agents.md): Retrieves all agents accessible by the authenticated user - [Get an agent by ID](https://developers.happeo.com/reference/get_agents-agentid.md): Retrieves a specific agent by its unique identifier - [List page groups](https://developers.happeo.com/reference/listpagegroups.md): Lists page groups visible to the requesting user. - [Retrieve a page group](https://developers.happeo.com/reference/getpagegroup.md): Retrieves a page group by ID. - [Retrieve a page](https://developers.happeo.com/reference/getpage.md): Retrieves a page by ID.