[{"data":1,"prerenderedAt":401},["ShallowReactive",2],{"docs:\u002Fdocs\u002Fagents":3},{"doc":4,"docs":82},{"id":5,"title":6,"body":7,"description":58,"extension":59,"icon":60,"meta":61,"navTitle":62,"navigation":63,"order":64,"path":65,"related":66,"section":6,"sectionOrder":75,"seo":76,"stem":77,"type":78,"updatedAt":79,"wip":80,"__hash__":81},"docs\u002Fdocs\u002Fagents\u002Findex.md","Agents",{"type":8,"value":9,"toc":53},"minimark",[10,14,17,22,38,42],[11,12,13],"p",{},"AdKit's agent integration lets supported AI clients use AdKit tools directly.",[11,15,16],{},"Agent docs should explain what to do once AdKit is connected. Connector-specific setup belongs in the integration\u002Fonboarding pages so those instructions do not drift.",[18,19,21],"h2",{"id":20},"recommended-first-setup","Recommended first setup",[23,24,25,29,32,35],"ol",{},[26,27,28],"li",{},"Connect the agent through the canonical AdKit setup flow.",[26,30,31],{},"Ask the agent to run the AdKit check-in tool.",[26,33,34],{},"Ask the agent to list connected platforms and ad accounts.",[26,36,37],{},"Upload or create media only after the target ad account is connected.",[18,39,41],{"id":40},"copy-paste-check","Copy-paste check",[43,44,50],"pre",{"className":45,"code":47,"language":48,"meta":49},[46],"language-text","Use the AdKit connector and run the AdKit checkin tool.\nThen list the connected platforms and ad accounts.\nTell me if AdKit is ready to manage ads from this conversation.\n","text","",[51,52,47],"code",{"__ignoreMap":49},{"title":49,"searchDepth":54,"depth":54,"links":55},2,[56,57],{"id":20,"depth":54,"text":21},{"id":40,"depth":54,"text":41},"Use AI agents with AdKit after the connector is already set up.","md","fa6-solid:robot",{},"Overview",true,0,"\u002Fdocs\u002Fagents",[67,71],{"label":68,"to":69,"description":70},"Upload creative media with an AI agent","\u002Fdocs\u002Fagents\u002Fupload-creative-media","Move local images and videos from an agent session into Meta or Google Ads.",{"label":72,"to":73,"description":74},"Claude integration","\u002Fintegrations\u002Fclaude","Use the canonical Claude setup and integration page.",1,{"title":6,"description":58},"docs\u002Fagents\u002Findex","overview","2026-05-05",false,"CKB2dEqDvXXUJIpTFYmo9rgnRov6jMvYj7KXZe7582o",[4,83,353],{"id":84,"title":85,"body":86,"description":343,"extension":59,"icon":344,"meta":345,"navTitle":346,"navigation":63,"order":233,"path":69,"related":347,"section":6,"sectionOrder":75,"seo":348,"stem":349,"type":350,"updatedAt":351,"wip":80,"__hash__":352},"docs\u002Fdocs\u002Fagents\u002Fupload-creative-media.md","Upload ad creatives from an AI agent",{"type":8,"value":87,"toc":334},[88,91,94,101,111,115,121,126,149,156,160,173,243,254,258,266,283,287,290,296,300,330],[11,89,90],{},"You can drag an image or video into your AI agent and ask it to upload that creative to Meta Ads or Google Ads through AdKit. The agent handles everything: it talks to AdKit, AdKit sends the file to the ad platform, and you get back a media ID ready to use in your ads.",[11,92,93],{},"For small files, the agent sends the creative inline and it just works. But larger images and videos can get silently truncated during transfer, which produces a corrupted creative in your ad account.",[11,95,96,97,100],{},"When that happens, AdKit automatically switches to a direct upload flow: the agent requests a temporary upload URL from AdKit, uploads the file directly, and registers it with the ad platform. This flow is more reliable, but it requires the agent to make outbound requests to ",[51,98,99],{},"*.adkit.so",". Most agents block unknown domains by default. No worries though, AdKit got you covered :)",[11,102,103,110],{},[104,105,106,107,109],"strong",{},"The fix is simple: add ",[51,108,99],{}," to your agent's allowed domains."," Pick your agent below and follow the steps.",[18,112,114],{"id":113},"whitelist-adkits-upload-domain","Whitelist AdKit's upload domain",[11,116,117,118,120],{},"Add ",[51,119,99],{}," to your agent's allowed domains. This lets the agent use AdKit's direct upload flow, which bypasses the file size limits of inline transfer.",[122,123,125],"h3",{"id":124},"claude","Claude",[11,127,128,129,137,138,141,142,144,145,148],{},"Go to ",[104,130,131],{},[132,133,136],"a",{"href":134,"target":135},"https:\u002F\u002Fclaude.ai\u002Fsettings\u002Fcapabilities#Code%20execution%20and%20file%20creation:~:text=Additional%20allowed%20domains","_blank","Settings > Capabilities",", turn on ",[104,139,140],{},"Allow network egress",", then add ",[51,143,99],{}," under ",[104,146,147],{},"Additional allowed domains",".",[11,150,151],{},[152,153],"img",{"alt":154,"src":155},"Claude settings showing *.adkit.so added to Additional allowed domains","\u002Fdocs\u002Fagents\u002Fclaude-domain-allowlist.png",[122,157,159],{"id":158},"claude-code","Claude Code",[11,161,117,162,164,165,168,169,172],{},[51,163,99],{}," to the ",[51,166,167],{},"allowedHosts"," array in your project's ",[51,170,171],{},".claude\u002Fsettings.json",":",[43,174,178],{"className":175,"code":176,"language":177,"meta":49,"style":49},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n    \"permissions\": {\n        \"allowedHosts\": [\"*.adkit.so\"]\n    }\n}\n","json",[51,179,180,188,205,231,237],{"__ignoreMap":49},[181,182,184],"span",{"class":183,"line":75},"line",[181,185,187],{"class":186},"sMK4o","{\n",[181,189,190,193,197,200,202],{"class":183,"line":54},[181,191,192],{"class":186},"    \"",[181,194,196],{"class":195},"spNyl","permissions",[181,198,199],{"class":186},"\"",[181,201,172],{"class":186},[181,203,204],{"class":186}," {\n",[181,206,208,211,214,216,218,221,223,226,228],{"class":183,"line":207},3,[181,209,210],{"class":186},"        \"",[181,212,167],{"class":213},"sBMFI",[181,215,199],{"class":186},[181,217,172],{"class":186},[181,219,220],{"class":186}," [",[181,222,199],{"class":186},[181,224,99],{"class":225},"sfazB",[181,227,199],{"class":186},[181,229,230],{"class":186},"]\n",[181,232,234],{"class":183,"line":233},4,[181,235,236],{"class":186},"    }\n",[181,238,240],{"class":183,"line":239},5,[181,241,242],{"class":186},"}\n",[11,244,245,246,249,250,253],{},"You can also add it to ",[51,247,248],{},"~\u002F.claude\u002Fsettings.json"," if you want it allowed across all projects, or to ",[51,251,252],{},".claude\u002Fsettings.local.json"," for just your machine.",[122,255,257],{"id":256},"codex","Codex",[11,259,117,260,262,263,172],{},[51,261,99],{}," to your network domain permissions in ",[51,264,265],{},".codex\u002Fconfig.toml",[43,267,271],{"className":268,"code":269,"language":270,"meta":49,"style":49},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[permissions.default.network.domains]\n\"*.adkit.so\" = \"allow\"\n","toml",[51,272,273,278],{"__ignoreMap":49},[181,274,275],{"class":183,"line":75},[181,276,277],{},"[permissions.default.network.domains]\n",[181,279,280],{"class":183,"line":54},[181,281,282],{},"\"*.adkit.so\" = \"allow\"\n",[122,284,286],{"id":285},"other-agents","Other agents",[11,288,289],{},"Paste this into your agent and it will figure out the best approach for your setup:",[43,291,294],{"className":292,"code":293,"language":48},[46],"AdKit has an MCP tool for uploading creatives that sends the file as base64 in\nthe tool call. If you can handle large base64 payloads, that's the simplest\npath.\n\nIf not, AdKit also supports temporary signed upload URLs: you request a URL from\nAdKit, then upload the file directly via fetch\u002Fcurl\n\nWhich approach works best for you, and do I need to configure anything (like\ndomain allowlisting for *.adkit.so) to make it work?\n",[51,295,293],{"__ignoreMap":49},[18,297,299],{"id":298},"common-questions","Common questions",[301,302,304,312,318,324],"accordion",{"type":303},"single",[305,306,309],"accordion-item",{"icon":307,"label":308},"fa6-solid:circle-question","What if the agent says the upload link expired?",[11,310,311],{},"Upload links are temporary. Just ask the agent to start the upload again. It will request a new link automatically.",[305,313,315],{"icon":307,"label":314},"Which agents work with AdKit?",[11,316,317],{},"Any agent that supports an AdKit connector: Claude, Claude Code, Codex, ChatGPT, and others. Local agents (CLI-based) usually work without any config. Cloud-hosted agents need the domain allowlisted first.",[305,319,321],{"icon":307,"label":320},"What media formats are supported?",[11,322,323],{},"AdKit passes your file to Meta or Google as-is. Generally: JPEG, PNG, and MP4 for most ad types. Check your ad platform's creative specs for exact requirements.",[305,325,327],{"icon":307,"label":326},"How do I know the upload worked?",[11,328,329],{},"The agent returns a media ID from the ad platform. For Meta, that's an image hash or video ID. For Google, it's an asset ID. You can verify by asking the agent to list your account's media.",[331,332,333],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":49,"searchDepth":54,"depth":54,"links":335},[336,342],{"id":113,"depth":54,"text":114,"children":337},[338,339,340,341],{"id":124,"depth":207,"text":125},{"id":158,"depth":207,"text":159},{"id":256,"depth":207,"text":257},{"id":285,"depth":207,"text":286},{"id":298,"depth":54,"text":299},"Upload images and videos to Meta Ads or Google Ads from Claude, Codex, or any AI agent using AdKit. Includes domain allowlist setup for each client.","fa6-solid:cloud-arrow-up",{},"Upload creative media",null,{"title":85,"description":343},"docs\u002Fagents\u002Fupload-creative-media","guide","2026-05-06","Szr4whQur5IUyEaxFJOzziEH9rZhrwqNpNH5NtJpf3I",{"id":354,"title":355,"body":356,"description":394,"extension":59,"icon":395,"meta":396,"navTitle":62,"navigation":63,"order":64,"path":397,"related":347,"section":367,"sectionOrder":64,"seo":398,"stem":399,"type":78,"updatedAt":79,"wip":80,"__hash__":400},"docs\u002Fdocs\u002Findex.md","AdKit Docs",{"type":8,"value":357,"toc":390},[358,361,364,368,380,384,387],[11,359,360],{},"AdKit docs are intentionally small right now.",[11,362,363],{},"The setup wizard and integration pages handle connection setup. These docs focus on repeatable workflows that agents and users need after AdKit is connected.",[18,365,367],{"id":366},"start-here","Start here",[369,370,371,374,377],"ul",{},[26,372,373],{},"Upload creative media when your agent has an image or video that needs to become a Meta or Google ad asset.",[26,375,376],{},"Use the integration\u002Fonboarding pages for connector-specific setup.",[26,378,379],{},"Add more docs only when there is a real workflow or support issue worth documenting.",[18,381,383],{"id":382},"for-agents","For agents",[11,385,386],{},"Agents should use the docs the same way a person would: find the task, follow the steps, and use the copy-paste prompt when available.",[11,388,389],{},"The docs avoid publishing AdKit's full internal API map. They focus on supported user workflows and recovery paths.",{"title":49,"searchDepth":54,"depth":54,"links":391},[392,393],{"id":366,"depth":54,"text":367},{"id":382,"depth":54,"text":383},"Practical AdKit workflow guides for AI agents.","fa6-solid:book-open",{},"\u002Fdocs",{"title":355,"description":394},"docs\u002Findex","ADqawzJ9pH1slHDKDbNiI9csB1NzFqdlVMqpcUhwH1Y",1778057885252]