> ## Documentation Index
> Fetch the complete documentation index at: https://docs.makelocalads.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Recipes and angles

> List the recipes the campaign creator offers, and ask it for angles.

[← Ad campaigns](/ad-campaigns/overview)

Recipes and angles are the optional first two stops of the campaign creator:
pick a recipe (or several ad types) for the campaign, and optionally ask for
angle suggestions. Both are free.

## List recipes

**Endpoint:** `GET https://makelocalads.com/api/v1/campaign-blueprints`
**Permission:** `campaigns:read`

Pass `product_id` for the recipes offered for that product's category:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl "https://makelocalads.com/api/v1/campaign-blueprints?product_id=a1516a75-9be5-461a-93af-c1896a0a3127" \
  --header "Authorization: Bearer $LOCALADS_API_KEY"
```

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": [
    {
      "id": "viral-pattern-interrupt",
      "title": "Viral pattern interrupt",
      "badge": "Popular",
      "description": "Stops the scroll with an unexpected first frame.",
      "thumbnail_url": "https://cdn.example.com/recipes/viral.jpg",
      "default_creative_count": 10,
      "status": "active",
      "is_custom": false
    }
  ]
}
```

Use an `id` as `blueprint_id` for a single recipe, or several as
`blueprint_ids` for a custom campaign, when
[creating a campaign](/ad-campaigns/create-a-campaign). A recipe with
`status: "coming_soon"` is listed but cannot be used yet. `is_custom` is true
for a recipe made for your organization.

## Suggest angles

**Endpoint:** `POST https://makelocalads.com/api/v1/campaign-angles`
**Permission:** `campaigns:generate`

Returns the angle suggestions the campaign creator shows for one recipe,
optionally for one audience. Free:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl --request POST \
  --url https://makelocalads.com/api/v1/campaign-angles \
  --header "Authorization: Bearer $LOCALADS_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "product_id": "a1516a75-9be5-461a-93af-c1896a0a3127",
    "blueprint_id": "viral-pattern-interrupt",
    "audience_id": "0f0c5a4e-54f7-4f0e-9d4e-1a8c3a6b5d11"
  }'
```

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{ "angles": ["Setup takes half the time", "The gift that looks handmade"] }
```

### Input fields

<ParamField body="product_id" type="string" required>
  The product the campaign is for.
</ParamField>

<ParamField body="blueprint_id" type="string" required>
  One recipe `id` from `GET /campaign-blueprints`.
</ParamField>

<ParamField body="audience_id" type="string">
  One audience of the product, to aim the suggestions at those people.
  Optional.
</ParamField>

Send any of the suggested angles, or your own, as `angles` when creating a
campaign. Angles apply to a single recipe, up to 10 of them.
