Skip to main content

November 4, 2026

Brands can be renamed and deleted, and listed with product counts.
  • Added: PATCH /api/v1/brands/{brand_id} renames a brand or changes its website or selling countries (products:update).
  • Added: DELETE /api/v1/brands/{brand_id} deletes a brand and every product in it (products:delete).
  • Added: GET /api/v1/brands returns each brand’s product_count and takes sort, order, limit, has_products and name_contains.
  • Added: GET /api/v1/products returns each product’s creative_count and takes has_creatives.
  • Fixed: GET /api/v1/creatives could skip creatives across pages when several were made at the same moment (for example one campaign batch).
  • Fixed: GET /api/v1/products stopped after the first page when many products were added at the same moment (for example a bulk import). Every product is now returned across pages.
  • Changed: POST /api/v1/brands with a website_url now starts reading the website into the brand’s profile (logo, colours, fonts), as adding a brand in the app does. The response includes profile_status: reading, failed or no_website.
See Brands.

October 26, 2026

Videos can be made from any recipe, in one call. This replaces the concept and voice steps.
  • Added: every recipe the app offers (a UGC voiceover, a Pixar style story, a podcast clip, a song and more) is in GET /api/v1/video-recipes, each with min_duration_seconds, max_duration_seconds and max_credits, its top price.
  • Changed (breaking): POST /api/v1/videos takes type: "recipe" (was "ugc") with recipe_id, audience_id, language and an optional story_idea, your own idea for the story. We write the story and script, cast and voice it, and render it.
  • Changed: a recipe video is charged its recipe’s top price when the request is accepted, then costs what its script runs to: the rest is refunded and credits_charged drops to the real price. max_credits is checked against the top price.
  • Changed (breaking): videos read back with type: "recipe" (was "ugc"). GET /api/v1/video-recipes returns min_duration_seconds and max_duration_seconds in place of duration_seconds.
  • Removed (breaking): GET and POST /api/v1/video-concepts, GET /api/v1/voices, and concept_id and voice_id on POST /api/v1/videos.
See Create a video.

October 19, 2026

ChatGPT ad groups take any ad count up to 8. The app picks it with the same counter as other generators.
  • Changed: ad_count on POST /api/v1/chatgpt-ad-groups and POST /api/v1/chatgpt-ad-groups/{ad_group_id}/ads takes any whole number from 1 to 8 (was 1, 3, 5, or 8).
Every count accepted before is still accepted.

October 11, 2026

Video generation is cheaper.
  • Changed: UGC videos and photo animations now cost 1 credit per second, down from 2. A 30 second UGC video is 30 credits and a 10 second animation is 10. GET /pricing and max_credits reflect the new rate.
Batches can be larger. The app now picks a count with a counter from 1 to 60, and the API accepts the same range.
  • Changed: creative_count on POST /api/v1/campaigns and POST /api/v1/campaigns/{campaign_id}/creatives takes any whole number from 1 to 60 (was 30). blueprint_ids takes up to 60 ad types.
  • Changed: quick_shoot.count on POST /api/v1/photoshoots takes any whole number from 1 to 60 (was 15).
Every count accepted before is still accepted.

October 2, 2026

Counts are now any number in range, not a fixed set of steps. A campaign can be a single ad creative.
  • Changed: creative_count on POST /api/v1/campaigns takes any whole number from 1 to 30 (default 10). Send 1 for a single ad creative.
  • Changed: with blueprint_ids, the count no longer has to be a multiple of the ad types. It is split as evenly as it goes, the first types taking any remainder (10 across three is 4, 3 and 3), and must be at least the number of types.
  • Changed: creative_count on POST /api/v1/campaigns/{campaign_id}/creatives takes any whole number from 1 to 30.
  • Changed: quick_shoot.count on POST /api/v1/photoshoots takes any whole number from 1 to 15.
Every count accepted before is still accepted.

September 30, 2026

Campaigns and UGC videos are made for an audience, the same way the app works: audience first, then the ads.

Docs reorganized

The docs are reorganized by what you make: setup, ad campaigns, listing images, photoshoots, ChatGPT ads and UGC videos, each with its own section. Old guide URLs redirect.

Audiences

  • New: every product created through the API generates its audiences automatically, and they are saved as soon as they are written. There is nothing to approve: list them and pass any id as audience_id.
  • New: GET /api/v1/products/{product_id} returns audiences: { count, generation_status }, and GET .../audiences returns generation_status (idle, generating, ready or failed) next to the list.
  • Changed: POST .../audiences/recommendations generates more audiences and saves them ready to use.
  • Removed: POST .../audiences/{audience_id}/approve, the status query parameter on the list and the status field on each audience.

Required audience

  • Changed: audience_id is required on POST /api/v1/campaigns in guided mode, on POST /api/v1/video-concepts, and on POST /api/v1/videos with type: "ugc". Send a saved audience’s id, or null for a deliberately broad campaign or video. Leaving it out returns 400 invalid_request. Prompt-mode campaigns and animations are unchanged.

September 25, 2026

The API now offers every surface of the app, with the same choices the app gives you. Where the app lets you pick something, so does the API; where it does not, neither does the API. Prompting is always optional.

Ad campaigns

  • POST /api/v1/campaigns takes the campaign creator’s choices: mode (guided or prompt), blueprint_id or blueprint_ids, audience_id, angles, brief, aspect_ratio, language and creative_count.
  • Added GET /api/v1/campaign-blueprints, POST /api/v1/campaign-angles and POST /api/v1/campaigns/{campaign_id}/creatives.
  • Changed: creative_count now takes the creator’s values, 5, 10, 15 or 20, or a multiple of the ad types for blueprint_ids. language defaults to the brand’s saved language.
  • Deprecated: prompt. It still works and keeps its original counts (3 to 30). Use mode: "prompt" with brief.
  • Each campaign creative costs 2 credits.

Photoshoots

  • Added GET/POST /api/v1/moodboards and GET /api/v1/moodboards/{moodboard_id}.
  • POST /api/v1/photoshoots accepts quick_shoot.moodboard_id and a new moodboard_shots kind to shoot chosen cells of a moodboard.

Video ads

  • Added GET /api/v1/video-recipes, GET/POST /api/v1/video-concepts, GET /api/v1/voices, GET/POST /api/v1/videos and GET /api/v1/videos/{video_id}. A UGC video follows the app’s four steps: audience, recipe, concept and voice. type: "animation" animates a Quick Shoot photo.

ChatGPT ads

  • Added GET/POST /api/v1/chatgpt-ad-groups, GET/PATCH /api/v1/chatgpt-ad-groups/{ad_group_id}, POST .../ads, POST .../targeting and POST /api/v1/chatgpt-ads/{ad_id}/copy. Each ad costs 1 credit.

Amazon listings

  • Added GET /api/v1/amazon-marketplaces, GET/POST /api/v1/amazon-listing-ideas, GET/PATCH /api/v1/amazon-listing-ideas/{idea_id}, POST .../image and POST /api/v1/amazon-listing-images. Each image costs 2 credits.

Audiences

  • Added POST /api/v1/products/{product_id}/audiences, PATCH and DELETE .../audiences/{audience_id}, POST .../recommendations and POST .../audiences/{audience_id}/approve. The list takes ?status=recommended and each audience now has a status.

Everything else

  • GET /api/v1/pricing lists every paid operation.
  • GET /api/v1/creatives adds the amazon_listing type.
  • New permissions: videos, chatgpt_ads and amazon_listings. Keys created earlier do not include them and show as custom access in Settings; create a new key to use these endpoints.
  • New error codes: request_rejected, plan_required, moodboard_not_ready, and 404s for recipes, audiences, moodboards, ad groups, ideas, concepts, voices and videos.

September 22, 2026

Self-serve keys and access

  • Pro and Enterprise workspace owners and admins can now create and revoke API keys in Settings > API keys, with an access level (Full access, Generate, or Read only), an optional expiry, and an optional monthly credit budget.
  • API access requires the Pro or Enterprise plan. Other plans receive 403 with plan_upgrade_required; suspended workspaces receive org_suspended.
  • Added campaigns:read and photoshoots:read. Existing keys with generate keep read access.

Spending controls

  • Added GET /api/v1/account (plan, available credits, limits, and the key’s monthly budget) and GET /api/v1/pricing (credit cost per operation).
  • POST /api/v1/campaigns and POST /api/v1/photoshoots accept max_credits. A request above it returns 422 credit_limit_exceeded and charges nothing.
  • Campaigns and photoshoots now include credits_charged.
  • A key that reaches its monthly budget receives 422 key_budget_exceeded on requests that start new generation.

New endpoints

  • GET /api/v1/creatives and GET /api/v1/creatives/{creative_id} for every creative type, filterable by product, campaign, and type.
  • GET /api/v1/campaigns and GET /api/v1/photoshoots list summaries, newest first.
  • GET /api/v1/products/{product_id}/audiences. POST /api/v1/campaigns accepts audience_id.

Rate limits

  • Each key now has separate per-minute budgets for reads (600), writes (120), uploads (60), and generation (30).

August 24, 2026

Product deletion

  • Deleting a product now removes it from active API access, stops work in progress, and invalidates its share links.
  • Subsequent requests for a deleted product return 404 Not Found. Product deletion cannot be reversed through the public API.

August 12, 2026

Retro Quick Shoot look

  • Added retro to quick_shoot.look on POST /api/v1/photoshoots. It derives its scenes from the product instead of applying a fixed treatment.
  • retro returns a print-ready 1200x1800 card at 300 DPI (4 x 6 inches): the artwork mounted on aged paper with its line set underneath. It ignores direction.image_urls; direction.text is still used as guidance.
  • Added caption to photoshoot outputs and to product creatives. It carries the line printed under the artwork, and is null outside the retro look.
  • Added the Quick Shoot guide covering the full path from a product URL or image to finished images.

August 5, 2026

Local image uploads

  • Added POST /api/v1/uploads/images for multipart uploads from a computer or private system before creating a product, Quick Shoot, or template.
  • Added the dedicated images:upload API-key permission. Uploaded image URLs can be reused across products, Quick Shoots, and templates.
  • Uploads accept one JPG, PNG, WebP, HEIC, or HEIF image up to 10 MB and return a durable LocalAds-owned URL.
  • Base64 and JSON data URLs are not supported.

August 2, 2026

Photoshoot templates

  • Added POST /api/v1/templates to create reusable photoshoot template packs from one or more image URLs.
  • Template shots now preserve each supplied image’s aspect ratio.

Product setup

  • Product URLs and supplied image URLs now return 202 Accepted until the product is ready.
  • Added optional Idempotency-Key support to product creation.

July 30, 2026

Product descriptions

  • Added optional product descriptions to product creation and updates.
  • Added description to product list and detail responses.

Ad campaign API

  • Added prompt-based campaign creation under POST /api/v1/campaigns.
  • Added progressive campaign and creative retrieval under GET /api/v1/campaigns/{campaign_id}.
  • Added the campaigns:generate API-key permission.
  • Added optional idempotency for safe campaign retries.

July 29, 2026

Quick Shoot API

  • Added Quick Shoot creation through POST /api/v1/photoshoots.
  • Added optional text direction and up to eight HTTPS direction images.
  • Added standard, close_up, lifestyle, and out_of_the_box look selection, with output counts of 1, 3, 5, 8, or 15.
  • Template and Quick Shoot inputs are mutually exclusive.

July 24, 2026

Brand scoping

  • Added brand discovery under GET /api/v1/brands.
  • Required brand_id when creating products and listing brand-owned collections.
  • Added brand_id to product, template, and photoshoot responses.
  • Restricted photoshoots to products and templates from the same brand.

Product API

  • Added product creation, listing, retrieval, updates, and deletion under /api/v1/products.
  • Added organization API-key permissions for product operations.
  • Added cursor pagination for product lists.

Photoshoot API

  • Added photoshoot template listing and retrieval under /api/v1/templates.
  • Added asynchronous photoshoot creation and status retrieval under /api/v1/photoshoots.
  • Added paginated photoshoot creative retrieval under /api/v1/products/{product_id}/creatives.
  • Added optional database-backed idempotency for safe photoshoot retries.
Last modified on November 13, 2026