pixellint

vendor/openai-conversions-api · vendor documented

OpenAI CAPI timestamps are milliseconds

The server hop is /v1/events, not /v1/sdk/events. timestamp_ms is thirteen digits. A ten-digit Unix second is invalid. action_source=web also needs source_url.

timestamp_ms is 13 digits

Math.floor(Date.now() / 1000) is the Meta clock. OpenAI wants milliseconds. Sending seconds makes timestamp_ms too short and the event does not attribute.

Rule: vendor.openai-conversions-api.body.timestamp_ms.invalid

What this pack matches

Hosts
bzr.openai.com
Paths
/v1/events
Vendor docs
developers.openai.com/ads/conversions-api

Rules

Codes are stable. A finding in CI, MCP, or the playground lands on the same id.

Field Required What it checks Rule ids Source
pid required It is the Pixel ID, and it travels on the query string. Fix: Send `pid` as a query parameter on `/v1/events`. vendor.openai-conversions-api.param.pid.missing
vendor.openai-conversions-api.param.pid.empty
docs
events required The Conversions API posts events under `events`, and OpenAI documents that array as required. Fix: Send at least one event in `events`. vendor.openai-conversions-api.body.events.missing docs
id required It identifies the event for deduplication. OpenAI documents it as required on every event. Fix: Set `id` to the same value the image tag sent as `event_id`. vendor.openai-conversions-api.body.id.missing
vendor.openai-conversions-api.body.id.empty
docs
type required It is the event type. OpenAI documents it as required. `app_installed` and `app_opened` are CAPI-only with `action_source=mobile_app`. Fix: Set `type` to a documented event name. vendor.openai-conversions-api.body.type.missing
vendor.openai-conversions-api.body.type.empty
vendor.openai-conversions-api.body.type.invalid
docs
timestamp_ms required It is the event time in milliseconds. OpenAI documents `timestamp_ms`, so a 10-digit seconds value is the wrong unit. Fix: Send milliseconds, a 13-digit Unix timestamp. vendor.openai-conversions-api.body.timestamp_ms.missing
vendor.openai-conversions-api.body.timestamp_ms.empty
vendor.openai-conversions-api.body.timestamp_ms.invalid
docs
action_source optional It names where the event happened. `source_url` is required when this is `web`. vendor.openai-conversions-api.body.action_source.empty docs
source_url optional It is the page URL. OpenAI documents it as required when `action_source` is `web`. Fix: Send `source_url` on web events. vendor.openai-conversions-api.body.source_url.empty
vendor.openai-conversions-api.body.source_url.invalid
docs
body.web_requires_source_url required The event is marked `action_source: web` but carries no `source_url`. OpenAI documents the page URL as required for web events. Fix: Set `source_url` to the HTTPS page URL. vendor.openai-conversions-api.body.web_requires_source_url docs

Validate a payload

pixellint validate json @payload.json --rulepack vendor/openai-conversions-api

Or paste it into the playground. Same engine, in the browser, nothing sent anywhere.

cargo install pixellint · npm install pixellint