studio.place_product_card
Place a product card: a price_tag text clip showing a stock item's name and price, built from values you already hold. studio.insert_product_card reads them from the stock record for you; use this op inside studio.apply_ops or when the values come from elsewhere. The price prints as the currency code and the amount with two decimals (SGD 12.90), never a symbol. style: tag (name over price, lower left), banner (name and price on one line, bottom centre), price_only (the price alone, large, top right); default tag. A name longer than 32 characters is shortened on screen and kept whole in the card's record. Lands on the first text track, or the one track_id names, at start_ms (default 0) for duration_ms (default 4000). Refuses, naming the fix: a blank product_name, an unknown or non-text track_id, a locked text track, a card past the timeline cap, a full track, or an overlap with another clip (the refusal gives the nearest start_ms that fits).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | The card's layout; tag when left out. | |
| currency | Yes | The ISO code the price prints with; the business's sales_settings default_currency. | |
| start_ms | No | Timeline millisecond where the card appears; 0 when left out. | |
| track_id | No | A text track (vtr_) from get_composition; the first text track when left out. | |
| project_id | Yes | The studio project (vp_…) this tool acts on. | |
| duration_ms | No | How long the card shows, in milliseconds; 4000 when left out. | |
| product_name | Yes | The item's name as the stock record holds it. | |
| stock_item_id | Yes | The stock item's id from stock_item_list; kept on the card so it can be refreshed from the record. | |
| sell_price_cents | Yes | The selling price in cents (1290 prints as 12.90). |