accept_suggested_prompts
ChatGPTAccept suggested prompts: track up to 100 pending suggestions from the Suggested prompts queue as prompts, each in its own country and language, optionally tagged with one tag (tag_ids or tag_names; create_missing=true creates a missing name). The prompt limits are checked first: when the new prompts would exceed the plan nothing is accepted (ERR_LIMIT_REACHED). Suggestions that are no longer pending come back in skipped. In the response, prompts_available=null means unlimited.
ask_support
ChatGPTAsk the LLM Pulse support assistant a product question. The question and account plan are processed by AI providers against the official LLM Pulse knowledge base. The full question and answer, user identity, and plan are stored for support review and improvement, and a shortened copy is sent to the support team. Limited to 20 questions per user per day and excludes account-specific billing or invoice support.
assign_prompt_tags
ChatGPTAssign prompt tags: attach tags (collections) to existing prompts in bulk. Accepts up to 500 prompt_ids and 50 tags per request. Tags can be supplied as ids or case-insensitive names, and create_missing=true creates names that do not exist. The operation is idempotent and does not duplicate assignments.
compare_geo_audit_runs
ChatGPTCompare two runs of a GEO audit check by check: what is new, fixed, changed, appeared or disappeared, plus the score and metric deltas. Defaults to the latest completed run against the one before it.
create_annotation
ChatGPTCreate an annotation: mark a date in the project timeseries with a title + description. Useful when the agent detects a notable change (campaign launch, product update, news event) and wants to flag it. Annotations are scoped to the project and visible to all members.
create_collection
ChatGPTCreate a tag (Collection) in a project. Optionally attach existing prompts in the same call. Tag name is unique per project (case-insensitive).
create_competitor
ChatGPTCreate a competitor in a project. Validates against the max competitor limit of the plan. Triggers async association recalculation: the competitor row returns processing=true immediately, and mentions/SOV/dashboards include it once the recalculation finishes (typically minutes, longer on large projects). competitors_remaining=null in the response means unlimited.
create_geo_audit
ChatGPTCreate GEO audits for a domain or URL: one audit per audit type, each starting its first run at once. cadence weekly or monthly makes it recurring (only for types whose checks are tracked run to run; others run once) and counts against the plan limit of recurring audits.
create_intelligence_task
ChatGPTCreate a GEO Writer (formerly Content Intelligence) task. task_type selects a content brief, full draft, existing-content update, PR/media analysis, or custom output. update requires existing_content or existing_content_url. A task can reference an existing prompt_id or use custom_topic or user_instructions. Returns the task id and initial status.
create_project
ChatGPTCreate a new project (a brand or website to track) in one call, with its prompts, competitors, collections (prompt tags) and weekly email subscription; no wizard draft is needed. Prompts are queued for execution, so a first baseline arrives within minutes. Enforces the same plan gates and quotas as the in-app wizard. The response lists same_domain_projects, the projects already tracking the same domain; a second project for a domain is never blocked. external_identifier makes creation idempotent for embed accounts.
create_prompts
ChatGPTCreate prompts: add them to a project in bulk. Validates against available prompt limits and skips duplicates. New prompts run once within minutes of creation and then join the weekly schedule. brand_kind and prompt_type are classified asynchronously and become available after creation. In the response, prompts_available=null means unlimited.
create_technical_geo_report
ChatGPTCreate a technical GEO report for a URL and country, run as a bundle of analyses: crawlability, schema, content readiness, discoverability, site structure, robots.txt, llms.txt, agent readiness, and AI visibility. This quota-consuming action starts multiple scraping and AI analysis jobs and typically takes 3-10 minutes. Each successfully created report consumes one daily report unit, so this 9-report bundle needs 9 units available before launch. The in-app chat requests confirmation before execution. Returns the batch id, created report ids, and any launch failures.
create_webhook_subscription
ChatGPTCreate a webhook subscription: subscribe a public HTTPS URL to a project event. We will POST a signed JSON payload to the URL every time the event occurs (new mention, new citation, execution completed, negative sentiment detected, recommendation or intelligence task completed). Available on Scale and above plans. Deliveries are signed: the X-LLMPulse-Signature header carries sha256=<HMAC-SHA256 hex of the raw body> using the whsec_ secret returned ONCE by this call (store it; it is never shown again; rotating requires delete + recreate). X-LLMPulse-Event and X-LLMPulse-Delivery headers identify the event and delivery.
delete_annotation
ChatGPTDelete a user-created timeline annotation from a project. Non-admin users can delete only their own annotations; admins can delete any user-created annotation. System annotations are protected. Requires the exact annotation id. The in-app chat requests confirmation before execution. Available on every plan.
delete_collection
ChatGPTDelete a tag/collection from a project. The tag is removed irreversibly, but its prompts remain and only the grouping disappears. Requires the exact collection id. The in-app chat requests confirmation before execution.
delete_competitor
ChatGPTDelete a competitor from a project. This irreversible action removes the competitor immediately, frees a competitor slot, and purges its mentions, citations, sentiment, and share-of-voice history in a background job. Its ads, shopping products, local businesses and brand entities are kept and move to the project or another competitor they match, or stay unattributed. Requires the exact competitor id. The in-app chat requests confirmation before execution.
delete_geo_audit
ChatGPTDelete (archive) a GEO audit: it stops running and leaves the list. Creating the same audit again restores it with its history.
delete_prompt
ChatGPTDelete a prompt from a project. This irreversible action removes the prompt immediately, frees a prompt slot, and purges its executions, mentions, citations, sentiment, and related GEO Writer tasks in a background job. Requires the exact prompt id. The in-app chat requests confirmation before execution.
delete_webhook_subscription
ChatGPTDelete a webhook subscription by ID. The target URL stops receiving events immediately. Available on Scale and above plans.
finalize_project_draft
ChatGPTFinalize a project draft: create the project from a completed wizard draft. The operation revalidates every plan gate and quota. It is idempotent, and an already-finalized draft returns its existing project.
generate_prompt_suggestions
ChatGPTGenerate prompt suggestions with the same generators as the app's Add prompts wizards and save them to the project's Suggested prompts queue. Sources: website (from the scraped website, 80% non-brand / 20% brand), keyword (from a keyword or the project profile, optional competitor angle), topic, reddit (from Reddit discussions of a topic or brand), paa (Google People Also Ask for up to 5 keywords), reputational (brand reputation questions), translate (the project's prompts of another locale) and search_console (the property's top queries; Growth plan or above). Runs asynchronously: returns a run with status processing and the id to poll. The suggestions wait in the queue and nothing is tracked until they are accepted. country_code and language_code default to the project's.
get_account_usage
ChatGPTGet the account plan, usage, remaining quotas (prompts, projects, competitors, tasks) and API rate limits for the authenticated account. plan is the internal key and plan_name its display name (e.g. Scale++). The response includes the remaining capacity for quota-consuming creation and analysis actions. An unlimited quota returns limit and remaining as null with unlimited=true. The subscription block is only present for callers who may access Billing & Plans. For an API key limited to some projects, plan, plan_name, subscription and team_members are absent, and prompts and intelligence_tasks show only the capacity left (prompts.used counts those projects' prompts).
get_agent_traffic
ChatGPTGet agent traffic: aggregated AI bot traffic for a project from Cloudflare or uploaded server logs. Returns per-day request counts grouped by bot or by company. Available on Scale and above plans.
get_ai_model_position_distribution
ChatGPTGet the AI Model Insights position distribution for the project brand and an optional competitor. brand_kind=non_brand matches the in-app default and excludes brand-focused prompts. When brand2 is omitted (or equals brand1) it defaults to the largest other competitor by mentions. Weekly and monthly buckets cover full calendar periods, including the complete first period containing the range start.
get_ai_model_summary
ChatGPTGet an AI model summary: a per-AI-model breakdown of mentions, citations, sentiment, and weighted visibility for the brand and competitors. All models are returned in one response. brand_kind=non_brand matches the in-app AI Model Insights default and excludes brand-focused prompts. mentions_market_share is the independent mention rate of each actor within a model, so values can overlap and do not form a 100% share partition.
get_ai_overview_results
ChatGPTGet aggregate Google AI Overview result availability over time plus per-prompt breakdowns.
get_ai_traffic
ChatGPTGet AI traffic for a project: the human visits arriving from AI assistants (ChatGPT, Perplexity, Gemini, Claude, Copilot, Grok, Mistral, Meta AI, DeepSeek), measured from the connected web analytics provider (Google Analytics 4, Adobe Analytics, PostHog, Plausible, Matomo or Piano). Returns per-day users, sessions and conversions grouped by AI source, plus totals and conversion rate. Requires a connected web analytics provider. Available on Growth and above plans.
get_answer
ChatGPTGet detailed information about a single AI answer/response including full response text, mentions, citations, sentiments, and sources. Sentiments need the Growth plan or above and shopping products the Scale plan or above; below those plans the fields are left out and plan_required_fields names the plan that unlocks each.
get_cited_url_content
ChatGPTGet sanitized cached page content plus page-cache metadata and mention snippets for one cited URL. Text longer than 15,000 characters is truncated (content.text_truncated=true, full length in content.text_total_chars); use max_chars to shrink the slice and offset to page through the rest.
get_cited_url_details
ChatGPTGet cited URL details: URL-level citation intelligence for one cited URL, including page-cache metadata and mention evidence. Pass include_series=true to also get citation_series: the answers citing the URL by AI model and per period of the account tracking cadence, dated by execution time in Europe/Madrid.
get_competitor_details
ChatGPTGet competitor details: matching names, mobile app IDs, and icon URLs.
get_custom_report
ChatGPTGet one custom report: its configuration (date range, model, tag, brand type and competitor filters, schedule, layout) and the data of every widget as the report page shows it today (KPIs, time series, donuts, per-model bars and tables). Read-only. Requires the Scale plan or above.
get_geo_audit
ChatGPTGet one GEO audit: its type, target, cadence and schedule, status, latest run (score and new, fixed and regressed issues) and open issue counts.
get_geo_audit_run
ChatGPTGet one run of a GEO audit with its score, metrics and full result_data (the same report the app shows for that run).
get_intelligence_task
ChatGPTGet a GEO Writer (formerly Content Intelligence) task by ID, including status and result data when completed.
get_mentions_by_citing_domain
ChatGPTGet mentions by citing domain: for responses where a given source domain is cited, the share of those responses that mention the brand vs each competitor (brand + competitors sum to 100% per domain). Accepts a list of domains so the whole matrix is one call. Answers questions like "when gmac.com is cited, which brands get mentioned?".
get_owned_media_profiles
ChatGPTGet the owned-media profiles a project claims, per platform (YouTube, app stores, Instagram, Facebook, TikTok, LinkedIn, Reddit): each profile URL, handle, name, avatar and profile scrape status, the main profile and the extra ones, the claimed subreddits and Reddit usernames, and whether the platform is connected. Also returns settings, the current value of every field the update accepts. Available on Growth and above plans.
get_owned_media_summary
ChatGPTGet the summary of one Owned Media tab: how often AI answers cite a platform, how many of those citations are the account own profile and content, and its share, with the previous period of the same length and the change against it (percent for counts, percentage points for share_pct). Also returns the weekly series (yours against everyone else), the breakdown by AI model and by country, the content type (reel, post, Shorts, live) and content age buckets. provider=overview returns the per-platform rollup across every connected platform; provider=mobile_apps adds the per-store totals. provider=youtube also needs the YouTube Intelligence permission for team members. Defaults to the last 30 days. Available on Growth and above plans.
get_project_details
ChatGPTGet project details: matching names, additional owned domains, industry, business model, primary products, target audience, prompt counts per brand focus (brand / brand_other / non_brand), data_coverage for the AI models, countries, and languages that have data, and search_console: whether a Google Search Console property is connected (connected, reconnect_required or not_connected) and which one.
get_project_draft
ChatGPTGet a project wizard draft: state, current step, accumulated data. include_suggestions returns cached suggestions for the current step (never triggers AI).
get_prompt_generation
ChatGPTGet a prompt generation run: its status (processing, completed or failed), the suggestions it saved to the Suggested prompts queue (id, prompt, locale, status) and, when it failed, an error with code and message. Runs are kept for 24 hours; their suggestions stay in the queue.
get_prompt_summary
ChatGPTGet a prompt summary: per-prompt aggregated metrics (responses, mentions, citations, mention_rate, citation_rate, avg_mention_position, avg_position, brand sentiment) with pagination and sorting. mention_rate (also accepted as visibility) is the percentage of responses mentioning the brand. Returns brand-only metrics broken down by individual prompt. Supports breakdown=model to get per-prompt per-model metrics. Field notes: visibility and mention_rate are the same value (historical alias, both kept for compatibility); avg_mention_position is the average rank of the brand among the brands named WITHIN the answers that mention it, and it is the position behind ai_visibility_score; avg_position is a different thing, the average rank of the brand cited URL among the URLs an answer cited (background citations excluded). Each row also carries the prompt classification (country_code, language_code, prompt_type, brand_kind, tags). sentiment_responses counts the responses with a brand sentiment verdict; the five sentiment_* fields are percentages of that count and net_sentiment is positive minus negative (-100 to 100), all null when the count is 0.
get_recommendation
ChatGPTGet full details for one recommendation run, including items, source references, and report data. Each item carries source_refs codes (e.g. P1, C2); resolve them against the report_data indices (prompts_index, citations_index, own_content_index), which are always included once per response.
get_reputation_report
ChatGPTGet the scores of one reputation report as flat rows: one row per (analyst model, brand, dimension, attribute) with its 0-100 score and the reasoning the model gave. The report id comes from the project reputation-report history. Scores remain separate for each analyst model, and the model filter selects a single analyst view. Requires reputation monitoring to be enabled on the account.
get_search_console_pages
ChatGPTGet top Google Search Console landing pages for a project over a date range, ranked by impressions, clicks, CTR, or average position, with pagination. Supports filters, non-web search types, and data_state=all for recent incomplete days. Lists at most 25,000 pages per request (truncated: true when reached; start_row reads the next block) and counts each page separately rather than per property, so the rows are not a complete set and can differ from the property or filter totals. Requires a Search Console connection.
get_search_console_queries
ChatGPTGet top Google Search Console search queries for a project over a date range, ranked by impressions, clicks, CTR, or average position, with pagination. Supports filters, non-web search types, and data_state=all for recent incomplete days. Lists at most 25,000 queries per request (truncated: true when reached; start_row reads the next block) and excludes anonymized queries, so the rows are not a complete set and add up to less than the property or filter totals. Requires a Search Console connection.
get_search_console_rows
ChatGPTGet Google Search Console rows for a combination of up to 3 dimensions over a date range (for example page and query, or date and page), each row carrying impressions, clicks, CTR and average position, ranked by impressions, clicks, CTR or position, with pagination. Each dimension is its own field in the row. Supports filters, non-web search types, aggregation_type and data_state=all for recent incomplete days. Lists at most 25,000 rows per request (truncated: true when reached; start_row reads the next block), and query rows exclude anonymized queries, so the rows add up to less than the property or filter totals. Requires a Search Console connection.
get_search_console_summary
ChatGPTGet a Search Console summary: Google Search Console headline totals (impressions, clicks, CTR, average position) for a project over a date range. Pass dimension to also get a breakdown aggregated over the range: country, device, page, query or searchAppearance (country values are lowercase ISO alpha-3 as returned by Google, e.g. usa, gbr, plus the zzz unknown-country sentinel; page and query keep the casing Google returns). Pass search_type to measure a surface other than web, filters to narrow the query, and data_state=all to include the most recent still incomplete days. With filters and no dimension, the totals are the complete figure Google reports for that filter (for example every page whose URL contains /blog/), matching Search Console. Breakdown rows are capped by limit, query rows exclude anonymized queries, and page and searchAppearance rows are counted per page rather than per property, so the rows can differ from the totals. The response data_through field reports the latest synced date in stored mode or the latest finalized date detected from Google in live mode. Recent days without rows should not be treated as zero. Requires the project to have a Search Console connection.
get_search_console_timeseries
ChatGPTGet a Search Console time series: property-wide Google Search Console impressions, clicks, CTR and average position, bucketed by day, week or month. Pass search_type to measure a surface other than web, filters to narrow the series, and data_state=all to include the most recent still incomplete days. The response data_through field reports the latest synced date in stored mode or the latest finalized date detected from Google in live mode. Recent days without rows should not be treated as zero. Requires the project to have a Search Console connection.
get_sentiment_tags
ChatGPTGet sentiment by tags, the Tags table of the Sentiment page: for each tag of the project, how many analyzed mentions its prompts produced, how many are positive, neutral and negative, their shares and the net sentiment score. A mention counts once per tag its prompt carries. Takes the page filters; brand empty means your own brand, all every brand, or a competitor id. Requires the Growth plan or above.
get_sentiment_topics
ChatGPTGet sentiment by topics, the Topics table of the Sentiment page: for each topic AI answers associate with the brand, how many analyzed mentions it has, how many are positive, neutral and negative, their shares and the net sentiment score. Takes the page filters; brand empty means your own brand, all every brand, or a competitor id. Requires the Growth plan or above.
get_sov
ChatGPTGet Share of Voice (SoV): the relative share of mentions between the project and its competitors over time. Returns current shares by actor plus periods with the mention sample size (n), a partial flag, a confidence level (none, low under 30 mentions, medium under 100, high) and margin_of_error in percentage points; sample is the period the current shares were computed on. view=compact drops the over_time, breakdown and others representations; view=over_time, current or breakdown returns only that one. group_by=model returns the comparison per AI model. brand_kind=non_brand excludes brand-focused prompts for a fair competitor comparison.
get_study
ChatGPTGet one custom AI study: its brief, the subjects it compares, the dimensions it scores them on, and its report history. The reports array contains the ids and status metadata for the study score reports. Requires reputation monitoring to be enabled on the account.
get_study_report
ChatGPTGet the scores of one custom-study report as flat rows: one row per (analyst model, subject, dimension, attribute) with its 0-100 score and the reasoning the model gave. The report id belongs to the selected study report history. Scores remain separate for each analyst model. Requires reputation monitoring to be enabled on the account.
get_summary
ChatGPTGet summary statistics for metrics over a time period. Returns one row per metric and actor with total, min, max, and last values. Count totals are summed; percentages and rates are averaged across periods. group_by returns one summary per AI model or collection. brand_kind=non_brand excludes brand-focused prompts for a fair competitor comparison.
get_technical_geo_report
ChatGPTGet one technical GEO report by type and id, including its current status and full result_data when completed. agent_readiness identifies the AI/Agent Readiness report. A response containing poll_after_seconds indicates that the existing report is still running.
get_timeseries
ChatGPTGet time series metrics data for a project. Supports mentions, citations, mention_rate (also accepted as visibility), citation_rate, responses, ai_visibility_score (position-weighted visibility and unbounded), avg_position (average visible citation position; background references are excluded), net_sentiment, and sentiment breakdowns. avg_position is not avg_mention_position, which ranks the brand among brands named in an answer. Competitor series accept competitor record ids. Week and month granularity clip the first bucket to the requested window. brand_kind=non_brand excludes brand-focused prompts for a fair competitor comparison.
get_top_sources
ChatGPTGet top performing source domains for a project. Returns domains ranked by citing responses. avg_visibility (alias avg_mention_rate) is the percentage of all responses in the window that cite the domain at least once, bounded from 0 to 100. This metric describes the domain, not the brand, and does not include brand share conditioned on that domain.
get_webhook_sample
ChatGPTGet sample webhook payloads for an event type, built from the project's most recent real data or a static sample when no data exists. The response shows the exact signed-delivery payload shape. Available on Scale and above plans.
import_prompts
ChatGPTImport prompts like the app's CSV import: up to 500 rows, each with its own prompt, country_code, language_code (both default to the project's) and tags (created when missing). Duplicates are skipped and existing prompts get the row's tags. The prompt limits are checked first: when the new prompts would exceed the plan nothing is imported (ERR_LIMIT_REACHED). Rows that cannot be imported come back in row_errors. For a team member without create access to Tags, a row that needs a tag that does not exist yet is skipped; without update access to Prompts, a row matching a prompt that already existed adds no tags to it, and comes back in row_errors when it would have added one. In the response, prompts_available=null means unlimited.
invite_team_member
ChatGPTInvite someone to the account team by email, with the same rules as the Team Members settings page. They receive the invitation email and stay a pending invitation until they accept. Choose their projects (project_ids, or all_projects: true) and, as the account owner or a co-owner with Full access, their access: permission_role full_access (default), view_only, custom (with permissions) or account_role (with account_role_id). A team member allowed to invite, or a co-owner without Full access, cannot choose access: their invitations copy their own permissions. Only the owner can grant account_admin (co-owner) or billing_access. An address with a pending invitation is refused; revoke it first. Invitations through the API and MCP have a daily limit per account, revoked ones included. Requires a writable credential; not available to an API key limited to some projects.
launch_recommendations
ChatGPTLaunch AI-powered recommendation generation for a project. This action spends the shared weekly recommendation-item budget unless the account has unlimited recommendations or the caller is an admin. It starts a background job that typically runs for 1-3 minutes. The in-app chat requests confirmation before execution. Recommendation status moves from pending to processing to completed.
list_ads
ChatGPTList ads: the paid placements AI answers returned for your tracked prompts. view=advertisers (default) returns one row per advertising domain with its placement count, how many prompts it appeared on, and its average and best position; view=ads returns the individual placements with title, snippet, position and the prompt that triggered them. Every response also carries a totals block (placements, advertisers, your placements and share, average position) matching the KPI cards in the app. Position 1 is the best slot, so a LOWER average position is better. Available on Scale and above plans.
list_agent_bots
ChatGPTList agent bots: the catalog of known AI bots, including crawlers, assistants, and search fetchers, with their parent companies. Returns each bot's slug, display name, company, category, and description. The slugs and company names are valid bot-traffic filter values.
list_all_citations
ChatGPTList all citations (brand + competitor) for a project with actor_type field. Returns paginated results combining project and competitor citations. The competitors filter narrows which competitor rows are included, but project rows are ALWAYS included. position 0 means unranked/background (real positions are 1-indexed).
list_all_mentions
ChatGPTList all mentions (brand + competitor) for a project with actor_type field. Returns paginated results combining project and competitor mentions. The competitors filter narrows which competitor rows are included, but project rows are ALWAYS included.
list_annotations
ChatGPTList the timeline annotations of a project, newest first. Includes manual annotations, project automations, GEO test markers, and platform-wide events. origin identifies the source and editable indicates whether the authenticated user can modify the row. Supports date-window and category filters. Available on every plan.
list_answers
ChatGPTList AI answers with their content, prompt text, model, and basic metrics. Results are paginated and response text is truncated to 1,500 characters per row by default. full_text=true raises the per-row limit to 10,000 characters. query performs full-text search, makes total the exact number of matching responses, and returns a short snippet around each match.
list_citation_groups
ChatGPTList citation groups: citation intelligence data grouped by URL, domain, or host, including citation rates, model breakdowns, and page-cache awareness. Rows are compact by default; pass include_page_details=true to embed crawled page content details (url view only), and keep per_page moderate when you do.
list_citations
ChatGPTList URL citations of the project brand only, without competitor rows and effectively one citation per answering response. position 0 means unranked/background; ranked positions are 1-indexed. Returns paginated results with citation id, name, domain, prompt_id, prompt_execution_id, url, position, and created_at.
list_cited_url_occurrences
ChatGPTList cited URL occurrences: every prompt execution where a specific cited URL appeared, with prompt text, answer preview, model, and citation position.
list_collections
ChatGPTList all collections (tags) for a specific project. Returns collection id and name. Collections and tags are two names for the same underlying object and share identical data.
list_competitor_citations
ChatGPTList competitor citations for a project with optional competitor and prompt filters.
list_competitor_mentions
ChatGPTList competitor mentions for a project with optional competitor and prompt filters.
list_competitor_suggestions
ChatGPTList competitor suggestions, the Suggested tab of the Competitors page: basis brands returns the competing brands the AI discovery proposed and that are not tracked or rejected yet; basis citations returns the domains AI answers cite most that are not tracked yet, with how many answers cite each. Read-only: it never starts a new discovery run.
list_competitors
ChatGPTList all competitors for a specific project. Returns competitor id, name, website domain or host, citation matching rule, and matching_names (the aliases used for mention matching). With include_project_brand=true, a synthetic first row represents the tracked brand. That row uses the project id rather than a competitor id and carries actor_type=project / is_own=true.
list_custom_reports
ChatGPTList the custom reports of a project (Reports > Custom Reports), newest first: name, date range, delivery schedule, recipient count, whether the shared link is published, and the widgets each one shows. Requires the Scale plan or above.
list_detailed_sentiments
ChatGPTList detailed sentiment analysis records with comments, topics, scores, and competitor information. This returns analysis evidence rather than only the sentiment-category catalog. Available on Growth and above plans.
list_geo_alerts
ChatGPTList the alerts GEO audits raised for a project, newest first: a critical check newly failing, a check failing again, a recovery, a score drop or a site that stopped answering, each with a readable message.
list_geo_audit_findings
ChatGPTList the findings of one GEO audit run: each check (and the bot or item it is about) with its status pass, warn, fail, info or unknown, its severity and evidence. Most severe first.
list_geo_audit_issues
ChatGPTList the issues of a GEO audit: each failing check across runs with its severity, state (open, fixed, gone), its latest change (new, persisting, regressed, fixed, gone) and evidence. Accepted issues stay listed with accepted true.
list_geo_audit_runs
ChatGPTList the runs of a GEO audit, newest first, with each run score, status, trigger and how many issues it found new, fixed or regressed.
list_geo_audits
ChatGPTList the GEO audits of a project: each audit re-runs one type of technical GEO check (robots.txt, agent readiness, crawlability, schema...) on a domain or URL, once or weekly/monthly. Returns the latest run score, open issues and next run. Archived audits are left out unless status=archived.
list_intelligence_tasks
ChatGPTList GEO Writer (formerly Content Intelligence) tasks for a project with optional filtering by type and status.
list_local_businesses
ChatGPTList local businesses: the shops, restaurants and services AI answers listed for your tracked prompts, merged across executions into one row per business (its name at its address, so two locations of a chain are two rows). Each row carries its appearance count, the number of prompts that listed it, its average rating and position in the list, its review count, and whether it is yours or a tracked competitor. Every response also carries a totals block (businesses, your businesses, appearances, average rating, answers with local businesses) matching the KPI cards in the app. Local business lists are reported by a subset of models and only for prompts with local intent, so an empty result usually means the prompts in scope do not ask for places. Available on every plan.
list_locales
ChatGPTList locales: the countries and languages that have data for a specific project. Returns lists of country codes (e.g., US, ES) and language codes (e.g., en, es).
list_mentions
ChatGPTList mentions of the project brand only, without competitor rows. Returns paginated results with mention id, name, prompt_id, prompt_execution_id, and created_at.
list_models
ChatGPTList all AI models that have data for a specific project. Returns model identifiers such as chatgpt, perplexity, gemini, ai_mode, and ai_overview.
list_owned_media
ChatGPTList the owned-media content AI answers cite: YouTube videos and channels, social posts and profiles (Instagram, Facebook, TikTok, LinkedIn), and app-store listings. A provider is required. Each row carries a yours flag telling you whether the content belongs to the account own connected profile, so you can compare your presence against everyone else cited on the same platform. view=own_citations returns the raw citations of the connected profile only, and stays empty until a profile is connected. Reddit content is excluded from this result. Available on Growth and above plans.
list_owned_media_citing_prompts
ChatGPTList the prompts citing one owned-media item: the AI answers that cited a YouTube video or channel, or an Instagram, Facebook, TikTok or LinkedIn post or profile. Pass exactly one of url (the post or video URL, any variant) or profile (the handle, the profile or channel URL, or a YouTube channel key such as handle:acme). Returns the item (title, image, owner, whether it is yours, its stats), its citation and prompt counts, and the citing answers newest first, each with the prompt id and text, the answer id, the model, the execution date and an excerpt of the answer. Team members need the prompts read permission, and the YouTube Intelligence permission for provider=youtube. Defaults to the last 30 days. Available on Growth and above plans.
list_projects
ChatGPTList all projects accessible to the authenticated user. Returns each project id, name and brand_name (null when unset; the name then serves as the brand).
list_prompt_executions
ChatGPTList prompt executions with model, success, execution timing, fan-out queries, and mention/citation presence. duration_ms measures internal processing time of the answer pipeline, NOT the AI model latency, and can be near zero. fan_out_queries is only populated for models/providers that expose query fan-out (mainly chatgpt and claude), null elsewhere.
list_prompts
ChatGPTList the tracked prompts of a project, with optional filtering by model, collection, locale, prompt id, prompt_type, brand_kind, text query, and date range. model keeps only the prompts with at least one execution on that model (any outcome, any date); the date range filters prompt creation. Returns paginated results with prompt id, prompt_text, authoritative tag/collection memberships as {id, name} pairs, collection_ids, country_code, language_code, prompt_type, brand_kind, and last_executed_at. fields=prompt_text (or any subset) returns only those keys plus id. The legacy collection_id field can be null even when the prompt has tags.
list_query_fan_outs
ChatGPTList the query fan-out behind your tracked prompts: the sub-queries a model actually issued when answering. view=query (default) returns one row per distinct sub-query with its occurrence count and share of all occurrences; view=prompt returns one row per prompt with how many distinct sub-queries it produced. The result shows the phrasing models searched for, which often differs from the original prompt. Fan-out is reported mainly by ChatGPT and Claude, so an empty result usually means the models in scope do not expose it rather than that nothing was searched.
list_recommendations
ChatGPTList read-only recommendation runs for a project, including type, status, summary, and counts.
list_reddit_citations
ChatGPTList the Reddit content AI answers cite for your tracked prompts. view=subreddits (default) returns one row per subreddit with its citation count, unique authors and positive/negative sentiment split; view=authors returns one row per Reddit author; view=threads returns the individual cited threads with upvotes, comments, average position and dominant sentiment. Reddit is one of the most cited domains in AI answers, so this is the fastest way to see which communities and conversations shape what models say about a brand. Available on Growth and above plans.
list_reputation_reports
ChatGPTList the reputation reports generated for a project, newest first. Each row carries the report id, its status, and which analyst models produced data for it. Pending and failed reports are included on purpose: whether this month ran at all is often the question being asked. Requires reputation monitoring to be enabled on the account.
list_sentiments
ChatGPTList all sentiment categories with their metric keys, labels, and colors. Used for understanding sentiment data structure. Available on Growth and above plans.
list_shopping_products
ChatGPTList shopping products: the shopping results (product cards) AI answers returned for your tracked prompts, merged across executions. view=products (default) returns one row per distinct product with its appearance count, price range, rating, whether it is yours, the currency its highest price is in and currency_count (above 1 means the row reports its most expensive listing and min_price may be another currency); view=merchants returns one row per selling merchant with its product count, price range and the currency that range is expressed in (providers price each market in its own money, so a merchant selling in more than one reports the currency most of its prices use). Every response also carries a totals block (products, merchants, average price with the avg_price_currency it is computed inside, average rating, your products) matching the KPI cards in the app. Shopping results are reported by a subset of models, so an empty result usually means the models in scope do not return product cards for these prompts. Available on Scale and above plans.
list_sources
ChatGPTList sources (URLs cited by AI models) for a project with optional filtering. Returns paginated results with source id, prompt_execution_id, domain, url, position, source_type (owned, competitor or third_party), and app-store link flags.
list_studies
ChatGPTList the custom AI studies defined on the account, newest first. A study is an account-defined analyst report over any set of subjects (brands, sectors, topics) and any set of dimensions. Studies belong to the ACCOUNT, not to a project, so project_id is an optional filter rather than a required argument. Each study id identifies its subjects, dimensions, and report history. Requires reputation monitoring to be enabled on the account.
list_suggested_prompts
ChatGPTList the project's Suggested prompts queue, the same list the app's Suggested Prompts tab shows: suggestions from every generator (website, magic for keyword runs, topic, reddit, paa, reputational, translate, gsc for Search Console, catalog), oldest first. Defaults to pending suggestions; status=all includes accepted (with the prompt_id they became) and rejected ones.
list_tags
ChatGPTList all tags for a specific project. Tags and collections are two names for the same underlying object here. Tag creation and prompt assignment update this shared set.
list_team_invitations
ChatGPTList pending team invitations: who was invited, the access and projects they will get, when the invitation was sent and when it expires. An accepted invitation keeps its id and becomes a team member. Not available to an API key limited to some projects.
list_team_members
ChatGPTList team members: the account owner first, then every member who joined, with their access level (permission_role, account role and the resulting permissions), co-owner and billing flags, project access, status (active or blocked) and last sign-in. Pending invitations are not included. Not available to an API key limited to some projects.
list_technical_geo_reports
ChatGPTList technical GEO reports for a project and report type, newest first. agent_readiness identifies the AI/Agent Readiness report. Results include report id, status, batch id, target, score when available, and timestamps.
list_webhook_subscriptions
ChatGPTList active webhook subscriptions for the account, optionally filtered by project. disabled is true when the API key or OAuth connection that created a subscription was revoked: it receives no more events, and creating it again (same project, event and URL) replaces it with a new subscription and secret. Available on Scale and above plans.
reject_suggested_prompts
ChatGPTReject suggested prompts: mark up to 100 pending suggestions of the Suggested prompts queue as rejected, so they leave the pending list. Suggestions that are no longer pending stay as they are. Tracks and deletes nothing.
remove_prompt_tags
ChatGPTRemove prompt tags: detach tags (collections) from existing prompts in bulk. Accepts up to 500 prompt_ids and 50 tags per request. This removes only prompt-tag links and never deletes tags or prompts. The operation is idempotent and reports missing links as skipped.
remove_team_member
ChatGPTRemove a member from the account team: their sessions and API keys stop working at once and the account is deleted shortly after. Account owner or co-owner only; a co-owner cannot remove the owner, another co-owner or themselves. Only members who joined can be removed; a pending invitation answers not found. Requires a writable credential.
revert_intelligence_task_content
ChatGPTRevert the content of a GEO Writer (formerly Content Intelligence) task: discard every manual edit and restore the AI version snapshotted on the first edit. Manual edits are lost. The in-app chat requests confirmation before execution. The operation fails when the task has no manual edits. On a product_listing task, description_html comes back with only p, ul, ol, li, strong, em, h3 and br, with no attributes.
revert_technical_geo_report_content
ChatGPTRevert the content of a technical GEO report: discard every manual edit of an llms_txt report and restore the generated llms.txt and llms-full.txt files kept on the first edit. Manual edits are lost. The in-app chat requests confirmation before execution. The operation fails when the report has no manual edits.
revoke_team_invitation
ChatGPTRevoke a pending team invitation: its link stops working at once. Account owner or co-owner only (a co-owner cannot revoke an invitation that makes someone a co-owner). Only pending invitations can be revoked; a member who already joined answers not found. Requires a writable credential.
run_geo_audit
ChatGPTRun a GEO audit now. Returns the new run with status queued; it finishes as completed, failed or unreachable. Limited to 6 manual runs per audit per hour and 200 per account per day; scheduled runs do not count.
send_custom_report
ChatGPTSend a custom report to its recipients by email now, like the Send now button on the report page. The report must be published and have recipients, and each report can be sent once every 10 minutes. The PDF is rendered and mailed in the background. Requires the Scale plan or above. The in-app chat requests confirmation before execution.
send_feedback
ChatGPTSend a bug report, feature request, or general feedback about LLM Pulse to the product team. The message, user email, plan, and optional project or tool context are stored by LLM Pulse and sent to its product team. This is a one-way feedback channel.
start_project_draft
ChatGPTStart the step-by-step project wizard, which proposes AI suggestions before anything is created (a one-call project creation needs no draft). Returns a draft_id plus AI suggestions for the URL, including name, description, industry, and aliases. A new URL can take up to two minutes; suggest=false skips AI suggestions. Drafts expire after 24 hours and cannot be listed, so later steps require the returned draft_id.
update_annotation
ChatGPTUpdate the title, description, date, color, or category of a user-created timeline annotation. Non-admin users can update only their own annotations; admins can update any user-created annotation. System annotations are read-only. Available on every plan.
update_collection
ChatGPTUpdate a collection (tag): rename it or change its description. Tags and collections are the same object. This action does not change prompt membership.
update_competitor
ChatGPTUpdate a competitor: brand_name, website domain or host, matching_names, chart color, and citation URL matching. matching_names replaces the whole list. Website and citation matching share a seven-day change cooldown. Changes to names, website, or citation matching rerun historical matching in the background and temporarily set processing=true.
update_geo_audit_issue
ChatGPTUpdate a GEO audit issue: accepted true keeps it visible but out of the open count (it counts again when its evidence changes); false makes it count as open again.
update_intelligence_task_content
ChatGPTUpdate the content of a GEO Writer (formerly Content Intelligence) task: edit existing text blocks of a completed task without regenerating it. edits is an object of dotted result_data paths to replacement text, such as "title", "introduction", "sections.0.content", or "key_takeaways.2". Only existing text values are editable; new keys, sections, list items, numbers, labels, and priority fields are rejected. Unchanged values are ignored. The first edit snapshots the original AI version for later restoration. With result_version (the result_version of the task as last read), an edit composed before a regeneration is refused instead of overwriting the new output. On a product_listing task, description_html keeps only p, ul, ol, li, strong, em, h3 and br, with no attributes: other markup is stripped, not refused.
update_owned_media_profiles
ChatGPTUpdate the owned-media profiles a project claims: set or clear the main YouTube channel, App Store and Google Play apps, Instagram, Facebook, TikTok and LinkedIn profile URLs, the extra profiles per platform (at most 10 each), and the subreddits and Reddit usernames the brand owns. Only the fields sent change; an empty string or null clears a URL, and every list REPLACES the stored one ([] clears it). URLs are normalized and validated like Project Settings, and a new profile is scraped in the background for its name and avatar. Citations of every claimed profile count as yours in the Owned Media and YouTube reports. Changing the YouTube channel also needs the YouTube Intelligence create permission for team members. Available on Growth and above plans.
update_project
ChatGPTUpdate a project name or profile: name, brand_name, description, industry, business_model, business_model_other, target_audience, primary_products, brand_voice, goals, matching_names, and additional_owned_domains. matching_names and additional_owned_domains replace the whole list. Changing matching_names reruns historical mention and citation matching and can change past metrics; changing additional_owned_domains (account owner only) reprocesses the past answers that cite an added or removed domain; brand_name affects future runs only; name is a label. Website URL, locale, app-store profiles, and social profiles are not editable here.
update_project_draft
ChatGPTUpdate a project draft: submit one step (details, prompts, competitors, owned_media) of the step-by-step project wizard. Strict forward gating: a step is only accepted when every previous step is complete; completed steps can be resubmitted. Returns the updated draft plus AI suggestions for the next step (suggest=false to skip). Per-step required fields beyond draft_id+step: details requires name (industry optional but validated); prompts requires a non-empty prompts array of strings within your plan slots; competitors requires an array of {domain, brand_name?, matching_names?} with valid domains within plan limits; owned_media accepts its documented keys.
update_prompt_categorization
ChatGPTUpdate a prompt categorization by hand: its search intent (prompt_type) and/or brand focus (brand_kind), like editing its badges on the prompt page. The edit is marked as manual, so automatic categorization no longer changes it (the prompt page can revert it). The in-app chat requests confirmation before execution.
update_recommendation_item
ChatGPTUpdate a recommendation item status: mark it completed, archive it, or move it back to active, like the complete, archive and restore buttons on the Recommendations page. Returns the updated item with its evidence references. The in-app chat requests confirmation before execution.
update_technical_geo_report_content
ChatGPTUpdate the content of a technical GEO report: replace the llms.txt and llms-full.txt files of a completed llms_txt report without regenerating it. edits maps llms_txt and/or llms_full_txt to the full replacement text; a file sent unchanged is ignored. content_version must equal result_data.content_version of the report as last read, otherwise the edit is rejected as stale. The first edit keeps the generated files for later restoration. Only llms_txt reports have editable content.