Truex Media · AsyncAPI Specification
Truex Media Webhooks
Version
View Spec
View on GitHub
CompanyAdvertisingAdTechVideo AdvertisingConnected TVInteractive AdvertisingSDKMobileAd ServingReportingAttention MeasurementOTTAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-12'
method: searched
source: >-
https://github.com/socialvibe/truex-ads-docs (web_service_ad_api.md,
js_ad_api.md, engagement_interaction_tracking.md, choice_card_event_tracking.md,
choice_card_vpaid_events.md, conversion_pixel.md) and the renderer references
in truex-ad-renderer-web-integration, truex-android-integrations and
truex-roku-integrations.
spec_type: none
asyncapi_published: false
asyncapi_note: >-
true[X] publishes no AsyncAPI document. No /asyncapi.yaml, /asyncapi.json or
event-catalog endpoint answered on any truex.com or infillion.com host, and
the socialvibe GitHub organization contains no AsyncAPI file. NOT FABRICATED —
what is captured below is the provider's real, documented event surface in its
own terms: one server-to-server HTTP callback plus several client-side event
streams.
webhooks:
- name: engagement_callback
type: server-to-server HTTP callback
direction: true[X] -> partner
trigger: >-
Fired when a user successfully completes an engagement (True Attention is
met — typically 30 seconds spent plus at least one interaction).
endpoint: >-
Partner-supplied callback URL, registered with true[X] during the
integration phase. There is no self-service webhook management surface.
transport: HTTP GET with query parameters
delivery: >-
Generally real time, but may be delayed depending on current load. At-least-
once: a partner response of 0 causes true[X] to retry.
signing:
algorithm: HMAC-SHA1
parameter: sig
key: application_secret
canonicalization: >-
key=value pairs sorted alphabetically by key, concatenated with no
separator, application_secret appended, base64 encoded, URL escaped.
deduplication:
key: engagement_id
contract: >-
"If a non-unique engagement_id is passed to the partner, the request
should be ignored and return a failure code to avoid over-crediting a
user." The partner returns code 3, and true[X] does not retry.
source_ip_allowlist:
published: true
note: >-
true[X] publishes eight egress IP addresses and states that all external
calls except those from the allowlist are blocked. Addresses are not
copied here; read them from the reference, which is the authoritative and
current list.
payload:
- field: application_key
type: string
description: The partner-specific application key provided by true[X].
- field: network_user_id
type: string
description: Partner-provided identifier for the user who completed the ad.
- field: currency_amount
type: int
description: Amount of publisher currency earned by completing the ad.
- field: currency_label
type: string
description: Label of the currency used, e.g. "coins".
- field: revenue
type: decimal
description: Revenue earned by the partner for this engagement, up to 8 decimal places.
- field: placement_hash
type: string
description: Identifier hash of the placement this engagement originated from.
- field: campaign_name
type: string
- field: campaign_id
type: string
- field: creative_name
type: string
- field: creative_id
type: string
- field: engagement_id
type: string
description: Unique true[X]-generated identifier for this engagement; the dedupe key.
- field: sig
type: string
description: HMAC-SHA1 signature of the signed request.
responses:
reference: errors/truex-media-error-codes.yml
codes:
- 0 recoverable failure (retried)
- 1 processed
- 2 invalid signature
- 3 invalid user or duplicate engagement_id (not retried)
source: https://github.com/socialvibe/truex-ads-docs/blob/master/web_service_ad_api.md
client_event_streams:
- name: js_client_ad_events
transport: JavaScript callbacks on the ad object
library: https://static.truex.com/js/client.js
events:
- name: onStart
description: The ad is loaded and the user can begin interacting.
- name: onCredit
description: >-
The billing event. Fired once the user has spent 30 seconds and interacted
at least once. Yields an engagement object.
- name: onClose
description: The ad window was closed; fires independently of onFinish and onCredit.
- name: onFinish
description: The ad is fully complete and the user reached the end.
- name: onMessage
description: Custom messages from the engagement unit.
payloads:
- true_targeting_started
- true_targeting_complete
- ad_passback
- name: onError
description: An error occurred with the ad; treat as an exception.
- name: onClickthrough
description: >-
Mobile only; fires when handle_clickthrough_manually is true, yielding the
clickthrough URL for the host app to process.
source: https://github.com/socialvibe/truex-ads-docs/blob/master/js_ad_api.md
- name: truexadrenderer_events
transport: renderer callbacks (subscribe / delegate / observeField per platform)
platforms:
web: '@truex/ad-renderer — tar.subscribe(handler)'
android: TruexAdEvent enum via IEventEmitter
roku: TruexAdRenderer node output events
ios_tvos: TruexAdRendererDelegate methods
terminal_events:
- adCompleted
- adError
- noAdsAvailable
- userCancelStream
events:
- name: adFetchCompleted
android: AD_FETCH_COMPLETED
ios: onFetchAdComplete
- name: adStarted
android: AD_STARTED
ios: onAdStarted
- name: adDisplayed
android: AD_DISPLAYED
- name: adCompleted
android: AD_COMPLETED
ios: onAdCompleted
terminal: true
- name: adError
android: AD_ERROR
ios: onAdError
terminal: true
- name: noAdsAvailable
android: NO_ADS_AVAILABLE
ios: onNoAdsAvailable
terminal: true
- name: adFreePod
android: AD_FREE_POD
ios: onAdFreePod
description: The user did sufficient interaction to earn an ad credit; skip the pod.
- name: userCancelStream
android: USER_CANCEL_STREAM
terminal: true
- name: optIn
android: OPT_IN
ios: onOptIn
- name: optOut
android: OPT_OUT
ios: onOptOut
- name: skipCardShown
android: SKIP_CARD_SHOWN
ios: onSkipCardShown
- name: userCancel
android: USER_CANCEL
ios: onUserCancel
- name: popupWebsite
android: POPUP_WEBSITE
ios: onPopupWebsite
- name: adsAvailable
ios: onAdsAvailable
platforms:
- roku
- ios
- name: xtendedViewStarted
platforms:
- web
- name: videoEvent
platforms:
- roku
source: https://github.com/socialvibe/truex-ad-renderer-web-integration/blob/master/DOCS.md
- name: vpaid_adinteraction_events
transport: VPAID AdInteraction events dispatched from the choice card ad flow
events:
- TrueXChoiceCardLoaded
- TrueXSkipCardLoaded
- TrueXNoAdLoaded
- TrueXUserOptIn
- TrueXUserOptOut
- TrueXUserTimeOut
- TrueXClosedAfterCredit
- TrueXClosedBeforeCredit
- TrueXCredit
source: https://github.com/socialvibe/truex-ads-docs/blob/master/choice_card_vpaid_events.md
- name: interaction_tracking
transport: tracking beacons emitted by the ad container / renderer
shape:
category: One of ten fixed categories.
name: The action being taken.
value: Optional additional context or a millisecond timing value.
step: The step in which the interaction took place.
user_initiated: Whether the interaction came from a user input.
categories:
- timing
- multimedia
- navigation
- external_page
- click
- other
- share
- data_entry
- aggregate
- debug
standard_events:
- timing/initial
- timing/total_time_spent
- timing/true_attention_time_met
- timing/true_attention_interaction_met
- timing/continue_to_end
- timing/creative_completion
- click/interaction
- debug/heart_beat
source: https://github.com/socialvibe/truex-ads-docs/blob/master/engagement_interaction_tracking.md
- name: choice_card_events
transport: tracking beacons from the FEP choice card trigger point
category_convention: fep_<platform>_<choice_card_config_name>
required_events:
- player_load
- player_no_load
- player_ad_free
- choice_card_select_unit
- choice_card_select_watch
- choice_card_auto_advance
- choice_card_re-select_unit
optional_events:
- choice_card_debug
- choice_card_error
- select_back
- unit_closed_by_x_after_credit
- unit_closed_by_x_before_credit
- unit_load
- unit_credit
- unit_first_interaction
- unit_time_met
source: https://github.com/socialvibe/truex-ads-docs/blob/master/choice_card_event_tracking.md
tracking_pixels:
- name: conversion_pixel
url_template: https://engage.truex.com/c.gif?value=LABEL
mechanism: >-
Drops a cookie when a user completes an engagement; a later fire of the
pixel on the advertiser's site records a conversion event.
limitation: >-
Safari blocks third-party cross-site cookies, so the pixel does not work
there; the provider states it should not be used on mobile campaigns.
source: https://github.com/socialvibe/truex-ads-docs/blob/master/conversion_pixel.md
gaps:
- No AsyncAPI, CloudEvents or event-schema document of any kind.
- Callback URL registration is manual, via a true[X] contact — no webhook management API.
- No published delivery-retry schedule, backoff policy or dead-letter behavior.
- No signature algorithm modernization; HMAC-SHA1 is the only documented option.
- No replay or redelivery endpoint for missed callbacks.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/truex-media-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.