接続Reference

REST API

Adako is an MCP server and REST API for Google Ads, Meta Ads, ChatGPT Ads and LinkedIn Ads. If your automation speaks HTTP — n8n, Zapier, Make, a cron script — this page is everything you need to call the same tools an assistant calls.

One endpoint per tool

Every tool is a POST to its own URL. There is no router and no dispatch field: the tool name is in the path.

POST https://adako.ai/api/v1/tools/{tool_name}/execute

The body is {"arguments": { … }}. A bare arguments object works too, so a no-code HTTP node can post its field map straight through. Money is a decimal number in the account currency — 80, never 80000000. Ids are strings.

Authentication

Send an Adako API key as a bearer token. Create one in the web app under API keys; it is shown once.

every request
Authorization: Bearer ak_live_…

A key carries scopes. A read key (ads:read, accounts:read, usage:read) can call every read tool. A write key adds ads:write, which is what write tools and approve_proposal need. Calling a write tool with a read key answers 401 unauthorized and names the missing scope.

Keys are the only REST credential

The OAuth flow behind /mcp issues tokens for assistants, not for servers. REST accepts ak_live_… keys only. Keep them out of client-side code.

The envelope

Every response has the same shape, success or failure.

a read
curl -X POST https://adako.ai/api/v1/tools/google_list_campaigns/execute \
  -H "Authorization: Bearer $ADAKO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"arguments": {"customer_id": "1234567890"}}'
200 OK
{
  "success": true,
  "tool": "google_list_campaigns",
  "data": { "campaigns": [ { "id": "123", "name": "Brand — Search", "status": "ENABLED" } ] },
  "markdown": "| Campaign | Status | Cost |\n| --- | --- | --- |\n…",
  "quota": { "plan": "pro", "used": 12, "limit": 600, "period_end": "2026-10-01" },
  "request_id": "3f2b…"
}
  • data — the machine-readable result. Parse this.
  • markdown — the same result written for a person or a model. Paste it into Slack, an email or an LLM prompt.
  • quota — tasks used against the plan this period. Present whenever the call was billable.
  • request_id — also returned as the x-request-id header. Quote it in support requests; it is how a call is found in the audit log.

Writes return a proposal

A write never reaches the ad platform on its own. It is validated, dry-run against the platform, stored as a proposal and returned to you with a preview. The HTTP status is still 200: the call succeeded, the change is pending.

a write
curl -X POST https://adako.ai/api/v1/tools/google_update_campaign_budget/execute \
  -H "Authorization: Bearer $ADAKO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"arguments": {"campaign_id": "123", "daily_budget": 80}}'
200 OK — nothing has changed yet
{
  "success": true,
  "tool": "google_update_campaign_budget",
  "data": { "status": "pending", "preview": { "summary": "Daily budget 50 → 80 USD" } },
  "markdown": "**Proposal created — waiting for approval.** Nothing has changed yet…",
  "proposal_id": "5f0c9e2a-…",
  "approve_url": "https://adako.ai/approvals/5f0c9e2a-…",
  "request_id": "9a1c…"
}

Approve it in one of two ways: a person opens approve_url in the web app, or the same key — holding ads:write — calls approve_proposal over REST.

approve from a script
curl -X POST https://adako.ai/api/v1/tools/approve_proposal/execute \
  -H "Authorization: Bearer $ADAKO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"arguments": {"proposal_id": "5f0c9e2a-…"}}'

Under the direct write policy the call itself is the approval, so the response comes back already executed with a read-back of what exists now. Under inbox it waits. Either way a proposal executes exactly once, and created campaigns are always paused.

Idempotency

Send an Idempotency-Key header — 8 to 128 characters, a UUID is ideal — on any call you might retry. The successful envelope is cached for 24 hours per key and per user.

  • Same key, same arguments → the stored envelope, with Idempotent-Replayed: true.
  • Same key, different arguments → 409 with error.code: idempotency_mismatch. Use a new key.
  • Failures are not cached. A call that ran out of quota or hit a platform error stays retryable with the same key.

Retries are safe without the header too: the proposal engine keys every write by user, tool and arguments, so a repeat of the same change joins the existing proposal instead of creating a second one.

Errors and HTTP status codes

Switch on error.code, never on the message. recovery_steps is written to be shown to a person or handed to a model.

409 Conflict
{
  "success": false,
  "tool": "google_update_campaign_budget",
  "error": {
    "code": "not_connected",
    "message": "Google Ads is not connected.",
    "recovery_steps": ["Ask the user to connect Google Ads at https://adako.ai/accounts."]
  },
  "request_id": "7c31…"
}
CodeHTTPWhen
validation400An argument is missing, mistyped or out of range.
account_ambiguous400Several accounts are active. `details.candidates` lists the valid ids.
unauthorized401The API key is missing, invalid, revoked, expired or lacks the scope.
quota_exceeded402The monthly task allowance is used up. `quota` says when it resets.
plan_required402The plan does not include this tool.
access_level_insufficient403The ad platform grants less access than the tool needs.
unknown_tool404No tool with that name. `details.suggestions` offers near misses.
proposal_not_found404No proposal with that id for this user.
proposal_expired404The proposal passed its 48-hour window. Call the tool again.
not_connected409The ad platform is not connected, or no account is active.
needs_reauth409The platform revoked access. The user must reconnect.
confirmation_required409A removal needs `confirm_delete: true`.
proposal_pending409An identical change is already waiting for approval.
proposal_not_pending409The proposal was already approved, rejected or executed.
proposal_failed_before409An identical create failed earlier today and parts of it may exist. List what is there, then call again with a new Idempotency-Key only if the user still wants it.
duplicate_create409A create names an object an approved proposal made in the last 48 hours. `details.result` has its ids; change it with an update tool, or use another name for a second one.
account_limit409Switching on another ad account would go over the ad accounts the plan covers this billing period.
idempotency_mismatch409The Idempotency-Key was reused with different arguments.
rate_limited429More than 60 calls a minute. See `Retry-After`.
platform_rate_limited429The ad platform is throttling this account.
platform_error502The ad platform refused the call. `details.platform_error` has its words.
internal500A bug on our side. Retry once, then send the `request_id` to support.

Anything not listed answers 500. 429 responses carry Retry-After in seconds — wait that long and retry once, do not loop.

Discovery and OpenAPI

  • GET /api/v1/tools — every tool with its platform, risk, task cost and call URL. Add ?platform=google_ads to filter.
  • GET /api/v1/tools/{tool_name} — one tool: the full description, the JSON Schema of its arguments and which fields are required.
  • GET /api/v1/openapi.json — the whole surface as OpenAPI 3.1, generated from the registry. No key needed.

n8n, Zapier, Make and anything else with an HTTP node

Configure one generic HTTP request node and reuse it for every tool:

  1. Method POST.
  2. URL https://adako.ai/api/v1/tools/<tool>/execute.
  3. Authentication — a generic header credential: Authorization: Bearer ak_live_…. Store it as a credential, not in the URL.
  4. Headers Content-Type: application/json, and Idempotency-Key set to n8n-{{ $execution.id }}-{{ $runIndex }}. An execution id alone can be shorter than the 8 characters the header needs, so the prefix keeps every key valid. The run index tells apart the runs of one node inside a single execution.
  5. Body JSON: {"arguments": {"customer_id": "1234567890"}}.
  6. Response — branch on {{ $json.success }}. On failure, route {{ $json.error.code }}: retry on rate_limited, alert a human on needs_reauth.

In Make, import /api/v1/openapi.json into the HTTP “Make an API Call” module to get the field names. In Zapier, use “Custom Request” with the same three headers.

Command line

The adako CLI wraps the same endpoints with no install step and no dependencies — handy inside coding agents and cron jobs.

npx @adako/cli
npx @adako/cli login         # paste your ak_live_… key once
npx @adako/cli tools --platform google_ads
npx @adako/cli google list-campaigns --customer-id 1234567890
npx @adako/cli run google_update_campaign_budget --arg campaign_id=123 --arg daily_budget=80

Rate limits and cost

Sixty tool calls a minute per user, shared with MCP. Every read is free: listing campaigns, pulling reports and checking usage, connections or proposals cost nothing. A write costs the task count shown below. The quota block in every envelope is the authoritative counter.

Endpoints

Generated from the live registry: 203 tools, every one a POST to the path below. Argument schemas are in the tools reference and in openapi.json.

Adako32

ToolPathRiskCost
approve_proposalPOST /api/v1/tools/approve_proposal/executedestructive writefree
check_mediaPOST /api/v1/tools/check_media/executeread-onlyfree
create_monitorPOST /api/v1/tools/create_monitor/executewritefree
delete_monitorPOST /api/v1/tools/delete_monitor/executedestructive writefree
explain_errorPOST /api/v1/tools/explain_error/executeread-onlyfree
generate_report_nowPOST /api/v1/tools/generate_report_now/executewritefree
get_campaign_specPOST /api/v1/tools/get_campaign_spec/executeread-onlyfree
get_connections_statusPOST /api/v1/tools/get_connections_status/executeread-onlyfree
get_monitor_historyPOST /api/v1/tools/get_monitor_history/executeread-onlyfree
get_tool_schemaPOST /api/v1/tools/get_tool_schema/executeread-onlyfree
get_usage_statusPOST /api/v1/tools/get_usage_status/executeread-onlyfree
list_connected_accountsPOST /api/v1/tools/list_connected_accounts/executeread-onlyfree
list_monitorsPOST /api/v1/tools/list_monitors/executeread-onlyfree
list_pending_actionsPOST /api/v1/tools/list_pending_actions/executeread-onlyfree
list_pending_proposalsPOST /api/v1/tools/list_pending_proposals/executeread-onlyfree
list_reportsPOST /api/v1/tools/list_reports/executeread-onlyfree
list_scheduled_tasksPOST /api/v1/tools/list_scheduled_tasks/executeread-onlyfree
list_what_i_can_doPOST /api/v1/tools/list_what_i_can_do/executeread-onlyfree
manage_actionPOST /api/v1/tools/manage_action/executedestructive writefree
manage_scheduled_taskPOST /api/v1/tools/manage_scheduled_task/executewritefree
reject_proposalPOST /api/v1/tools/reject_proposal/executewritefree
schedule_briefPOST /api/v1/tools/schedule_brief/executewritefree
search_toolsPOST /api/v1/tools/search_tools/executeread-onlyfree
start_herePOST /api/v1/tools/start_here/executeread-onlyfree
suggest_next_actionPOST /api/v1/tools/suggest_next_action/executeread-onlyfree
switch_primary_accountPOST /api/v1/tools/switch_primary_account/executewritefree
test_monitorPOST /api/v1/tools/test_monitor/executeread-onlyfree
update_monitorPOST /api/v1/tools/update_monitor/executewritefree
usage_value_summaryPOST /api/v1/tools/usage_value_summary/executeread-onlyfree
validate_campaign_draftPOST /api/v1/tools/validate_campaign_draft/executeread-onlyfree
verify_campaign_is_livePOST /api/v1/tools/verify_campaign_is_live/executeread-onlyfree
why_did_this_failPOST /api/v1/tools/why_did_this_fail/executeread-onlyfree

Google Ads70

ToolPathRiskCost
google_add_audience_signalPOST /api/v1/tools/google_add_audience_signal/executewrite1 task
google_add_call_assetPOST /api/v1/tools/google_add_call_asset/executewrite1 task
google_add_calloutsPOST /api/v1/tools/google_add_callouts/executewrite1 task
google_add_image_assetsPOST /api/v1/tools/google_add_image_assets/executewrite1 task
google_add_keywordsPOST /api/v1/tools/google_add_keywords/executewrite1 task
google_add_negative_keywordsPOST /api/v1/tools/google_add_negative_keywords/executewrite1 task
google_add_search_themesPOST /api/v1/tools/google_add_search_themes/executewrite1 task
google_add_sitelinksPOST /api/v1/tools/google_add_sitelinks/executewrite1 task
google_add_structured_snippetsPOST /api/v1/tools/google_add_structured_snippets/executewrite1 task
google_analyze_search_termsPOST /api/v1/tools/google_analyze_search_terms/executeread-onlyfree
google_analyze_wasted_spendPOST /api/v1/tools/google_analyze_wasted_spend/executeread-onlyfree
google_apply_labelPOST /api/v1/tools/google_apply_label/executewrite1 task
google_bulk_update_keyword_bidsPOST /api/v1/tools/google_bulk_update_keyword_bids/executedestructive write1 task
google_bulk_update_keyword_statusPOST /api/v1/tools/google_bulk_update_keyword_status/executedestructive write1 task
google_create_conversion_actionPOST /api/v1/tools/google_create_conversion_action/executewrite1 task
google_create_labelPOST /api/v1/tools/google_create_label/executewrite1 task
google_create_pmax_campaignPOST /api/v1/tools/google_create_pmax_campaign/executedestructive write1 task
google_create_responsive_search_adPOST /api/v1/tools/google_create_responsive_search_ad/executewrite1 task
google_create_search_campaignPOST /api/v1/tools/google_create_search_campaign/executewrite1 task
google_explain_performance_anomalyPOST /api/v1/tools/google_explain_performance_anomaly/executeread-onlyfree
google_get_ad_creativePOST /api/v1/tools/google_get_ad_creative/executeread-onlyfree
google_get_ad_group_performancePOST /api/v1/tools/google_get_ad_group_performance/executeread-onlyfree
google_get_ad_performancePOST /api/v1/tools/google_get_ad_performance/executeread-onlyfree
google_get_ad_schedulePOST /api/v1/tools/google_get_ad_schedule/executeread-onlyfree
google_get_asset_group_performancePOST /api/v1/tools/google_get_asset_group_performance/executeread-onlyfree
google_get_asset_performancePOST /api/v1/tools/google_get_asset_performance/executeread-onlyfree
google_get_benchmark_contextPOST /api/v1/tools/google_get_benchmark_context/executeread-onlyfree
google_get_campaign_performancePOST /api/v1/tools/google_get_campaign_performance/executeread-onlyfree
google_get_campaign_structurePOST /api/v1/tools/google_get_campaign_structure/executeread-onlyfree
google_get_campaign_targetingPOST /api/v1/tools/google_get_campaign_targeting/executeread-onlyfree
google_get_conversion_action_performancePOST /api/v1/tools/google_get_conversion_action_performance/executeread-onlyfree
google_get_device_performancePOST /api/v1/tools/google_get_device_performance/executeread-onlyfree
google_get_geo_performancePOST /api/v1/tools/google_get_geo_performance/executeread-onlyfree
google_get_hourly_performancePOST /api/v1/tools/google_get_hourly_performance/executeread-onlyfree
google_get_keyword_performancePOST /api/v1/tools/google_get_keyword_performance/executeread-onlyfree
google_get_search_themesPOST /api/v1/tools/google_get_search_themes/executeread-onlyfree
google_list_asset_groupsPOST /api/v1/tools/google_list_asset_groups/executeread-onlyfree
google_list_assetsPOST /api/v1/tools/google_list_assets/executeread-onlyfree
google_list_bidding_strategiesPOST /api/v1/tools/google_list_bidding_strategies/executeread-onlyfree
google_list_campaignsPOST /api/v1/tools/google_list_campaigns/executeread-onlyfree
google_list_conversion_actionsPOST /api/v1/tools/google_list_conversion_actions/executeread-onlyfree
google_list_labelsPOST /api/v1/tools/google_list_labels/executeread-onlyfree
google_list_languagesPOST /api/v1/tools/google_list_languages/executeread-onlyfree
google_optimize_budget_allocationPOST /api/v1/tools/google_optimize_budget_allocation/executeread-onlyfree
google_pause_adPOST /api/v1/tools/google_pause_ad/executedestructive write1 task
google_pause_ad_groupPOST /api/v1/tools/google_pause_ad_group/executedestructive write1 task
google_pause_campaignPOST /api/v1/tools/google_pause_campaign/executedestructive write1 task
google_remove_asset_linksPOST /api/v1/tools/google_remove_asset_links/executedestructive write1 task
google_remove_labelPOST /api/v1/tools/google_remove_label/executedestructive write1 task
google_remove_negative_keywordsPOST /api/v1/tools/google_remove_negative_keywords/executedestructive write1 task
google_remove_search_themesPOST /api/v1/tools/google_remove_search_themes/executedestructive write1 task
google_research_keywordsPOST /api/v1/tools/google_research_keywords/executeread-onlyfree
google_resolve_locationsPOST /api/v1/tools/google_resolve_locations/executeread-onlyfree
google_resume_adPOST /api/v1/tools/google_resume_ad/executewrite1 task
google_resume_ad_groupPOST /api/v1/tools/google_resume_ad_group/executewrite1 task
google_resume_campaignPOST /api/v1/tools/google_resume_campaign/executewrite1 task
google_search_audiencesPOST /api/v1/tools/google_search_audiences/executeread-onlyfree
google_set_ad_schedulePOST /api/v1/tools/google_set_ad_schedule/executedestructive write1 task
google_set_business_namePOST /api/v1/tools/google_set_business_name/executewrite1 task
google_set_device_bid_modifiersPOST /api/v1/tools/google_set_device_bid_modifiers/executedestructive write1 task
google_update_bid_strategyPOST /api/v1/tools/google_update_bid_strategy/executedestructive write1 task
google_update_campaignPOST /api/v1/tools/google_update_campaign/executedestructive write1 task
google_update_campaign_budgetPOST /api/v1/tools/google_update_campaign_budget/executedestructive write1 task
google_update_campaign_languagesPOST /api/v1/tools/google_update_campaign_languages/executedestructive write1 task
google_update_campaign_locationsPOST /api/v1/tools/google_update_campaign_locations/executedestructive write1 task
google_update_campaign_networksPOST /api/v1/tools/google_update_campaign_networks/executedestructive write1 task
google_update_conversion_actionPOST /api/v1/tools/google_update_conversion_action/executedestructive write1 task
google_update_keywordPOST /api/v1/tools/google_update_keyword/executedestructive write1 task
google_validate_ad_copyPOST /api/v1/tools/google_validate_ad_copy/executeread-onlyfree
google_validate_and_prepare_assetsPOST /api/v1/tools/google_validate_and_prepare_assets/executeread-onlyfree

Meta Ads44

ToolPathRiskCost
meta_add_adPOST /api/v1/tools/meta_add_ad/executewrite2 tasks
meta_add_ad_setPOST /api/v1/tools/meta_add_ad_set/executewrite2 tasks
meta_analyze_audiencesPOST /api/v1/tools/meta_analyze_audiences/executeread-onlyfree
meta_analyze_wasted_spendPOST /api/v1/tools/meta_analyze_wasted_spend/executeread-onlyfree
meta_browse_targetingPOST /api/v1/tools/meta_browse_targeting/executeread-onlyfree
meta_create_app_install_campaignPOST /api/v1/tools/meta_create_app_install_campaign/executewrite3 tasks
meta_create_carousel_campaignPOST /api/v1/tools/meta_create_carousel_campaign/executewrite3 tasks
meta_create_flexible_adPOST /api/v1/tools/meta_create_flexible_ad/executewrite2 tasks
meta_create_image_campaignPOST /api/v1/tools/meta_create_image_campaign/executewrite3 tasks
meta_create_video_campaignPOST /api/v1/tools/meta_create_video_campaign/executewrite3 tasks
meta_detect_creative_fatiguePOST /api/v1/tools/meta_detect_creative_fatigue/executeread-onlyfree
meta_duplicate_campaignPOST /api/v1/tools/meta_duplicate_campaign/executewrite3 tasks
meta_explain_anomalyPOST /api/v1/tools/meta_explain_anomaly/executeread-onlyfree
meta_get_ad_creativesPOST /api/v1/tools/meta_get_ad_creatives/executeread-onlyfree
meta_get_ad_performancePOST /api/v1/tools/meta_get_ad_performance/executeread-onlyfree
meta_get_ad_set_delivery_estimatePOST /api/v1/tools/meta_get_ad_set_delivery_estimate/executeread-onlyfree
meta_get_ad_set_targetingPOST /api/v1/tools/meta_get_ad_set_targeting/executeread-onlyfree
meta_get_adset_performancePOST /api/v1/tools/meta_get_adset_performance/executeread-onlyfree
meta_get_audience_insightsPOST /api/v1/tools/meta_get_audience_insights/executeread-onlyfree
meta_get_campaign_performancePOST /api/v1/tools/meta_get_campaign_performance/executeread-onlyfree
meta_get_lead_form_submissionsPOST /api/v1/tools/meta_get_lead_form_submissions/executeread-onlyfree
meta_list_ad_setsPOST /api/v1/tools/meta_list_ad_sets/executeread-onlyfree
meta_list_adsPOST /api/v1/tools/meta_list_ads/executeread-onlyfree
meta_list_campaignsPOST /api/v1/tools/meta_list_campaigns/executeread-onlyfree
meta_list_custom_audiencesPOST /api/v1/tools/meta_list_custom_audiences/executeread-onlyfree
meta_list_instagram_accountsPOST /api/v1/tools/meta_list_instagram_accounts/executeread-onlyfree
meta_list_lead_formsPOST /api/v1/tools/meta_list_lead_forms/executeread-onlyfree
meta_list_mediaPOST /api/v1/tools/meta_list_media/executeread-onlyfree
meta_list_pagesPOST /api/v1/tools/meta_list_pages/executeread-onlyfree
meta_list_pixelsPOST /api/v1/tools/meta_list_pixels/executeread-onlyfree
meta_list_promotable_appsPOST /api/v1/tools/meta_list_promotable_apps/executeread-onlyfree
meta_list_saved_audiencesPOST /api/v1/tools/meta_list_saved_audiences/executeread-onlyfree
meta_optimize_budgetPOST /api/v1/tools/meta_optimize_budget/executeread-onlyfree
meta_optimize_placementsPOST /api/v1/tools/meta_optimize_placements/executeread-onlyfree
meta_pause_entityPOST /api/v1/tools/meta_pause_entity/executedestructive write1 task
meta_resume_entityPOST /api/v1/tools/meta_resume_entity/executewrite1 task
meta_search_targetingPOST /api/v1/tools/meta_search_targeting/executeread-onlyfree
meta_set_frequency_capPOST /api/v1/tools/meta_set_frequency_cap/executewrite1 task
meta_update_adPOST /api/v1/tools/meta_update_ad/executewrite1 task
meta_update_ad_setPOST /api/v1/tools/meta_update_ad_set/executedestructive write1 task
meta_update_adset_budgetPOST /api/v1/tools/meta_update_adset_budget/executedestructive write1 task
meta_update_campaignPOST /api/v1/tools/meta_update_campaign/executewrite1 task
meta_update_campaign_budgetPOST /api/v1/tools/meta_update_campaign_budget/executedestructive write1 task
meta_validate_creative_urlPOST /api/v1/tools/meta_validate_creative_url/executeread-onlyfree

ChatGPT Ads23

ToolPathRiskCost
chatgpt_archive_campaignPOST /api/v1/tools/chatgpt_archive_campaign/executedestructive write1 task
chatgpt_create_adPOST /api/v1/tools/chatgpt_create_ad/executewrite3 tasks
chatgpt_create_ad_groupPOST /api/v1/tools/chatgpt_create_ad_group/executewrite2 tasks
chatgpt_geo_lookupPOST /api/v1/tools/chatgpt_geo_lookup/executeread-onlyfree
chatgpt_get_accountPOST /api/v1/tools/chatgpt_get_account/executeread-onlyfree
chatgpt_get_account_limitsPOST /api/v1/tools/chatgpt_get_account_limits/executeread-onlyfree
chatgpt_get_performancePOST /api/v1/tools/chatgpt_get_performance/executeread-onlyfree
chatgpt_get_pixel_settingsPOST /api/v1/tools/chatgpt_get_pixel_settings/executeread-onlyfree
chatgpt_launch_adPOST /api/v1/tools/chatgpt_launch_ad/executewrite8 tasks
chatgpt_list_ad_groupsPOST /api/v1/tools/chatgpt_list_ad_groups/executeread-onlyfree
chatgpt_list_adsPOST /api/v1/tools/chatgpt_list_ads/executeread-onlyfree
chatgpt_list_campaignsPOST /api/v1/tools/chatgpt_list_campaigns/executeread-onlyfree
chatgpt_list_pixelsPOST /api/v1/tools/chatgpt_list_pixels/executeread-onlyfree
chatgpt_pause_adPOST /api/v1/tools/chatgpt_pause_ad/executedestructive write1 task
chatgpt_pause_ad_groupPOST /api/v1/tools/chatgpt_pause_ad_group/executedestructive write1 task
chatgpt_pause_campaignPOST /api/v1/tools/chatgpt_pause_campaign/executedestructive write1 task
chatgpt_resume_adPOST /api/v1/tools/chatgpt_resume_ad/executewrite1 task
chatgpt_resume_ad_groupPOST /api/v1/tools/chatgpt_resume_ad_group/executewrite1 task
chatgpt_resume_campaignPOST /api/v1/tools/chatgpt_resume_campaign/executewrite1 task
chatgpt_update_adPOST /api/v1/tools/chatgpt_update_ad/executewrite1 task
chatgpt_update_ad_groupPOST /api/v1/tools/chatgpt_update_ad_group/executewrite1 task
chatgpt_update_campaignPOST /api/v1/tools/chatgpt_update_campaign/executewrite1 task
chatgpt_validate_chat_cardPOST /api/v1/tools/chatgpt_validate_chat_card/executeread-onlyfree

LinkedIn Ads34

ToolPathRiskCost
linkedin_add_creativePOST /api/v1/tools/linkedin_add_creative/executewrite1 task
linkedin_analyze_creative_performancePOST /api/v1/tools/linkedin_analyze_creative_performance/executeread-onlyfree
linkedin_analyze_wasted_spendPOST /api/v1/tools/linkedin_analyze_wasted_spend/executeread-onlyfree
linkedin_associate_conversionPOST /api/v1/tools/linkedin_associate_conversion/executewrite1 task
linkedin_batch_update_campaignsPOST /api/v1/tools/linkedin_batch_update_campaigns/executewrite1 task
linkedin_clone_campaignPOST /api/v1/tools/linkedin_clone_campaign/executewrite1 task
linkedin_create_campaign_groupPOST /api/v1/tools/linkedin_create_campaign_group/executewrite1 task
linkedin_create_carousel_campaignPOST /api/v1/tools/linkedin_create_carousel_campaign/executewrite1 task
linkedin_create_image_campaignPOST /api/v1/tools/linkedin_create_image_campaign/executewrite1 task
linkedin_create_text_campaignPOST /api/v1/tools/linkedin_create_text_campaign/executewrite1 task
linkedin_create_video_campaignPOST /api/v1/tools/linkedin_create_video_campaign/executewrite1 task
linkedin_delete_creativePOST /api/v1/tools/linkedin_delete_creative/executedestructive write1 task
linkedin_estimate_audience_sizePOST /api/v1/tools/linkedin_estimate_audience_size/executeread-onlyfree
linkedin_explain_objectivesPOST /api/v1/tools/linkedin_explain_objectives/executeread-onlyfree
linkedin_forecast_campaign_supplyPOST /api/v1/tools/linkedin_forecast_campaign_supply/executeread-onlyfree
linkedin_get_audience_insightsPOST /api/v1/tools/linkedin_get_audience_insights/executeread-onlyfree
linkedin_get_campaign_performancePOST /api/v1/tools/linkedin_get_campaign_performance/executeread-onlyfree
linkedin_get_campaign_structurePOST /api/v1/tools/linkedin_get_campaign_structure/executeread-onlyfree
linkedin_get_creative_performancePOST /api/v1/tools/linkedin_get_creative_performance/executeread-onlyfree
linkedin_get_engagement_metricsPOST /api/v1/tools/linkedin_get_engagement_metrics/executeread-onlyfree
linkedin_get_organizationsPOST /api/v1/tools/linkedin_get_organizations/executeread-onlyfree
linkedin_list_campaign_groupsPOST /api/v1/tools/linkedin_list_campaign_groups/executeread-onlyfree
linkedin_list_campaignsPOST /api/v1/tools/linkedin_list_campaigns/executeread-onlyfree
linkedin_list_conversionsPOST /api/v1/tools/linkedin_list_conversions/executeread-onlyfree
linkedin_list_creativesPOST /api/v1/tools/linkedin_list_creatives/executeread-onlyfree
linkedin_manage_conversionsPOST /api/v1/tools/linkedin_manage_conversions/executewrite1 task
linkedin_pause_campaignPOST /api/v1/tools/linkedin_pause_campaign/executedestructive write1 task
linkedin_pause_creativePOST /api/v1/tools/linkedin_pause_creative/executedestructive write1 task
linkedin_resume_campaignPOST /api/v1/tools/linkedin_resume_campaign/executewrite1 task
linkedin_resume_creativePOST /api/v1/tools/linkedin_resume_creative/executewrite1 task
linkedin_search_targetingPOST /api/v1/tools/linkedin_search_targeting/executeread-onlyfree
linkedin_update_campaignPOST /api/v1/tools/linkedin_update_campaign/executewrite1 task
linkedin_update_campaign_groupPOST /api/v1/tools/linkedin_update_campaign_group/executewrite1 task
linkedin_validate_assetsPOST /api/v1/tools/linkedin_validate_assets/executeread-onlyfree

Last updated