Endpoints

Style search

GET https://api.dessert.dev/v1/styles/search?q=… Try it →

Find the right animation styles for a brief using natural language. Useful when you don't know the named Animation Prompt category and would rather describe the look.

Under the hood we embed your query with Vertex multimodal embeddings and run cosine similarity against the indexed Style records. You get back a ranked list of Style IDs you can pass to creative.featured_styles (advanced) or use as a discovery layer to find the right animation_prompts.

Query parameters

ParamDescription
qrequiredNatural-language description of the look (e.g. "warm honey drip on amber, minimal, slow").
top_noptionalHow many results to return. Default 20, max 50.

Request

curl
Python
TypeScript
MCP
curl "https://api.dessert.dev/v1/styles/search?q=warm+honey+drip+on+amber&top_n=10" \
  -H "Authorization: Bearer $DESSERT_API_KEY"
requests.get(
    "https://api.dessert.dev/v1/styles/search",
    params={"q": "warm honey drip on amber", "top_n": 10},
    headers={"Authorization": f"Bearer {os.environ['DESSERT_API_KEY']}"},
).json()
const url = new URL("https://api.dessert.dev/v1/styles/search");
url.searchParams.set("q", "warm honey drip on amber");
url.searchParams.set("top_n", "10");
await fetch(url, {
  headers: { Authorization: `Bearer ${process.env.DESSERT_API_KEY}` },
}).then(r => r.json());
{
  "tool": "dessert.search_styles",
  "arguments": { "q": "warm honey drip on amber", "top_n": 10 }
}

Response

{
  "query": "warm honey drip on amber",
  "results": [
    {
      "style_id": "recSSSSSSSSSSSSS1",
      "style_name": "Honey Drizzle on Amber Glass",
      "animation_prompt": "Serum Drizzles",
      "similarity": 0.872
    },
    {
      "style_id": "recSSSSSSSSSSSSS2",
      "style_name": "Slow Amber Pour",
      "animation_prompt": "Liquid Dripping",
      "similarity": 0.841
    }
  ]
}
FieldDescription
style_idstringPass to creative.featured_styles (advanced) to pin this exact style.
style_namestringInternal display name.
animation_promptstringWhich Animation Prompt category this style belongs to. Pass to creative.animation_prompts to widen the pool.
similaritynumberCosine similarity to the query, in [0, 1]. Higher = closer match.
Two ways to use the results Take the animation_prompt values of the top hits and pass them to creative.animation_prompts on your generate call — this is the recommended path. For tighter control, pass the raw style_ids as creative.featured_styles; this pins the exact rendered look but bypasses the standard rotation system.

Animation Prompt categories

The 36 production Animation Prompts that creative.animation_prompts accepts. They're grouped into seven slot families for clarity:

GroupPrompts
Product — TextureLotion Texture, Serum Droplets, Gel Cream, Serum Drizzles, Soapy Suds, Whipped Cream/Butter, Sparkle Object, Lotion Comb Pulls, Serum Drips, Lotion Squeeze, Balm Texture
Product — IngredientIngredients in Water, Flat Lay Pattern, Dew Drops on Flower or Leaf, Rotating Object, Liquid Dripping, Drippy Ingredients, Dripping Fruit
Product — BenefitFace Loop, Neck Loop
Non-Product — AbstractAbstract Waves, Flowing Fabric
Non-Product — HydrationWater Ball, Water Ripples
Non-Product — Sun LifeBeach Waves, Water Ripples Poolside, Ambient Shadows, Beach Umbrella with Waves, Umbrella Only, Girl Subtle Movement/Body Loop, Yacht Life
Non-Product — BreezyCurtains Blowing, Clouds Drifting, Leaves in Breeze, Flower in Breeze

Errors

StatusCodeCause
400missing_queryThe q parameter was empty.
503style_search_unavailableThe embedding service is warming up. Retry in 30 seconds.