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

# AirysChat APIs

AirysChat 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: [AirysChat API Docs](https://www.airyschat.com/developers/api/)

## Application APIs

Application APIs are designed to interact with an AirysChat account from a user's perspective. These APIs will help in building integrations for the support agents,
bulk import/export of data into an AirysChat 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 AirysChat account.
These APIs are available on both `cloud` and `self-hosted` AirysChat Accounts.

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

### Example Implementations

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

## Client APIs

The client APIs allow users to build custom conversational interfaces over AirysChat. Not happy with the native AirysChat 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 AirysChat. 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` AirysChat Accounts.

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

### Example Implementations

* [https://github.com/airyschat/client-api-demo](https://github.com/airyschat/client-api-demo)
* [https://github.com/airyschat/airyschat-flutter-sdk](https://github.com/airyschat/airyschat-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 airyschat. 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 AirysChat 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` AirysChat installations.

Ref: [Postman Collection](https://www.postman.com/airyschat/workspace/airyschat-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 AirysChat 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 AirysChat 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/airyschat/airyschat/issues) in our GitHub repository to help keep our API documentation current for everyone.
