> ## Documentation Index
> Fetch the complete documentation index at: https://developers.chatwoot.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Chatwoot APIs

Chatwoot provides three types of APIs. This distinction is primarily based on the specific use cases for which these APIs are designed.

1. [Application APIs](#application-apis)
2. [Client APIs](#client-apis)
3. [Platform APIs](#platform-apis)

Ref: [Chatwoot API Docs](https://www.chatwoot.com/developers/api/)

## Application APIs

Application APIs are designed to interact with a Chatwoot account from a user's perspective. These APIs will help in building integrations for the support agents,
bulk import/export of data into a Chatwoot account etc.

To authenticate to this API, you will require a user `access_token`, which can be obtained from `profile_settings` after logging into your Chatwoot account.
These APIs are available on both `cloud` and `self-hosted` Chatwoot Accounts.

Ref: [Postman Collection](https://www.postman.com/chatwoot/workspace/chatwoot-apis/collection/162770-a7462388-50fd-4035-9bfc-5750f91c00cd)

### Example Implementations

* [https://github.com/chatwoot/google-cloud-functions-demo](https://github.com/chatwoot/google-cloud-functions-demo)

## Client APIs

The client APIs allow users to build custom conversational interfaces over Chatwoot. Not happy with the native Chatwoot Website widget? Want to create a customer Chat support option right into your mobile app? Client APIs are here to help.

Client APIs use a combination of `inbox_identifier` and `contact_identifier` for authentication. The `inbox_identifier` can be obtained from the Settings->Configuration of API inboxes in Chatwoot. The `contact_identifier` can be obtained from the server on successful contact Create API requests, which can be cached to perform subsequent requests on behalf of the contact.

These APIs are available on both `cloud` and `self-hosted` Chatwoot Accounts.

Ref: [Postman Collection](https://www.postman.com/chatwoot/workspace/chatwoot-apis/collection/162770-9b283c34-96a9-494f-bb52-c5c6ab864a4a)

### Example Implementations

* [https://github.com/chatwoot/client-api-demo](https://github.com/chatwoot/client-api-demo)
* [https://github.com/chatwoot/chatwoot-flutter-sdk](https://github.com/chatwoot/chatwoot-flutter-sdk)

## Platform APIs

The installation admin can use these APIs to manage users, accounts, and roles. These APIs could also be used to sync auth information from external systems into chatwoot. These APIs are particularly helpful if you plan to build a conversation management interface into your existing software stack.

> **Note:** Platform APIs cannot access accounts or users created via the Chatwoot UI, or by other API keys. They can only access accounts, users, and other objects created by the specific platform API key used for authentication, or objects explicitly permitted to that API key.

To authenticate these APIs, you must have an `access_token` issued on behalf of a `Platform app`. You can create a Platform App from [Super Admin Console](/self-hosted/monitoring/super-admin-sidekiq/). The access\_token can also be obtained from the `Access Tokens` tab in [Super Admin Console](/self-hosted/monitoring/super-admin-sidekiq/).

These APIs are available on `self-hosted` Chatwoot installations.

Ref: [Postman Collection](https://www.postman.com/chatwoot/workspace/chatwoot-apis/collection/162770-e5451b69-9f97-489b-b352-4ca7d8d82aff)

### FAQ

#### Why do I get a 401 'Non permissible resource' error when using Platform API tokens?

Platform APIs cannot access accounts or users created via the Chatwoot UI, or by other API keys. They can only access accounts, users, and other objects created by the same API key, or objects explicitly permitted to that API key. If you need to grant a Platform App access to an object (such as an Account) that it did not create, you can manually add the permission using the following command in a Rails console (replace the numbers with the correct IDs):

```ruby theme={null}
PlatformAppPermissible.create!(platform_app: PlatformApp.find(1), permissible: Account.find(1))
```

#### What should I do if the API documentation appears outdated?

If you encounter discrepancies between the API documentation and actual API behavior, we recommend inspecting the actual requests made by the Chatwoot UI through your browser's developer console Network tab to see the exact request format and payload structure that works with the current API, then replicate the same request structure in your integration.

You can contribute back by submitting a [pull request](/contributing-guide/api-documentation) with documentation corrections or by [raising an issue](https://github.com/chatwoot/chatwoot/issues) in our GitHub repository to help keep our API documentation current for everyone.
