> For the complete documentation index, see [llms.txt](https://help.branch.io/llms.txt).

# Events API

The Events API tracks conversions in your app. Attach metadata for Commerce, Content, Lifecycle, and Custom events to measure user behavior and attribute it to your campaigns.

**Important considerations**

- **Real-time only**: You must send events in real time as they occur. Branch doesn't support backtracking or historical event ingestion. Events with timestamps in the past won't be backfilled into reports.
- **SKAdNetwork (SKAN)**: Your app must handle SKAN natively, not via the Branch SDK. Branch returns SKAN-relevant fields (such as `coarse_key` and `update_conversion_value`) in the API response so your app can update its conversion value accordingly. See the [SKAdNetwork guide](https://help.branch.io/marketer-hub/skadnetwork.md) for details.

**Rate limits**

The Events API enforces rate limits on a per-app basis. If you exceed the limit, the API returns a `429 Rate Limit Reached` error. Back off and retry with exponential delay.

Rate limits are enforced per app. Contact your Branch account manager for your app's specific limits.

[Read the Events API overview](https://help.branch.io/apidocs/events/overview.md)

## Log custom events

`POST https://api2.branch.io/v2/event/custom`

Use this endpoint to log custom events.

**Important considerations**

- **Real-time only**: You must send events in real time as they occur. Branch doesn't support backtracking or historical event ingestion. Events with timestamps in the past won't be backfilled into reports.
- **SKAdNetwork (SKAN)**: Your app must handle SKAN natively, not via the Branch SDK. Branch returns SKAN-relevant fields (such as `coarse_key` and `update_conversion_value`) in the API response so your app can update its conversion value accordingly. See the [SKAdNetwork guide](https://help.branch.io/marketer-hub/skadnetwork.md) for details.

### Parameters

- `branch_key` (string, required) — The Branch Key of the originating app obtained in your [Account Settings](https://help.branch.io/account-hub/profile-settings.md).
- `name` (string, required) — The name of the event to log. Can be a custom event name string, for example, "picture swiped". 
- `Accept` (string, header) — Recommended. The media type the client expects in the response. Should be `application/json`.
- `Content-Type` (string, header) — Recommended. The media type of the request body. Should be `application/json`.
- `custom_data` (object) — Additional custom key-value pairs that you want attached to the event. Values may be of any JSON type. Attached to events retrieved via Exports and sent via Webhooks.
- `custom_data.<key>` (any value) — Any additional key. Values are passed through as provided.
- `event_data` (object)
- `event_data.transaction_id` (string) — The partner-specified transaction ID for their internal use.
- `event_data.revenue` (number) — The partner-specified reported revenue for the event.
- `event_data.currency` (string) — Currency in which the partner originally reported revenue, price, shipping, and tax.
- `event_data.shipping` (number) — Shipping cost associated with the transaction.
- `event_data.tax` (number) — Total tax associated with the transaction.
- `event_data.coupon` (string) — Transaction coupon redeemed with the transaction (for example, "SPRING2017").
- `event_data.affiliation` (string) — Store or affiliation from which this transaction occurred (for example, Google Store).
- `event_data.description` (string) — Description associated with the event, not necessarily specific to any individual content items (see below).
- `event_data.search_query` (string) — Additional search queries.
- `meta_data` (object) — Additional metadata for the event.
- `meta_data.<key>` (any value) — Any additional key. Values are passed through as provided.
- `user_data` (object) — Information about the user and the device the event occurred on. **Required identifiers**: You must include at least one of the following in `user_data`: * `developer_identity`, or * `browser_fingerprint_id`, or * `os=iOS` AND `idfa`, or * `os=iOS` AND `idfv`, or * `os=Android` AND `android_id`, or * `os=Android` AND `aaid` 
- `user_data.os` (string) — The operating system, for example, Android, iOS, MAC_OS, LINUX, or WINDOWS.
- `user_data.os_version` (string) — The version of the operating system. Strongly recommended for all paid traffic to ensure accurate attribution. **Required** for Facebook campaigns on iOS. 
- `user_data.environment` (string) — Usually FULL_APP.
- `user_data.aaid` (string) — The Android/Google advertising ID.
- `user_data.android_id` (string) — Android hardware ID.
- `user_data.idfa` (string) — iOS advertising ID.
- `user_data.idfv` (string) — iOS vendor ID.
- `user_data.anon_id` (string) — The Facebook anonymous user ID. **Required** when running Facebook campaigns using Aggregated Event Measurement (AEM) on iOS.
- `user_data.advertising_ids` (object) — Wrapper object for advertising identifiers. Use this in addition to the flat aaid, idfa, and idfv fields above to future-proof your integration for non-standard IDs (for example, OAID on Huawei devices). Additional advertising ID keys may be supported as new platforms emerge—contact Branch Support if you need to send an identifier that isn't listed here.
- `user_data.advertising_ids.oaid` (string) — Open Advertising ID, used on Huawei devices and other Android devices without Google Play Services.
- `user_data.google_analytics_id` (string) — The Google Analytics client ID, useful for cross-platform stitching with Google Analytics. Include where applicable to improve attribution coverage and downstream analytics.
- `user_data.limit_ad_tracking` (boolean) — True if the partner has opted to not be tracked by advertisers.
- `user_data.user_agent` (string) — The user agent of the browser or app where the event occurred. Usually associated with a webview.
- `user_data.browser_fingerprint_id` (string) — Branch internal-only field for tracking browsers.
- `user_data.http_origin` (string) — The current page URL where the Web SDK logged web session start.
- `user_data.http_referrer` (string) — The referral URL that led to the current page where the Web SDK logged web session start.
- `user_data.developer_identity` (string) — The developer-specified identity for a user.
- `user_data.country` (string) — The country code of the user, usually based on device settings or user agent string.
- `user_data.language` (string) — The language code of the user, usually based on device settings or user agent string.
- `user_data.ip` (string) — The IP address for the device where the event occurred. Required if using the `X-IP-Override` request header.
- `user_data.local_ip` (string) — Android only. The local IP of the device.
- `user_data.brand` (string) — The brand of the device.
- `user_data.randomized_device_token` (string) — Branch internal-only field for tracking devices.
- `user_data.app_version` (string) — The app version downloaded by the user.
- `user_data.model` (string) — The model of the device.
- `user_data.screen_dpi` (integer) — The screen's DPI.
- `user_data.screen_height` (integer) — The screen's height.
- `user_data.screen_width` (integer) — The screen's width.
- `user_data.dma_eea` (boolean) — Whether European regulations, including the DMA, apply to this user and conversion. **Required** if EU regulations apply to this user. Failure to include user consent signals may result in attribution or campaign performance degradation.
- `user_data.dma_ad_personalization` (boolean) — Whether the end user has granted or denied ads personalization consent. **Required** if `dma_eea` is set to `true` (that is, EU regulations apply to this user). Failure to include user consent signals may result in attribution or campaign performance degradation.
- `user_data.dma_ad_user_data` (boolean) — Whether the end user has granted or denied consent for 3P transmission of user-level data for ads. **Required** if `dma_eea` is set to `true` (that is, EU regulations apply to this user). Failure to include user consent signals may result in attribution or campaign performance degradation.
- `X-IP-Override` (string, header) — Optional. Override the IP address Branch uses for the event (for example, when forwarding events server-to-server from your own backend). **Two requirements must be met for this header to function:** 1. **Branch must allowlist your app ID.** The header is ignored until allowlisting is enabled. [Open a support request](https://support.branch.io/) to have your app ID allowlisted before sending this header in production. 2. **You must also include `user_data.ip` in the request body** with the same IP value. Sending the header alone isn't sufficient—the body field is what Branch persists for attribution. 

### Responses

- `200` — Success.
- `400` — Bad request—typically an invalid or missing credential or parameter.
- `429` — Rate limit exceeded—reduce request frequency and retry.

### Returns

Success. Returns `400` and `429` on failure — see the response panel for the error shape.

### Example request

```bash
curl 'https://api2.branch.io/v2/event/custom' \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
    "branch_key": "key_live_xxxx",
    "name": "CustomEventTest",
    "user_data": {
      "os": "Android",
      "os_version": "12.4.0",
      "environment": "FULL_APP",
      "aaid": "abcdabcd-0123-0123-00f0-000000000000",
      "android_id": "a12300000000",
      "idfa": "00000000-0000-0000-0000-000000000001",
      "idfv": "00000000-0000-0000-0000-000000000002",
      "anon_id": "fbanon_abc123def456",
      "advertising_ids": {
        "oaid": "00aa00a0-0000-0a00-a000-aaa0000a0aaa"
      },
      "google_analytics_id": "GA1.2.123456789.1234567890",
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko)",
      "browser_fingerprint_id": "857675855146829999",
      "http_origin": "https://example.com/landing",
      "http_referrer": "https://referrer.example.com/path",
      "developer_identity": "user123",
      "country": "US",
      "language": "en",
      "ip": "198.51.100.42",
      "local_ip": "192.0.2.1",
      "brand": "LGE",
      "randomized_device_token": "857675855146829998",
      "app_version": "1.0.0",
      "model": "Nexus 5X",
      "screen_dpi": 420,
      "screen_height": 1794,
      "screen_width": 1080,
      "dma_eea": true,
      "dma_ad_personalization": true,
      "dma_ad_user_data": true
    },
    "event_data": {
      "revenue": 1.5,
      "currency": "USD",
      "shipping": 10.2,
      "tax": 12.3,
      "coupon": "coupon",
      "affiliation": "test_affiliation",
      "description": "Event_description",
      "search_query": "Test Search query"
    }
  }'
```

### Example responses

`200`

```json
{
  "ascending_only": false,
  "coarse_key": "high",
  "locked": false,
  "update_conversion_value": 3
}
```

`400`

```json
{
  "error": {
    "message": "Authentication failed.",
    "code": 400
  }
}
```

`429`

```json
{
  "error": {
    "code": 429,
    "message": "Rate limit reached."
  }
}
```

## Log standard events

`POST https://api2.branch.io/v2/event/standard`

Use this endpoint to log standard events, that is, Commerce, Content, and User Lifecycle events.

**Important considerations**

- **Real-time only**: You must send events in real time as they occur. Branch doesn't support backtracking or historical event ingestion. Events with timestamps in the past won't be backfilled into reports.
- **SKAdNetwork (SKAN)**: Your app must handle SKAN natively, not via the Branch SDK. Branch returns SKAN-relevant fields (such as `coarse_key` and `update_conversion_value`) in the API response so your app can update its conversion value accordingly. See the [SKAdNetwork guide](https://help.branch.io/marketer-hub/skadnetwork.md) for details.

### Parameters

- `branch_key` (string, required) — The Branch Key of the originating app obtained in your [Account Settings](https://help.branch.io/account-hub/profile-settings.md).
- `name` (enum, required) — The name of the event to log. Must be one of the following standard Branch Event names: * Commerce: * ADD_TO_CART * ADD_TO_WISHLIST * VIEW_CART * INITIATE_PURCHASE * ADD_PAYMENT_INFO * CLICK_AD * PURCHASE * SPEND_CREDITS * VIEW_AD * Content: * SEARCH * VIEW_ITEM * VIEW_ITEMS * RATE * SHARE * INITIATE_STREAM * COMPLETE_STREAM * User Lifecycle: * COMPLETE_REGISTRATION * COMPLETE_TUTORIAL * ACHIEVE_LEVEL * UNLOCK_ACHIEVEMENT * INVITE * LOGIN * START_TRIAL * SUBSCRIBE One of `ADD_TO_CART`, `ADD_TO_WISHLIST`, `VIEW_CART`, `INITIATE_PURCHASE`, `ADD_PAYMENT_INFO`, `CLICK_AD`, `PURCHASE`, `SPEND_CREDITS`, `VIEW_AD`, `SEARCH`, `VIEW_ITEM`, `VIEW_ITEMS`, `RATE`, `SHARE`, `INITIATE_STREAM`, `COMPLETE_STREAM`, `COMPLETE_REGISTRATION`, `COMPLETE_TUTORIAL`, `ACHIEVE_LEVEL`, `UNLOCK_ACHIEVEMENT`, `INVITE`, `LOGIN`, `START_TRIAL`, `SUBSCRIBE`.
- `user_data` (object, required) — Information about the user and the device the event occurred on. **Required identifiers**: You must include at least one of the following in `user_data`: * `developer_identity`, or * `browser_fingerprint_id`, or * `os=iOS` AND `idfa`, or * `os=iOS` AND `idfv`, or * `os=Android` AND `android_id`, or * `os=Android` AND `aaid` 
- `user_data.os` (string) — The operating system, for example, Android, iOS, MAC_OS, LINUX, or WINDOWS.
- `user_data.os_version` (string) — The version of the operating system. Strongly recommended for all paid traffic to ensure accurate attribution. **Required** for Facebook campaigns on iOS. 
- `user_data.environment` (string) — Usually FULL_APP.
- `user_data.aaid` (string) — The Android/Google advertising ID.
- `user_data.android_id` (string) — Android hardware ID.
- `user_data.idfa` (string) — iOS advertising ID.
- `user_data.idfv` (string) — iOS vendor ID.
- `user_data.anon_id` (string) — The Facebook anonymous user ID. **Required** when running Facebook campaigns using Aggregated Event Measurement (AEM) on iOS.
- `user_data.advertising_ids` (object) — Wrapper object for advertising identifiers. Use this in addition to the flat aaid, idfa, and idfv fields above to future-proof your integration for non-standard IDs (for example, OAID on Huawei devices). Additional advertising ID keys may be supported as new platforms emerge—contact Branch Support if you need to send an identifier that isn't listed here.
- `user_data.advertising_ids.oaid` (string) — Open Advertising ID, used on Huawei devices and other Android devices without Google Play Services.
- `user_data.google_analytics_id` (string) — The Google Analytics client ID, useful for cross-platform stitching with Google Analytics. Include where applicable to improve attribution coverage and downstream analytics.
- `user_data.limit_ad_tracking` (boolean) — True if the partner has opted to not be tracked by advertisers.
- `user_data.user_agent` (string) — The user agent of the browser or app where the event occurred. Usually associated with a webview.
- `user_data.browser_fingerprint_id` (string) — Branch internal-only field for tracking browsers.
- `user_data.http_origin` (string) — The current page URL where the Web SDK logged web session start.
- `user_data.http_referrer` (string) — The referral URL that led to the current page where the Web SDK logged web session start.
- `user_data.developer_identity` (string) — The developer-specified identity for a user.
- `user_data.country` (string) — The country code of the user, usually based on device settings or user agent string.
- `user_data.language` (string) — The language code of the user, usually based on device settings or user agent string.
- `user_data.ip` (string) — The IP address for the device where the event occurred. Required if using the `X-IP-Override` request header.
- `user_data.local_ip` (string) — Android only. The local IP of the device.
- `user_data.brand` (string) — The brand of the device.
- `user_data.randomized_device_token` (string) — Branch internal-only field for tracking devices.
- `user_data.app_version` (string) — The app version downloaded by the user.
- `user_data.model` (string) — The model of the device.
- `user_data.screen_dpi` (integer) — The screen's DPI.
- `user_data.screen_height` (integer) — The screen's height.
- `user_data.screen_width` (integer) — The screen's width.
- `user_data.dma_eea` (boolean) — Whether European regulations, including the DMA, apply to this user and conversion. **Required** if EU regulations apply to this user. Failure to include user consent signals may result in attribution or campaign performance degradation.
- `user_data.dma_ad_personalization` (boolean) — Whether the end user has granted or denied ads personalization consent. **Required** if `dma_eea` is set to `true` (that is, EU regulations apply to this user). Failure to include user consent signals may result in attribution or campaign performance degradation.
- `user_data.dma_ad_user_data` (boolean) — Whether the end user has granted or denied consent for 3P transmission of user-level data for ads. **Required** if `dma_eea` is set to `true` (that is, EU regulations apply to this user). Failure to include user consent signals may result in attribution or campaign performance degradation.
- `Accept` (string, header) — Recommended. The media type the client expects in the response. Should be `application/json`.
- `content_items` (array of object)
- `content_items.$content_schema` (enum) — Category or schema for a piece of content. One of `COMMERCE_AUCTION`, `COMMERCE_BUSINESS`, `COMMERCE_OTHER`, `COMMERCE_PRODUCT`, `COMMERCE_RESTAURANT`, `COMMERCE_SERVICE`, `COMMERCE_TRAVEL_FLIGHT`, `COMMERCE_TRAVEL_HOTEL`, `COMMERCE_TRAVEL_OTHER`, `GAME_STATE`, `MEDIA_IMAGE`, `MEDIA_MIXED`, `MEDIA_MUSIC`, `MEDIA_OTHER`, `MEDIA_VIDEO`, `OTHER`, `TEXT_ARTICLE`, `TEXT_BLOG`, `TEXT_OTHER`, `TEXT_RECIPE`, `TEXT_REVIEW`, `TEXT_SEARCH_RESULTS`, `TEXT_STORY`, `TEXT_TECHNICAL_DOC`.
- `content_items.$og_title` (string) — Commerce and Content Reports only. The title (for the individual content item).
- `content_items.$og_image_url` (string) — Commerce and Content Reports only. The image URL (for the individual content item).
- `content_items.$canonical_identifier` (string) — Commerce and Content Reports only. Used to allow Branch to unify content/messages for Content Analytics.
- `content_items.$publicly_indexable` (boolean) — Commerce and Content Reports only. If true, content can be seen by anyone. If false, content can't be indexed for public use.
- `content_items.$locally_indexable` (boolean) — Commerce and Content Reports only. If true, content can be indexed for local (device) use. If false, content can't be indexed for local use.
- `content_items.$price` (number) — Commerce and Content Reports only. The price for the product/content.
- `content_items.$quantity` (number) — Commerce and Content Reports only. The quantity of the item to be ordered (for example, for PURCHASE and ADD_TO_CART).
- `content_items.$sku` (string) — Commerce and Content Reports only. The product SKU or product ID.
- `content_items.$product_name` (string) — Commerce and Content Reports only. The product's name.
- `content_items.$product_brand` (string) — Commerce and Content Reports only. The product's brand.
- `content_items.$product_category` (enum) — Commerce and Content Reports only. The product's category, if it's a product. One of `ANIMALS_AND_PET_SUPPLIES`, `APPAREL_AND_ACCESSORIES`, `ARTS_AND_ENTERTAINMENT`, `BABY_AND_TODDLER`, `BUSINESS_AND_INDUSTRIAL`, `CAMERAS_AND_OPTICS`, `ELECTRONICS`, `FOOD_BEVERAGES_AND_TOBACCO`, `FURNITURE`, `HARDWARE`, `HEALTH_AND_BEAUTY`, `HOME_AND_GARDEN`, `LUGGAGE_AND_BAGS`, `MATURE`, `MEDIA`, `OFFICE_SUPPLIES`, `RELIGIOUS_AND_CEREMONIAL`, `SOFTWARE`, `SPORTING_GOODS`, `TOYS_AND_GAMES`, `VEHICLES_AND_PARTS`.
- `content_items.$product_variant` (string) — Commerce and Content Reports only. The product's variant (for example, XL or red).
- `content_items.$rating_average` (number) — Commerce and Content Reports only. The average rating of the item.
- `content_items.$rating_count` (number) — Commerce and Content Reports only. The number of ratings for the item.
- `content_items.$rating_max` (number) — Commerce and Content Reports only. The maximum possible rating for the item (for example, 5.0 if 5 stars is the highest possible rating).
- `content_items.$creation_timestamp` (integer) — Commerce and Content Reports only. The time the content was created (Unix timestamp, typically in milliseconds).
- `content_items.$exp_date` (integer) — Commerce and Content Reports only. The last time after which this content is no longer valid. null or 0 means no limit. Should rarely be set.
- `content_items.$keywords` (array of string) — Commerce and Content Reports only. Keywords.
- `content_items.$address_street` (string) — Commerce and Content Reports only. The street address for a restaurant, business, room (hotel), etc.
- `content_items.$address_city` (string) — Commerce and Content Reports only. The street address for a restaurant, business, room (hotel), etc.
- `content_items.$address_region` (string) — Commerce and Content Reports only. The state or region for a restaurant, business, room (hotel), etc.
- `content_items.$address_country` (string) — Commerce and Content Reports only. The country code for a restaurant, business, room (hotel), etc.
- `content_items.$address_postal_code` (string) — Commerce and Content Reports only. The postal/ZIP code for a restaurant, business, room (hotel), etc.
- `content_items.$latitude` (number) — Commerce and Content Reports only. The latitude for a restaurant, business, room (hotel), etc.
- `content_items.$longitude` (number) — Commerce and Content Reports only. The longitude for a restaurant, business, room (hotel), etc.
- `content_items.$image_captions` (array of string) — Commerce and Content Reports only. The captions associated with the image.
- `content_items.$condition` (enum) — Commerce and Content Reports only. For auctions, whether the item is new, good, acceptable, etc. One of `OTHER`, `NEW`, `EXCELLENT`, `GOOD`, `FAIR`, `POOR`, `USED`, `REFURBISHED`.
- `content_items.$custom_fields` (object) — Commerce and Content Reports only. Key-value pairs that you want attached to the content item. Values may be of any JSON type. Attached to events that are retrieved via Exports and sent via Webhooks.
- `content_items.$custom_fields.<key>` (any value) — Any additional key. Values are passed through as provided.
- `Content-Type` (string, header) — Recommended. The media type of the request body. Should be `application/json`.
- `custom_data` (object) — Additional custom key-value pairs that you want attached to the event. Values may be of any JSON type. Attached to events retrieved via Exports and sent via Webhooks.
- `custom_data.<key>` (any value) — Any additional key. Values are passed through as provided.
- `customer_event_alias` (string) — The event alias that you define, used in addition to the event name defined above.
- `event_data` (object)
- `event_data.transaction_id` (string) — The partner-specified transaction ID for their internal use.
- `event_data.revenue` (number) — The partner-specified reported revenue for the event.
- `event_data.currency` (string) — Currency in which the partner originally reported revenue, price, shipping, and tax.
- `event_data.shipping` (number) — Shipping cost associated with the transaction.
- `event_data.tax` (number) — Total tax associated with the transaction.
- `event_data.coupon` (string) — Transaction coupon redeemed with the transaction (for example, "SPRING2017").
- `event_data.affiliation` (string) — Store or affiliation from which this transaction occurred (for example, Google Store).
- `event_data.description` (string) — Description associated with the event, not necessarily specific to any individual content items (see below).
- `event_data.search_query` (string) — Additional search queries.
- `X-IP-Override` (string, header) — Optional. Override the IP address Branch uses for the event (for example, when forwarding events server-to-server from your own backend). **Two requirements must be met for this header to function:** 1. **Branch must allowlist your app ID.** The header is ignored until allowlisting is enabled. [Open a support request](https://support.branch.io/) to have your app ID allowlisted before sending this header in production. 2. **You must also include `user_data.ip` in the request body** with the same IP value. Sending the header alone isn't sufficient—the body field is what Branch persists for attribution. 

### Responses

- `200` — Success.
- `400` — Bad request—typically an invalid or missing credential or parameter.
- `429` — Rate limit exceeded—reduce request frequency and retry.

### Returns

Success. Returns `400` and `429` on failure — see the response panel for the error shape.

### Example request

```bash
curl 'https://api2.branch.io/v2/event/standard' \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
    "branch_key": "key_live_xxxx",
    "name": "PURCHASE",
    "customer_event_alias": "my custom alias",
    "user_data": {
      "os": "Android",
      "os_version": "12.4.0",
      "environment": "FULL_APP",
      "aaid": "abcdabcd-0123-0123-00f0-000000000000",
      "android_id": "a12300000000",
      "idfa": "00000000-0000-0000-0000-000000000001",
      "idfv": "00000000-0000-0000-0000-000000000002",
      "anon_id": "fbanon_abc123def456",
      "advertising_ids": {
        "oaid": "00aa00a0-0000-0a00-a000-aaa0000a0aaa"
      },
      "google_analytics_id": "GA1.2.123456789.1234567890",
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko)",
      "browser_fingerprint_id": "857675855146829999",
      "http_origin": "https://example.com/landing",
      "http_referrer": "https://referrer.example.com/path",
      "developer_identity": "user123",
      "country": "US",
      "language": "en",
      "ip": "198.51.100.42",
      "local_ip": "192.0.2.1",
      "brand": "LGE",
      "randomized_device_token": "857675855146829998",
      "app_version": "1.0.0",
      "model": "Nexus 5X",
      "screen_dpi": 420,
      "screen_height": 1794,
      "screen_width": 1080,
      "dma_eea": true,
      "dma_ad_personalization": true,
      "dma_ad_user_data": true
    },
    "event_data": {
      "revenue": 1.5,
      "currency": "USD",
      "shipping": 10.2,
      "tax": 12.3,
      "coupon": "coupon",
      "affiliation": "test_affiliation",
      "description": "Event_description",
      "search_query": "Test Search query"
    },
    "content_items": [
      {
        "$content_schema": "COMMERCE_PRODUCT",
        "$og_title": "My Content Title",
        "$og_image_url": "valid URL",
        "$canonical_identifier": "item12345",
        "$locally_indexable": true,
        "$price": 23.2,
        "$quantity": 2,
        "$sku": "1994320302",
        "$product_name": "my_product_name1",
        "$product_brand": "my_prod_Brand1",
        "$product_category": "BABY_AND_TODDLER",
        "$product_variant": "3T",
        "$rating_average": 4.2,
        "$rating_count": 5,
        "$rating_max": 5,
        "$creation_timestamp": 1499892854966,
        "$keywords": [
          "sneakers",
          "shoes"
        ],
        "$address_street": "Street_name1",
        "$address_city": "city1",
        "$address_region": "Region1",
        "$address_country": "Country1",
        "$address_postal_code": "postal_code",
        "$latitude": 12.07,
        "$longitude": -97.5,
        "$image_captions": [
          "my_img_caption1"
        ],
        "$condition": "OTHER"
      }
    ]
  }'
```

### Example responses

`200`

```json
{
  "ascending_only": false,
  "coarse_key": "high",
  "locked": false,
  "update_conversion_value": 3
}
```

`400`

```json
{
  "error": {
    "message": "Authentication failed.",
    "code": 400
  }
}
```

`429`

```json
{
  "error": {
    "code": 429,
    "message": "Rate limit reached."
  }
}
```
