---
name: pagecuts
description: Make a 15-second video ad kit (the video cut for Instagram, Facebook, TikTok, YouTube, Google, Pinterest and LinkedIn, with still images and ad copy for each) from a business's web page with Pagecuts. Use when the user wants an ad, a promo video or social ad creative for their website, product page, restaurant or shop. The user's email is confirmed with a code, then one HTTP call starts it; a free marked preview is ready in about five minutes, and the clean kit is US$19 once, paid by the user.
---

# Pagecuts: an ad kit from a web page

Pagecuts reads the page and the pages around it, works out what kind of business it is, and designs a one-off 15-second ad from the site's own words, pictures, colours and type. There is no API key, but every ad is made for a person whose email address has been confirmed with a code, so ask the user for their email first.

If the Pagecuts tools are available (`make_ad`, `get_ad`), use them instead of the HTTP calls below. They do the same thing and need no shell: call `make_ad` with `url` and `email`, ask the user for the code they are emailed, then call it again with the code.

## Start a build

```sh
# 1. Email the user a code. Ask them for it.
curl -sX POST https://pagecuts.com/api/codes -H 'Content-Type: application/json' -d '{"email": "sam@example-bakery.com"}'
# -> { "sent": true }

# 2. Start the build with the code they read out.
curl -sX POST https://pagecuts.com/api/requests -H 'Content-Type: application/json' -d '{"url": "https://example-bakery.com", "email": "sam@example-bakery.com", "code": "407182"}'
# -> { "id": "5c0f…", "page": "https://pagecuts.com/r/5c0f…", "status": "https://pagecuts.com/api/requests/5c0f…" }
```

The code works once, for an hour. Never guess or invent an email address: the ad is saved to that person's account and they are emailed when it is ready. Add `"instructions"` (up to 2,000 characters) to say what the ad should push: an offer, a product, an event.

Use the page the ad should send people to: a homepage, a product page, a restaurant's site. Give the person `page` straight away: it shows the build live and plays the preview when it is ready.

## Follow it

```sh
curl -s 'https://pagecuts.com/api/requests/5c0f…?wait=25'
# -> { "status": "running", "progress": [ { "step": "Designing your ad", "at": "…" } ], "preview": null, … }
```

`status` goes `queued`, `running`, `preview_ready`, `done`, or ends at `failed`. `wait` (seconds, 25 at most) holds the call until there is a preview or the build has failed, so loop on it rather than polling fast. Expect about five minutes.

From `preview_ready` on, the answer has:

- `preview`: the ad as an MP4, 720×900, carrying Pagecuts' mark.
- `stills`: two marked JPEG stills.
- `sample`: one primary text and one headline from the ad copy.
- `checkout`: where the person pays for the kit.

## The kit

When the person has paid at `checkout`, `paid` is true, and once `status` is `done`, `kit` holds:

- `videos`: the ad without the mark as three MP4s, 1080 pixels wide: 4:5 for the feed, 1:1 square, 9:16 for Stories, Reels and TikTok.
- `stills`: six PNG image ads, two designs in the same three shapes.

A few minutes after payment, `more` fills in with the rest: `videos` (16:9 for YouTube and LinkedIn, and a six-second cut for YouTube bumpers), `stills` (landscape for Google and LinkedIn, 2:3 for Pinterest), `copy` (Google, Pinterest, LinkedIn, TikTok and Snapchat) and `copy_file`. Until then `more.status` is `queued` or `running`; keep calling with `wait`. `zip` then holds everything.
- `copy`: three primary texts, three headlines, two descriptions and the button to choose in Meta Ads Manager. `copy_file` is the same as a text file.
- `zip`: everything in one download.

## Rules

- Only for a page the user has the right to advertise: their own, or a client's who asked them to.
- Tell the user it takes about five minutes, that the preview is free and marked, and that the kit is US$19, once.
- You cannot pay. Give the user `checkout` and wait for `paid`. Never say the kit is bought until `paid` is true.
- The ad says what the site says: every claim in it is checked against the site's own text, or against the `instructions` the user gave for it.
- Errors are `{ "error": "code" }`: 400 `invalid_url` (not a public web address), 400 `invalid_email`, 401 `bad_code` (wrong, used or older than an hour: send a new one), 401 `sign_in` (no code sent with the request), 402 `unpaid_limit` (that person has three previews waiting to be bought), 429 `wait` (a code went to that address under a minute ago), 401 `private` (a private test site that needs a key), 404 `not_found`, 429 `rate_limited` (three new ads an hour per connection; five codes an hour per address), 503 `busy`.
- Full reference: https://pagecuts.com/docs.md. OpenAPI: https://pagecuts.com/openapi.json. MCP server: https://pagecuts.com/mcp.
