Skip to main content

🚀 Introduction

The HTML Interactive Ad API turns a product page into playable HTML ads. You give it one Link and a list of styles, and get back one ad per style. Every ad is a single self-contained HTML file — images and fonts inlined, the click-through wired to MRAID, compressed to fit the size limit ad networks accept — so you upload the file as it is, with no packaging step of your own. Ads render as a 360×640 portrait card that scales to the screen, and a tap opens the product URL.
Extract content (title, description, images, videos, etc.) from a product URL. POST /api/links/
💡 Save the top-level id — that is the Link ID you pass in step 4.
💡 Errors:
  1. Successfully scraped the URL but it contains no images or videos. status_code: 400 body: [“Link must have at least one image or one video.”]
  2. Failed to scrape the URL (due to anti-scraping or other issues). status_code: 400 body: [“Failed to scrape url: “]

If you don’t have a URL but have product data, create a link directly using parameters. POST /api/links/link_with_params/
The response has the same shape as step 1, and its top-level id is the Link ID.
💡 Provide at least 1 image — an ad cannot be generated without one.

Modify an existing link’s metadata (title, description, images, logo). The ads are built from exactly what the link holds, so fix anything the scraper got wrong before you generate. PUT /api/links/{id}/
💡 A link needs a title and at least one image before it can be advertised.

4. Browse Styles

Each style produces one ad. Fetch the catalog once and keep the ids you like — they are stable, so you can reuse them for every product. GET /api/html_interactive_ads/styles/

5. Create HTML Interactive Ad Task

Create a task using the Link ID from step 1 and the style ids from step 4. POST /api/html_interactive_ads/
🎬 Save the returned id and use it to check the task status.

6. Check Task Status

An ad takes a few minutes, and a task finishes when all of its ads do. Poll the status endpoint until status becomes done. GET /api/html_interactive_ads/{id}/
✅ When status is done, download each html_url and upload the file to your ad network.
A task is done when at least one ad succeeded, and failed when none did. Ads are billed individually, so credits_used counts only the ads you received — an ad that fails is refunded.

7. Webhook Option

Instead of polling, you can provide a webhook_url in the request to receive the result automatically. Once every ad has finished, Creatify sends a POST request to your webhook with the same body the status endpoint returns.

🎯 Summary


💳 Pricing

Each successfully generated ad costs 10 credits. A request for 5 styles costs 50 credits. Ads that fail, or that cannot be compressed under max_size_mb, are refunded.

📌 Notes and Limits

  • Ads are 360×640 portrait and the click-through always opens the product URL; a custom landing page and a language setting are not supported.
  • Files are validated against the AppLovin/MRAID requirements: assets inlined, no direct page redirects, and a size under max_size_mb. An ad that does not pass is failed and refunded rather than delivered.
  • Generating ads for many products means one task per product.

🤝 Need Help?

If you run into any issues, check out our API Reference or contact api@creatify.ai.