cd /news/developer-tools/openai-capi-is-not-meta-with-a-new-h… · home topics developer-tools article
[ARTICLE · art-111287] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

OpenAI CAPI is not Meta with a new host

Pixellint's new validation pack for OpenAI's Conversions API highlights critical differences from Meta's CAPI, including distinct endpoints, field names, and timestamp formats. The pack flags common errors such as sending Unix seconds instead of milliseconds for OpenAI's timestamp_ms, which can cause silent failures despite HTTP 200 responses. Developers are advised to store UTC instants and convert at the edge, and to validate payloads with Pixellint's rulepack before posting to bzr.openai.com.

read1 min views1 publishedAug 26, 2026

The ads conversion POST looks familiar until you count the digits and read the field names. OpenAI Ads uses a different path, a different clock, and a different id than Meta CAPI. A shared worker that only knows event_time

will 200 and still miss.

Meta CAPI posts to the Graph API events edge. The body is data[]

of events, each with event_name

, event_time

, action_source

, user_data

. OpenAI Ads Conversions API posts to bzr.openai.com/v1/events

. The body is events[]

, each with id

, type

, and timestamp_ms

. The image pixel is yet another path: /v1/sdk/events

with pid

.

Pixellint pack vendor/openai-conversions-api

is the server hop. vendor/openai

is the image tag. They are not aliases.

OpenAI timestamp_ms

is Unix milliseconds. Date.now()

is already 13 digits. Meta event_time

is Unix seconds, 10 digits, so the Meta helper is Math.floor(Date.now() / 1000)

. Sending that 10-digit value as timestamp_ms

is too short. Pixellint flags vendor.openai-conversions-api.body.timestamp_ms.invalid

.

{
  "events": [
    {
      "type": "order_created",
      "timestamp_ms": 1770000000
    }
  ]
}

OpenAI events[].id

is required. Meta event_id

is how you dedup the pixel against CAPI. Same idea, different key. type

is an OpenAI event type such as order_created

. Meta event_name

is Purchase

. Web events also need source_url

.

Store one UTC instant. Convert at the edge: floor(ms/1000) for Meta, Date.now()

for OpenAI. Run pixellint validate json --rulepack vendor/openai-conversions-api

on the body you POST to bzr.openai.com. One fixture cannot serve both.

Pixellint is not affiliated with OpenAI or Meta. Playground: pixellint.org. Pack: OpenAI Conversions API.

Original: OpenAI CAPI is not Meta with a new host

── more in #developer-tools 4 stories · sorted by recency
── more on @openai 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/openai-capi-is-not-m…] indexed:0 read:1min 2026-08-26 ·