Webhook Events

Campaign created

A campaign was created.

postWebhookcampaign.created

Headers

webhook-idstring required
Example:whevt_A1b2C3d4E5f6

The event id; the same on every retry of this event. Dedupe on it.

webhook-timestampstring required
Example:1790332496

Unix seconds of this delivery attempt (re-signed on every retry). Reject values more than 5 minutes off.

webhook-signaturestring required
Example:v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4=

Space-separated v1,<base64 HMAC-SHA256 of "<webhook-id>.<webhook-timestamp>.<body>"> signatures, one per active signing secret (two during a rotation). Verify with any Standard Webhooks library.

Payload

idstring required

Event id; the webhook-id header. The same on every retry: dedupe on it.

type'campaign.created' required
timestampstring date-time required

When the change happened

organizationIdstring required

Example payload

{
  "data": {
    "campaign": {
      "timeZone": "UTC",
      "videoTargetUnit": "videos",
      "spec": {
        "currency": "USD",
        "schedule": {
          "interval": "month",
          "intervalCount": 1,
          "anchor": "rolling",
          "startsOn": "2026-10-01",
          "timeZone": "UTC"
        },
        "videoTarget": 30,
        "videoTargetUnit": "videos",
        "briefId": "orgbrief_RwmraAffhMt9",
        "payouts": {
          "fixedSalary": {
            "id": "rule_A1b2C3d4E5f6"
          },
          "basePayouts": [
            {
              "id": "rule_A1b2C3d4E5f6",
              "perVideo": 10,
              "steps": [
                {
                  "id": "rule_A1b2C3d4E5f6",
                  "perVideo": 45
                }
              ],
              "minViews": 1000,
              "platforms": [
                "tiktok",
                "instagram"
              ],
              "conditions": {
                "match": "all",
                "items": [
                  {
                    "field": "contentType",
                    "operator": "is",
                    "values": [
                      "slideshow"
                    ]
                  },
                  {
                    "field": "views",
                    "operator": "atLeast",
                    "value": 10000
                  }
                ]
              },
              "scope": "per_creative",
              "creatives": "once"
            }
          ],
          "cpmPayouts": [
            {
              "scope": "per_video",
              "creatives": "bestInWindow",
              "platforms": [
                "tiktok",
                "instagram"
              ],
              "conditions": {
                "match": "all",
                "items": [
                  {
                    "field": "contentType",
                    "operator": "is",
                    "values": [
                      "slideshow"
                    ]
                  },
                  {
                    "field": "views",
                    "operator": "atLeast",
                    "value": 10000
                  }
                ]
              },
              "tiers": [
                {
                  "id": "rule_A1b2C3d4E5f6",
                  "to": 100000,
                  "rate": 1
                }
              ]
            }
          ],
          "flatBonuses": [
            {
              "scope": "per_video",
              "creatives": "bestInWindow",
              "mode": "highest",
              "platforms": [
                "tiktok",
                "instagram"
              ],
              "conditions": {
                "match": "all",
                "items": [
                  {
                    "field": "contentType",
                    "operator": "is",
                    "values": [
                      "slideshow"
                    ]
                  },
                  {
                    "field": "views",
                    "operator": "atLeast",
                    "value": 10000
                  }
                ]
              },
              "tiers": [
                {
                  "id": "rule_A1b2C3d4E5f6",
                  "to": 100000,
                  "amount": 50
                }
              ]
            }
          ],
          "baseCap": {
            "id": "rule_A1b2C3d4E5f6"
          },
          "performanceCap": {
            "id": "rule_A1b2C3d4E5f6"
          },
          "eligibility": {
            "windowDays": 31,
            "publicationScope": "include_earlier"
          }
        }
      }
    }
  }
}

Response

Any 2xx within 15 seconds acknowledges the event. Anything else, a timeout or a redirect is retried (10 attempts over about 3 days); 410 disables the endpoint.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.