# Applications and entities

In CPaaS X, applications and entities are modular building blocks that Infobip clients can configure using the Infobip API to meet their business needs. These structures support a more flexible and scalable approach to messaging and reporting.

Applications and entities are designed to be flexible in managing configurations and [resources](https://www.infobip.com/docs/resources). While similar in configuration options, they represent different "actors" or "objects" in your system.

Note
Depending on your requirements, you can use applications and entities separately or together.

You can associate applications and entities with [resources](https://www.infobip.com/docs/resources) that you own, allowing you to define your business assets (environment, customers, resources) on the Infobip platform without managing the complexity of CPaaS execution.

Continue reading to learn more about [applications](https://www.infobip.com/docs/application-and-entity-management#application) and [entities](https://www.infobip.com/docs/application-and-entity-management#entity), or start [creating them](https://www.infobip.com/docs/application-and-entity-management#create-applications-and-entities-manage-applications-and-entities) using the API or web interface.

## Applications

Applications represent system objects like environments or use cases on the Infobip platform. For instance, a production and test environment can be represented by separate applications, each with its own configuration.

Similarly, you can create applications for different use cases, such as marketing and transactional messaging, each with unique configurations. You could represent these by two other applications (or more, depending on how many use cases you support). This allows you to manage various needs without complicating your account structure.

Applications can be used independently or together with [entities](https://www.infobip.com/docs/application-and-entity-management#entity) and [resources](https://www.infobip.com/docs/resources).

For every application, you can define and assign a unique `applicationID` identifier, giving you complete control over sending, managing, and reporting on your messaging or calls. This includes determining the notifications and reports you want to receive and how Infobip manages sender resources and sender strategies.

Note
For technical reasons, a `default` application is created automatically when an account is set up on the Infobip platform. While you do not need to use the default application explicitly, it will appear in the list of applications when requested through the API and in the [Applications and entities](https://portal.infobip.com/dev/application-entity) section of the web interface.

## Entities

An entity on the Infobip platform represents a distinct object in your system. For example, you can use entities to track customer activity or consumption on the Infobip platform. Managing traffic and billing for tens, hundreds, or thousands of customers can be challenging, and entities provide a way to reconcile this data efficiently. Similarly, entities can represent cost centers, allowing you to track traffic and costs for each.

For every entity, you can define and assign a unique `entityID` identifier, giving you complete control over sending, managing, and reporting on your messaging or calls. This includes determining the notifications and reports you want to receive and how Infobip manages sender resources.

Entities can be used as stand-alone objects or in combination with applications and [resources](https://www.infobip.com/docs/resources).

## Examples

Here are examples of how applications and entities can be used together.

1. A client uses applications for two different use cases and an entity to track customer activity.

2. A client defines applications for different environments and entities to track different cost centers.

To get started with creating an application and entity configuration, refer to the [Application and entity API](https://www.infobip.com/docs/api/platform/application-entity) for more information.

## Manage applications and entities

You can create, manage, and delete applications and entities using either the API or directly on the Infobip web interface.

### Create applications and entities [#create-applications-and-entities-manage-applications-and-entities]

API

Create and manage your applications and entities using the API. The [Application and entity API](https://www.infobip.com/docs/api/platform/application-entity) provides all the information needed to create and manage applications and entities for your specific use case using the requests below.

| API | Information | Request |
| --- | --- | --- |
| Create application | Creates an application associated with the specified `applicationID`. | `POST` <br>```/provisioning/1/applications``` |
| Create entity | Creates an entity associated with the specified `entityID`. | `POST` <br>```/provisioning/1/entities``` |

Any changes you make using the API will automatically be visible in Infobip system.

Note
For technical reasons, a `default` application is created automatically when an account is set up on the Infobip platform. While you do not need to use the default application explicitly, it will appear in the list of applications when requested through the API and in the [Applications and entities](https://portal.infobip.com/dev/application-entity) section of the web interface.

Web interface

You can also create applications and/or entities directly through the Infobip web interface by following the steps below:

1. In the web interface, navigate to **Developer tools** > **Applications and entities** to access the relevant area.

2. In the **Applications and entities** section, you will see all active applications, entities, and their associated resources.

	Note
	This view includes any applications and entities you have created using the API.

3. Toggle between the **Application** and **Entities** tabs and select **Create application** (or **Create entity**). Set the ID (this cannot be changed later) and optionally add an alias.

4. Once created, your application or entity will be visible in the **Applications and entities** area, and you can begin linking entities and resources for your specific use case. The example below shows an application with two entities and associated resources.

Associate resources to applications and entities

After creating applications and entities, you can explicitly associate them with a resource **if required** by your use case.

You can associate a resource with applications and entities together or separately.

To use specific features such as sending strategies or functions like inbound messages or calls, you **must** explicitly associate a resource with an application and/or entity.  It is also possible to implicitly associate a resource in any send request that supports `applicationID` or `entityID`, provided the application or entity has been created. Implicitly associating a resource means that reports for that request will include the `applicationID` and/or `entityID`.

### Modify applications and entities [#modify-applications-and-entities-manage-applications-and-entities]

Applications and entities have limited editing capabilities due to their integration with CPaaS X. You can modify the alias of an application and/or entity, but the ID cannot be changed. Any changes will be immediately reflected in the system.

API

To modify your applications or entities, use the following API requests:

| API | Information | Request |
| --- | --- | --- |
| Modify application | Modifies the resource `name` property. | `PUT` <br>```/provisioning/1/applications/{applicationId}``` |
| Modify entity | Modifies the resource `name` property. | `PUT` <br>```/provisioning/1/entities/{entityId}``` |

Web interface

1. In the web interface, navigate to **Applications and entities**.

2. Select **Edit application** (or **Edit entity**).

### Delete applications and entities [#delete-applications-and-entities-manage-applications-and-entities]

If you want to delete an application and/or entity, be mindful of the following:

- Deleting an application and/or entity will also remove any linked configurations, such as [resource associations](https://www.infobip.com/docs/resources#resource-association), [sending strategies](https://www.infobip.com/docs/sending-strategy-management), and [subscriptions](https://www.infobip.com/docs/subscriptions-management).
- If you delete an application and/or entity that has associated resources (for example, a number or domain), the association will be removed. You can re-apply these resources to a new application and/or entity when needed.

Note
If a configuration (for example, resource association, sending strategy, or subscription) is linked to an application/entity pair and **only one part of the pair** is deleted, then the **whole** configuration will be deleted.

Additionally, deleting an application or entity associated with a resource used for [inbound traffic](https://www.infobip.com/docs/resources#resources-and-inbound-traffic) will affect the inbound traffic Infobip sends to you. It will no longer be associated with the application and/or entity, and the messages will no longer include the `applicationID` and/or `entityID` identifier.

Before deleting an application or entity, review all linked resources and configurations. For full control, manually delete any configurations and [de-associate resources](https://www.infobip.com/docs/resources#delete-resource-associations-manage-resource-associations) before proceeding.

API

To delete an application or entity, use the following API requests:

| API | Information | Request |
| --- | --- | --- |
| Delete application | Deletes an application associated with the specified `applicationId`. | `DELETE` <br>```/provisioning/1/applications/{applicationId}``` |
| Delete entity | Deletes an entity associated with the specified `entityId`. | `DELETE` <br>```/provisioning/1/entities/{entityId}``` |

Web interface

1. In the web interface, navigate to **Applications and entities**.

## API keys with applications and entities

[API keys](https://www.infobip.com/docs/essentials/api-essentials/api-authentication#api-key-header) can be [linked](https://www.infobip.com/docs/api/platform/account-management) to an application, entity, or an application/entity pair for enhanced security. When an API key is linked, it can only be used for specific endpoints (such as sending, reporting, and logs). This provides additional separation and protection for traffic-related requests and prevents access to management APIs like Numbers or Applications and entities. It also ensures that only the traffic linked to that specific application or entity is affected if a traffic-related API key is compromised. Remediation efforts, such as revoking the compromised API key, only need to be applied to the subset of traffic associated with that key. This isolates the issue and prevents widespread disruption.

You can also configure API keys with either broad or restricted access based on your environment setup. For example, if you have separate applications for test and production environments, you can create and assign a unique API key to each application. The production API can be strictly controlled, while the testing API can be given broader permissions.

Standard, unlinked API key in a request with application and entity

### API key restriction [#api-key-restriction-api-keys-with-application-and-entity]

You can restrict API keys to specific applications or entities, ensuring that access is controlled at the application or entity level.

For example, if you attempt to use **API Key2** with the "BigCola" entity or **API Key3** with the "McBurger" entity, you will receive an unauthorized access response. However, **API Key1** can still be used in both requests as it serves as the primary API key with access to all public endpoints.

### API keys endpoints list [#api-keys-endpoints-list-api-keys-with-application-and-entity]

Below are the lists of endpoints where authorization is supported for API keys linked to applications or entities.

Expand the list for each solution.

#### Customer engagement

| Channel | Function | Endpoint |
| --- | --- | --- |
| Conversations | Create message | `/ccaas/1/conversations/{conversationId}/messages#POST` |
|  | Create metadata | `/ccaas/1/conversations/{conversationId}/metadata#PUT` |
|  | Create conversation | `/ccaas/1/conversations#POST` |
|  | Update routing | `/ccaas/1/routing#PUT` |
|  | Create queue | `/ccaas/1/queues#POST` |
|  | Patch metadata | `/ccaas/1/conversations/{conversationId}/metadata#PATCH` |
|  | Create note | `/ccaas/1/conversations/{conversationId}/notes#POST` |
|  | Get template | `/ccaas/1/templates/{templateId}#GET` |
|  | Delete queue | `/ccaas/1/queues/{queueId}#DELETE` |
|  | Get conversation | `/ccaas/1/conversations/{conversationId}#GET` |
|  | Update queue | `/ccaas/1/queues/{queueId}#PUT` |
|  | Get related comments | `/ccaas/1/conversations/{conversationId}/related-comments#GET` |
|  | Simulate routing result for conversation | `/ccaas/1/conversations/{conversationId}/simulate-routing#GET` |
|  | Get templates | `/ccaas/1/templates#GET` |
|  | Get note | `/ccaas/1/conversations/{conversationId}/notes/{noteId}#GET` |
|  | Get metadata | `/ccaas/1/conversations/{conversationId}/metadata#GET` |
|  | Get messages | `/ccaas/1/conversations/{conversationId}/messages#GET` |
|  | Route conversation | `/ccaas/1/conversations/{conversationId}/route#POST` |
|  | Delete metadata | `/ccaas/1/conversations/{conversationId}/metadata#DELETE` |
|  | Delete tags | `/ccaas/1/tags/{tagName}#DELETE` |
|  | Get notes | `/ccaas/1/conversations/{conversationId}/notes#GET` |
|  | Send event | `/ccaas/1/conversations/{conversationId}/events#POST` |
|  | Get tags | `/ccaas/1/tags#GET` |
|  | Create tag | `/ccaas/1/tags#POST` |
|  | Update conversation | `/ccaas/1/conversations/{conversationId}#PUT` |
|  | Patch conversation | `/ccaas/1/conversations/{conversationId}#PATCH` |
|  | Unassign conversation agent | `/ccaas/1/conversations/{conversationId}/assignee#DELETE` |
|  | Get queue agents | `/ccaas/1/queues/{queueId}/agents#GET` |
|  | Change conversation assignment | `/ccaas/1/conversations/{conversationId}/assignee#PUT` |
|  | Delete conversation tag | `/ccaas/1/conversations/{conversationId}/tags/{tagName}#DELETE` |
|  | Get conversations | `/ccaas/1/conversations#GET` |
|  | Get agent conversations | `/ccaas/1/agents/{agentId}/conversations#GET` |
|  | Add conversation tag | `/ccaas/1/conversations/{conversationId}/tags#POST` |
|  | Get queues | `/ccaas/1/queues#GET` |

#### People

| Channel | Function | Endpoint |
| --- | --- | --- |
| People | Delete segment | `/people/3/segments/{segmentId}#DELETE` |
|  | Get segments | `/people/3/segments#GET` |
|  | Create segment | `/people/3/segments#POST` |
|  | Get segment | `/people/3/segments/{segmentId}#GET` |
|  | Update segment | `/people/3/segments/{segmentId}#PUT` |

#### Channels

##### Apple Messages for Business

| Channel | Function | Endpoint |
| --- | --- | --- |
| Apple Messages for Business | Send Apple Events | `/apple-mfb/1/events#POST` |
|  | Get outbound Apple Messages for Business message logs | `/apple-mfb/1/logs#GET` |
|  | Get outbound Apple Messages for Business message delivery reports | `/apple-mfb/1/reports#GET` |
|  | Send Apple Messages for Business | `/apple-mfb/1/messages#POST` |

##### Email

| Channel | Function | Endpoint |
| --- | --- | --- |
| Email | Send fully featured email | `/email/3/send#POST` |
|  | Get email logs | `/email/1/logs#GET` |
|  | Get email delivery reports | `/email/1/reports#GET` |

##### Instagram Direct Messages

| Channel | Function | Endpoint |
| --- | --- | --- |
| Instagram Direct Messages | Get outbound Instagram message logs | `/instagram/1/logs#GET` |
|  | Get outbound Instagram message delivery reports | `/instagram/1/reports#GET` |
|  | Send Instagram message | `/instagram/1/messages#POST` |

##### KakaoTalk

| Channel | Function | Endpoint |
| --- | --- | --- |
| KakaoTalk | Get outbound Kakao Alim message delivery reports | `/kakao-alim/1/reports#GET` |
|  | Send Kakao Alim message | `/kakao-alim/1/messages#POST` |
|  | Get outbound Kakao Alim message logs | `/kakao-alim/1/logs#GET` |
|  | Get outbound Kakao Brand Messaging logs | `/kakao-chingu/1/logs#GET` |
|  | Get outbound Kakao Sangdam message logs | `/kakao-sangdam/1/logs#GET` |
|  | Get outbound Kakao Sangdam message delivery reports | `/kakao-sangdam/1/reports#GET` |
|  | Send Kakao Sangdam message | `/kakao-sangdam/1/messages#POST` |
|  | Get outbound Kakao Brand Messaging delivery reports | `/kakao-chingu/1/reports#GET` |
|  | Send Kakao Brand Messaging message | `/kakao-chingu/1/messages#POST` |

##### LINE

| Channel | Function | Endpoint |
| --- | --- | --- |
| LINE | Get outbound LINE message delivery reports | `/line/1/reports#GET` |
|  | Send LINE message | `/line/1/messages#POST` |

##### Messenger

| Channel | Function | Endpoint |
| --- | --- | --- |
| Messenger | Get outbound Messenger message logs | `/messenger/1/logs#GET` |
|  | Send Messenger message | `/messenger/1/messages#POST` |
|  | Get outbound Messenger message delivery reports | `/messenger/1/reports#GET` |

##### MMS

| Channel | Function | Endpoint |
| --- | --- | --- |
| MMS | Get inbound MMS messages | `/mms/1/inbox/reports#GET` |
|  | Send MMS messages | `/mms/2/messages#POST` |
|  | Get outbound MMS message delivery reports | `/mms/2/reports#GET` |
|  | Send MMS message | `/mms/1/advanced#POST` |
|  | Get outbound MMS message logs | `/mms/2/logs#GET` |
|  | Deprecated Get outbound MMS message delivery reports | `/mms/1/reports#GET` |

##### Mobile push and in-app messaging

| Channel | Function | Endpoint |
| --- | --- | --- |
| Mobile push and in-app messaging | Get outbound push message delivery reports | `/push/3/reports#GET` |
|  | Send push notifications | `/push/3/messages#POST` |
|  | Get outbound push message logs | `/push/3/logs#GET` |

##### RCS

| Channel | Function | Endpoint |
| --- | --- | --- |
| RCS | Get outbound RCS message delivery reports | `/rcs/2/reports#GET` |
|  | Send RCS bulk message | `/ott/rcs/1/message/bulk#POST` |
|  | Send RCS bulk template message | `/ott/rcs/1/message/template/bulk#POST` |
|  | Capability check RCS destinations query | `/rcs/2/capability-check/query#POST` |
|  | Send RCS messages | `/rcs/2/messages#POST` |
|  | Send RCS template message | `/ott/rcs/1/message/template#POST` |
|  | Capability check RCS destinations notify | `/rcs/2/capability-check/notify#POST` |
|  | Send RCS message | `/ott/rcs/1/message#POST` |
|  | Get outbound RCS message logs | `/rcs/2/logs#GET` |

##### SMS

| Channel | Function | Endpoint |
| --- | --- | --- |
| SMS | Get outbound SMS message delivery reports v3 | `/sms/3/reports#GET` |
|  | Send SMS message | `/sms/2/text/advanced#POST` |
|  | Get outbound SMS message delivery reports | `/sms/1/reports#GET` |
|  | Get outbound SMS message logs v3 | `/sms/3/logs#GET` |
|  | Send SMS messages | `/sms/3/messages#POST` |
|  | Send binary SMS message | `/sms/2/binary/advanced#POST` |
|  | Get outbound SMS message logs | `/sms/1/logs#GET` |

##### Viber

| Channel | Function | Endpoint |
| --- | --- | --- |
| Viber | Send Viber image message | `/viber/1/message/image#POST` |
|  | Send Viber file message | `/viber/1/message/file#POST` |
|  | Get outbound Viber bot message delivery reports | `/viber-bot/1/reports#GET` |
|  | Send Viber video message | `/viber/1/message/video#POST` |
|  | Send Viber bot message | `/viber-bot/1/messages#POST` |
|  | Get outbound Viber bot message logs | `/viber-bot/1/logs#GET` |
|  | Send Viber messages | `/viber/2/messages#POST` |
|  | Get outbound Viber message delivery reports | `/viber/2/reports#GET` |
|  | Get outbound Viber message logs | `/viber/2/logs#GET` |

##### Voice

| Channel | Function | Endpoint |
| --- | --- | --- |
| Voice | Create bulk | `/calls/1/bulks#POST` |
|  | Create conference | `/calls/1/conferences#POST` |
|  | Application transfer | `/calls/1/calls/{callId}/application-transfer#POST` |
|  | Create call | `/calls/1/calls#POST` |

##### WhatsApp

| Channel | Function | Endpoint |
| --- | --- | --- |
| WhatsApp | Send WhatsApp image message | `/whatsapp/1/message/image#POST` |
|  | Send WhatsApp interactive multi-product message | `/whatsapp/1/message/interactive/multi-product#POST` |
|  | Send WhatsApp sticker message | `/whatsapp/1/message/sticker#POST` |
|  | Send WhatsApp document message | `/whatsapp/1/message/document#POST` |
|  | Send WhatsApp interactive order-details message | `/whatsapp/1/message/interactive/order-details#POST` |
|  | Send WhatsApp text message | `/whatsapp/1/message/text#POST` |
|  | Send WhatsApp template message | `/whatsapp/1/message/template#POST` |
|  | Send WhatsApp interactive URL button message | `/whatsapp/1/message/interactive/url-button#POST` |
|  | Edit WhatsApp template | `/whatsapp/2/senders/{sender}/templates/{id}#PATCH` |
|  | Send WhatsApp interactive list message | `/whatsapp/1/message/interactive/list#POST` |
|  | Send WhatsApp contact message | `/whatsapp/1/message/contact#POST` |
|  | Send WhatsApp interactive order-status message | `/whatsapp/1/message/interactive/order-status#POST` |
|  | Send WhatsApp location message | `/whatsapp/1/message/location#POST` |
|  | Send WhatsApp video message | `/whatsapp/1/message/video#POST` |
|  | Send WhatsApp interactive flow message | `/whatsapp/1/message/interactive/flow#POST` |
|  | Send WhatsApp audio message | `/whatsapp/1/message/audio#POST` |
|  | Send WhatsApp interactive product message | `/whatsapp/1/message/interactive/product#POST` |
|  | Send WhatsApp interactive location request message | `/whatsapp/1/message/interactive/location-request#POST` |
|  | Send WhatsApp interactive buttons message | `/whatsapp/1/message/interactive/buttons#POST` |

##### Zalo

| Channel | Function | Endpoint |
| --- | --- | --- |
| Zalo | Send Zalo follower message | `/zalo-follower/1/messages#POST` |
|  | Send Zalo message | `/zalo/2/messages#POST` |
|  | Get Zalo follower logs | `/zalo-follower/1/logs#GET` |

#### Platform

##### Messages API

| Channel | Function | Endpoint |
| --- | --- | --- |
| Messages API | Send Messages API message | `/messages-api/1/messages#POST` |
|  | Get Messages API delivery reports | `/messages-api/1/reports#GET` |
|  | Send Messages API events | `/messages-api/1/events#POST` |

##### Metrics

| Channel | Function | Endpoint |
| --- | --- | --- |
| Metrics | Query aggregate data | `/metrics/1/query-aggregate-data#POST` |

##### Sending Strategy Management

| Channel | Function | Endpoint |
| --- | --- | --- |
| Sending Strategy Management | Create sending strategy | `/provisioning/2/sending-strategies#POST` |

___

<wasthispagehelpful>