---
title: "Ads on demand"
method: POST
path: "/api/v1/snacks/on-demand"
tags: ["Snacks"]
---

# Ads on demand

`POST /api/v1/snacks/on-demand`

## Request

- Base URL: `https://www.vidguy.ai`
- URL: `https://www.vidguy.ai/api/v1/snacks/on-demand`
- Auth: HTTP bearer

Async. Make ads from a store, service or app URL, then poll GET /api/v1/jobs/{id}. Pro and Scale plans. Ad types and pricing: [Ads on Demand](/docs/ads-on-demand).

## Request body

- CreateOnDemandSnackRequest
  - `shopUrl` string: Store, product page, service site or app listing to make ads from.
  - `types` string[]: Ad types to make. Omit for the default pack.
  - `count` integer: Number of ads (1-5).
  - `prompt` string: Creative steer for every ad (theme, audience, genre, look).
  - `language` 'en' | 'es' | 'fr' | 'de' | 'it' | 'pt' | 'nl' | 'pl' | 'sq' | 'tr' | 'ru' | 'ar' | 'hi' | 'id' | 'vi' | 'th' | 'ja' | 'ko' | 'zh': Language of the ads (ISO 639-1). Default `en`.
  - `adAspectRatio` '4:5' | '1:1' | '9:16': Static-ad frame. Default `4:5`.
  - `adFormats` string[]: Static-ad layouts to use, in order.
  - `animationStyle` 'claymation' | 'pixar_3d' | 'felt_stop_motion' | 'cartoon_2d': Animated-ad look.
  - `presenterImageUrl` string, uri: Ads only: a photo of the person (or character) to feature instead of a stock presenter. Talking ads film them, animated and music ads draw them in the film's style, and each static ad decides how to show them. At least 256px on the short side.
  - `websiteUrl` string: Website mode (Scale): a snack pack from a website.
  - `dexScreenerUrl` string: Token mode (Scale): a snack pack from a DexScreener pair.
  - `render` boolean: Render PNG / MP4 files (+1 credit for ads, +3 for snack packs).
  - `name` string

## Response `201`

Ad job accepted.

- CreateOnDemandSnackResponse
  - `jobId` string, required
  - `offeringId` 'snack_generation', required
  - `status` 'queued' | 'processing' | 'awaiting_selection' | 'completed' | 'failed' | 'cancelled', required
  - `pollUrl` string, required
  - `creditsReserved` integer, required
  - `render` boolean
  - `types` string[]
  - `count` integer
  - `snackTypeSequence` string[]
  - `source` 'shop' | 'website' | 'token'

## Other responses

- `400`: Invalid request or unreadable page.
- `401`: Missing or invalid API key.
- `402`: Insufficient credits.
- `403`: Plan doesn't include ads on demand.
- `429`: Rate limit exceeded.
- `502`: Couldn't read the page or start the job.

---

[API](https://skmtc.dev/vidguy/apis/vidguy-snacks-api.md) · [All operations](https://skmtc.dev/vidguy/apis/vidguy-snacks-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vidguy/apis/vidguy-snacks-api/revisions/ad6855539a1a?raw)
