Skip to main content
POST
/
api
/
v1
/
tools
/
add_demandgen_ad_group
/
execute
Add Demand Gen Ad Group
curl --request POST \
  --url https://api.adspirer.ai/api/v1/tools/add_demandgen_ad_group/execute \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "arguments": {
    "ad_format": "multi_asset",
    "ad_group_name": "string",
    "business_name": "string",
    "call_to_action": "string",
    "campaign_id": "<campaign_id>",
    "channels": [
      "YOUTUBE",
      "DISCOVER",
      "GMAIL"
    ],
    "descriptions": [
      "string"
    ],
    "final_url": "https://example.com",
    "headlines": [
      "string"
    ],
    "long_headlines": [
      "string"
    ],
    "target_languages": [
      "string"
    ],
    "target_locations": [
      "string"
    ]
  }
}
'
{
  "data": {
    "quota": {
      "limit": 150,
      "period_end": "2026-05-01",
      "tier": "plus",
      "used": 42
    },
    "text": "(tool-specific textual output for add_demandgen_ad_group)"
  },
  "success": true,
  "tool": "add_demandgen_ad_group"
}

Authorizations

Authorization
string
header
required

API key from https://adspirer.ai/keys. Prefix sk_live_. Treat as a secret — never commit.

Headers

Idempotency-Key
string<uuid>

Client-generated UUID to make writes idempotent. Strongly recommended for write tools. A repeat call with the same key returns the cached result instead of re-executing. Example: 550e8400-e29b-41d4-a716-446655440000

Body

application/json

All tool arguments are wrapped in an arguments object. The fields accepted inside arguments are listed below — required fields are marked with a red asterisk.

arguments
object
required

Input schema for add_demandgen_ad_group tool.

Adds a new ad group with targeting and ads to an existing Demand Gen campaign. Each ad group can have its own location targeting, audience targeting, and creative.

Response

Tool executed successfully. data.text carries the human-readable result (markdown-friendly). data.quota shows your current usage against the plan limit. data.structured appears when the tool emits machine-parseable structured content. data.content appears for tools that return non-text blocks (images, resources).

Returned on HTTP 200. data.text is the primary human-readable output. data.quota is always present for billable calls. data.structured is set only when the tool emits machine-parseable structured content. data.content is set only when the tool emits non-text content blocks.

data
object
required
success
boolean
required
tool
string
required

Echoed tool_name from the request URL.

Last modified on April 23, 2026