{
  "id": "CMP-067",
  "slug": "cmp-067",
  "title": "The hosted evidence URL must return the artifact, not an error page",
  "statement": "A hosted evidence URL must return 200 and render the artifact rather than a 404, a timeout, a redirect or a placeholder.",
  "rationale": "Evidence links rot between writing the registration and the review, and the failure is silent from the submitter's side because their browser serves the file from cache. A reviewer who follows the link and sees a 404 does not chase it — the campaign is rejected for missing evidence that the submitter can still see on their own screen.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "hosted evidence URL",
  "severity": "BLOCKING",
  "detectability": [
    "CRAWL"
  ],
  "failureClass": "TERMINAL_EVIDENCE",
  "authorities": [
    "Twilio",
    "Aerialink"
  ],
  "codes": [
    {
      "provider": "Twilio",
      "code": "30891",
      "remediable": true
    },
    {
      "provider": "Twilio",
      "code": "30922",
      "remediable": true
    }
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Open every evidence URL in a private browsing window on a device that has never seen it, and replace any that do not render the file itself. Done when each link returns the image or PDF directly rather than a viewer page, a login, or a \"file not found\".",
  "pitfalls": [
    "A cloud-drive preview page returns 200 while showing the reviewer a sign-in prompt, so status code alone is not the test — what came back has to be the artifact."
  ],
  "catalogIds": [
    "WEB-105"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-067/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-067.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
