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

# Introduction

> Learn about QuickBlox platform features and documentation guidelines.

QuickBlox provides you with ready-to-use chat and video calling solutions for your apps. Using documentation you can quickly integrate QuickBlox across multiple platforms and devices.

## Before you begin

<Steps>
  <Step title="Register a QuickBlox account">
    Register a QuickBlox account by visiting the [signup page](https://admin.quickblox.com/signup). It only takes a few minutes, and you can use this account to build your apps.
  </Step>

  <Step title="Create and configure a new app">
    Click the **Add new app** button and fill in the required information about your company to create a new app.
  </Step>

  <Step title="Get credentials">
    Go to the Overview section on your Dashboard, and copy the **Application ID**, **Authorization Key**, **Authorization Secret**, and **Account Key** from there.
  </Step>
</Steps>

## Platform features

Use QuickBlox to add rich chat and video calling features to your apps. Our platform has a modular structure. Here is a list of all QuickBlox modules and their features:

### Users

| Feature                            | Platforms                                                                                                                                                                                                                                                                                                                                                                                | Description                                                    |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| User management                    | [iOS](/sdks/ios-authentication#loginemail-and-password) \| [Android](/sdks/android-users) \| [JavaScript](/sdks/js-users) \| [React Native](/sdks/react-native-users) \| [Flutter](/sdks/flutter-users) \| [Server API](https://docs.quickblox.com/reference/users)                                                                                                                      | Create, update, delete, and list users.                        |
| Standard login                     | [iOS](/sdks/ios-authentication#loginemail-and-password) \| [Android](/sdks/android-authentication#loginemail-and-password) \| [JavaScript](/sdks/js-authentication#loginemail-and-password) \| [React Native](/sdks/react-native-authentication#log-in-user) \| [Flutter](/sdks/flutter-authentication#log-in-user) \| [Server API](https://docs.quickblox.com/reference/create-session) | Log in with email/username and password.                       |
| Social login                       | [iOS](/sdks/ios-authentication#social) \| [Android](/sdks/android-authentication#social) \| [JavaScript](/sdks/js-authentication#social) \| [Server API](https://docs.quickblox.com/reference/create-session)                                                                                                                                                                            | Log in using social network accounts.                          |
| Phone number login                 | [iOS](/sdks/ios-authentication#phone-number) \| [Android](/sdks/android-authentication#phone-number) \| [JavaScript](/sdks/js-authentication#phone-number) \| [Server API](https://docs.quickblox.com/reference/create-session)                                                                                                                                                          | Log in using a phone number.                                   |
| Custom identity provider login     | [iOS](/sdks/ios-authentication#custom-identity-provider) \| [Android](/sdks/android-authentication#custom-identity-provider) \| [JavaScript](/sdks/js-authentication#custom-identity-provider) \| [Server API](https://docs.quickblox.com/reference/create-session)                                                                                                                      | Log in with a token generated by the identity provider.        |
| User tags                          | [iOS](/sdks/ios-users#update-user) \| [Android](/sdks/android-users#update-user) \| [JavaScript](/sdks/js-users#update-user) \| [React Native](/sdks/react-native-users#update-user) \| [Flutter](/sdks/flutter-users#update-user) \| [Server API](https://docs.quickblox.com/reference/users)                                                                                           | Assign tags to users and then address them separately by tags. |
| Existing user database integration | [Custom identity provider](/docs/custom-identity-provider)                                                                                                                                                                                                                                                                                                                               | Easily integrate your existing user database with QuickBlox.   |

### Chat

| Feature              | Platforms                                                                                                                                                                                                                                                                                                                                                                                                                                 | Description                                                                                                                        |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Private chat         | [iOS](/sdks/ios-chat-dialogs#dialog-types) \| [Android](/sdks/android-chat-dialogs#dialog-types) \| [JavaScript](/sdks/js-chat-dialogs#dialog-types) \| [React Native](/sdks/react-native-chat-dialogs#dialog-types) \| [Flutter](/sdks/flutter-chat-dialogs#dialog-types) \| [Server API](https://docs.quickblox.com/reference/create-dialog)                                                                                            | Create a one-to-one chat.                                                                                                          |
| Group chat           | [iOS](/sdks/ios-chat-dialogs#dialog-types) \| [Android](/sdks/android-chat-dialogs#dialog-types) \| [JavaScript](/sdks/js-chat-dialogs#dialog-types) \| [React Native](/sdks/react-native-chat-dialogs#dialog-types) \| [Flutter](/sdks/flutter-chat-dialogs#dialog-types) \| [Server API](https://docs.quickblox.com/reference/create-dialog)                                                                                            | Create a group chat between multiple users.                                                                                        |
| Public chat          | [iOS](/sdks/ios-chat-dialogs#dialog-types) \| [Android](/sdks/android-chat-dialogs#dialog-types) \| [JavaScript](/sdks/js-chat-dialogs#dialog-types) \| [React Native](/sdks/react-native-chat-dialogs#dialog-types) \| [Flutter](/sdks/flutter-chat-dialogs#dialog-types) \| [Server API](https://docs.quickblox.com/reference/create-dialog)                                                                                            | Create a public chat between hundreds of users. Anyone can freely join the public chat.                                            |
| Message history      | [iOS](/sdks/ios-chat-messaging#retrieve-chat-history) \| [Android](/sdks/android-chat-messaging#retrieve-chat-history) \| [JavaScript](/sdks/js-chat-messaging#retrieve-chat-history) \| [React Native](/sdks/react-native-chat-messaging#retrieve-chat-history) \| [Flutter](/sdks/flutter-chat-messaging#retrieve-message-history) \| [Server API](https://docs.quickblox.com/reference/list-messages)                                  | All users' messages are stored on the server. You can fetch them for a particular dialog.                                          |
| Presence             | [iOS](/sdks/ios-chat-user-presence) \| [Android](/sdks/android-chat-user-presence) \| [JavaScript](/sdks/js-chat-user-presence) \| [React Native](/sdks/react-native-chat-user-presence) \| [Flutter](/sdks/flutter-chat-user-presence)                                                                                                                                                                                                   | Subscribe to user presence updates and check user online status.                                                                   |
| Read receipts        | [iOS](/sdks/ios-chat-messaging#mark-message-as-read) \| [Android](/sdks/android-chat-messaging#mark-message-as-read) \| [JavaScript](/sdks/js-chat-messaging#mark-message-as-read) \| [React Native](/sdks/react-native-chat-messaging#mark-message-as-read) \| [Flutter](/sdks/flutter-chat-messaging#mark-message-as-read)                                                                                                              | Mark messages as read. Thus, users will know if their messages have been read by other users in the dialog.                        |
| Delivery receipts    | [iOS](/sdks/ios-chat-messaging#mark-message-as-delivered) \| [Android](/sdks/android-chat-messaging#mark-message-as-delivered) \| [JavaScript](/sdks/js-chat-messaging#mark-message-as-delivered) \| [React Native](/sdks/react-native-chat-messaging#mark-message-as-delivered) \| [Flutter](/sdks/flutter-chat-messaging#mark-message-as-delivered)                                                                                     | Mark messages as delivered. Thus, users will know if their messages have been successfully delivered to other users in the dialog. |
| Typing indicators    | [iOS](/sdks/ios-chat-messaging#send-typing-indicators) \| [Android](/sdks/android-chat-messaging#send-typing-indicators) \| [JavaScript](/sdks/js-chat-messaging#send-typing-indicators) \| [React Native](/sdks/react-native-chat-messaging#send-typing-indicators) \| [Flutter](/sdks/flutter-chat-messaging#send-typing-indicators)                                                                                                    | Subscribe to typing events to indicate if the other user is typing a message at the moment.                                        |
| Attachments          | [iOS](/sdks/ios-chat-messaging#send-message-with-attachment) \| [Android](/sdks/android-chat-messaging#send-message-with-attachment) \| [JavaScript](/sdks/js-chat-messaging#send-message-with-attachment) \| [React Native](/sdks/react-native-chat-messaging#send-message-with-attachment) \| [Flutter](/sdks/flutter-chat-messaging#send-message-with-attachment) \| [Server API](https://docs.quickblox.com/reference/create-message) | Send messages with attachment so users can share files during a chat, such as images, audio files, videos, and other file types.   |
| Extended messaging   | [iOS](/sdks/ios-chat-messaging#send-message-with-extra-data) \| [Android](/sdks/android-chat-messaging#send-message-with-extra-data) \| [JavaScript](/sdks/js-chat-messaging#send-message-with-extra-data) \| [React Native](/sdks/react-native-chat-messaging#send-message-with-extra-data) \| [Flutter](/sdks/flutter-chat-messaging#send-message-with-extra-data) \| [Server API](https://docs.quickblox.com/reference/create-message) | Extend a message with additional fields.                                                                                           |
| Unread message count | [iOS](/sdks/ios-chat-dialogs#get-number-of-unread-messages) \| [Android](/sdks/android-chat-dialogs#get-number-of-unread-messages) \| [JavaScript](/sdks/js-chat-dialogs#get-number-of-unread-messages) \| [React Native](/sdks/react-native-chat-dialogs#get-number-of-unread-messages) \| [Flutter](/sdks/flutter-chat-dialogs#get-number-of-unread-messages)                                                                           | Display a number of unread messages in a particular dialog.                                                                        |
| Offline messages     | [iOS](/sdks/ios-chat-offline-messaging) \| [Android](/sdks/android-chat-offline-messaging) \| [JavaScript](/sdks/js-chat-offline-messaging) \| [React Native](/sdks/react-native-chat-offline-messaging) \| [Flutter](/sdks/flutter-chat-offline-messaging)                                                                                                                                                                               | Subscribe to push notifications about new messages when the app is not running.                                                    |
| Contact list         | [iOS](/sdks/ios-chat-offline-messaging) \| [Android](/sdks/android-chat-offline-messaging) \| [JavaScript](/sdks/js-chat-offline-messaging) \| [React Native](/sdks/react-native-chat-offline-messaging) \| [Flutter](/sdks/flutter-chat-offline-messaging)                                                                                                                                                                               | Add and remove users from your contact list.                                                                                       |
| User-to-user block   | [iOS](/sdks/ios-chat-privacy-list) \| [Android](/sdks/android-chat-privacy-list) \| [JavaScript](/sdks/js-chat-privacy-list)                                                                                                                                                                                                                                                                                                              | Add users to your privacy list to block incoming messages from them.                                                               |
| Trust and safety     | [Trust and safety](/docs/chat-moderation#trust--safety-tns)                                                                                                                                                                                                                                                                                                                                                                               | Create rules to mask profanity or block messages that contain it.                                                                  |
| User ban             | [User ban](/docs/chat-moderation#ban-a-user)                                                                                                                                                                                                                                                                                                                                                                                              | Ban a user so the user can no longer connect to the chat server.                                                                   |
| Chatbot              | [Simple bot](https://quickblox.github.io/quickblox-javascript-sdk/samples/chat_bots/simple_bot/) \| [RiveScript bot](https://quickblox.github.io/quickblox-javascript-sdk/samples/chat_bots/rivescript/)                                                                                                                                                                                                                                  | Integrate your chatbot with QuickBlox.                                                                                             |

### Video calling

| Feature          | Platforms                                                                                                                                                                                                                                                                                                          | Description                                                                  |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
| Voice and video  | [iOS](/sdks/ios-video-calling) \| [Android](/sdks/android-video-calling) \| [JavaScript](/sdks/js-video-calling) \| [React Native](/sdks/react-native-video-calling) \| [Flutter](/sdks/flutter-video-calling)                                                                                                     | Create video sessions that can be video and voice, voice-only or video-only. |
| One-to-one calls | [iOS](/sdks/ios-video-calling) \| [Android](/sdks/android-video-calling) \| [JavaScript](/sdks/js-video-calling) \| [React Native](/sdks/react-native-video-calling) \| [Flutter](/sdks/flutter-video-calling)                                                                                                     | Create video calls between two users.                                        |
| Group calls      | [iOS](/sdks/ios-video-calling) \| [Android](/sdks/android-video-calling) \| [JavaScript](/sdks/js-video-calling) \| [React Native](/sdks/react-native-video-calling) \| [Flutter](/sdks/flutter-video-calling)                                                                                                     | Create video calls with up to 4 users at a time.                             |
| Screen-sharing   | [iOS](/sdks/ios-video-calling-advanced#screen-sharing) \| [Android](/sdks/android-video-calling-advanced#screen-sharing) \| [JavaScript](/sdks/js-video-calling-advanced#screen-sharing)                                                                                                                           | Share a screen across video session participants.                            |
| Mute/unmute      | [iOS](/sdks/ios-video-calling-advanced#mute-audio) \| [Android](/sdks/android-video-calling-advanced#mute-audio) \| [JavaScript](/sdks/js-video-calling-advanced#mute-audio) \| [React Native](/sdks/react-native-video-calling-advanced#mute-audio) \| [Flutter](/sdks/flutter-video-calling-advanced#mute-audio) | Disable own or opponent’s audio/video stream.                                |
| Camera switch    | [iOS](/sdks/ios-video-calling-advanced#switch-camera) \| [Android](/sdks/android-video-calling-advanced#switch-camera) \| [JavaScript](/sdks/js-video-calling-advanced#switch-camera) \| [React Native](/sdks/react-native-video-calling-advanced#switch-camera)                                                   | Switch between camera input during a call.                                   |
| Video mirroring  | Supported                                                                                                                                                                                                                                                                                                          | Flip the video horizontally during a call.                                   |
| Offline calls    | Supported                                                                                                                                                                                                                                                                                                          | Implement offline calls workflow with QuickBlox push notifications.          |

### Video conference

| Feature          | Platforms                                                                                                                                                                                                                                   | Description                                                                             |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Voice and video  | [iOS](/sdks/ios-video-conference) \| [Android](/sdks/android-video-conference) \| [JavaScript](/sdks/js-video-conference) \| [Flutter](/sdks/flutter-video-conference)                                                                      | Create video conference sessions that can be video and voice, voice-only or video-only. |
| Group conference | [iOS](/sdks/ios-video-conference#conference-session) \| [Android](/sdks/android-video-conference#create-session) \| [JavaScript](/sdks/js-video-conference#create-session) \| [Flutter](/sdks/flutter-video-conference#create-session)      | Create conference calls between 10-12 users at a time.                                  |
| Join/rejoin      | [iOS](/sdks/ios-video-conference#join-video-room) \| [Android](/sdks/android-video-conference#join-video-room) \| [JavaScript](/sdks/js-video-conference#join-video-room) \| [Flutter](/sdks/flutter-video-conference#join-video-room)      | Join a meeting or continue an earlier meeting with those who were in it.                |
| Mute/unmute      | [iOS](/sdks/ios-video-conference#mute-local-audio) \| [Android](/sdks/android-video-conference#mute-local-audio) \| [JavaScript](/sdks/js-video-conference#mute-remote-audio) \| [Flutter](/sdks/flutter-video-conference#mute-local-audio) | Disable own or opponent’s audio/video stream.                                           |
| Camera switch    | Supported                                                                                                                                                                                                                                   | Switch video inputs during a call.                                                      |
| Call recording   | Supported                                                                                                                                                                                                                                   | Enable server-side recording which means any conference call can be documented.         |
| Offline calls    | Supported                                                                                                                                                                                                                                   | Implement offline calls workflow with QuickBlox push notifications.                     |

### Content

| Feature      | Platforms                                                                                                                                                                                                                                      | Description                                                                 |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| File storage | [iOS](/sdks/ios-content) \| [Android](/sdks/android-content) \| [JavaScript](/sdks/js-content) \| [React Native](/sdks/react-native-content) \| [Flutter](/sdks/flutter-content) \| [Server API](https://docs.quickblox.com/reference/content) | Upload, download, delete media files such as photos, video, documents, etc. |

### Push notifications

| Feature                    | Platforms                                                                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                            |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| Instant notifications      | [iOS](/sdks/ios-push-notifications#send-apns--push-notifications) \| [Android](/sdks/android-push-notifications#send-push-notifications) \| [JavaScript](/sdks/js-push-notifications#send-push-notifications) \| [React Native](/sdks/react-native-push-notifications#send-push-notifications) \| [Flutter](/sdks/flutter-push-notifications#send-push-notifications) \| [Server API](https://docs.quickblox.com/reference/create-event) | Send instant push notifications to a user's device.                                    |
| Scheduled notifications    | [iOS](/sdks/ios-push-notifications#send-apns--push-notifications) \| [Android](/sdks/android-push-notifications#send-push-notifications) \| [JavaScript](/sdks/js-push-notifications#send-push-notifications) \| [React Native](/sdks/react-native-push-notifications#send-push-notifications) \| [Flutter](/sdks/flutter-push-notifications#send-push-notifications) \| [Server API](https://docs.quickblox.com/reference/create-event) | Create push notifications that will be sent at a specific time/date.                   |
| Recurring notifications    | [iOS](/sdks/ios-push-notifications#send-apns--push-notifications) \| [Android](/sdks/android-push-notifications#send-push-notifications) \| [JavaScript](/sdks/js-push-notifications#send-push-notifications) \| [React Native](/sdks/react-native-push-notifications#send-push-notifications) \| [Flutter](/sdks/flutter-push-notifications#send-push-notifications) \| [Server API](https://docs.quickblox.com/reference/create-event) | Create push notifications that will be sent repeatedly according to the time interval. |
| Notifications by user tags | Supported                                                                                                                                                                                                                                                                                                                                                                                                                                | Send push notifications to specific user groups defined by tags.                       |
| Subscribe device           | [iOS](/sdks/ios-push-notifications#subscribe) \| [Android](/sdks/android-push-notifications#automatic-push-subscription) \| [React Native](/sdks/react-native-push-notifications#subscribe-to-push-notifications) \| [Flutter](/sdks/flutter-push-notifications#create-push-subscription) \| [Server API](https://docs.quickblox.com/reference/create-subscription)                                                                      | Subscribe/unsubscribe a device to receive push notifications.                          |

### Custom objects

| Feature          | Platforms                                                                                                                                                                                                                                                                                | Description                                                                                                                                                  |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Data schema      | [iOS](/sdks/ios-custom-objects) \| [Android](/sdks/android-custom-objects) \| [JavaScript](/sdks/js-custom-objects) \| [React Native](/sdks/react-native-custom-objects) \| [Flutter](/sdks/flutter-custom-objects) \| [Server API](https://docs.quickblox.com/reference/custom-objects) | Create a flexible data schema so you can store and structure your data exactly how you need to.                                                              |
| Data management  | [iOS](/sdks/ios-custom-objects) \| [Android](/sdks/android-custom-objects) \| [JavaScript](/sdks/js-custom-objects) \| [React Native](/sdks/react-native-custom-objects) \| [Flutter](/sdks/flutter-custom-objects) \| [Server API](https://docs.quickblox.com/reference/custom-objects) | Create, update, delete custom object records.                                                                                                                |
| Flexible queries | [iOS](/sdks/ios-custom-objects) \| [Android](/sdks/android-custom-objects) \| [JavaScript](/sdks/js-custom-objects) \| [React Native](/sdks/react-native-custom-objects) \| [Flutter](/sdks/flutter-custom-objects) \| [Server API](https://docs.quickblox.com/reference/list-records)   | Define specific search criteria based on comparisons to the fields of each record and list the exact data that you need.                                     |
| Relations        | [iOS](/sdks/ios-custom-objects#relations) \| [Android](/sdks/android-custom-objects#relations) \| [JavaScript](/sdks/js-custom-objects#relations) \| [Server API](https://docs.quickblox.com/reference/relations)                                                                        | Build one-to-many relations between data schemas.                                                                                                            |
| Permissions      | [iOS](/sdks/ios-custom-objects#permission-schema) \| [Android](/sdks/android-custom-objects#permission-schema) \| [JavaScript](/sdks/js-custom-objects#permission-schema) \| [Server API](https://docs.quickblox.com/reference/permissions)                                              | Add a flexible permissions schema by choosing from five permission levels. Specify users who can access the object and operations allowed on a given object. |

### Address book

| Feature                   | Platforms                                                                                                                                                                                                                                                                       | Description                                                                                                                      |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| Contact management        | [iOS](/sdks/ios-address-book) \| [Android](/sdks/android-address-book) \| [JavaScript](/sdks/js-address-book) \| [Server API](https://docs.quickblox.com/reference/address-book)                                                                                                | Upload contacts to the server. Keep the contacts up-to-date by updating, deleting or syncing the device contacts with QuickBlox. |
| Retrieve registered users | [iOS](/sdks/ios-address-book#retrieve-registered-users) \| [Android](/sdks/android-address-book#retrieve-registered-users) \| [JavaScript](/sdks/js-address-book#retrieve-registered-users) \| [Server API](https://docs.quickblox.com/reference/get-registered-contacts-users) | Retrieve registered QuickBlox users from the address book.                                                                       |
| New contact notifications | [iOS](/sdks/ios-address-book#push-notification-on-new-contact-joined) \| [Android](/sdks/android-address-book#push-notification-on-new-contact-joined) \| [JavaScript](/sdks/js-address-book#push-notification-on-new-contact-joined)                                           | Enable push notifications when a contact from your address book joins the app.                                                   |

## Getting around

Our documentation is split into two basic sections:

1. **Documentation**. Here you can explore our SDKs in-depth. QuickBlox supports multiple platforms including iOS, Android, JavaScript, React Native, and Flutter. Learn all fundamentals for integrating and configuring our SDKs for each particular platform.
2. **Server API**. Use QuickBlox Server API to establish a server-to-server connection between your application and QuickBlox server and fulfill activities associated with chat. Our API documentation is organized around modules. Each module contains a set of specific API requests and respective endpoints. Find a list of parameters and their descriptions below each request.

## Basic recommendations

Here are basic recommendations for navigating our documentation.

1. It’s better to start with our **Key Concepts** page to get an overall understanding of QuickBlox.

2. Take a look at our **Code Samples** page with a collection of ready-to-go apps for the most popular platforms.

3. Move over to the **Quick Start** guide of the platform you want to add the QuickBlox to. Learn how to run the code sample and send your first message from here.

4. Refer to our **Setup** page to learn how to initialize, connect, and configure QuickBlox SDK so it works seamlessly with your app.

5. Check **other pages** to customize QuickBlox further. Following other sections, you will understand how to implement each particular functionality in detail whether it is Chat, Video Calling, Push Notifications, etc.
