# ManyLives Ad Creative Spec Checker

> ManyLives Ad Creative Spec Checker is a paid API for AI agents from api.manylives.me, paid per call via x402, $0.003/call, status unknown (last checked 2026-10-28).

Validates an ad creative (image or video) against platform placement specs for Instagram, TikTok, and other channels, returning pass/warn/fail results per placement.

## Facts

- Endpoint: POST https://api.manylives.me/paid/ads/creative-spec-check?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-28
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/manylives-ad-creative-spec-checker-d8712d41
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_4N7PyISOxPS-HIkaItOH7

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability manylives-ad-creative-spec-checker-d8712d41 -d '<json body>'
```

Example prompt: Check if my 1080x1920 MP4 video ad at https://cdn.example.com/ad.mp4 — 22 seconds long, 18.4 MB — meets the specs for Instagram Reels and TikTok in-feed. The headline sits at x=0.1, y=0.4, w=0.8, h=0.1 and the price text is at x=0.1, y=0.8, w=0.5, h=0.08.

## When to prefer this

Choose this endpoint when you need automated, platform-specific validation of ad creatives before upload — especially when checking safe zones for text overlays, aspect ratios, codec requirements, or bitrate limits across multiple social placements simultaneously. Prefer it over manual spec lookups when specs are kept current and you need a machine-readable pass/warn/fail result per placement.

## Known failure modes

- URL is not publicly accessible or requires authentication — returns error
- File exceeds 50 MB limit — rejected
- Unsupported file format provided — check fails or is skipped
- Invalid text_box coordinates outside 0-1 range — may produce incorrect safe-zone results
- Placement name not recognized — placement skipped or error returned
- Base64 payload malformed — parse error returned

## How this service works

Pay-per-call tools for people building AI agents: live web search and page contents, prompt-injection checks, market data and risk sizing for trading agents, company profiles and quick AI. Ask us to turn a public website into a JSON endpoint. Pay per call, no account, free trial.

## Output

Returns a JSON object with: a 'fits' array of placements the creative qualifies for, a 'does_not_fit' array of disqualified placements, a 'media' object with detected codec, ratio, dimensions, bitrate, and duration, and a 'placements' array with per-placement verdict, individual check statuses (pass/warn/fail), and human-readable detail messages. Also includes the date when specs were last read.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "description": "public https:// link to the image or video (up to 50 MB), or file_base64"
  },
  "width": {
   "type": "string",
   "examples": [
    1080
   ],
   "description": "or describe the file: width in pixels"
  },
  "format": {
   "type": "string",
   "examples": [
    "mp4"
   ],
   "description": "optional: mp4, mov, jpeg, png…"
  },
  "height": {
   "type": "string",
   "examples": [
    1920
   ],
   "description": "height in pixels"
  },
  "headline": {
   "type": "string",
   "description": "optional headline"
  },
  "placements": {
   "type": "string",
   "examples": [
    [
     "instagram-reels-video",
     "instagram-stories-video",
     "tiktok-in-feed-video"
    ]
   ],
   "description": "optional list, e.g. ['instagram-reels-video','tiktok-in-feed-video'] (default: every placement for that kind of file)"
  },
  "size_bytes": {
   "type": "string",
   "examples": [
    18400000
   ],
   "description": "file size in bytes"
  },
  "text_boxes": {
   "type": "string",
   "examples": [
    [
     {
      "h": 0.1,
      "w": 0.8,
      "x": 0.1,
      "y": 0.4,
      "label": "headline"
     },
     {
      "h": 0.08,
      "w": 0.5,
      "x": 0.1,
      "y": 0.8,
      "label": "price"
     }
    ]
   ],
   "description": "optional list of {x, y, w, h, label} where text or logos sit (fractions 0-1 of the frame, or pixels), checked against safe zones"
  },
  "file_base64": {
   "type": "string",
   "description": "the file, base64"
  },
  "primary_text": {
   "type": "string",
   "examples": [
    "New: the 2-minute breakfast"
   ],
   "description": "optional ad text, to check its length"
  },
  "duration_seconds": {
   "type": "string",
   "examples": [
    22
   ],
   "description": "video length (omit for images)"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "fits": [
   "instagram-reels-video",
   "tiktok-in-feed-video"
  ],
  "media": {
   "kind": "video",
   "ratio": "9:16",
   "width": 1080,
   "format": "mp4",
   "height": 1920,
   "size_bytes": 18400000,
   "audio_codec": "AAC (or other MPEG-4 audio)",
   "video_codec": "H.264",
   "overall_kbps": 6691,
   "duration_seconds": 22
  },
  "placements": [
   {
    "fails": 0,
    "warns": 2,
    "checks": [
     {
      "check": "recommended resolution",
      "detail": "1080x1920; recommended 1440x2560",
      "status": "warn"
     },
     {
      "check": "safe zones",
      "detail": "1 of 2 text boxes reach into the margin (top 14%, bottom 35%, sides 6%): price",
      "status": "warn"
     }
    ],
    "verdict": "meets requirements, misses a recommendation",
    "placement": "instagram-reels-video"
   }
  ],
  "specs_read": "19 Oct 2026",
  "does_not_fit": []
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/manylives-ad-creative-spec-checker-d8712d41/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.manylives.me](https://www.zero.xyz/host/api.manylives.me/llms.txt)
