---
title: "Send conversion events — estimate"
method: POST
path: "/v1/messaging/ads/conversions/estimate"
tags: ["Conversions"]
---

# Send conversion events — estimate

`POST /v1/messaging/ads/conversions/estimate`

## Request

- Base URL: `https://apihub.co.il`
- URL: `https://apihub.co.il/v1/messaging/ads/conversions/estimate`
- Auth: HTTP bearer

Price the request without executing it. Same body as `POST /v1/messaging/ads/conversions`.

## Request body

- object
  - `events` object[], required
    - `user` object, required: User identity fields. More signals mean higher match rates.
      - `dob` string: Meta advanced matching (db). YYYYMMDD; hashed server-side. Meta only.
      - `zip` string: Meta advanced matching (zp). US uses first 5 digits; hashed server-side. Meta only.
      - `city` string: Meta advanced matching (ct). Plaintext city; normalized + SHA-256 hashed server-side. Meta only.
      - `email` string: Plaintext email. Hashed server-side.
      - `phone` string: Phone number, ideally E.164. Hashed server-side.
      - `state` string: Meta advanced matching (st). 2-letter ANSI for US; hashed server-side. Meta only.
      - `gender` string: Meta advanced matching (ge). 'f' or 'm'; hashed server-side. Meta only.
      - `leadId` string: Meta lead ID from a Lead Ad submission, as a string. Required for Conversion Leads CRM events: send it with `actionSource: 'crm'` and `platformData: { event_source: 'crm', lead_event_source: '<CRM name>' }`. Forwarded unhashed to Meta's `user_data.lead_id`. Meta only.
      - `country` string: ISO 3166-1 alpha-2 country code, e.g. 'us'.
      - `clickIds` object: Platform click identifiers captured from the originating ad click.
        - `fbc` string: Meta click ID (from fbclid URL param).
        - `fbp` string: Meta browser ID (_fbp cookie).
        - `epik` string: Pinterest click ID (the `epik` URL param or `_epik` cookie). Sent to Pinterest as `click_id`, not hashed.
        - `gclid` string: Google click ID (from gclid URL param).
        - `gbraid` string: Google iOS 14.5+ app attribution ID.
        - `wbraid` string: Google iOS 14.5+ web-to-app attribution ID.
        - `rdt_cid` string: Reddit click ID (the `rdt_cid` URL param Reddit adds to ad clicks). Sent to Reddit as `click_id`, not hashed.
        - `rdt_uuid` string: Reddit Pixel browser id (the `_rdt_uuid` first-party cookie). Sent to Reddit as `user.uuid`, not hashed.
        - `li_fat_id` string: LinkedIn first-party ad tracking click ID. Captured by parsing `li_fat_id` from landing-page URLs after the advertiser enables enhanced conversion tracking on the LinkedIn Insight Tag. Sent to LinkedIn as the LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID userId. Opaque token, not hashed.
      - `lastName` string: Plaintext last name. Hashed server-side.
      - `firstName` string: Plaintext first name. Hashed server-side.
      - `ipAddress` string: Client IP address. Sent plaintext.
      - `userAgent` string: Client user-agent string. Sent plaintext.
      - `externalId` string: Stable customer identifier (e.g. CRM user ID). Hashed server-side for Meta and Google. Sent as plaintext to LinkedIn (LinkedIn's Conversions API spec requires the raw value). Maximum effective list size on LinkedIn is 1.
    - `items` object[]: Item-level detail for ecommerce events.
      - `id` string
      - `name` string
      - `price` number
      - `category` string
      - `quantity` integer
    - `value` number: Conversion value in the specified currency.
    - `eventId` string, required: Unique dedup key. The same eventId must be used on pixel + CAPI to prevent double-counting. Mapped to event_id on Meta, transactionId on Google, eventId on LinkedIn (LinkedIn deduplicates against Insight Tag events with the same eventId; the Insight Tag event wins when both arrive), and `metadata.conversion_id` on Reddit (Reddit's dedup key against Reddit Pixel events).
    - `currency` string: ISO 4217 currency code.
    - `eventName` string, required: Standard event name (Purchase, Lead, CompleteRegistration, AddToCart, InitiateCheckout, AddPaymentInfo, Subscribe, StartTrial, ViewContent, Search, Contact, SubmitApplication, Schedule) or a custom string (only supported on platforms that accept custom events: Meta, OpenAI Ads and Reddit). Per-platform behavior: - Meta: free-form; standard names match Meta's built-ins. - Google: ignored. The conversion action's category determines the type. - LinkedIn: ignored. The conversion rule's `type` is locked to the destination. - OpenAI Ads: a fixed subset of standard names (Purchase, Lead, AddToCart, ViewContent, InitiateCheckout, CompleteRegistration, Subscribe, StartTrial, Schedule) maps 1:1 onto OpenAI's own event-type enum; anything else is sent as a custom event with the name preserved. - Reddit: Purchase, Lead, CompleteRegistration (SIGN_UP), AddToCart, AddToWishlist, ViewContent, Search and PageView (PAGE_VISIT) map onto Reddit's tracking types; anything else is sent as a CUSTOM event with the name preserved.
    - `eventTime` integer, required: When the conversion happened, in unix seconds.
    - `sourceUrl` string, uri: URL where the conversion originated (used by Meta).
    - `actionSource` 'web' | 'app' | 'offline' | 'crm' | 'phone_call' | 'system_generated': Where the conversion happened. Used by Meta. Google also requires an event source internally; omitting this field sends OTHER to Google. Send an explicit value for accurate origin reporting.
    - `platformData` object: Escape hatch for platform-specific fields we haven't normalized. On Meta, keys are shallow-merged into `custom_data` only: fields Zernio already builds (`value`, `currency`, `contents`, `num_items`) always win on collision, and `user_data` (hashed match keys) is never touched. Use first-class fields (e.g. `user.leadId`) for anything that must reach `user_data`.
  - `consent` object: Batch-level user consent. Required by Google for EEA/UK events under the Feb 2026 restrictions. On Meta, any DENIED flag enables Limited Data Use on every event in the batch (data_processing_options ["LDU"] with geolocation, country 0 / state 0); GRANTED or absent consent sends events with Meta's default processing. On Reddit, `adUserData: DENIED` drops every user field from the events. Ignored by LinkedIn.
    - `adUserData` 'GRANTED' | 'DENIED'
    - `adPersonalization` 'GRANTED' | 'DENIED'
  - `testCode` string: Meta `test_event_code` passthrough. On Pinterest any value sends the batch with `test=true` (validated, not recorded). On Reddit, sent as `test_id` so the events show in the pixel's test view. Ignored by Google, LinkedIn, and OpenAI Ads.
  - `accountId` string, required: SocialAccount ID (metaads, googleads, linkedinads, tiktokads, openaiads, pinterestads, or redditads).
  - `destinationId` string, required: Platform destination identifier. For Meta, the pixel/dataset ID. For Google, the conversion action resource name. For LinkedIn, the conversion rule ID or full `urn:lla:llaPartnerConversion:{id}` URN. For OpenAI Ads, the pixel wire id. For Pinterest, the numeric ad account id. For Reddit, the pixel id (`a2_...`).

## Response `200`

Estimate

- Estimate
  - `operation` string
  - `estimated_credits` number
  - `credits_to_reserve` number
  - `estimated_usage` object
  - `note` string, nullable
  - `balance` object
    - `available` number
  - `sufficient` boolean

---

[API](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai.md) · [All operations](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/revisions/a8caa42835ce?raw)
