Documentation menu

Ad destinations

Module: destinations. See README.md for authentication.

Endpoint Scope Permission What it does
GET /apps/{app}/destinations read destinations.read List conversion destinations
POST /apps/{app}/destinations/test/{id} write destinations.write Send a synthetic event to one destination

A destination forwards conversions server-side to Meta CAPI, Google Ads, TikTok Events, LinkedIn CAPI, a signed webhook, or Slack. Creating one needs a credential, which is console work: credentials go through the vault and never travel over this API in either direction.

List

{
  "data": [{
    "id": "d_1",
    "kind": "meta_capi",
    "kindLabel": "Meta Conversions API",
    "name": "Meta — purchases",
    "enabled": true,
    "environments": ["production"],
    "mapping": [{ "event": "purchase", "destinationEvent": "Purchase", "valueProperty": "value", "currency": "EUR" }],
    "config": { "pixelId": "1234567890" },
    "hasCredential": true,
    "lastDispatchAt": "2026-09-03T…",
    "lastError": null
  }],
  "nextCursor": null
}

hasCredential says whether a credential is stored; the credential itself is never returned, and neither is any token inside config.

Test

POST /apps/{app}/destinations/test/{id}
{ "ok": true, "error": null, "deliveryId": "dl_1" }

Sends the adapter's synthetic event and records a delivery, exactly like the console's test button. The delivery log stores a redacted request and response — enough to debug a mapping, never enough to leak a token.