Documentation Index
Fetch the complete documentation index at: https://docs.getcitable.com/llms.txt
Use this file to discover all available pages before exploring further.
What it does
Emits a paid ad on an AI surface — ChatGPT Ads today, with adapters for Perplexity, Gemini, Grok, and Copilot landing as each engine opens advertising. Engine-agnostic by design: pick the engine, pass the engine-shaped payload, and Citable routes to the right adapter. Under the hood:- The persona-intent matrix validates the creative content.
- Citable calls the engine adapter to create the campaign, ad group, or ad on the external system.
- The action is recorded so its 30-day citation impact can be measured.
'commercial' for emit_paid — paid placements exist to drive conversions, not just engagement. The caller cannot override this.
When to use
- The user (or upstream agent) has decided to launch a paid placement against a specific prompt cluster.
recommend_paid_ad_strategyreturned a proposal the user approved.
When not to use
- The user wants to pause / activate / archive an existing object — use
manage_paid_ad. - The user wants strategy proposals, not creation — use
recommend_paid_ad_strategy. - The user wants reporting — use
get_paid_ads_insights.
Inputs
object_type('campaign'|'ad_group'|'ad', required).engine('chatgpt'|'perplexity'|'gemini'|'grok'|'copilot', default'chatgpt').payload(object, required) — engine-shaped payload for the create API call (e.g. ChatGPT Ads campaign body).persona_id(number, required) — persona this placement targets; drives matrix validation.content(string, optional) — creative body to validate. Strongly recommended for'ad'object_type.parent_external_id(string, optional) — required for'ad_group'/'ad'; the parent campaign or ad_group external id.citable_prompt_ids(number[], optional) — tracked prompts this placement is meant to win.citable_hub_id(number, optional) — content id of the hub this ad amplifies (links spoke → hub for measurement).
Response
isError: true with structuredContent: { status: 'blocked' | 'no_connector' | 'error', ... }. For 'blocked', fix the creative or record an override out-of-band and retry. For 'no_connector', connect the engine under Connectors first.
Persona-intent validation
The matrix runs before the external adapter is called — no external system gets a side effect for content the matrix blocks. Intent is hard-coded to'commercial'.