Skip to main content
POST /api/v2/buyer/campaigns/{campaignId}/creatives/validate Runs a dry-run validation of a creative manifest against one or more ADCP agent format specs using validate_input. Returns per-target results — pass, fail with slot-level violations, or unvalidatable for nondeterministic formats. No assets are stored, so use this before Create creative manifest to catch format mismatches early. Targets default to the manifest’s format_id when omitted.

Request

curl -X POST https://api.interchange.io/api/v2/buyer/campaigns/cmp_987654321/creatives/validate \
  -H "Authorization: Bearer $SCOPE3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "manifest": {
      "format_id": { "agent_url": "https://agent.example.com", "id": "video_standard" },
      "assets": {
        "main_video": { "url": "https://cdn.example.com/hero-30s.mp4", "duration_ms": 30000, "width": 1920, "height": 1080 }
      }
    },
    "targets": [
      { "kind": "canonical", "id": "video_standard" },
      { "kind": "product", "id": "prod_hulu_ctv_sports" }
    ]
  }'

Parameters

FieldTypeRequiredNotes
campaignIdstringYesPath param — owning campaign
manifestobjectYesADCP creative manifest. format_id is { agent_url, id }; assets is a map keyed by asset_id
targetsarrayNoValidation targets. Each is { kind, id } where kind is canonical, product, or third_party_format. Defaults to the manifest format_id

Response

{
  "results": [
    {
      "target": { "kind": "canonical", "id": "video_standard" },
      "result_kind": "validated_pass"
    },
    {
      "target": { "kind": "product", "id": "prod_hulu_ctv_sports" },
      "result_kind": "validated_fail",
      "violations": [
        {
          "rule": "max_duration",
          "field": "assets.main_video.duration_ms",
          "expected": "<= 15000",
          "predicted": 30000,
          "retry_with": { "duration_ms": 15000 }
        }
      ]
    }
  ]
}
results are in request order. result_kind is validated_pass, validated_fail (with violations), or unvalidatable_nondeterministic for formats the agent cannot pre-flight. violations[].retry_with is an advisory corrected input shape.

Errors

  • 400 VALIDATION_ERROR — missing manifest, manifest format_id without agent_url and id, or a target missing kind/id.
  • 404 NOT_FOUNDcampaignId does not exist or is not visible to the authenticated customer.
See Errors for the full error contract.

Creative overview

Manifest fields and format coverage

Create creative manifest

Create the manifest after it validates