# Deploying A2 OnPrem on AWS
Source: https://docs.aiderx.io/development/en/deployment-aws
This guide explains how to deploy A2 OnPrem on Amazon Web Service (AWS).
There are various ways to deploy Docker images on AWS platforms, such as [AWS EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html), [AWS App Runner](https://docs.aws.amazon.com/apprunner/latest/dg/what-is-apprunner.html), [AWS Lightsail](https://docs.aws.amazon.com/lightsail/latest/userguide/amazon-lightsail-container-services.html), and [AWS EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html). This article will explain the simplest method, which is deploying on [AWS ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html).
### Registering Docker Image in ECR
To use Docker images in AWS, you need to register the image in the Elastic Container Registry (ECR). For detailed instructions on image registration, refer to the [official AWS document](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html), which covers repository creation and Docker image push.
Upon completion, you will see a screen like this in your ECR repository:
From now on, use the value in the URI column to deploy the image.
### Setting up AWS ECS
#### 1. Creating a Cluster
To use AWS Elastic Container Service (ECS), you first need to create a cluster. In the ECS `Clusters` > `Create Cluster` menu, you will see the following screen:
1. Enter an appropriate name in `Cluster name`.
2. To maintain volume, select Amazon EC2 instances, and it's recommended to choose an instance type of `c5.2xlarge` (8 vCPU, 16GB RAM) or higher.
3. Set the Desired capacity to Minimum: 1, Maximum: 1.
4. Create the cluster.
#### 2. Defining a Task
To use the image, you need to define a task first. In the ECS `Task definition` > `Create new task definition` menu, configure the following:
1. **Task definition configuration**
* Enter an appropriate task name.
2. **Infrastructure requirements**
* Set the `Launch type` to `AWS EC2 Instances`.
* Choose `Linux/X86_64` for `Operating system/Architecture`.
* Leave `Task size` blank.
3. **Container**
* Enter an appropriate container name and the image URI registered in ECR.
* Open the port `8000` for service.
* Allocate all resources to the container within the task.
* Enable the `Use log collection` option in `Logging`.
* Leave the CPU/GPU configuration blank.
* Set memory limits as follows:
* If the EC2 instance has N GB of memory (e.g., 16GB), set the hard limit to N and the soft limit to N/2 - 1.
* This soft limit configuration is to allow two tasks to run briefly during a rolling deployment.
4. **Volume**
* A2's data is stored in `/data`. To retain the data, define appropriate storage and mount it to this path.
* To retain data using AWS EBS, set `Configuration Type` to `Configure at task definition creation` and choose bind mount for the volume type.
* Enter `/data` as the source path.
#### 3. Creating Security Groups
Now, create two security groups to set inbound rules between the microservices. One is for the task, and the other is for the load balancer.
Search for 'security group' in the AWS console's search bar to navigate to the security groups page.
Click the 'Create security group' button in the top right corner to begin the setup.
1. **Security Group for Load Balancer**
* Set the security group name and inbound rules.
* Example: `security-lb`
* Add inbound rules for port 8000.
* In the example, the source is set to `Anywhere`, but for better security, it's recommended to specify a particular IP.
2. **Security Group for Task**
* Add inbound rules for port 8000, and set the source as the security group of the load balancer.
#### 4. Creating Target Groups
Create target groups for the load balancer to forward requests. Search for `Target group` in the AWS console and navigate to the page.
1. **Target Group for Task**
* Create a target group for port 8000.
* Choose IP addresses as the target type and set the port to 8000.
* Enter `/api/health` as the health check path.
* Click `Next` and complete the target group creation.
#### 5. Creating a Load Balancer
Search for `Load Balancers` in the AWS console and navigate to the page.
Click the `Create Load Balancer` button in the top right corner, then choose `Application Load Balancer`.
1. **Basic Configuration**
* Select `Internet-facing` for the scheme.
* Set the IP address type to `IPv4`.
2. **Network Mapping & Security Groups**
* Select all availability zones for the relevant region (e.g., ap-northeast-2).
* Copy and save the VPC ID and Subnet ID as they will be needed when creating services.
* Choose the security group created earlier for the load balancer.
3. **Listeners**
* Connect the listeners to the created target groups.
4. **Finished**
* Once the load balancer is created, save the DNS name highlighted in the red box in the image above. This address will be used to access services like the ADM.
#### 6. Creating a Service
Instead of using the console GUI, we will use CloudFormation to create the service. This is because the GUI does not support associating multiple container ports with the load balancer. More details can be found on [Medium](https://medium.com/@faisalsuhail1/exposing-multiple-ports-for-an-aws-ecs-service-64b9821c09e8).
Search for `CloudFormation` in the AWS console and navigate to the page.
1. **Create Stack**
* Click the `Create Stack` button in the top right corner.
* Choose `Upload a template file` and use the following JSON format for the template file, uploading it afterward. Modify the commented sections to fit your environment (enter the values saved earlier).
* Enter the task security group's ID in `SecurityGroupIDs`.
```json theme={null}
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "The template used to create an ECS Service from the ECS Console.",
"Parameters": {
"SecurityGroupIDs": {
"Type": "CommaDelimitedList"
// "Default": "sg-0f21b327b83e33c46"
},
"SubnetIDs": {
"Type": "CommaDelimitedList"
// "Default": "subnet-0b7b40c10645ff898,subnet-059809f716cb81e9e,subnet-013907b4eb89d521f,subnet-020323a92b4d44e1e"
},
"VpcID": {
"Type": "String"
// "Default": "vpc-0ab885f61636987ee"
},
"LoadBalancerName": {
"Type": "String"
// "Default": "lb-test"
}
},
"Resources": {
"ECSService": {
"Type": "AWS::ECS::Service",
"Properties": {
// "Cluster": "cluster-test",
// "TaskDefinition": "arn:aws:ecs:ap-northeast-2:339...",
"LaunchType": "EC2",
// "ServiceName": "service-test",
"SchedulingStrategy": "REPLICA",
"DesiredCount": 1,
"LoadBalancers": [
{
// "ContainerName": "container-test",
"ContainerPort": 8000,
"LoadBalancerName": {
"Ref": "AWS::NoValue"
}
// "TargetGroupArn": "arn:aws:elasticloadbalancing:ap-northeast-2:339..."
}
],
"NetworkConfiguration": {
"AwsvpcConfiguration": {
"SecurityGroups": {
"Ref": "SecurityGroupIDs"
},
"Subnets": {
"Ref": "SubnetIDs"
}
}
},
"DeploymentConfiguration": {
"MaximumPercent": 200,
"MinimumHealthyPercent": 100,
"DeploymentCircuitBreaker": {
"Enable": true,
"Rollback": true
}
},
"DeploymentController": {
"Type": "ECS"
},
"ServiceConnectConfiguration": {
"Enabled": false
},
"PlacementStrategies": [
{
"Field": "attribute:ecs.availability-zone",
"Type": "spread"
},
{
"Field": "instanceId",
"Type": "spread"
}
],
"PlacementConstraints": [],
"Tags": [],
"EnableECSManagedTags": true
}
}
},
"Outputs": {
"ECSService": {
"Description": "The created service.",
"Value": {
"Ref": "ECSService"
}
}
}
}
```
2. **Health Check**
* Click `Next`, enter a stack name, then continue clicking `Next` until you can submit the service creation request.
* Navigate to the cluster page and open the service page. Click the button highlighted in red in the image below.
* Once the service is successfully created, all items highlighted in red in the image below will be marked as `healthy`.
#### 7. Completion
You can now access the ADM page by navigating to `:8000`, as shown below.
All settings are complete, and you can use A2 through the assigned DNS after deployment.
***
By following this manual, you can successfully deploy A2 on AWS. If you have any additional questions, please feel free to contact our support team.
# Deploying A2 OnPrem to GCP
Source: https://docs.aiderx.io/development/en/deployment-gcp
This guide explains how to deploy A2 OnPrem to Google Cloud Platform (GCP).
This guide describes how to deploy A2 using Google Cloud Platform (GCP)'s Compute Engine.
### Setting up GCP Compute Engine
#### 1. Prerequisites
You need to set up a GCP project and enable the Compute Engine API. This process can be easily performed in the GCP console.
#### 2. Creating an Instance
1. Navigate to `Compute Engine` > `VM instances` menu.
2. Click the `CREATE INSTANCE` button.
3. Configure the following settings:
* `Name`: Instance name (e.g., "a2-ce")
* `Region`: Choose a nearby region (e.g., "asia-northeast3 (Seoul)")
* `Machine configuration` > `Machine type`:
* Recommend CPU 8 vCPU, memory 16GB or higher. (e.g., e2-standard-8)
* Click the `CHANGE` button under `Boot disk`:
* `Operating system`: Select "Container Optimized OS"
* Verify that the auto-selected `Version` is "x86/64" architecture
* (optional) To preserve the disk permanently, select `Keep disk` under `SHOW ADVANCED CONFIGURATION` > `Deletion rule`
* click the `SELECT` button.
* `Firewall`: Check `Allow HTTP traffic` and `Allow HTTPS traffic`
* Expand `Advanced options`:
* `Networking` > `Network tags`: Enter "a2-ce"
* `Networking` > `Network interfaces` > Expand `default` > `External IPv4 address`: Select `RESERVE STATIC EXTERNAL IP ADDRESS`
* Enter "a2-ce" for `name` and click `RESERVE`
4. Click the "CREATE" button at the bottom of the screen to create the instance.
#### 3. Setting up Firewall Rules
1. Go to `VPC network` > `Firewall` menu.
2. Click the `CREATE FIREWALL RULE` button.
3. Configure the following settings:
* `Name`: Specify a name for the rule (e.g., "allow-a2-ce")
* `Targets`: Select `Specified target tags` and enter the previously used tag (e.g., "a2-ce")
* `Source filter`: Select `IPv4 ranges` and enter "0.0.0.0/0" (allows access from all IPs)
* `Protocols and ports`: Select `Specified protocols and ports`, check `TCP` and enter ports **"8000,8080"**
4. Click the "CREATE" button to create the rule.
#### 4. Deploying Docker Image
1. Connect to the instance using the SSH button in the GCP console.
2. Install docker compose
```sh theme={null}
curl -s https://gist.githubusercontent.com/kurokobo/25e41503eb060fee8d8bec1dd859eff3/raw/0d7cd29472f0eaa26ce424071456ad84b24fb318/installer.sh | bash
source ~/.bashrc
docker-compose version
```
3. Create a docker-compose.yml file:
```yml theme={null}
---
services:
a2-ce:
image: { TO_BE_REPLACED }
restart: unless-stopped
logging:
options:
max-file: "1"
max-size: "512m"
volumes:
- /data:/var/a2/data
ports:
- 8000:8000
- 8080:8080
```
4. Run docker compose:
```sh theme={null}
docker compose up -d
```
#### 5. Verifying the Service
1. Open a web browser.
2. Access `http://[YOUR_STATIC_EXTERNAL_IP]:8000`.
3. Verify that the service is running normally.
### Reference Images
* settings 1
* settings 2
* network
* firewall
***
By following this guide, you can successfully deploy A2 to GCP Compute Engine.
If you need additional configuration or optimization, please refer to the GCP documentation or contact our support team anytime.
# Ad Log Integration Guide
Source: https://docs.aiderx.io/development/en/log-integration-data-migration
This guide introduces methods for advertising log integration.
## Advertising Log Integration
To achieve effective ad modeling and metric tracking, **Advertising Log Integration** is essential. This integration can be performed through two methods: web-based and API-based. Each method allows the collection and analysis of logs for ad requests, impressions, clicks, and conversions. Below, we explain each approach.
### Method Using Web SDK
For web-based retail media, you can automatically handle ad requests and log integration (impressions and clicks) by following these steps:
1. Log in to **Admin** and navigate to the **Placement** menu.
2. Select the desired placement from the **Placement List** and click on **Get Placement Tag**.
3. Copy the **footer tag** provided on the page (see screenshot below) and paste it at the bottom of your web app's HTML source.
4. Insert the provided `` code where you want the ad to appear. You can modify the `a2plct1` part as needed.
Once set up, the logs for ad impressions and clicks will be automatically integrated. The conditions for each log transmission are as follows:
* **Ad Request Log**: The ad request log is recorded when the ad is ready to be displayed to the user, meaning the likelihood of the ad appearing on the screen has increased. Specifically, this log is sent when the user’s view approaches within about four times the height of the ad, just before the ad appears on the screen.
* **Impression Log (vimp)**: The impression log is recorded when the ad actually appears on the user’s screen and becomes visible. More specifically, it’s logged when at least 50% of the ad is visible on the screen for over one second. Compared to the ad request log, which logs when the ad is likely to appear, the impression log records when the ad is actually visible on the screen.
* **Click Log**: The click log is sent when the ad is clicked by the user. This captures the exact moment when the user interacts with the ad, allowing for the analysis of ad engagement performance.
With this type of log integration, you can gain a more accurate understanding of ad performance and make improvements to enhance ad efficiency effectively.
### Method Using API
The API-based advertising log integration method allows direct logging of various actions, such as ad impressions, conversions, and clicks. The A2 system tracks logs based on the `ext.ad_log` field in the Edge response data, and impression logs can also be integrated for in-depth ad performance analysis.
1. Click Logs
* Data sent when a user clicks an ad.
* Example
```bash theme={null}
curl --location 'http://localhost:/' \
--header 'Content-Type: application/json' \
--data '{
"type": "ad_log",
"action": "clk",
"ad_log": "YTU2ZDY2ZjctNDM4ZS00OTVjLWJiYTAtMjI4Mzk2MjQ0ZWVkfDA2NDI4NjYwLWY2NDMtNGVmNS05MzgzLTZjZmE1OGYxOGI2OXxjNTZkYzNiZi05MzVkLTRlZTYtYjFlZC1mMzFiZmMwMmJlOTF8YjM4M2M4YWYtZWUzZi00MDljLTlmOWYtODgxYTI4YWZjYmVjfDk3NGIwOGI4LTc1MjYtNDFkMC04MTg5LWQ4MTVkNTFlZGNlZnw"
}'
```
2. Conversion Logs
* Logs sent when a user completes a desired activity (conversion) after viewing an ad.
* Conversions can include, but are not limited to, the following activities:
* Product purchase
* Adding to cart
* App installation
* Service subscription
* Download
* Link click
* Content consumption for a certain period
* Example:
```bash theme={null}
curl --location 'http://localhost:/' \
--header 'Content-Type: application/json' \
--data '{
"type": "ad_log",
"action": "conv",
"ad_log": "YTU2ZDY2ZjctNDM4ZS00OTVjLWJiYTAtMjI4Mzk2MjQ0ZWVkfDA2NDI4NjYwLWY2NDMtNGVmNS05MzgzLTZjZmE1OGYxOGI2OXxjNTZkYzNiZi05MzVkLTRlZTYtYjFlZC1mMzFiZmMwMmJlOTF8YjM4M2M4YWYtZWUzZi00MDljLTlmOWYtODgxYTI4YWZjYmVjfDk3NGIwOGI4LTc1MjYtNDFkMC04MTg5LWQ4MTVkNTFlZGNlZnw"
}'
```
3. (Optional) Impression Logs
* Impression logs are not mandatory in A2, but are recommended for accurate metric measurement.
* Impression logs are sent when an ad is actually displayed to a user.
* It is recommended to measure whether an ad is displayed based on whether more than 50% of the ad is visible on the user’s screen for at least one second.
* If the above criteria cannot be met due to system constraints or other reasons, it is recommended to measure impressions using at least the same criteria.
* Example:
```bash theme={null}
curl --location 'http://localhost:/' \
--header 'Content-Type: application/json' \
--data '{
"type": "ad_log",
"action": "vimp",
"ad_log": "YTU2ZDY2ZjctNDM4ZS00OTVjLWJiYTAtMjI4Mzk2MjQ0ZWVkfDA2NDI4NjYwLWY2NDMtNGVmNS05MzgzLTZjZmE1OGYxOGI2OXxjNTZkYzNiZi05MzVkLTRlZTYtYjFlZC1mMzFiZmMwMmJlOTF8YjM4M2M4YWYtZWUzZi00MDljLTlmOWYtODgxYTI4YWZjYmVjfDk3NGIwOGI4LTc1MjYtNDFkMC04MTg5LWQ4MTVkNTFlZGNlZnw"
}'
```
***
I hope this guide helps with advertising log integration. If you have any further questions or need additional support, please feel free to contact us. Thank you.
# Monitoring: Prometheus Exporter Integration
Source: https://docs.aiderx.io/development/en/prometheus-exporter-monitoring
## A2 Monitoring Overview: Prometheus Exporter Integration
The A2 platform provides real-time monitoring metrics through the [Prometheus](https://prometheus.io) Exporter feature. By using Prometheus, you can easily view and manage key performance metrics via dashboards or alert settings, enabling continuous monitoring of the platform’s health. A2's Prometheus Exporter operates on port `29100` by default.
### Metrics by Namespace
The monitoring metrics provided by A2 are categorized by namespace, with each namespace offering different types of log and status information.
#### Ad and Service Event Logs
Metrics related to ad and service events can be found under the following two namespaces:
**ad\_log**: This namespace records data related to ad activities such as ad delivery, impressions, clicks, and conversions. It is useful for monitoring the performance of ad campaigns.
**event\_log**: This namespace tracks service event logs and includes user activities such as page views, purchases, likes, and cart additions. It can be used to analyze user behavior on the platform.
#### Monitoring Internal Modules (ADM, DSP, Edge)
The status and performance metrics of internal modules like ADM, DSP, and Edge are provided under the following namespaces:
**a2\_stats**: This namespace contains performance data for A2's internal modules, such as Edge's average response time, ad delivery volume, and ad request counts. Metric names follow the `a2_stats_*` format and are useful for assessing system performance and efficiency.
**a2\_error**: This namespace provides information on system errors, including HTTP errors and internal processing errors. It helps in identifying the status of errors and assists in troubleshooting.
### Using Prometheus Metrics
The data collected through Prometheus can be queried and viewed in real-time, allowing you to explore metrics under each namespace. For instance, `a2_stats_edge:req_total` represents the total number of requests for the Edge module, while `a2_error_edge:http_total` shows the total count of HTTP errors that occurred within the Edge module.
***
A2’s monitoring features can be used as needed, offering flexible data insights to help you manage your system effectively.
# Serving ADs
Source: https://docs.aiderx.io/development/en/serving-ad
Serving ADs with A2
## A2 Ad Request Guide
This guide provides instructions on how to retrieve ads for serving after creating ad campaigns, creatives, and placements, and completing ad setup on the A2 platform.
## Prerequisites
Before making ad requests, ad setup must be completed. Please refer to the following guide:
* [Getting started with A2: Preparation](/guides/get-started/en/preparation)
* [Getting started with A2: Basic Usage](/guides/get-started/en/basic-usage)
## Methods for Requesting Ads
There are two methods to request ads from the A2 platform:
1. Direct server API call
2. Using the Web SDK
### Direct Server API Call
To request ads by directly calling the server API, follow these steps:
**1. API Base URL**
* HTTPS: `https://{customer_id}.aiderx.app`
* To verify server accessibility, send a GET request to the following endpoint: `/healthcheck`
**2. Request Path**
* `/app/v0/ad/{tagid}`
* The `tagid` is the `id` value found in the `Placement Information` section on the details page, accessible via `Advertising > Placement > Placement List > (Click on Placement)`

**4. Detailed API Specification**
* An OpenAPI Specification page is provided to view detailed API specifications and test requests directly.
* Access it at the following URL:
* `https://{customer_id}.aiderx.app/docs`
* This page allows you to examine all parameters, request bodies, response formats, and send actual requests to the server for verification.
**5. API Test Request Example**
* Click `Test Request` on the right side of the page

* Enter the tagid value in `Path Variables`, set the `version` to `0.0.1` in the `Body`, and click `Send`
* Review the results

### Using the Web SDK
For detailed information on requesting ads using the Web SDK, refer to the "Using the Web SDK" section in the [Log Integration and Data Migration Guide](/development/en/log-integration-data-migration).
## Conclusion
This guide has introduced two methods for requesting ads from the A2 platform. Choose the method that best suits your needs: either direct server API calls or using the Web SDK.
For further assistance, you can reach out to the A2 support team through the following channels:
* Email: [a2support@aiderx.io](mailto:a2support@aiderx.io)
* Slack: [https://a2cloudsupporthub.slack.com](https://a2cloudsupporthub.slack.com)
* To join the Slack workspace, use this invitation link: [https://join.slack.com/t/a2cloudsupporthub/signup](https://join.slack.com/t/a2cloudsupporthub/signup)
# System Error Resolution Guide
Source: https://docs.aiderx.io/development/en/troubleshooting
Detailed explanation of troubleshooting methods for various errors occurring in the A2 system.
This document provides solutions to common issues that may arise when using A2. Users can use this document to easily check system settings and limitations, quickly diagnose issues, and maintain operational stability.
## Checking License Limits
A2 applies various limitations, such as API limits, based on the user’s license tier. To view the applied limitations and current usage, log in to the Admin page with an administrator account, click the **Settings** menu at the bottom of the right sidebar, and you will see a screen displaying the current settings and usage.
## Guide for Resolving No Content Responses When Calling Edge
If a **No Content** response is received when sending an ad request from the Edge(Supply Side Platform) to a media placement, it may indicate an issue with the assignment or settings of the placement. At least one active assignment must be published for the content to display correctly. Follow the steps below to ensure the placement is configured correctly and to avoid No Content responses:
1. Log in to the Admin page with the **Retailer Account** that created the placement.
2. Navigate to the **Placement** menu on the Admin dashboard.
3. Select the placement you want to check.
4. On the selected placement page, verify that there is at least one assignment marked as **Published**.
If the placement is not linked to any assignments, or if all linked assignments are inactive (e.g., if all campaigns registered in the media have exhausted their budgets or reached their end dates and thus have been marked as completed), the ad request will not be able to retrieve content, resulting in a No Content response. Ensure that each placement has active, published assignments linked to it for ads to display correctly.
## Troubleshooting in an On-Premise Environment
In an on-premise environment, you can directly access the server to diagnose and resolve issues. This section focuses on troubleshooting methods that can be performed by physically accessing the server. By analyzing local logs and other resources, you can respond more quickly and in greater detail.
### Supervisord
A2 uses [supervisord](http://supervisord.org) to manage processes.
If a Docker container is marked as `Unhealthy`, it indicates that there is an issue with one of the processes managed by Supervisord. In such cases, you can diagnose the problem by checking the logs recorded in `/opt/supervisord.log`. For example, if a specific process is marked as FATAL, it means that the process has exited and failed to restart. You can identify the exact cause of the issue by reviewing the logs.
For general process management, you can access supervisorctl as follows:
```bash theme={null}
root@5f2769832e02:/opt# supervisorctl -s http://localhost:23231 -u a2 -p a2
a2-adm-backend RUNNING pid 74, uptime 2 days, 5:13:37
a2-docs RUNNING pid 75, uptime 2 days, 5:13:37
a2-dsp RUNNING pid 76, uptime 2 days, 5:13:37
a2-edge RUNNING pid 77, uptime 2 days, 5:13:37
a2_sinker RUNNING pid 78, uptime 2 days, 5:13:37
event_stream RUNNING pid 85, uptime 2 days, 5:13:37
nginx RUNNING pid 96, uptime 2 days, 5:13:37
redis RUNNING pid 97, uptime 2 days, 5:13:37
vector RUNNING pid 98, uptime 2 days, 5:13:37
supervisor> restart
```
Key supervisord commands:
* **status**: Check the status of all processes.
* **start \**: Start a specific program.
* **stop \**: Stop a specific program.
* **restart \**: Restart a specific program.
* **tail \**: View the log of a specific program in real-time.
For more detailed commands, enter help or check the official supervisord documentation.
### Process Logs
A2 consists of the following major components, and their logs can be found at these paths:
1. ADM (Advertising Manager)
* /var/log/nginx.log: ADM frontend related logs
* /var/log/a2-adm-backend.log: ADM backend related logs
2. DMP (Data Management Platform)
* /var/log/a2-sinker.log: Data collection related logs
* /var/log/event\_stream.log: Event streaming related logs
* /var/log/redis.log: Event streaming related logs
* /var/log/vector.log: Log and metric collector related logs
3. Edge/DSP (Supply-Side Platform / Demand-Side Platform)
* /var/log/a2-edge.log: Edge related logs
* /var/log/a2-dsp.log: DSP related logs
4. Modeling
* /var/log/a2-train.log: Machine learning model training related logs
Please inquire via [Slack](https://a2cloudsupporthub.slack.com) with log snippets.
# Campaign creation and publication request processing by api
Source: https://docs.aiderx.io/development/tutorial/en/campaign-management
Describes how to create campaigns and handle approval requests by API
# Campaign Management
A campaign is an advertising activity unit that allows advertisers to execute specific ads and measure performance according to their set goals.
A2 provides the essential APIs needed to manage campaigns, including creating new campaigns, retrieving campaigns, and modify and deleting in existing campaigns, as well as APIs related to approvals for campaigns.
## Create Campaign
First, you need to create a campaign to ads.
When you create a campaign, you can set a number of settings, including the duration of the campaign, the budget to use, the bidding strategy, and the campaign goals.
```bash Create Campaign Example theme={null}
curl --request POST \
--url https://your_a2_service/campaigns \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '{
"name": "test campaign",
"description": "test campaign",
"start_date": "2025-04-12 16:47:03.773",
"end_date": "2025-05-13 16:47:03.773",
"goal": "impression",
"sub_goal": "maximize_volume",
"status": "okay",
"budget": "10000",
"bid_strategy": "bid_cap",
"owner_id": "{owner-user-id}"
}'
```
## Create Creative
Creating a campaign isn't enough to run an ad. You can prepare to run an ad by registering the creative that you want to show on the placement. Campaigns can have a variety of creative types, including images, video, native. However, if the creative in your campaign doesn't match the type of creative required by the placement, you won't be able to allocate.
```bash Create Creative Example theme={null}
curl --request POST \
--url https://your_a2_service/creatives \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '{
"name": "test creative",
"type": "banner",
"staatus": "inactive",
"width": 300,
"height": 100,
"banner": {
"img": "https://example.com/creative.png"
},
"cid": "{campaign-id}",
"owner_id": "{owner-user-id}"
}'
```
# Approvement of a Campaign
Once you've created a campaign, you can request to run it as an ad. The requested campaign will be reviewed based on own criteria, and if approved, it will begin running immediately.
## Request Publish
Once your campaign has been successfully created, you can request that your ad appear in placement. At this point, you must have at least one activated creative, and it must match the creative format of the placement.
```bash Create Allocation Example theme={null}
curl --request POST \
--url https://your_a2_service/allocations \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '{
"tagid": "{placement-id}",
"status": "pending",
"cid": "{campaign-id}",
"crid": "{creative-id}",
"owner_id": "{owner-user-id}"
}'
```
## Approve and Reject
The creatives or links used in the campaign may not meet your standards. At this point, you need to go through a review before you can approve. If the campaign is approved or rejected, you can update the results using the campaign update API. \\
You can also set the **last\_comment** to reply the reason for the rejection.
### Status Code
| code | description |
| - | - |
| pending | Initial state |
| requested | publish requested |
| published | published |
| rejected | Rejected |
| canceled | canceled |
| finished | finished |
```bash Update Allocation Example theme={null}
curl --request PATCH \
--url https://your_a2_service/allocations \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '{
"tagid": "{placement-id}",
"status": "published",
"cid": "{campaign-id}",
"crid": "{creative-id}",
"owner_id": "{owner-user-id}"
}'
```
# Metric of Campaign
Once your campaign is approved, the ad will start showing immediately. Campaign metrics are collected and managed for each ad served. This data can help to be more effective campaign strategy.
## Metric Analysis
You can see how your campaigns are performing by metric APIs for any timeframe, including daily, hourly, and more.
```bash Get Campaign Hourly Metric Example theme={null}
curl --request POST \
--url https://your_a2_service/metric/campaigns_hourly \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '{
"campaign_id": "{campaign_id}",
"tagid": "{placement-id}",
"from_datetime": "2025-03-14 16:47:03.773",
"to_datetime": "2025-04-13 16:47:03.773"
}'
```
# How to get access token for api usage
Source: https://docs.aiderx.io/development/tutorial/en/get-token
Describes how to get the access tokens you need to use A2's APIs.
### Access token
Access tokens are essential for using the A2 Platform's APIs. For security, access token must be attached to the API call of A2 Platform, otherwise you will get an authorization error.
You can use only one access token in A2.
#### Initial issuance of access token
The A2 starts with no access token issued. Therefore, if you want to integrate through the API, you need to issue an access token. The APIs is not available because the access token has not yet been issued, so you can issue it in ADM.
#### Regenerate access token by API
You can also change the access token as needed. This can be done through the API as well as ADM.
```bash Regenerate Access Token theme={null}
curl --request POST \
--url https://your_a2_service/settings/access_token \
--header 'Authorization: Bearer '
```
As soon as a new token is issued, the parts of the application that were linked using the previously issued access token will not work.
```json Response theme={null}
{
"access_token": {
"access_token": "",
"token_type": "Bearer"
},
"created_at": "2023-11-07T05:31:56Z",
"currency": "usd",
"external_channel_url": "",
"language": "en",
"tls_domain": "",
"tls_enable": true,
"updated_at": "2023-11-07T05:31:56Z",
"yield_optimization": {
"ceiling_cpm": 123,
"floor_cpm": 123,
"yield_roas_balance": 0.5
}
}
```
# Ads Integration with SDK
Source: https://docs.aiderx.io/development/tutorial/en/sdk-usage
This guide introduces methods for requesting ads and advertising log integration.
# Ads Integration
There are two ways to request ads on the A2 platform: by calling the server API directly and by using the web SDK.
Using the server API directly has the advantage of giving you direct control over most aspects of the ad request, but it's a bit more complicated because you'll need to develop both the process of requesting and serving ads and integrating logs. We provide a web SDK to make it easy and convenient to apply these pieces.
## Ads Request
### By Web SDK
The Web SDK is a package that can be embedded into web page that contains a placement. It is configured to allow you to request ads with easy setup. To use the Web SDK, you need to embed the SDK in a web page.
The insertion of the SDK is done by following these steps:
1. Log in to ADM and navigate to the **Placement** menu.
2. Select the desired placement from the **Placement List** and click on **Get Placement Tag**.
3. Copy the footer tag provided on the page (see screenshot below) and paste it at the bottom of your web app's HTML source.
4. Insert the provided `` code where you want the ad to appear. You can modify the `a2plct1` part as needed.
Once set up, the ad will be automatically integrated.
### By Server APIs
You can use Serving an ad API to get ads. To learn more about the serving an ad, check this [Serving ADs](/development/en/serving-ad).
## Ads Log Integration
### By Web SDK
Log integration is automatic with the web SDK. The conditions for each log transmission are as follows:
* **Ad Request Log**: The ad request log is recorded when the ad is ready to be displayed to the user, meaning the likelihood of the ad appearing on the screen has increased. Specifically, this log is sent when the user’s view approaches within about four times the height of the ad, just before the ad appears on the screen.
* **Impression Log (vimp)**: The impression log is recorded when the ad actually appears on the user’s screen and becomes visible. More specifically, it’s logged when at least 50% of the ad is visible on the screen for over one second. Compared to the ad request log, which logs when the ad is likely to appear, the impression log records when the ad is actually visible on the screen.
* **Click Log**: The click log is sent when the ad is clicked by the user. This captures the exact moment when the user interacts with the ad, allowing for the analysis of ad engagement performance.
With this type of log integration, you can gain a more accurate understanding of ad performance and make improvements to enhance ad efficiency effectively.
### By Server APIs
The API-based advertising log integration method allows direct logging of various actions, such as ad impressions, conversions, and clicks. The A2 system tracks logs based on the ext.ad\_log field in the Edge response data, and impression logs can also be integrated for in-depth ad performance analysis.
# A2: Aider for Advertising
Source: https://docs.aiderx.io/guides/about-a2/en/a2-introduction
A2 is a **Retail Media Platform (RMP)** designed to help efficiently manage and operate advertisements on online shopping malls or retail sites. Through this platform, site owners can set up and manage various ad placements, and collaborate with advertisers to run effective ad campaigns.
## A2 Overview
The above image shows an example of ad management using A2. This site has three main ad locations:
1. Top video banner
2. Right-side banner
3. Ads within product listings
In A2, these locations where ads are displayed are called **placements**. Placement managers can configure the following settings for each ad placement:
* Types of ads that can be displayed
* Ad sizes
Ads are operated in **campaign** units. Each campaign has the following characteristics:
* Includes one or more **creatives**
* Campaign managers can set:
* Ad display period
* Ad budget
* Ad target metrics
* Can be **allocated** to desired placements
* Ad display proceeds through approval by each placement manager
For example, when creating a campaign to promote a new summer product line, the campaign manager can request to allocate a campaign with video creative to the top banner, and a campaign with image creative to the side banner and in-product list ads. By using creatives that match the characteristics of each placement, ad effectiveness can be optimized.
A2 provides various technologies and features to make this ad operation even more effective:
* **Utilization of machine learning technology**: A2 uses the latest machine learning technology to display the most suitable ads for each placement.
* **Utilization of first-party data**: By integrating user click, purchase, and conversion data along with retail catalog items with A2, more sophisticated targeting and efficient ad creative generation becomes possible.
* **Data-driven insights**: A2 can analyze the performance of each campaign and placement. For example, you can compare and analyze the click-through rate of side banner placements, the conversion rate of campaigns within product listings, etc., to determine which forms of advertising are most effective. This allows advertisers to focus their budget on the most efficient placements and creatives.
Through these features, A2 functions as an intelligent advertising platform that utilizes data and technology, beyond a simple ad management tool. Advertisers can reach more accurate target customers, and site operators can optimize ad revenue without compromising user experience.
A2 offers three types of accounts:
1. **Administrator**: Has full permissions of both retailer and advertiser accounts, budget allocation, and system configuration.
2. **Retailer**: Placement management, placement analysis, allocation approval
3. **Advertiser**: Campaign management, campaign analysis, allocation requests
You can systematically operate the platform by issuing appropriate types of accounts according to specific needs. For example, administrators who oversee the advertising strategy for the entire site, retailers who manage ads on specific placements, and external advertisers who directly promote their products can each utilize permissions and features tailored to their roles. Customers who wish to operate A2 conveniently without distinguishing between retailer and advertiser accounts can simply use an administrator account.
In summary, A2 provides the following functions:
1. **Efficient Ad Management**
* Integrated management of various ad placements in one place
* Improved ad operation efficiency
2. **Flexible Campaign Settings**
* Free setting of budget, period, creative, etc.
* Support for customized campaign operation
3. **Transparent Performance Analysis**
* Provision of real-time click, impression, conversion logs
* Transparent analysis of ad performance possible
4. **Personalized Ad Delivery**
* Customized ad delivery through user log integration
* Maximization of ad effectiveness
## Detailed Feature List
1. **Placement Management**
* Management of displayed campaigns
* Setting of ad types and sizes
* Provision of Web SDK (for ad display and log integration)
* Performance analysis by placement
2. **Campaign Management**
* Setting of display creatives, period, budget
* Campaign performance analysis
* Creative management (image upload, display approval, etc.)
3. **Account Management**
* Creation and management of accounts by permission (placement management, campaign management, etc.)
* Budget allocation by advertiser account
4. **Data Utilization**
* User information integration (gender, age, etc.)
* User activity log integration (purchases, conversions, clicks, etc.)
***
A2 is a comprehensive platform that can efficiently manage the entire process of ad operation. It supports smooth collaboration between administrators, retailers, and advertisers, and enables systematic performance analysis through API ad requests and log integration. Additionally, by providing user-customized ads through personalized ad settings, it can maximize ad effectiveness.
Upgrade your online advertising operation to the next level with A2!
# A2 OnPrem
Source: https://docs.aiderx.io/guides/about-a2/en/a2-vs-saas-vs-inhouse
Comparing A2, SaaS, and in-house development.
## 1. A2 OnPrem's Price Competitiveness
### Diverse Pricing Structure
A2 OnPrem, as a on-premise product, offers different pricing structures based on the deployment environment.
| | Self-hosted | Private Cloud | Public Cloud |
| - | - | - | - |
| License | ✓ | ✓ | ✓ |
| Operation & Maintenance | ✓ | Optional\* | Optional\* |
| Infrastructure | - | - | Pay-as-you-go\* |
* *Ad revenue sharing fees are flexible depending on the pricing plan.*
If you already have a self-hosted server or private cloud infrastructure, you can minimize A2 OnPrem's maintenance costs. When using public cloud services, infrastructure costs are billed proportionally to usage, ensuring a transparent pricing structure.
Should you require maintenance support from A2 experts, we offer additional services including basic operations, incident handling, and product upgrades. This is a valuable option for companies with limited in-house development resources or those aiming for timely deployment and stable operations.
### Plans with Different Pricing Structures
A2 OnPrem offers several paid plans to meet diverse customer needs: Starter, Professional, and Enterprise.
* **Starter**: Accessible with a fixed annual license fee.
* **Professional**: No annual license fee; charges based on a commission of the client's ad revenue.
* **Enterprise**: Offers a more competitive pricing structure compared to Professional, suitable for large-scale retail operations.
### Total Cost of Ownership Differs
As a on-premise product, A2 allows you to reap the benefits of technology investment. Over time, various tangible and intangible assets accumulate, effectively reducing the total cost of ownership:
* Customer data and ML models built with A2
* Advertising performance data
* Machine learning system integration and operational expertise
## 2. Price Comparison: A2 OnPrem vs. 3rd-Party SaaS Solutions and In-House Development
A2 reduces the implementation costs and time required for in-house development. In the long term, it offers competitive maintenance costs compared to SaaS and the benefits of technology investment, providing optimized value for clients.
| | SaaS | In-House Development | A2 OnPrem |
| - | - | - | - |
| Initial Investment | **Low** | High | **Low** |
| Implementation Time | **Short** | Requires significant time for specialized personnel and infrastructure setup | **Short** |
| Maintenance Cost | **Low** | High costs for maintaining specialized infrastructure personnel | **Low** |
| Long-term Costs | High long-term cost burden due to revenue-based pricing | **Low long-term maintenance costs** | **Competitive long-term costs compared to SaaS** |
| Customization | Difficult | **High flexibility** | **High flexibility** |
| Technology Investment | - | **Data internalization/technical independence** | **Data internalization/technical independence** |
# Account & Budget
Source: https://docs.aiderx.io/guides/about-a2/en/account-and-budget
Detailed guide on account types and budget allocation.
### Account Types
A2 offers three types of accounts:
1. **Administrator**: Has full permissions of both retailer and advertiser accounts, budget allocation, and system configuration.
2. **Retailer**: Placement management, placement analysis, allocation approval
3. **Advertiser**: Campaign management, campaign analysis, allocation requests
You can systematically operate the platform by issuing appropriate types of accounts according to specific needs. For example, administrators who oversee the advertising strategy for the entire site, retailers who manage ads on specific placements, and external advertisers who directly promote their products can each utilize permissions and features tailored to their roles. Customers who wish to operate A2 conveniently without distinguishing between retailer and advertiser accounts can simply use an administrator account.
### Budget
#### What is A2 Advertising Budget?
Advertising budget refers to the amount you wish to spend on exposing your advertising campaigns to people. When an administrator or retailer allocates a budget to an advertiser account, the advertiser can use it for their campaigns.
#### How to Allocate Budget
From an administrator or retailer account, navigate to the "Advertiser List" menu and click the edit information button of the advertiser to whom you want to allocate budget.
```html theme={null}
```
### Credits
Credits are free funds that allow advertisers to run advertising campaigns without paying actual cash.
Credits serve as promotional or compensatory amounts that advertisers receive without additional cost, which can be used for purposes such as new registration rewards, special promotion participation, loyal customer rewards, compensation for system errors, and trial experiences.
The credit system provides advertisers with opportunities to experience the service without risk and to try more campaigns.
More flexible system operation is possible by managing budgets and credits separately.
Credits can be granted in the same way as budgets.
# Allocation
Source: https://docs.aiderx.io/guides/about-a2/en/allocation
Introduction to Allocation
## A2: Allocation Guide
### What is Allocation?
"Allocation" refers to the process required to display an advertising campaign on a specific placement. Advertisers can create campaigns and request allocation for the desired placements. The retailer, who manages the placements, reviews and approves the requests before the campaigns are finally displayed.
> Depending on account permissions, campaigns can also be displayed without retailer approval.
**Purpose of Allocation**
* Establishing clear roles and responsibilities between advertisers and retailers.
* Providing management features for ad placement and display.
* Controlling campaign exposure and preventing fraudulent activities, such as ad fraud or abuse (Ad Fraud/Abusing).
This document explains the step-by-step process of requesting and approving allocations to support successful ad campaign operations.
***
### Requesting and Approving Allocation
#### Approving Allocation
1. Log in with a **retailer account** to review and manage allocation requests from advertisers.
2. When a new allocation request is submitted, retailer accounts will receive a notification.
3. Go to the **Campaign Allocation Status** section under **Placement Information** to review the requested campaigns.
4. Review details such as campaign information, activated creatives, activated allocations, and campaign performance.
5. After reviewing the request, click the **Approve** button if the request is suitable.
* Approved campaigns will be displayed on the selected placements immediately.
6. If the request is deemed unsuitable, click the **Reject** button.
***
### Detailed Settings
#### Frequency Capping Settings
When requesting allocation, advertisers can configure the exposure frequency of their campaigns. This setting is essential to prevent overexposure of ads to the same user, which could cause user fatigue, and to block repetitive clicks or intentional abuse, thereby improving campaign efficiency.
There are two main ways to configure Frequency Capping:
**1. Daily Impression Limit**
* **Function:** Limits how many times the same user sees the campaign within a specified period.
* **Example:** Setting "2 times in 3 days" ensures a user sees the ad a maximum of 2 times over 3 days.
* **Use Case:** Prevents excessive repetition, reduces user fatigue, and enhances ad efficiency.
**2. Click Limit**
* **Function:** Ensures that once a user clicks on the ad, it will not be shown to them again.
* **Behavior:** Varies depending on the campaign's objective.
* **Click/Conversion Goal:** After one click, the campaign will no longer be shown to that user.
* **Impression Goal:** After the campaign is displayed once, it will no longer be shown to the same user.
* **Use Case:** Helps prevent abuse and ensures efficient use of advertising resources.
By combining daily exposure limits and click limits appropriately, advertisers can maximize ad effectiveness and improve the user experience.
***
This document aims to explain the allocation process and guide users in managing their advertising campaigns effectively.
# Audience Targeting
Source: https://docs.aiderx.io/guides/about-a2/en/audience-targeting
Audience Targeting Guide
## Audience Targeting Guide
### What is Audience Targeting?
Audience targeting refers to the process of defining specific users and showing them advertisements at the right time to ensure the success of an advertising campaign. The A2 platform helps advertisers deliver effective messages to their target audience, maximizing campaign performance and amplifying the impact of their ads. Additionally, it provides an API to efficiently process and upload large amounts of data, enabling advertisers to manage their audience directly.
With its Automatic Selection feature, the A2 platform uses machine learning models to analyze user behavior data and automatically identify the optimal audience. This allows advertisers to target suitable user groups with high accuracy, even without explicitly defining their targets.
#### Custom Audience Targeting
By default, machine learning algorithms analyze advertisers' campaign objectives and user data to identify potential customers predicted to generate high performance, but advertisers can specify which user groups will see their ads by selecting audience segments through the Advanced Targeting option. Through this feature, advertisers can develop precise campaign strategies targeting clearly defined custom audience groups, and create and designate attributes and segments directly as needed.
Advanced Targeting is particularly effective when customized targeting strategies for specific user groups are required, or when detailed adjustments are necessary according to campaign requirements.
### Key Terminologies
The A2 platform uses four key concepts—Audience, Audience Attribute, Audience Attribute Value, and Audience Segment—to effectively implement audience targeting. These elements can be flexibly defined according to user requirements, offering a high degree of targeting freedom.
#### Audience
An audience refers to the specific users an ad campaign aims to reach. The audience is characterized by predefined attributes and their corresponding values, enabling advertisers to target specific user groups effectively.
#### Audience Attribute
An audience attribute defines characteristics of a specific user.
**Example**: `Age`, `Gender`, `Interest`.
#### Audience Attribute Value
Audience attribute values are specific possible values of each attribute.
**Example**: Values for the `Age` attribute might be `20s`, `30s`.
#### Audience Segment
An audience segment is a concept used to define and manage specific groups of audiences for an ad campaign. It represents a group of users who will be exposed to the ads. Audience segments are used to separate and subdivide various audience groups according to the campaign's goals, ensuring that campaigns are delivered to the right users to maximize advertising efficiency.
Audience segments are typically created based on user characteristics, such as age, gender, interests, and location. The A2 platform provides an intuitive and flexible way to configure audience segments using attributes and a list of permissible values for those attributes.
For an audience to be included in a specific segment, its attribute values must match the permissible value list defined in the segment. This allows advertisers to subdivide user groups and precisely target them according to campaign goals.
**Example**: If the `Age` attribute has values \[`20s`, `30s`] and the `Interest` attribute has values \[`Sports`, `Music`, `Movies`], users who are in their `20s` or `30s` and have an interest in any of `Sports`, `Music`, or `Movies` would be included in the segment.
### How to Add Audience / Audience Attribute / Audience Segment
Let's set up audience targeting for the "Healthy Lifestyle Deals" campaign. Follow the steps below to define audience attributes, segments, and register audiences.
#### Add Audience Attributes
First, define the audience attributes to be used in the campaign. In this example, we use the following attributes:
* **Age (age)**: 20s, 30s, 40s, 50s
* **Gender (gender)**: M (Male), F (Female), UNKNOWN
* **Interests (interests)**: travel, fashion, music, fitness, mindfulness, nutrition
#### Register Audiences
Based on the attributes defined above, register an audience. For example, create an audience for "Males in their 40s who are interested in travel, mindfulness, and nutrition."
#### Register Audience Segments
Create an audience segment to target a specific group of users. In this example, use the following settings to create a segment:
* **Segment Name**: `40-50s-wellbeing-men`
* **Target Attributes**:
* **age**: `40s`, `50s`
* **gender**: `M`
* **interests**: `fitness`, `mindfulness`, `nutrition`
#### Assign Segment to Campaign
Finally, assign the segment (`40-50s-wellbeing-men`) created above to the "Healthy Lifestyle Deals" campaign. This ensures that the campaign targets males aged 40-50 who are interested in wellbeing-related topics.
### Bulk Data Upload Guide
You can quickly and efficiently register or delete large sets of audience data using the API.
[Go to Bulk Registration API Reference Documentation](https://aiderx.io/a2-api-specification#tag/Audience-Bulk-API)
# Campaign
Source: https://docs.aiderx.io/guides/about-a2/en/campaign
Introduction to Campaign
### A2: Campaign Guide
A campaign is an advertising activity unit that allows advertisers to execute specific ads and measure performance according to their set goals. Through campaigns on the A2 platform, various advertising goals can be efficiently achieved, and goals can be continuously optimized based on detailed performance data.
#### Campaign Goals
Campaign goals can vary depending on the performance indicators desired by the advertiser. Each goal serves as an important criterion for measuring advertising performance.
* **Impressions**: Aims to show the ad to as many people as possible. Useful for increasing brand awareness.
* **Clicks**: Sets a goal for how many clicks the ad receives. Click goals are effective in encouraging users to explore more information about the ad.
* **Conversions**: Measures how many users complete the desired action (e.g., purchase, sign-up) through the ad. Conversion goals are important indicators for evaluating the final performance of the ad.
#### Common Settings
When setting up a campaign, you can specify the details of the campaign through the following items. This allows you to clearly set the advertising budget, target, schedule, etc.
* **Name**: The name of the campaign. It is recommended to write it clearly for easy distinction during management and analysis.
* **Description**: Briefly summarizes the campaign's goals, target, and strategy. This allows the campaign's purpose to be shared within the team.
* **Budget**: The total advertising budget allocated to the campaign. The budget affects the frequency and duration of ad exposure.
* **Campaign Period**: Sets the start and end dates when the campaign will be active. Period settings allow for effective budget distribution and ad execution at the desired timing.
#### Impression Goal: Three Refined Methods
A2 platform offers the following three refined methods to help advertisers achieve their impression (awareness) goals. These options allow for more specific strategies and address various needs, from brand awareness to cost efficiency.
1. Guaranteed Impressions (Exposure Guarantee)
> “We need to ensure XX million impressions within a specified period!”
* Configuration
* Total number of impressions
* Concept
* An advertising product that guarantees a fixed number of impressions, within a set time and budget.
* For example, you could request 1 million guaranteed impressions over two weeks, and the A2 platform will ensure those impressions are fully delivered.
* Key Scenarios
* Brand/New Product Launch Events: “We need concentrated exposure for the next two weeks to ensure our new product really catches the eye.”
* Awareness First: When factors like clicks or conversions are less important than “How many times the ad is actually shown.”
2. Cost-Efficiency Optimization (Target CPM Deal)
> “We have a limited budget and want to avoid excessively high CPM.”
* Configuration
* Target CPM
* Concept
* Advertisers set a preferred CPM target (e.g., 5,000 KRW). The system then automatically optimizes to maintain that approximate CPM level while maximizing impressions within the budget.
* Key Scenarios
* Campaigns focused on cost efficiency: “Our seasonal marketing budget isn’t that large, and we want to secure sufficient impressions at a reasonable CPM.”
* Prevent unnecessary high bids: Keeps CPM from skyrocketing by controlling a fixed target range, optimizing exposure within that threshold.
3. Impression Efficiency Optimization (Max Reach)
> “Use up the given budget within a set period and get as many impressions as possible!”
* Configuration
* Bid ceiling (optional)
* Concept
* Provide a total budget (e.g., 10 million KRW) and a campaign duration (e.g., 30 days). The system then ensures the budget is spent consistently over that period, aiming to maximize impressions.
* Key Scenarios
* Long-term campaigns: E.g., launching a new app/service over a month or more to build brand recognition steadily.
* Planned budget consumption: “We don’t want to leave any budget unused by the end date, and we’d like to spread the ad delivery for broader exposure.”
These refined methods help advertisers tailor their campaigns toward specific objectives—be it guaranteed brand visibility, cost-focused optimization, or maximum reach over a given timespan.
#### Campaign Detail Screen Description
The campaign management screen provides various information to check the status and performance of the set campaign in real-time.
* **Metrics**: Provides key campaign metrics for the last 3 days in graphs and figures. This allows you to evaluate how well the campaign is achieving its set goals. Key metrics include the number of impressions, clicks, and conversions.
* **Campaign Information**: Displays basic information such as the campaign owner, name, budget, goals, and schedule. This information is based on the input during campaign setup and allows for easy verification of the overall campaign settings.
* You can click the `Edit Campaign` button on the right to modify the campaign information.
* **Audience Targeting**: This is the section where you set the audience to target for the campaign. [Go to Audience Targeting Guide](/guides/about-a2/en/audience-targeting)
* Advanced Targeting: By default, the automatic learning model targets campaigns, but by enabling the advanced targeting option, you can manually select audience segments. This feature allows you to develop precise campaign strategies targeting clearly defined audience segments.
* **Creative List**: Shows the list and status of each ad creative included in the campaign. You can check the type, name, and status of each creative and create or delete them.
* **Allocation**: Displays information about the placements and targeted ad positions assigned to the campaign. Placement information is a crucial factor for improving campaign efficiency, allowing for better performance by assigning ads to appropriate placements.
Through this information, you can comprehensively understand the campaign's setup status and real-time performance, and adjust each metric and setting as needed to more effectively achieve the campaign's goals.
# Creative
Source: https://docs.aiderx.io/guides/about-a2/en/creative
Introduction to Creative
## A2: Creative Guide
### What is Creative?
Creative is the advertising content that is actually exposed in a campaign, which users encounter as visual or media elements. On the A2 platform, various forms of creatives can be used to compose advertisements, and each creative is utilized according to specific goals and purposes. The appropriate selection of creatives greatly impacts advertising performance, and each creative contributes to increasing user attention and achieving campaign goals.
#### Types of Creatives
The A2 platform supports various types of advertising creatives, and each creative can be selected according to its purpose and format.
##### Banner: Image
Banner ads are the most common type of creative that uses visual images to attract user attention. They consist of images of a specified size and can link to a specific page when clicked.
* **URL Link**: You can set the address (URL) to navigate to when the creative is clicked, directing users to the specified page upon clicking the ad. (Optional)
* **Image Upload Options**:
* **URL**: By entering the image URL, the A2 platform can download and use the image. This allows for easy registration of creatives using just the URL without directly uploading the image file.
* **Media Library**: You can use images previously uploaded to the A2 platform's media library.
* **Cloud CDN**: This feature is under preparation and will allow for direct upload and management of creative images to the CDN in the future.
* **Image Size**:
* Users can directly input the size of the ad image and adjust it to the desired specifications.
* Additionally, you can easily set standardized sizes by selecting from **image size templates**.
##### Video
Video creatives deliver advertising messages through videos, providing richer content that can leave a strong impression on users. Like a banner creative, they also consist of a specified sized video and can link to a specific page when clicked.\
The video creative can be skipped by the ad viewer even before the ad has played to the end, depending on the settings of the assigned placement.\
Depending on the type of placement, the registered video creative may not be approved when requesting, and when posted, it will be published according to the [VAST](https://iabtechlab.com/standards/vast) format with the settings of the allocated placement.
###### Key Terminologies
* **Linear Ads**: The type of ad that appears before, during, or after the video content, depending on the placement.
* **Non-Linear Ads**: The type of ad that appears above some area of the viewed video content.
###### Key Attributes of Video Creatives
* **Linear**: You can set the impression type for your ads to linear or non-linear.
* **URL Link**: You can set the address (URL) to navigate to when the creative is clicked, directing users to the specified page upon clicking the ad. (Optional)
* **duration**: You can set the duraiton of video ads' playtime.
* **Image Upload Options**:
* **URL**: By entering the image URL, the A2 platform can use the video directly. This allows for easy registration of creatives using just the URL without directly uploading the video file.
* **Media Library**: You can use videos previously uploaded to the A2 platform's media library.
##### Native
Native creative is a method that utilizes content provided by the customer's service as advertising material. By matching the format of content that users see, it appears as if it's a natural part of the content, thereby reducing the boundary between advertising and content. This helps enhance advertising effectiveness without disrupting the user experience.
When catalog items are integrated through the first-party data API, they can be selected when creating native-type creatives.
When delivering ads with native creatives, information linked to catalog items is transmitted, allowing them to be configured in the same format as the service's own content.
##### Product-Based Creative Auto Generation
You can **automatically retrieve product information** from your registered **products** when creating **ad creatives**, allowing you to produce creative assets **more quickly and easily**.
* By automatically fetching **product images**, **product names**, **discount rates**, and **metafield information** (e.g., benefits, event details), you can **reduce the need for separate image or text uploads**.
* In addition to native ads, this feature supports the creation of **basic banner ads, video ads**, and more, helping you **maintain consistency between your ads and product information** while also **improving operational efficiency**.
With this feature, marketers and platform administrators can **generate ad creatives from registered product data** with only **a few clicks**, making it easier to **seamlessly connect content and advertising**.
#### Templates
The A2 platform provides pre-made ad templates of various sizes and specifications to reduce the hassle of creating creatives and maintain consistent sizes.
##### Size Specifications
* **IAB Specifications**: The platform pre-registers the specifications defined by the IAB (Interactive Advertising Bureau), the global digital advertising standard. This allows advertisers to easily select standardized sizes for creatives, and for banner ads, use IAB-compliant templates to create creatives suitable for various placements and devices.
* **Custom Templates**: Users can register their desired size specifications as templates. This allows for easy setting of size specifications tailored to specific needs, which can be conveniently reused in the future.
Additional custom template options allow for easy setting of sizes and formats tailored to the needs of individual campaigns.
# First-Party Data
Source: https://docs.aiderx.io/guides/about-a2/en/first-party-data
A2 advertising platform precisely measures advertising performance based on first-party data and automatically optimizes targeting and bidding strategies.
## A2: First-Party Data Guide
As the digital advertising environment rapidly evolves, the **importance of first-party data** continues to grow.\
Particularly in retail media, the ability to implement sophisticated targeting and personalized advertising by **utilizing customer and product data directly collected by retailers** is becoming a key advantage.\
The industry emphasizes that the main driver of retail media growth lies in targeting purchase intent moments based on first-party data. [Reference](https://www.brandbrief.co.kr/news/articleView.html?idxno=7612)\
Moreover, with the phasing out of third-party cookies, advertising models centered on first-party data are gaining more attention,
and retailers are focusing on developing customized advertising campaigns using their own data.
A2 provides a platform that organically utilizes first-party data throughout advertising operations in line with these environmental changes.
Advertisers can easily use the following three first-party data integration features through A2:
* **Audience Data Integration**: Creating segmented user groups based on customer attributes and interests
* **Catalog Item Integration**: Converting product information into ad creatives automatically to improve operational efficiency
* **User Activity Log Integration**: Conversion-focused targeting and automatic bid optimization based on actual behavioral data
The A2 platform combines these three types of data to achieve performance-driven advertising beyond simple impression-based advertising.
***
### 👥 Audience Data Integration: The Beginning of Precise Targeting
Audience targeting means **defining specific user groups** and **displaying ads to them at appropriate times** for successful advertising campaigns.
The A2 platform supports the integration of first-party audience data collected directly by advertisers.
Advertisers can define audiences based on various attributes such as age, gender, and interests, organize them into segments, and link them to desired campaigns.
It also provides APIs for efficiently managing audiences by easily processing and uploading bulk data.
By default, A2 analyzes campaign objectives and user data through machine learning algorithms to automatically identify potential customers predicted to perform well.
Additionally, advertisers can use **Advanced Targeting** features to directly select specific segments or create **custom audience groups** by combining user attributes and values.
Advanced targeting is particularly effective when **precise campaign strategy development** is needed, or when targeting **specific user groups that require detailed adjustments**.
> For detailed information about audience registration and segment configuration, please refer to:\
> [Go to Audience Targeting Guide](/guides/about-a2/en/audience-targeting)
***
### 🛒 Catalog Item Integration: Converting Product Information into Ad Assets
A2 provides functionality to integrate **retailers' product catalog data as first-party assets**,
making it easy to use them as advertising materials.
This feature can **dramatically reduce the ad registration process** by quickly and easily reflecting product information in campaigns.
Using integrated catalogs offers the following benefits:
* **Real-time Product Information Integration**\
Automatically sync retailers' product information to A2, ensuring that the latest data on inventory, pricing, and product descriptions is always reflected in ads. This allows customers to access reliable ad information while reducing the update burden on ad operators.
* **Easy Native Ad Creation**\
Register integrated catalog items as ad creatives (native type) with one click, supporting efficient ad setup without the need for additional image uploads or data entry.
* **Natural Ad Display Similar to Regular Products**\
Ad creatives are integrated with actual retail product data, appearing naturally like regular products in the shopping mall. User experience is enhanced by maintaining consistency in product images, prices, reviews, and other information.
* **Maximized Advertising Operation Efficiency**\
Advertisers can easily create multiple product ads using pre-registered catalogs, reducing campaign setup time and minimizing errors.
> For detailed information about catalog item integration, please refer to:\
> Go to Catalog Item Integration Guide(TBW)
***
### 📊 User Activity Log Integration: Conversion-Focused Performance Optimization
A2 supports the integration of **User Activity Logs** separate from ad logs
to precisely measure advertising performance and automatically optimize targeting and bidding strategies.
Ad Log is essential for tracking and optimizing the performance of advertisements.
In contrast, user activity logs collect **actual behavioral data such as searches, product views, cart additions, and purchases
performed by customers on websites or apps**, and can be obtained for **all users** regardless of ad clicks.
Integrating this first-party user data with A2 offers the following benefits:
* **Accurate Conversion Tracking**\
Precisely evaluate campaign performance by directly tracking whether conversions occurred after ad clicks.
* **Enhanced Personalized Targeting**\
Enable more sophisticated personalized advertising based on actual behavior, such as categories of interest, recently viewed products, and search terms.
* **Strengthened Behavior-Based Retargeting**\
Flexibly configure retargeting strategies based on various conditions, such as users who added items to cart but abandoned, or users who repeatedly viewed specific brands.
* **Automated Learning and Optimization of Conversion Models**\
A2 prioritizes targeting users with high conversion potential and automatically adjusts bidding strategies in real-time based on collected behavioral data.
The main types of user activity events supported by A2 are:
| Type | Description |
| - | - |
| ITEM\_VIEW | Product Detail View |
| ADD\_CART | Add to Cart |
| PURCHASE | Purchase Complete |
| PAGE\_VIEW | Specific Page Visit |
| SEARCH | Retail Search Activity |
*Event types can be customized according to customer requirements.*\
*e.g., `FAVORITE_ADD`, `REVIEW_SUBMIT`, `LIKE_CLICK`, etc.*
> For detailed information about user activity log integration, please refer to:\
> Go to User Activity Log Integration Guide(TBW)
***
### Conclusion
A2 is an integrated first-party data advertising platform centered on audience information, product data, and user activity logs.
Through this integrated structure, advertisers can expect the following benefits:
* Accurate target setting and detailed segment configuration
* Fast and natural ad creative production based on product information
* Conversion-focused automatic bid optimization based on behavioral data
* Development of sustainable advertising strategies without third-party cookies
By integrating first-party data with A2, you can achieve both **higher advertising revenue** and **customer satisfaction**.\
Start data integration now and experience A2's flexible and precise first-party based advertising operations.
# Media Library
Source: https://docs.aiderx.io/guides/about-a2/en/media-library
The media library feature is introduced here.
### A2: Media Library Guide
The A2 platform offers media management features that allow users to efficiently run advertising campaigns.
Users can upload and serve creative images stored on their local devices to the A2 platform, enabling easy management of advertising content and quick implementation into campaigns.
#### A2 Cloud: Enhanced Serving with CDN Functionality
**A2 Cloud** supports fast global delivery of uploaded advertising images through **CDN (Content Delivery Network)** functionality with [AWS CloudFront](https://aws.amazon.com/cloudfront/).
This allows advertisers to distribute their content more broadly and quickly.
The CDN functionality of A2 Cloud is provided **at no additional cost during the free trial period**.
#### Supported Formats and Size Limits
* **Supported File Types**:
* image/jpeg (.jpg, .jpeg)
* image/png (.png)
* image/gif (.gif)
* image/bmp (.bmp)
* image/webp (.webp)
* image/heic (.heic)
* image/tiff (.tiff)
* video/mp4 (.mp4)
* video/mpeg (.mpeg)
* **File Size Limit**: Up to 250MB
#### How to Upload Media
# Placement
Source: https://docs.aiderx.io/guides/about-a2/en/placement
Introduction to Placement
## A2: Placement Guide
### What is a Placement?
A "placement" refers to a specific space or location on a platform where advertisements are displayed.\
Placements are crucial for managing ad inventory and connecting campaigns with appropriate display areas.\
By configuring placements correctly, advertisers can maximize campaign performance, while retailers can ensure that ads align with their website or app's design and functionality.
***
### Creating a Placement
When creating a placement, you can configure various settings to define how ads will be displayed and how users will interact with them.
#### Basic Settings
1. **Name**: Enter the name of the placement.
2. **Description**: Provide a description for the placement.
3. **Allowed Creative Types**: Select the types of creatives that can be displayed in this placement:
* **Display**, **Video**, **Native**
* You can select multiple creative types simultaneously.
* For video type, you can additionally set skippable, clickability, video duration, linear type, and more.
* In the video type placement, support for video creatives is provided in the form of [VAST](https://iabtechlab.com/standards/vast/). Check the VAST support of your media player that used on this placement.
* For more details on creative types, refer to the [Creative Guide](/guides/about-a2/en/creative).
Once the placement is created, its **ID** will be displayed in the **Basic Information** section.\
This ID is used when sending ad requests.
***
#### Detailed Settings
1. **Responsiveness**: Define how the placement adapts to different screen sizes:
* **Fixed Size Display**: The ad maintains a fixed size regardless of screen dimensions.
* **Resized Display**: The ad dynamically resizes based on the screen size for a responsive layout.
2. **Display Size**: Choose or customize the size of the placement.
* Use pre-defined **templates** to streamline the setup process and maintain consistent formatting.
3. **Target eCPM**: Target ECPM is the desired revenue per thousand impressions (eCPM) for the placement.
* This value is used to calculate the optimal CPC, CPM, or CPA amount for new placements or campaigns after placement creation or initial placement allocation. The value will be adjusted based on the actual revenue generated on the placement.
4. **Billing**: Configure the billing method for the placement:
* **Algorithm-based Billing**: Charges are calculated based on algorithms such as CPM or CPC.
* **None**: No billing is applied for this placement.
5. **Publication Approval Method**: Select how campaigns are approved for this placement:
* **Delegate to Advertiser**: Campaigns can be displayed without approval from the placement manager if the advertiser has the required permissions.
* **Placement Manager Approval**: Campaigns require review and approval by the retailer before being displayed.
***
### Getting the Placement Tag
A2 makes it easy to integrate ads into your platform using the **A2 Web SDK**.\
Simply generate the placement tag and follow the provided instructions to embed it into your website or app.
For detailed information on serving ads, refer to the [A2 Serving Ads Guide](/development/en/serving-ad).
***
### Campaign Allocation Status
The **Campaign Allocation Status** feature allows you to monitor how campaigns are allocated to placements.\
For more details, refer to the [Allocation Guide](/guides/about-a2/en/allocation).
***
This guide provides an overview of placement setup and configuration, helping you manage ad spaces effectively and simplify campaign integration.
# Features & Benefits
Source: https://docs.aiderx.io/guides/about-a2/en/why-a2
Introducing A2's Features and Benefits
## 1. All-in-One Onsite Advertising Solution
A2 provides all major advertising products necessary for a retail media.
##### Display Advertising (CPM)
* Cost is based on impressions. Ideal for enhancing brand awareness and reaching a wide audience.
##### Click Advertising (CPC)
* Effective for increasing interest in retail products or brands, and driving traffic to external sites.
##### Acquisition-Based Advertising (CPA)
* Costs incurred only when specific actions occur, such as purchases or bookings.
* Focuses on direct revenue increase or customer acquisition.
With A2, manage and operate all advertising products from a single platform. Advertisers can choose or combine models that suit their goals, while retailers can optimize ad revenue by offering diverse ad products.
##### Learn More
* [AppsFlyer CPM](https://www.appsflyer.com/ko/glossary/cpm/)
## 2. Precise Targeting
A2 incorporates a cutting-edge machine learning algorithm. Its targeting engine delivers ads to the most appropriate users, offering benefits such as:
* Advertisers: Significantly improved ad effectiveness, increasing Return On Ad Spend (ROAS).
* Users: Enhanced service experience through highly relevant ads.
* Retailers: Increased vendor sales and natural service growth due to higher user satisfaction.
A2's precise targeting creates a win-win situation for all participants by delivering "the right ad, to the right person, at the right time."
## 3. Flexible Deployment
A2 offers three deployment options to suit various needs:
##### Self-Hosted Server
* Direct installation on the client's servers.
* Advantage: Complete data control and customized development environment.
* Ideal for: Enterprises requiring extremely high levels of data security.
##### Private Cloud (Recommended)
* Installation in a dedicated cloud environment.
* Advantage: High security with cloud flexibility.
* Suitable for: Companies seeking both data security and system scalability.
##### Public Cloud (Recommended)
* Installation on public clouds like AWS or GCP.
* Advantage: Rapid scaling and global expansion capabilities.
* Ideal for: Companies targeting fast growth and global market entry.
A2's flexible deployment options allow businesses of all sizes to operate a retail media platform in the most suitable manner.
## 4. Complete Retail Media Platform
A2 is an all-in-one retail media platform, offering tools for:
* Ad Registration: Advertisers can register desired ads.
* Ad Space Management: Retailers can configure ad placements.
* Advertising MAnager: Set ad exposure methods, optimization, and targeting using A2's various ad models.
* Real-Time Performance Analysis: Visualized analytics of campaign performance and ad space yield.
## 5. High System Efficiency and Performance
A2 boasts excellent system efficiency and performance, thanks to core modules based on C++ and Rust, offering:
##### Optimized Resource Utilization
Extremely efficient system resource use through C++ and Rust's low-level memory management.
Reduces infrastructure costs by handling more tasks with less hardware.
##### High-Performance Data Processing
Enables real-time big data analysis and decision-making.
Particularly beneficial for managing large-scale traffic events and complex ad campaigns.
##### Ultra-Low Latency Response Time
Millisecond-level responses for time-sensitive operations like real-time advertising.
Enhances user experience and enables more accurate ad targeting.
##### Scalability and Stability
Maintains stable performance under increased load and easily scales with business growth.
Crucial for system expansion as the business grows.
##### Cost Efficiency
Significantly reduces operational expenses (OPEX).
Lowers total cost of ownership by handling more tasks with fewer servers.
These high-performance, high-efficiency characteristics provide A2 users with a distinct competitive advantage.
## 6. Easy Installation
Docker-based deployment system enables easy installation. Rapid evaluation and testing facilitate quick adoption consideration. Cloud-environment configuration allows easy system scaling or downsizing.
# A2 Cloud
Source: https://docs.aiderx.io/guides/about-a2/en/why-a2-cloud
Introducing A2 Cloud's Features and Benefits
A2 Cloud is a solution that deploys A2’s on-premise system directly onto public clouds such as AWS. By creating isolated clusters for each client, A2 Cloud enhances both security and stability, ensuring systems are segregated on a per-customer basis.
The key advantages of A2 Cloud are as follows:
1. **Rapid Deployment Similar to SaaS**: A2 Cloud can be quickly deployed without the need for separate infrastructure setup, much like a SaaS solution. This saves initial costs and setup time, allowing users to experience the same functionality as an on-premise system without requiring dedicated infrastructure or specialized personnel.
2. **Seamless Migration to On-Premise**: Even when operating on a public cloud, A2 Cloud allows for an easy transition to an on-premise environment. Its structure mirrors that of an on-premise system, making it easy to move between cloud and on-premise environments, allowing flexibility to adapt to changes in customer strategy.
3. **Cost-Efficient Pricing Structure**: A2 Cloud’s pricing model is based on the cost of the A2 on-premise system with a small additional premium for public cloud operations. This structure makes it more affordable than traditional SaaS solutions, with predictable costs that help to reduce financial strain, particularly as advertising revenues increase. This results in significant long-term cost efficiency.
Therefore, A2 Cloud is an ideal solution for customers with the following needs:
1. **Customers lacking experience in infrastructure setup**
2. **Customers interested in exploring the A2 on-premise solution on a trial basis**
3. **Customers concerned about the high cost structure of SaaS**
**Note**: Detailed information about A2 Cloud's pricing structure and feature limitations for each plan is available on the [Pricing Guide](https://aiderx.io/pricing) page.
# Yield Optimization Settings
Source: https://docs.aiderx.io/guides/about-a2/en/yield-optimization
This section describes the retailer’s Revenue Optimization settings.
The ADM management page includes a **Revenue Optimization** settings section. These settings enable effective management of advertisement CPM rates, helping maintain a balanced approach between publisher revenue and advertiser satisfaction.
## Available Settings
### Minimum CPM
Prevents advertisements from being served at excessively low CPM rates. This setting takes precedence even if an advertiser requests a lower rate.
### Maximum CPM
Prevents advertisements from being served at excessively high CPM rates, protecting against abnormal budget depletion under extreme conditions.
### Yield ROAS Balance
* A setting closer to **1** will increase the expected revenue (eCPM) for publishers, but lower the advertiser’s ROAS (Return on Ad Spend).
* Conversely, a setting closer to **0** will enhance the advertiser’s ROAS while decreasing the expected revenue (eCPM) for publishers.
# FAQ
Source: https://docs.aiderx.io/guides/get-started/en/a2-faq
This document is an FAQ (Frequently Asked Questions) that compiles common questions about A2 and their answers.
## Find your questions below.
### Service Usage
#### I want to use A2. How can I get started?
After signing up and completing a simple questionnaire, you can try A2-Cloud for free for 2 weeks. ([Start Free Trial](https://aiderx.io/users/a2-cloud-trial)) If you want to use the service on-premises, please contact [a2support@aiderx.io](mailto:a2support@aiderx.io).
#### What's the difference between A2 and A2-Cloud?
A2 is an on-premises service, while A2-Cloud is a SaaS (Software as a Service). You can think of A2-Cloud as delegating the installation and operation process of A2. Detailed comparisons can be found in the following documents:
* [Pricing Policy](https://aiderx.io/pricing)
* [Why A2](https://aiderx.io/articles/why-a2)
* [Why A2 Cloud](/guides/about-a2/en/why-a2-cloud)
#### What is A2's pricing policy?
You can find detailed pricing information [here](https://aiderx.io/pricing).
### A2 Service Support
#### When logging in as an admin, I get a warning to register a new password. What should I do?
The warning is displayed for security reasons because your current password is set to the initial password. Please change your password in the My Account menu.
#### My campaign has been approved and assigned to a placement, but it's not being displayed. What should I do?
Please check the following campaign status:
* Is the campaign period included in the current time?
* Is the campaign budget set to more than 0?
#### The resources I created, such as campaigns or placements, are not showing up in the list. Why is that?
All resources are only visible to the individual who created them. If you are an administrator, please use the account link feature to connect the relevant account and then check.
### License Management
#### I've reached my license expiration date. What should I do?
Please proceed with license renewal through the license renewal button in the settings. Then follow the subsequent process.
#### I've reached my license limit. What should I do?
* If you've reached the API call usage limit, all ad requests will return a 429 error. Please inquire about a license upgrade.
* When you reach the limit for the number of placements, advertiser accounts, or retailer accounts, additional creation is not possible. Please delete created resources or inquire about a license upgrade.
### Miscellaneous
#### What are the channels for questions or communication?
We operate the following channels:
* Email: [a2support@aiderx.io](mailto:a2support@aiderx.io)
* Slack: a2cloudsupporthub.slack.com
***
Do you have any more questions?
If you have any further inquiries, please contact customer support.
# A2: Basic Usage
Source: https://docs.aiderx.io/guides/get-started/en/basic-usage
This guide is designed to help you quickly and accurately follow the key steps in setting up an image banner advertisement using A2 and displaying it on an ad placement.
You will learn the following:
1. Setting up ad placements
2. Configuring image banner ads
3. Serving ads
4. Tracking ad performance
## Accessing the Dashboard
When you first use the A2 service, you will receive an email with access instructions. By following the instructions, you can log into the A2 admin account using the email you registered. When you first log in, a message will prompt you to change your password. You can change your password by clicking on your account in the top right corner and selecting the `My Account` menu.
## Allocating Budget to the Admin Account
A2 optimizes ad performance based on the budget allocated to a campaign. To achieve this, you need to assign a budget to the admin account.
1. Click `Admin` > `Account Management` > `Edit Admin Budget` from the left sidebar.
2. Enter `10000` in the available credits field and click `Save Account Budget`.
Now that the budget is allocated, the next step is to set up the placements where ads will be displayed.
## Setting Up Ad Placements
Before displaying ads, you need to configure ad placements. An ad placement is a specific location where ads will be served, and multiple campaigns can be assigned to it. The optimization model will then personalize ads based on the configured placement.
1. Click `Create Placement` from the dashboard.
2. Enter the following details while keeping the default settings:
* Allowed Creative Types: `Display`
* Name: `Placement1`
* Description: `Test placement`
* Width: `1200`
* Height: `120`
3. Click `Create and Edit`.
4. Verify the entered details and click `Save`.
5. Navigate to `Advertising` > `Placement` > `Placement List` from the left sidebar.
6. Locate the created placement and activate it by clicking `Activation` button.
> For more details on configuring ad placements, refer to the [Placement Guide](/guides/about-a2/en/placement).
Now that the placement is ready, let’s proceed with creating an ad campaign to be displayed.
## Creating Campaigns & Creatives and Allocating
### Creating a Campaign
A campaign is the fundamental unit of ad operations, allowing you to set goals and budgets for ad execution over a specified period.
1. Click `Create Campaign` from the dashboard.
2. Select `Impression` as the campaign goal.
3. Enter the following details while keeping the default settings:
* Name: `Campaign1`
* Description: `Test campaign`
* Budget: `1000`
* Set the campaign start date time to 00:00.
4. Click `Create`.
5. Verify the created campaign.
> Adjusting the campaign start time allows immediate ad display verification. In real cases, set the preferred campaign start time. See the [Campaign Guide](/guides/about-a2/en/campaign) for more details.
Now that the campaign is set up, the next step is to register creatives for the ad display.
### Creating a Creative
A creative is the visual content displayed to users, such as images or videos. In this example, we will create a banner image that redirects users to a specific page upon clicking.
1. In the campaign page, click `New Creative`.
2. Select `Banner`.
3. Enter the following details:
* Name: `A2 Banner`
* Description: `A2 Pricing Page`
4. Click `Create`.
5. Enter `Banner Creative` fields and click `Save`:
* Destination Address: [`https://aiderx.io/pricing`](https://aiderx.io/pricing)
* Image: Click `URL`, enter [`https://cdn.aiderx.app/public/media/a2_banner.png`](https://cdn.aiderx.app/public/media/a2_banner.png), then click `Load`.
6. Click `Active` to activate.
> A2 supports various creative formats. For more details, refer to the [Creative Guide](/guides/about-a2/en/creative).
Now, let’s allocate the campaign to the ad placement.
### Allocating the Campaign
Campaign allocation determines which campaigns will be displayed on a given placement. Ads cannot be served without allocating a campaign to a placement.
1. Click `New Placement Allocation` from the campaign page.
2. Select `Placement1`.
3. Click `Select and Detailed Settings`.
4. Click `Save`.
5. In the allocation list, click `Request Publication`, then click `Approve Publication`.
> For additional allocation options, refer to the [Allocation Guide](/guides/about-a2/en/allocation).
Now that the setup is complete, let’s integrate the ad into a website.
## Serving Ads
### Using Placement Tags to Request Ads
A2 provides an SDK for easy ad integration. By adding a simple code snippet, you can display ads on your website.
1. Navigate to `Advertising` > `Placement` > `Placement List` from the left sidebar.
2. Select `Placement1`.
3. Click `Get Placement Tag` from the `Placement Information` section.
You can download an HTML example showcasing the implementation.
### Requesting Ads from A2-Edge (Supply-Side Platform)
You can now request ad creatives from the A2-Edge Endpoint and receive results.
1. **Send a request**
```bash theme={null}
$> curl -X POST \
-H "Content-type: Application/json" \
http://{base_url}/app/v0/ad/{tagid} \
-d '{"version": "0.1.0", "user": {"id": "test_user_id"}}'
```
2. **Check the response**If you see output like this, it's working correctly:
```json theme={null}
{
"version": "0.1.0",
"ad": {
"id": "97a5f9d2-8965-45f1-aa3d-a100508a3785",
"display": {
"w": 1200,
"h": 120,
"banner": {
"img": "https://cdn.aiderx.app/public/media/a2_banner.png",
"link": {
"url": "https://aiderx.io/pricing",
"ext": {}
},
"ext": {
"cdn": "url"
}
}
}
},
"ext": {
"ad_log": "ZTk0ZWI0ZWItYjZmZC00ZmVjLWIzOWEtMGY0ZWIyODJiN2NmfDJhNGE4OGNhLTI0M2UtNDUwYy1hYjRlLTMyNjc5NmQ5Y2U0OXw5N2E1ZjlkMi04OTY1LTQ1ZjEtYWEzZC1hMTAwNTA4YTM3ODV8MTg1OWZiZTMtYzBiYy00NDU1LWIyMmItZjkwYzk1MDNhOGUxfGJkNWJmOWMyLTI2MGYtNDJjYS04NzI3LWMyZjJkN2EyNjg5MXx0ZXN0X3VzZXJfaWQ",
"message": "success"
}
}
```
> For detailed methods on requesting ads, refer to the [documentation](/development/en/serving-ad)
> For detailed API specifications, refer to [A2 API Specification](https://aiderx.io/a2-api-specification)
***
### Sending Adlogs to A2-Event API
Let's learn how to send user-related logs using the A2 Event API.
* The API endpoint is `/dmp/v0/log`.
A2 uses collected user logs for ad model training and campaign analysis.
1. **sending ad logs**
```bash theme={null}
$> curl -X POST \
-H "Content-type: Application/json" \
http://{base_url}/dmp/v0/log \
-d '{
"type": "ad_log",
"action": "conv",
"ad_log": "ZTk0ZWI0ZWItYjZmZC00ZmVjLWIzOWEtMGY0ZWIyODJiN2NmfDJhNGE4OGNhLTI0M2UtNDUwYy1hYjRlLTMyNjc5NmQ5Y2U0OXw5N2E1ZjlkMi04OTY1LTQ1ZjEtYWEzZC1hMTAwNTA4YTM3ODV8MTg1OWZiZTMtYzBiYy00NDU1LWIyMmItZjkwYzk1MDNhOGUxfGJkNWJmOWMyLTI2MGYtNDJjYS04NzI3LWMyZjJkN2EyNjg5MXx0ZXN0X3VzZXJfaWQ"
}'
```
* An *ad log* is an event that occurs after showing an ad to a user. You need to include the `ad_log` from the A2-Edge response.
* A2 uses the `ad_log` to distinguish ad-related information.
* If you use the `SDK`, the `ad_log` is automatically integrated, so there is no need to send it separately.
2. **sending action logs**
```bash theme={null}
$> curl -X POST \
-H "Content-type: Application/json" \
http://{base_url}/dmp/v0/log \
-d '{
"type": "action_log",
"action": "purchase",
"user_id": "test_user_u0",
"item_id": "test_item_i1",
}'
```
* An *action log* records various user behaviors such as clicks, impressions, views, purchases, cart additions, searches, etc.
> For detailed API specifications, refer to [A2 API Specification](https://aiderx.io/a2-api-specification)
## Tracking Ad Performance
Once your ads are live, tracking their performance is crucial for optimization.
1. Navigate to `General` > `Analytics` > `Placement` or `Campaign`.
2. At the top of the `Placement Details Page`.
3. At the top of the `Campaign Details Page`.
***
This concludes the A2 Getting Started guide.
We hope this guide has helped you set up A2 in your local environment and understand its basic usage.
If you have any further questions, please don't hesitate to contact our support team.
## Next Steps
To learn more about A2, check out these resources:
1. A2 Architecture Overview(TBW)- Understand the overall structure of A2 and the role of each component.
2. [A2 API Specification](https://aiderx.io/a2-api-specification) - Find detailed specifications for all A2 APIs. Refer to this when you want to use advanced features.
# A2: Preparation
Source: https://docs.aiderx.io/guides/get-started/en/preparation
Getting Started with A2
A2 is available in two versions:
* A2 Cloud: Cloud service
* A2 CE (Community Edition): On-premises
This guide will walk you through the setup and initialization process for each version.
### A2 Cloud
A2 Cloud is a cloud-based service that allows for quick and easy startup.
#### How to Apply
1. Apply through the [Free Trial Application](https://aiderx.io/users/a2-cloud-trial) page.
2. After applying, your cloud service will be created within 30 minutes. Access information will be sent to your registered email.
3. Setup is complete once you access the cloud app address provided in the email.
> We are currently offering a 2-week free trial, during which you can use the A2 Community Edition without limitations.
### A2 CE (Community Edition)
> The A2 CE (Community Edition) is currently under preparation. We’ll provide updates as soon as it’s available.
A2 CE is a version that can be run in an on-premises environment.
#### Requirements
* Platform: Linux Architecture: x86\_64 (arm64 support coming soon)
* Docker Engine and Docker Compose
* (Recommended) Persistent Storage mounting
#### Installation and Execution
1. Create a docker-compose.yml file:
```yaml theme={null}
---
services:
a2:
image: "[Contact A2 representative for details]"
ports:
- 80:8000
volumes:
- ./data:/data
```
2. Run the container:
```sh theme={null}
$> docker-compose up -d
```
3. A2-ADM(Advertising Manager) Access
* Access through browser at `http://localhost`
***
***Now you are ready to use A2.***
***
* Next, refer to [A2 Getting Started: Basic Usage](/guides/get-started/ko/basic-usage)
* For A2 Enterprise On-Premise Solutions, please refer to [here](https://aiderx.io/en/pricing)
* If you have any questions, please contact us at:
* Email: [a2support@aiderx.io](mailto:a2support@aiderx.io)
* Slack: [A2 Cloud Support Hub](https://join.slack.com/t/a2cloudsupporthub/signup)
# Record Activity Log
Source: https://docs.aiderx.io/en/0.2.2/data management/activity-log/record-activity-log
/openapi/adm.openapi.en-0.2.2.json post /dmp/v0/log/activity
Records user activity logs for advertising optimization and analytics.
Supported activity types:
- `activity.item_view`: Records product detail page views
- `activity.add_cart`: Records cart addition events
- `activity.page_view`: Records page navigation events
- `activity.search`: Records search query events
- `activity.purchase`: Records completed purchases
Note: Returns 200 OK for all requests. Invalid schemas are silently ignored.
# Create an allocation
Source: https://docs.aiderx.io/en/0.2.2/data management/allocation/create-an-allocation
/openapi/adm.openapi.en-0.2.2.json post /allocations
Create a new allocation between a campaign and placement.
An allocation represents the relationship between a campaign and a placement, defining how ads from the campaign will be served on the placement.
Access Control:
- Admin and Retailer accounts: Can create allocations for any campaign/placement
- Advertiser accounts: Can only create allocations for campaigns they own
If the user doesn't have permission to create the campaign, the request fails.
# Delete an allocation
Source: https://docs.aiderx.io/en/0.2.2/data management/allocation/delete-an-allocation
/openapi/adm.openapi.en-0.2.2.json delete /allocations/{no}
Delete an allocation between a campaign and placement.
Access Control:
- Admin and Retailer accounts: Can delete any allocation
- Advertiser accounts: Can only delete allocations for campaigns they own
Restrictions:
- Published allocations cannot be deleted
- The allocation must exist
- The user must have permission to delete the allocation
If any of these conditions are not met, the request will fail with an appropriate error response.
# Get an allocation
Source: https://docs.aiderx.io/en/0.2.2/data management/allocation/get-an-allocation
/openapi/adm.openapi.en-0.2.2.json get /allocation
Retrieve an allocation by querying with placement ID (tagid),
campaign ID (cid), creative ID (crid) and owner ID.
If multiple allocations match the query parameters, only the first result will be returned.
Access Control:
- Admin and Retailer accounts: Can view all allocations
- Advertiser accounts: Can only view allocations they own
# Get multiple allocations
Source: https://docs.aiderx.io/en/0.2.2/data management/allocation/get-multiple-allocations
/openapi/adm.openapi.en-0.2.2.json get /allocations
Retrieve allocations by querying with placement ID (tagid),
campaign ID (cid), creative ID (crid) and owner ID.
Returns all allocations that match the query parameters.
Access Control:
- Admin and Retailer accounts: Can view all allocations
- Advertiser accounts: Can only view allocations they own
# Update an allocation
Source: https://docs.aiderx.io/en/0.2.2/data management/allocation/update-an-allocation
/openapi/adm.openapi.en-0.2.2.json patch /allocations
Update an existing allocation between a campaign and placement.
Access Control:
- Admin and Retailer accounts: Can update any allocation and change status to published/rejected
- Advertiser accounts: Can only update allocations for campaigns they own, cannot change status to published/rejected
If the user doesn't have permission to update the allocation, the request fails.
# Create an audience attribute
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/create-an-audience-attribute
/openapi/adm.openapi.en-0.2.2.json post /audiences/attributes
Creates a new audience attribute.
# Create an audience attribute value
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/create-an-audience-attribute-value
/openapi/adm.openapi.en-0.2.2.json post /audiences/attributes-values
Creates an audience attribute value.
# Create multiple audience attribute values
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/create-multiple-audience-attribute-values
/openapi/adm.openapi.en-0.2.2.json post /audiences/attributes-values/bulk-add
Creates multiple audience attribute values in a single operation.
Limited to 1000 audience attribute values per request.
# Create multiple audience attributes
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/create-multiple-audience-attributes
/openapi/adm.openapi.en-0.2.2.json post /audiences/attributes/bulk-add
Creates multiple audience attributes in a single operation.
Limited to 1000 audience attributes per request.
# Delete an audience attribute
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/delete-an-audience-attribute
/openapi/adm.openapi.en-0.2.2.json delete /audiences/attributes/{id}
Deletes an audience attribute.
When an attribute is deleted, all its associated attribute values are also deleted.
# Delete an audience attribute value
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/delete-an-audience-attribute-value
/openapi/adm.openapi.en-0.2.2.json post /audiences/attributes-values/delete
Deletes an audience attribute value.
# Delete multiple audience attribute values
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/delete-multiple-audience-attribute-values
/openapi/adm.openapi.en-0.2.2.json post /audiences/attributes-values/bulk-delete
Deletes multiple audience attribute values in a single operation.
Limited to 1000 audience attribute values per request.
# Delete multiple audience attributes
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/delete-multiple-audience-attributes
/openapi/adm.openapi.en-0.2.2.json post /audiences/attributes/bulk-delete
Deletes multiple audience attributes in a single operation.
When an attribute is deleted, all its associated attribute values are also deleted.
Limited to 1000 audience attributes per request.
# Get an audience attribute
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/get-an-audience-attribute
/openapi/adm.openapi.en-0.2.2.json get /audiences/attributes/{id}
Retrieves an audience attribute by its ID.
# Get multiple audience attribute values
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/get-multiple-audience-attribute-values
/openapi/adm.openapi.en-0.2.2.json get /audiences/attributes-values
Retrieves attribute values matching query conditions.
# Get multiple audience attributes
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/get-multiple-audience-attributes
/openapi/adm.openapi.en-0.2.2.json get /audiences/attributes
Retrieves audience attributes matching query conditions.
# Update an audience attribute
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-attribute/update-an-audience-attribute
/openapi/adm.openapi.en-0.2.2.json patch /audiences/attributes
Updates an existing audience attribute.
# Create an audience segment
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-segment/create-an-audience-segment
/openapi/adm.openapi.en-0.2.2.json post /audiences/segments
Creates an audience segment.
# Create multiple audience segments
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-segment/create-multiple-audience-segments
/openapi/adm.openapi.en-0.2.2.json post /audiences/segments/bulk-add
Creates multiple audience segments in a single operation.
Limited to 1000 audience segments per request.
# Delete an audience segment
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-segment/delete-an-audience-segment
/openapi/adm.openapi.en-0.2.2.json delete /audiences/segments/{id}
Deletes an audience segment.
# Delete multiple audience segments
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-segment/delete-multiple-audience-segments
/openapi/adm.openapi.en-0.2.2.json post /audiences/segments/bulk-delete
Deletes multiple audience segments in a single operation.
Limited to 1000 audience segments per request.
# Get multiple audience segments
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-segment/get-multiple-audience-segments
/openapi/adm.openapi.en-0.2.2.json get /audiences/segments
Retrieves audience segments matching query conditions.
# Update an audience segment
Source: https://docs.aiderx.io/en/0.2.2/data management/audience-segment/update-an-audience-segment
/openapi/adm.openapi.en-0.2.2.json patch /audiences/segments
Updates an audience segment.
# Create an audience
Source: https://docs.aiderx.io/en/0.2.2/data management/audience/create-an-audience
/openapi/adm.openapi.en-0.2.2.json post /audiences
Creates a new audience and returns information about the created audience.
# Create multiple audiences
Source: https://docs.aiderx.io/en/0.2.2/data management/audience/create-multiple-audiences
/openapi/adm.openapi.en-0.2.2.json post /audiences/bulk-add
Creates multiple audiences in a single operation.
Limited to 1000 audiences per request.
# Delete an audience
Source: https://docs.aiderx.io/en/0.2.2/data management/audience/delete-an-audience
/openapi/adm.openapi.en-0.2.2.json delete /audiences/delete/{id}
Deletes an audience by ID.
# Delete multiple audiences
Source: https://docs.aiderx.io/en/0.2.2/data management/audience/delete-multiple-audiences
/openapi/adm.openapi.en-0.2.2.json post /audiences/bulk-delete
Deletes multiple audiences in a single operation.
Limited to 1000 audiences per request.
# Get an audience
Source: https://docs.aiderx.io/en/0.2.2/data management/audience/get-an-audience
/openapi/adm.openapi.en-0.2.2.json get /audiences/get/{id}
Retrieves an audience by its ID.
# Get audiences count
Source: https://docs.aiderx.io/en/0.2.2/data management/audience/get-audiences-count
/openapi/adm.openapi.en-0.2.2.json get /audiences/size
Get the total count of audiences in the system.
# Get multiple audiences
Source: https://docs.aiderx.io/en/0.2.2/data management/audience/get-multiple-audiences
/openapi/adm.openapi.en-0.2.2.json get /audiences
Retrieves all audiences matching the query conditions.
# Update an audience
Source: https://docs.aiderx.io/en/0.2.2/data management/audience/update-an-audience
/openapi/adm.openapi.en-0.2.2.json patch /audiences
Updates an existing audience with new information.
# Google sign-in authentication.
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/google-sign-in-authentication
/openapi/adm.openapi.en-0.2.2.json post /auth/jwt/google-sign-in
Logs in the user using Google authentication.
# Login using JWT authentication.
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/login-using-jwt-authentication
/openapi/adm.openapi.en-0.2.2.json post /auth/jwt/login
Logs in the user using JWT authentication.
# Logout using JWT authentication.
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/logout-using-jwt-authentication
/openapi/adm.openapi.en-0.2.2.json post /auth/jwt/logout
Logs out the current user using JWT authentication.
# Register a new user
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/register-a-new-user
/openapi/adm.openapi.en-0.2.2.json post /auth/register
Creates a new user account in the system with the provided credentials and information.
# Request a verification token
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/request-a-verification-token
/openapi/adm.openapi.en-0.2.2.json post /auth/request-verify-token
Generates a verification token and sends it to the user's email address. The user must have received a verification token via email.
# Request password reset
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/request-password-reset
/openapi/adm.openapi.en-0.2.2.json post /auth/forgot-password
Initiates the password recovery process by sending a reset link to the user's registered email address. The user can then follow this link to create a new password.
# Reset password
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/reset-password
/openapi/adm.openapi.en-0.2.2.json post /auth/reset-password
Allows the user to reset their password using a verification token. The user must have received a verification token via email.
# Get a campaign attribute daily metric
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-a-campaign-attribute-daily-metric
/openapi/adm.openapi.en-0.2.2.json post /metric/campaigns_attribute_daily
Retrieves daily campaign attribute metrics for the specified time range.
# Get a campaign attribute hourly metric
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-a-campaign-attribute-hourly-metric
/openapi/adm.openapi.en-0.2.2.json post /metric/campaigns_attribute_hourly
Retrieves hourly campaign attribute metrics for the specified time range.
If the requested time range exceeds 3 days, the data granularity will automatically switch from hourly to daily aggregation.
# Get a campaign attribute metric
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-a-campaign-attribute-metric
/openapi/adm.openapi.en-0.2.2.json post /metric/campaigns_attribute
Retrieves metrics for a specific campaign attribute identified by the query.
# Get a campaign daily metric
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-a-campaign-daily-metric
/openapi/adm.openapi.en-0.2.2.json post /metric/campaigns_daily
Retrieves daily campaign metrics for the specified time range.
# Get a campaign hourly metric
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-a-campaign-hourly-metric
/openapi/adm.openapi.en-0.2.2.json post /metric/campaigns_hourly
Retrieves hourly campaign metrics for the specified time range.
If the requested time range exceeds 3 days, the data granularity will automatically switch from hourly to daily aggregation.
# Get a campaign metric
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-a-campaign-metric
/openapi/adm.openapi.en-0.2.2.json post /metric/campaign
Retrieves metrics for a specific campaign identified by the query.
# Get a placement daily metric
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-a-placement-daily-metric
/openapi/adm.openapi.en-0.2.2.json post /metric/placements_daily
Retrieves daily placement metrics for the specified time range.
# Get a placement hourly metric
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-a-placement-hourly-metric
/openapi/adm.openapi.en-0.2.2.json post /metric/placements_hourly
Retrieves hourly placement metrics for the specified time range.
If the requested time range exceeds 3 days, the data granularity will automatically switch from hourly to daily aggregation.
# Get a placement metric
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-a-placement-metric
/openapi/adm.openapi.en-0.2.2.json post /metric/placements
Retrieves metrics for a specific placement identified by the query.
# Get dashboard data
Source: https://docs.aiderx.io/en/0.2.2/data management/analytic/get-dashboard-data
/openapi/adm.openapi.en-0.2.2.json get /dashboard
Returns general A2 statistics and campaign performance data.
- Admins and retailers receive platform-wide statistics.
- Advertisers receive statistics for their own assets only.
- Total number of retailer and advertiser accounts is only visible to admins and retailers.
- The percentage change is calculated based on the difference compared to the same period in the previous timerange.
# Delete a user
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/delete-a-user
/openapi/adm.openapi.en-0.2.2.json delete /users
Delete the user. This is only available for the admin.
# Get a privacy consent
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/get-a-privacy-consent
/openapi/adm.openapi.en-0.2.2.json get /privacy/consents/{id}
Retrieves all privacy consents for
a specific user based on the provided user ID.
# Get all users
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/get-all-users
/openapi/adm.openapi.en-0.2.2.json get /users
Retrieve all users.
This is available for administrators and retailers.
# Get the current user
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/get-the-current-user
/openapi/adm.openapi.en-0.2.2.json get /users/me
Retrieves the current user's information.
# Update user budget
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/update-user-budget
/openapi/adm.openapi.en-0.2.2.json patch /user/budget
Update the user's budget. This is only available if the user has budget update permission.
# Update user data
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/update-user-data
/openapi/adm.openapi.en-0.2.2.json patch /user/info
Update the user's data.
Available to administrators and the user themselves.
# Upsert a privacy consent
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/upsert-a-privacy-consent
/openapi/adm.openapi.en-0.2.2.json post /privacy/consents
Creates or updates privacy consents for a user.
- If there is no privacy consent for the user, a new one will be created.
- If there exists a same version of privacy consent for the user, only the agreed status will be updated.
# Verify the user token
Source: https://docs.aiderx.io/en/0.2.2/data management/auth-and-user/verify-the-user-token
/openapi/adm.openapi.en-0.2.2.json post /auth/verify
Verifies the user token and logs the user in. The user must have received a verification token via email.
# Forward to external url
Source: https://docs.aiderx.io/en/0.2.2/data management/billing/forward-to-external-url
/openapi/adm.openapi.en-0.2.2.json post /external/channel
This endpoint forwards the requested content to the registered external channel and
returns the response exactly as received. It acts as a proxy between the client and the external service.
Returns an HTTP error if the external channel is not registered,
or if the response from the registered external channel is not successful.
# Get a payment
Source: https://docs.aiderx.io/en/0.2.2/data management/billing/get-a-payment
/openapi/adm.openapi.en-0.2.2.json get /payments/{id}
Retrieves a specific payment based on the provided payment ID.
# Get multiple payments
Source: https://docs.aiderx.io/en/0.2.2/data management/billing/get-multiple-payments
/openapi/adm.openapi.en-0.2.2.json get /payments
Retrieves all payments of a current user.
# Create a campaign
Source: https://docs.aiderx.io/en/0.2.2/data management/campaign/create-a-campaign
/openapi/adm.openapi.en-0.2.2.json post /campaigns
Creates a new advertising campaign and returns information about the created campaign.
Access Control:
- Admin and Advertiser accounts can create campaigns
- Retailer accounts cannot create campaigns
# Delete a campaign
Source: https://docs.aiderx.io/en/0.2.2/data management/campaign/delete-a-campaign
/openapi/adm.openapi.en-0.2.2.json delete /campaigns/{id}
Deletes an existing campaign with the specified ID.
Access Control:
- Only the owner of the campaign can delete it.
- Campaigns with active allocations cannot be deleted.
_All allocations for the campaign are also deleted._
# Get a campaign
Source: https://docs.aiderx.io/en/0.2.2/data management/campaign/get-a-campaign
/openapi/adm.openapi.en-0.2.2.json get /campaigns/{id}
Retrieves detailed information about a specific campaign by its ID.
Access Control:
- Admin and Retailer accounts can view information for all campaigns
- Advertiser accounts can only view information for its owner
# Get multiple campaigns
Source: https://docs.aiderx.io/en/0.2.2/data management/campaign/get-multiple-campaigns
/openapi/adm.openapi.en-0.2.2.json get /campaigns
Retrieve all campaigns that match the specified query conditions.
Access Control:
- Admin and Retailer accounts can get information for all campaigns
- Advertiser accounts can only get information for its owner
# Update a campaign
Source: https://docs.aiderx.io/en/0.2.2/data management/campaign/update-a-campaign
/openapi/adm.openapi.en-0.2.2.json patch /campaigns
Updates an existing advertising campaign and returns information about the updated campaign.
Access Control:
- Only the owner of the campaign can update it.
_If you change the campaign to archived, the budget allocated to the campaign is returned._
# Create a catalog
Source: https://docs.aiderx.io/en/0.2.2/data management/catalog/create-a-catalog
/openapi/adm.openapi.en-0.2.2.json post /catalogs
Creates a new catalog and returns information about the created catalog.
# Create multiple catalogs
Source: https://docs.aiderx.io/en/0.2.2/data management/catalog/create-multiple-catalogs
/openapi/adm.openapi.en-0.2.2.json post /catalogs/bulk-add
Creates multiple new catalogs in a single request.
Maximum 1000 catalogs can be created in a single request.
Returns the list of created catalogs.
# Delete a catalog
Source: https://docs.aiderx.io/en/0.2.2/data management/catalog/delete-a-catalog
/openapi/adm.openapi.en-0.2.2.json delete /catalogs/{id}
Deletes an existing catalog with the specified ID.
# Delete multiple catalogs
Source: https://docs.aiderx.io/en/0.2.2/data management/catalog/delete-multiple-catalogs
/openapi/adm.openapi.en-0.2.2.json post /catalogs/bulk-delete
Deletes multiple existing catalogs in a single request.
Maximum 1000 catalogs can be deleted in a single request.
Returns the number of deleted catalogs.
# Get a catalog
Source: https://docs.aiderx.io/en/0.2.2/data management/catalog/get-a-catalog
/openapi/adm.openapi.en-0.2.2.json get /catalogs/{id}
Retrieves detailed information about a specific catalog by its ID.
# Get multiple catalogs
Source: https://docs.aiderx.io/en/0.2.2/data management/catalog/get-multiple-catalogs
/openapi/adm.openapi.en-0.2.2.json get /catalogs
Retrieves a paginated list of all catalogs that match the specified query conditions.
# Update a catalog
Source: https://docs.aiderx.io/en/0.2.2/data management/catalog/update-a-catalog
/openapi/adm.openapi.en-0.2.2.json patch /catalogs
Updates an existing catalog and returns information about the updated catalog.
# Create a creative
Source: https://docs.aiderx.io/en/0.2.2/data management/creative/create-a-creative
/openapi/adm.openapi.en-0.2.2.json post /creatives
Creates a new creative asset and returns information
about the created creative.
# Delete a creative
Source: https://docs.aiderx.io/en/0.2.2/data management/creative/delete-a-creative
/openapi/adm.openapi.en-0.2.2.json delete /creatives/{id}
Deletes an existing creative asset with the specified ID.
Access Control:
- Only the owner of the creative can delete it.
- Creatives that are being used in active campaigns cannot be deleted.
# Get a creative
Source: https://docs.aiderx.io/en/0.2.2/data management/creative/get-a-creative
/openapi/adm.openapi.en-0.2.2.json get /creatives/{id}
Retrieves a creative asset by its ID
# Get multiple creatives
Source: https://docs.aiderx.io/en/0.2.2/data management/creative/get-multiple-creatives
/openapi/adm.openapi.en-0.2.2.json get /creatives
Retrieve all creative assets that match the specified query conditions.
# Update a creative
Source: https://docs.aiderx.io/en/0.2.2/data management/creative/update-a-creative
/openapi/adm.openapi.en-0.2.2.json patch /creatives
Updates an existing creative asset by its ID and returns the updated creative information.
Access Control:
- Only the owner of the creative can update it.
# Get license features
Source: https://docs.aiderx.io/en/0.2.2/data management/license/get-license-features
/openapi/adm.openapi.en-0.2.2.json get /license
Get the list of features supported by the current license.
# Get license metrics
Source: https://docs.aiderx.io/en/0.2.2/data management/license/get-license-metrics
/openapi/adm.openapi.en-0.2.2.json get /license/metric
Get the current license metrics.
# Delete media library file
Source: https://docs.aiderx.io/en/0.2.2/data management/media-library/delete-media-library-file
/openapi/adm.openapi.en-0.2.2.json delete /media_library
Deletes a file from the media library.
# Get media library
Source: https://docs.aiderx.io/en/0.2.2/data management/media-library/get-media-library
/openapi/adm.openapi.en-0.2.2.json get /media_library
Retrieves all media library items that belong to the specified user ID.
# Upload media library file
Source: https://docs.aiderx.io/en/0.2.2/data management/media-library/upload-media-library-file
/openapi/adm.openapi.en-0.2.2.json post /media_library
Uploads a file to the media library and
returns the created media library entry.
# Create a placement catalog
Source: https://docs.aiderx.io/en/0.2.2/data management/placement-catalog/create-a-placement-catalog
/openapi/adm.openapi.en-0.2.2.json post /placement_catalogs
Create a placement catalog.
# Delete a placement catalog
Source: https://docs.aiderx.io/en/0.2.2/data management/placement-catalog/delete-a-placement-catalog
/openapi/adm.openapi.en-0.2.2.json delete /placement_catalogs/{id}
Delete a placement catalog.
# Get a placement catalog
Source: https://docs.aiderx.io/en/0.2.2/data management/placement-catalog/get-a-placement-catalog
/openapi/adm.openapi.en-0.2.2.json get /placement_catalogs/{id}
Retrieves a placement catalog based on the provided ID.
# Get a placement catalog share
Source: https://docs.aiderx.io/en/0.2.2/data management/placement-catalog/get-a-placement-catalog-share
/openapi/adm.openapi.en-0.2.2.json get /placement_catalog_shares/{id}
Retrieves a specific placement catalog share by its ID.
# Get a placement catalog share view
Source: https://docs.aiderx.io/en/0.2.2/data management/placement-catalog/get-a-placement-catalog-share-view
/openapi/adm.openapi.en-0.2.2.json post /placement_catalog_shares/view
Retrieves a placement catalog's shared view including placements. Requires password if protected.
# Get all placement catalogs
Source: https://docs.aiderx.io/en/0.2.2/data management/placement-catalog/get-all-placement-catalogs
/openapi/adm.openapi.en-0.2.2.json get /placement_catalogs
Retrieves a list of all placement catalogs.
# Update a placement catalog
Source: https://docs.aiderx.io/en/0.2.2/data management/placement-catalog/update-a-placement-catalog
/openapi/adm.openapi.en-0.2.2.json patch /placement_catalogs
Update a placement catalog.
# Update a placement catalog share
Source: https://docs.aiderx.io/en/0.2.2/data management/placement-catalog/update-a-placement-catalog-share
/openapi/adm.openapi.en-0.2.2.json patch /placement_catalog_shares
Update a placement catalog share.
# Create a placement
Source: https://docs.aiderx.io/en/0.2.2/data management/placement/create-a-placement
/openapi/adm.openapi.en-0.2.2.json post /placements
Creates a new placement for advertising content
and returns information about the created placement.
# Delete a placement
Source: https://docs.aiderx.io/en/0.2.2/data management/placement/delete-a-placement
/openapi/adm.openapi.en-0.2.2.json delete /placements/{id}
Deletes a placement based on the provided ID.
# Get a placement
Source: https://docs.aiderx.io/en/0.2.2/data management/placement/get-a-placement
/openapi/adm.openapi.en-0.2.2.json get /placements/{id}
Retrieves a placement based on the provided ID.
# Get multiple placements
Source: https://docs.aiderx.io/en/0.2.2/data management/placement/get-multiple-placements
/openapi/adm.openapi.en-0.2.2.json get /placements
Retrieves a list of all placements available to the current user.
# Update a placement
Source: https://docs.aiderx.io/en/0.2.2/data management/placement/update-a-placement
/openapi/adm.openapi.en-0.2.2.json patch /placements
Updates an existing placement with new information
and returns the updated placement details.
# Create a notification
Source: https://docs.aiderx.io/en/0.2.2/data management/system/create-a-notification
/openapi/adm.openapi.en-0.2.2.json post /notifications
Creates a new notification for a user in the system and returns
the created notification details.
# Delete a notification
Source: https://docs.aiderx.io/en/0.2.2/data management/system/delete-a-notification
/openapi/adm.openapi.en-0.2.2.json delete /notifications/{id}
Deletes a specific notification by its ID. Only the user who owns
the notification can delete it.
# Get audit logs
Source: https://docs.aiderx.io/en/0.2.2/data management/system/get-audit-logs
/openapi/adm.openapi.en-0.2.2.json get /logs
Retrieve system audit logs with optional filtering.
This endpoint returns a list of system audit logs that track various system events and user actions.
The logs can be filtered by:
- Event types
- User ID
- User email
- Date range (start date and end date)
Each log entry contains details about the event type, affected resource, user information,
timestamp, and any changes made (old and new values).
# Get current logo
Source: https://docs.aiderx.io/en/0.2.2/data management/system/get-current-logo
/openapi/adm.openapi.en-0.2.2.json get /media/logo
Retrieves the current logo image used in the system.
# Get notifications
Source: https://docs.aiderx.io/en/0.2.2/data management/system/get-notifications
/openapi/adm.openapi.en-0.2.2.json get /notifications
Retrieves a list of notifications based on the provided query parameters.
# Get Settings
Source: https://docs.aiderx.io/en/0.2.2/data management/system/get-settings
/openapi/adm.openapi.en-0.2.2.json get /settings
Retrieves the current system settings.
# Health check
Source: https://docs.aiderx.io/en/0.2.2/data management/system/health-check
/openapi/adm.openapi.en-0.2.2.json get /health
# Mark a notification as read
Source: https://docs.aiderx.io/en/0.2.2/data management/system/mark-a-notification-as-read
/openapi/adm.openapi.en-0.2.2.json get /notifications/read
Marks a specific notification as read for a user. This endpoint
updates the read status of a notification identified by its ID.
# Regenerate access token
Source: https://docs.aiderx.io/en/0.2.2/data management/system/regenerate-access-token
/openapi/adm.openapi.en-0.2.2.json post /settings/access_token
Regenerates a new access token for the system.
# Update settings
Source: https://docs.aiderx.io/en/0.2.2/data management/system/update-settings
/openapi/adm.openapi.en-0.2.2.json patch /settings
Updates system settings except for TLS configuration.
Use this endpoint to modify general system settings while keeping TLS settings unchanged.
# Update TLS configuration
Source: https://docs.aiderx.io/en/0.2.2/data management/system/update-tls-configuration
/openapi/adm.openapi.en-0.2.2.json post /settings/tls
Updates the TLS (Transport Layer Security) configuration for the system.
# Upload site logo
Source: https://docs.aiderx.io/en/0.2.2/data management/system/upload-site-logo
/openapi/adm.openapi.en-0.2.2.json post /settings/logo
Uploads a custom logo for the site.
This endpoint allows administrators to change the site's branding by uploading
a new logo image that will be displayed throughout the application interface.
# Record Activity Log
Source: https://docs.aiderx.io/en/0.2.2/decision/activity-log/record-activity-log
/openapi/decision.api.en-0.2.2.json post /dmp/v0/log/activity
Records user activity logs for advertising optimization and analytics.
Supported activity types:
- `activity.item_view`: Records product detail page views
- `activity.add_cart`: Records cart addition events
- `activity.page_view`: Records page navigation events
- `activity.search`: Records search query events
- `activity.purchase`: Records completed purchases
Note: Returns 200 OK for all requests. Invalid schemas are silently ignored.
# /dmp/v0/log
Source: https://docs.aiderx.io/en/0.2.2/decision/ad-log/dmpv0log
/openapi/decision.api.en-0.2.2.json post /dmp/v0/log
Records ad interaction events for advertising optimization and analytics.
Supported event types:
- Impressions (imp): Records ad view events
- Clicks (clk): Records ad click events
- Conversions (conv): Records post-view conversion events including purchases, installations, and subscriptions
Note: Returns 200 OK for all requests. Invalid schemas are silently ignored.
# Serving an ad
Source: https://docs.aiderx.io/en/0.2.2/decision/ad-serving/serving-an-ad
/openapi/decision.api.en-0.2.2.json post /app/v0/ad/{tagid}
Serves an ad based on the placement tag (`tagid`) and request payload (`AdRequest`).
Selects the most appropriate ad using campaign, creative, and bidding strategy data.
Returns the final ad determined through DSP response and internal mediation logic.
```bash Request Example
curl --request POST \
--url https://your_a2_service/app/v0/ad/{tagid} \
--header 'Content-Type: application/json' \
--data '{
"user": {
"gender": "M",
"id": "account-187acvbvz",
"yob": 1988
},
"version": "0.1.0"
}'
```
# Delete Allocations
Source: https://docs.aiderx.io/en/0.2.2/decision/cache-management/delete-allocations
/openapi/decision.api.en-0.2.2.json delete /api/cache/allocations
Removes allocation information from the cache.
Targets are identified by a list of `(cid, pid)` pairs in the request body.
# Delete Campaigns
Source: https://docs.aiderx.io/en/0.2.2/decision/cache-management/delete-campaigns
/openapi/decision.api.en-0.2.2.json delete /api/cache/campaigns
Removes campaign information from the cache.
Targets are identified by campaign ID list in the request body.
# Delete Creatives
Source: https://docs.aiderx.io/en/0.2.2/decision/cache-management/delete-creatives
/openapi/decision.api.en-0.2.2.json delete /api/cache/creatives
Removes creative information from the cache.
Targets are identified by a list of `(cid, crid)` pairs in the request body.
# Delete Placements
Source: https://docs.aiderx.io/en/0.2.2/decision/cache-management/delete-placements
/openapi/decision.api.en-0.2.2.json delete /api/cache/placements
Removes placement information from the cache.
Targets are identified by placement ID list in the request body.
# Update Allocations
Source: https://docs.aiderx.io/en/0.2.2/decision/cache-management/update-allocations
/openapi/decision.api.en-0.2.2.json post /api/cache/allocations
Stores allocation information between placements and campaigns.
Used to determine eligible campaigns during mediation.
# Update Campaigns
Source: https://docs.aiderx.io/en/0.2.2/decision/cache-management/update-campaigns
/openapi/decision.api.en-0.2.2.json post /api/cache/campaigns
Stores campaign information in the cache.
Used during ad selection and mediation logic.
# Update Creatives
Source: https://docs.aiderx.io/en/0.2.2/decision/cache-management/update-creatives
/openapi/decision.api.en-0.2.2.json post /api/cache/creatives
Stores creative information in the cache.
Used to build ad responses during ad serving.
# Update Placements
Source: https://docs.aiderx.io/en/0.2.2/decision/cache-management/update-placements
/openapi/decision.api.en-0.2.2.json post /api/cache/placements
Stores placement information in the cache.
Used to update serving logic based on placement metadata.
# Update Bid Strategy
Source: https://docs.aiderx.io/en/0.2.2/decision/configuration/update-bid-strategy
/openapi/decision.api.en-0.2.2.json post /api/cache/bid-strategy
Stores or updates global bid strategy configuration.
Used to calculate bidding prices during ad serving.