接続Reference

REST API

Adako is an MCP server and REST API for Google Ads, Meta Ads, ChatGPT Ads, TikTok 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": "prp_01J…",
  "approve_url": "https://adako.ai/approvals/prp_01J…",
  "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": "prp_01J…"}}'

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/connections."]
  },
  "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.
account_limit409Activating another ad account would exceed the plan.
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 the workflow execution id.
  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
npx adako login              # paste your ak_live_… key once
npx adako tools --platform google_ads
npx adako google list-campaigns --customer-id 1234567890
npx adako 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. Each billable call costs the task count shown below; reads of your own Adako state (usage, connections, proposals) are free. The quota block in every envelope is the authoritative counter.

Endpoints

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

Adako31

ToolPathRiskCost
approve_proposalPOST /api/v1/tools/approve_proposal/executedestructive writefree
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-only1 task
google_analyze_wasted_spendPOST /api/v1/tools/google_analyze_wasted_spend/executeread-only1 task
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-only1 task
google_get_ad_creativePOST /api/v1/tools/google_get_ad_creative/executeread-only1 task
google_get_ad_group_performancePOST /api/v1/tools/google_get_ad_group_performance/executeread-only1 task
google_get_ad_performancePOST /api/v1/tools/google_get_ad_performance/executeread-only1 task
google_get_ad_schedulePOST /api/v1/tools/google_get_ad_schedule/executeread-only1 task
google_get_asset_group_performancePOST /api/v1/tools/google_get_asset_group_performance/executeread-only1 task
google_get_asset_performancePOST /api/v1/tools/google_get_asset_performance/executeread-only1 task
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-only1 task
google_get_campaign_structurePOST /api/v1/tools/google_get_campaign_structure/executeread-only1 task
google_get_campaign_targetingPOST /api/v1/tools/google_get_campaign_targeting/executeread-only1 task
google_get_conversion_action_performancePOST /api/v1/tools/google_get_conversion_action_performance/executeread-only1 task
google_get_device_performancePOST /api/v1/tools/google_get_device_performance/executeread-only1 task
google_get_geo_performancePOST /api/v1/tools/google_get_geo_performance/executeread-only1 task
google_get_hourly_performancePOST /api/v1/tools/google_get_hourly_performance/executeread-only1 task
google_get_keyword_performancePOST /api/v1/tools/google_get_keyword_performance/executeread-only1 task
google_get_search_themesPOST /api/v1/tools/google_get_search_themes/executeread-only1 task
google_list_asset_groupsPOST /api/v1/tools/google_list_asset_groups/executeread-only1 task
google_list_assetsPOST /api/v1/tools/google_list_assets/executeread-only1 task
google_list_bidding_strategiesPOST /api/v1/tools/google_list_bidding_strategies/executeread-only1 task
google_list_campaignsPOST /api/v1/tools/google_list_campaigns/executeread-only1 task
google_list_conversion_actionsPOST /api/v1/tools/google_list_conversion_actions/executeread-only1 task
google_list_labelsPOST /api/v1/tools/google_list_labels/executeread-only1 task
google_list_languagesPOST /api/v1/tools/google_list_languages/executeread-onlyfree
google_optimize_budget_allocationPOST /api/v1/tools/google_optimize_budget_allocation/executeread-only1 task
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-only1 task
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-only1 task
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 Ads43

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-only2 tasks
meta_analyze_wasted_spendPOST /api/v1/tools/meta_analyze_wasted_spend/executeread-only1 task
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-only2 tasks
meta_duplicate_campaignPOST /api/v1/tools/meta_duplicate_campaign/executewrite3 tasks
meta_explain_anomalyPOST /api/v1/tools/meta_explain_anomaly/executeread-only2 tasks
meta_get_ad_creativesPOST /api/v1/tools/meta_get_ad_creatives/executeread-only1 task
meta_get_ad_performancePOST /api/v1/tools/meta_get_ad_performance/executeread-only1 task
meta_get_ad_set_delivery_estimatePOST /api/v1/tools/meta_get_ad_set_delivery_estimate/executeread-only1 task
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-only1 task
meta_get_audience_insightsPOST /api/v1/tools/meta_get_audience_insights/executeread-only2 tasks
meta_get_campaign_performancePOST /api/v1/tools/meta_get_campaign_performance/executeread-only1 task
meta_get_lead_form_submissionsPOST /api/v1/tools/meta_get_lead_form_submissions/executeread-only2 tasks
meta_list_ad_setsPOST /api/v1/tools/meta_list_ad_sets/executeread-only1 task
meta_list_adsPOST /api/v1/tools/meta_list_ads/executeread-only1 task
meta_list_campaignsPOST /api/v1/tools/meta_list_campaigns/executeread-only1 task
meta_list_custom_audiencesPOST /api/v1/tools/meta_list_custom_audiences/executeread-only1 task
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-only1 task
meta_list_pagesPOST /api/v1/tools/meta_list_pages/executeread-only1 task
meta_list_pixelsPOST /api/v1/tools/meta_list_pixels/executeread-only1 task
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-only2 tasks
meta_optimize_placementsPOST /api/v1/tools/meta_optimize_placements/executeread-only2 tasks
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-only1 task
chatgpt_get_pixel_settingsPOST /api/v1/tools/chatgpt_get_pixel_settings/executeread-only1 task
chatgpt_launch_adPOST /api/v1/tools/chatgpt_launch_ad/executewrite8 tasks
chatgpt_list_ad_groupsPOST /api/v1/tools/chatgpt_list_ad_groups/executeread-only1 task
chatgpt_list_adsPOST /api/v1/tools/chatgpt_list_ads/executeread-only1 task
chatgpt_list_campaignsPOST /api/v1/tools/chatgpt_list_campaigns/executeread-only1 task
chatgpt_list_pixelsPOST /api/v1/tools/chatgpt_list_pixels/executeread-only1 task
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

TikTok Ads30

ToolPathRiskCost
tiktok_add_adPOST /api/v1/tools/tiktok_add_ad/executewrite2 tasks
tiktok_add_ad_groupPOST /api/v1/tools/tiktok_add_ad_group/executewrite2 tasks
tiktok_analyze_geo_performancePOST /api/v1/tools/tiktok_analyze_geo_performance/executeread-only1 task
tiktok_analyze_wasted_spendPOST /api/v1/tools/tiktok_analyze_wasted_spend/executeread-only1 task
tiktok_create_video_campaignPOST /api/v1/tools/tiktok_create_video_campaign/executewrite3 tasks
tiktok_detect_creative_fatiguePOST /api/v1/tools/tiktok_detect_creative_fatigue/executeread-only1 task
tiktok_explain_objectivePOST /api/v1/tools/tiktok_explain_objective/executeread-onlyfree
tiktok_get_ad_group_performancePOST /api/v1/tools/tiktok_get_ad_group_performance/executeread-only1 task
tiktok_get_ad_performancePOST /api/v1/tools/tiktok_get_ad_performance/executeread-only1 task
tiktok_get_audience_insightsPOST /api/v1/tools/tiktok_get_audience_insights/executeread-only1 task
tiktok_get_campaign_detailsPOST /api/v1/tools/tiktok_get_campaign_details/executeread-only1 task
tiktok_get_campaign_performancePOST /api/v1/tools/tiktok_get_campaign_performance/executeread-only1 task
tiktok_list_ad_groupsPOST /api/v1/tools/tiktok_list_ad_groups/executeread-only1 task
tiktok_list_ad_videosPOST /api/v1/tools/tiktok_list_ad_videos/executeread-onlyfree
tiktok_list_adsPOST /api/v1/tools/tiktok_list_ads/executeread-only1 task
tiktok_list_campaignsPOST /api/v1/tools/tiktok_list_campaigns/executeread-only1 task
tiktok_list_identitiesPOST /api/v1/tools/tiktok_list_identities/executeread-onlyfree
tiktok_list_lead_formsPOST /api/v1/tools/tiktok_list_lead_forms/executeread-onlyfree
tiktok_list_pixelsPOST /api/v1/tools/tiktok_list_pixels/executeread-onlyfree
tiktok_pause_adPOST /api/v1/tools/tiktok_pause_ad/executedestructive write1 task
tiktok_pause_ad_groupPOST /api/v1/tools/tiktok_pause_ad_group/executedestructive write1 task
tiktok_pause_campaignPOST /api/v1/tools/tiktok_pause_campaign/executedestructive write1 task
tiktok_resume_adPOST /api/v1/tools/tiktok_resume_ad/executewrite1 task
tiktok_resume_ad_groupPOST /api/v1/tools/tiktok_resume_ad_group/executewrite1 task
tiktok_resume_campaignPOST /api/v1/tools/tiktok_resume_campaign/executewrite1 task
tiktok_search_targetingPOST /api/v1/tools/tiktok_search_targeting/executeread-onlyfree
tiktok_update_ad_groupPOST /api/v1/tools/tiktok_update_ad_group/executewrite1 task
tiktok_update_campaignPOST /api/v1/tools/tiktok_update_campaign/executewrite1 task
tiktok_upload_imagesPOST /api/v1/tools/tiktok_upload_images/executewrite1 task
tiktok_validate_assetsPOST /api/v1/tools/tiktok_validate_assets/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-only1 task
linkedin_analyze_wasted_spendPOST /api/v1/tools/linkedin_analyze_wasted_spend/executeread-only1 task
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-only1 task
linkedin_explain_objectivesPOST /api/v1/tools/linkedin_explain_objectives/executeread-onlyfree
linkedin_forecast_campaign_supplyPOST /api/v1/tools/linkedin_forecast_campaign_supply/executeread-only1 task
linkedin_get_audience_insightsPOST /api/v1/tools/linkedin_get_audience_insights/executeread-only1 task
linkedin_get_campaign_performancePOST /api/v1/tools/linkedin_get_campaign_performance/executeread-only1 task
linkedin_get_campaign_structurePOST /api/v1/tools/linkedin_get_campaign_structure/executeread-only1 task
linkedin_get_creative_performancePOST /api/v1/tools/linkedin_get_creative_performance/executeread-only1 task
linkedin_get_engagement_metricsPOST /api/v1/tools/linkedin_get_engagement_metrics/executeread-only1 task
linkedin_get_organizationsPOST /api/v1/tools/linkedin_get_organizations/executeread-onlyfree
linkedin_list_campaign_groupsPOST /api/v1/tools/linkedin_list_campaign_groups/executeread-only1 task
linkedin_list_campaignsPOST /api/v1/tools/linkedin_list_campaigns/executeread-only1 task
linkedin_list_conversionsPOST /api/v1/tools/linkedin_list_conversions/executeread-only1 task
linkedin_list_creativesPOST /api/v1/tools/linkedin_list_creatives/executeread-only1 task
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