Skip to main content
POST
/
api
/
v1
/
tools
/
create_search_campaign
/
execute
Create Search Campaign
curl --request POST \
  --url https://api.adspirer.ai/api/v1/tools/create_search_campaign/execute \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "arguments": {
    "ad_groups": [
      {
        "audiences": {
          "affinity_audiences": null,
          "custom_audiences": null,
          "demographics": null,
          "in_market_audiences": null
        },
        "descriptions": [
          "string"
        ],
        "final_url": "https://example.com",
        "headlines": [
          "string"
        ],
        "keywords": [
          "string"
        ],
        "name": "string",
        "sitelinks": [
          {
            "description1": null,
            "description2": null,
            "final_url": null,
            "link_text": null
          }
        ]
      }
    ],
    "bidding_strategy": "MAXIMIZE_CONVERSIONS",
    "budget_daily": 1,
    "business_description": "string",
    "campaign_name": "string",
    "customer_id": "string",
    "negative_keywords": [
      "string"
    ],
    "objective": "CONVERSIONS",
    "target_locations": [
      "string"
    ],
    "target_roas": 1,
    "website_url": "https://example.com"
  }
}
'
{
  "data": {
    "quota": {
      "limit": 150,
      "period_end": "2026-05-01",
      "tier": "plus",
      "used": 42
    },
    "text": "(tool-specific textual output for create_search_campaign)"
  },
  "success": true,
  "tool": "create_search_campaign"
}

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

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