Pinterest Conversions API (REST v5).
Credentials
%{ad_account_id: "5493…", access_token: "pina_…"}The token comes from Ads Manager → Ad Account Overview → Conversions → Conversions API. The ad account is the scope — there is no pixel id in the path, unlike every other platform here.
Two traps, both silent
Purchase is checkout. Pinterest's enum has no purchase. Sending one
returns an explicit rejection — the only platform here that says so out loud
— but only in the per-event status array, not the HTTP code.
A 200 does not mean the events landed. Pinterest answers 200 with
num_events_received / num_events_processed and a per-event status list.
A batch with one bad event is a 200 with "status": "failed" buried in the
body. This client reads that array.
Click id
user_data.click_id, from the _epik cookie or the &epik= query
parameter. Pinterest prefers the cookie: the query parameter is frequently
stripped in transit.