API Changelog
Every change to the REST API and MCP tools, newest first.
-
2026-09
Machine-readable codes on MCP tool errors. A failing
tools/callkeepsisError: true, and its text now carriescodenext toerrorwhenever the state has a REST counterpart, with the same value the REST endpoint returns:ERR_PROJECT_NOT_FOUND,ERR_INVALID_PARAM,ERR_INVALID_RANGE, the three Search Console codes (ERR_SEARCH_CONSOLE_NOT_CONNECTED,ERR_SEARCH_CONSOLE_ACCESS_REVOKED,ERR_SEARCH_CONSOLE_UPSTREAM) andERR_AI_TRAFFIC_NOT_CONNECTED/ERR_AGENT_TRAFFIC_NOT_CONNECTED. Theerrortext is unchanged. -
2026-09
Webhook for manual GEO Writer edits (v1.43.0). A new event type,
intelligence_task.updated, fires when the text of a completed task is edited by hand or reverted to the AI version. Both GEO Writer event payloads now carrymanually_edited_at, which isnullon a task nobody has edited and on a task that was just reverted. Subscribe to it withPOST /webhookslike any other event, andGET /webhooks/sample/intelligence_task.updatedreturns example payloads. The Zapier, Make and n8n connectors expose it as a new trigger. -
2026-09
Edit GEO Writer output after generation (v1.42.0).
PATCH /intelligence_tasks/:idedits the text of a completed task in place: send aneditsobject whose keys are dotted paths intoresult_data(for examplesections.0.contentortitle) and whose values are the replacement text. Only string fields that already exist can change; a path that does not resolve, a blanktitleor a value over 20,000 characters returnsERR_INVALID_PARAM. The first edit keeps a copy of the generated output, andPOST /intelligence_tasks/:id/revertrestores it. Task payloads gainmanually_edited_at(list and detail) andedited_by_user_id(detail), and the update response addschanged_paths. Two MCP tools mirror the endpoints:update_intelligence_task_contentandrevert_intelligence_task_content. Both writes need a key with write scope and, for team members, edit permission on GEO Writer. -
2026-09
Citing-domain mention share prompt filters (v1.42.0).
GET /citation_intelligence/mentions_by_domainand theget_mentions_by_citing_domainMCP tool now acceptbrand_kind(brand,brand_other, ornon_brand) and apply it to the project-scoped response universe together with model, country, language and collection filters. Omitting it preserves the previous all-brand-kinds behavior. The REST endpoint rejects invalid values withERR_INVALID_PARAM; the MCP tool returns a validation error. -
2026-09
Two Search Console corrections (v1.41.0). An unknown
dimensionnow returnsERR_INVALID_PARAMinstead of being silently dropped, andpageandquerybreakdown values keep the casing Google returns rather than being lowercased, because a page URL is case sensitive. -
2026-09
Search Console endpoints now speak the full Google query vocabulary (v1.41.0). The four
/search_console/*endpoints and their MCP tools take three new parameters from the Search Analytics query Google exposes:search_type(web,image,video,news,discover,googleNews),filters(an array of{dimension, operator, expression}objects combined with AND, two of the six operators being RE2 regex) anddata_state(finalby default, orallto include the most recent still incomplete days).GET /search_console/summarynow breaks down bypage,queryandsearchAppearanceas well ascountryanddevice, capped bylimit(default and maximum 1000). Date windows widen from 400 to 487 days, the 16 month retention Google applies. -
2026-09
Date windows and aggregation corrections (v1.40.0). A date-only
to(for exampleto=2026-09-01) now covers that whole day. It previously resolved to midnight, so the final day was excluded and every window was one day short. Clients that already send a full timestamp are unaffected. Weekly and monthly buckets onGET /reports/ai_model_insights/*now divide the bucket total instead of averaging the daily percentages, so a busy day no longer counts the same as a quiet one. Position averages weight each row by how many positions it holds rather than treating every row alike. Rows removed from a project no longer count towards mentions, citations, sources or sentiments on any read endpoint. -
2026-09
Currency on shopping rows.
GET /dimensions/shoppingwithview=merchantsnow returns acurrencyfield naming the moneymin_price,max_priceandavg_priceare expressed in. Providers price each market in its own currency and send no currency field of their own, so a merchant selling in more than one now reports the currency most of its prices use instead of averaging across them, and a range never mixes two kinds of money. It isnullwhen no price carried a currency we could resolve. Onview=products,currencynow names the moneymax_priceis expressed in, and a newcurrency_countfield says how many currencies that product was priced in: above 1 means the row reports its highest-priced listing andmin_pricemay be another currency.totals.avg_priceis now computed inside one currency instead of averaging across them, andtotals.avg_price_currencynames it. No new endpoints or error codes. -
2026-09
Clearer error details and a stricter answers model filter (v1.38.0). Errors with details under
error.meta.messagenow include those details inerror.messagetoo.error.metais unchanged. Errors without details still use default message tokens, such asmissing_authorization. Branch onerror.code, never on the message text.GET /answersnow rejects amodelvalue the account does not track with422 ERR_INVALID_PARAMinstead of ignoring the filter. TheERR_LIMIT_REACHEDandERR_QUOTA_EXCEEDEDdescriptions now list every cap each one covers. -
2026-09
Revoked keys and write-scope responses (v1.37.1). A revoked API key now answers
403 ERR_REVOKED_API_KEY, as documented, instead of401 ERR_INVALID_API_KEY. A team member's key is refused the same way while the account owner is blocked or pending deletion.POST /intelligence_tasks,PATCH /project_drafts/:idandPOST /project_drafts/:id/finalizenow document the403 ERR_INSUFFICIENT_SCOPEresponse a read-only key receives, matching the other write operations. -
2026-09
Search Console error codes and live-read contract (v1.37.0). When live reads are enabled, the four
/search_console/*endpoints returnERR_SEARCH_CONSOLE_ACCESS_REVOKED(403) for revoked Google access; reconnect the property in Preferences > Project Settings > Data Connections. They returnERR_SEARCH_CONSOLE_UPSTREAM(503) when Google Search Console is unavailable or over quota; wait for the number of seconds inRetry-Afterbefore retrying. MCP tools report these conditions as tool errors. TheX-Search-Console-Backendresponse header identifiesstoredorlivereads. Stored reads use synced data without contacting Google. For queries and pages,totalcounts distinct keys available for the range: keys from synced daily rows for stored reads, or up to 25,000 rows from one Google request for live reads. Live responses includetruncated: truewhen that limit is reached. Sorting and pagination apply to the available set. -
2026-09
Per-competitor citation URL matching (v1.36.0).
POST /competitorsandPATCH /competitors/:idnow accept the optionalcitation_match_modefield withdomain,hostorpath_prefix.citation_match_pathis required when usingpath_prefix.PATCH /competitors/:idcan also changedomain, which stores the website domain or exact host used by the rule. Competitor read payloads return the rule fields. Changing the website or either rule setting reclassifies historical citations in the background, so historical metrics and source attribution follow the new setup. -
2026-08 (late)
Public API reference split into one page per resource.
https://llmpulse.ai/api-docsnow covers getting started (keys, first call, account usage) and links to a page per resource:/api-docs/projects,/api-docs/metrics,/api-docs/prompts,/api-docs/webhooks,/api-docs/core-concepts(shared filters, output formats, error codes),/api-docs/integrations(snippets, Postman, MCP),/api-docs/oauthand the rest, each reachable from every other page. Old deep links such as/api-docs#webhooksare forwarded to the page that now holds the section.llms.txtlists the documentation URL for each resource group alongside its endpoints. Signed-in Scale+ users still get the complete reference on one page, with the live playground, in the app under API Keys. No endpoint, parameter, payload or error code changed. -
2026-08 (late)
Project profile enums refreshed (v1.35.0).
business_modelnow describes one thing, how a brand sells, instead of mixing channel with sector. The accepted keys areB2B_SAAS,B2C_SUBSCRIPTION,ECOMMERCE,RETAIL,MARKETPLACE,LEAD_GENERATION,SERVICES,ENTERPRISE_SOFTWARE,MEDIA_ADVERTISING,EDUCATION_TRAINING,NONPROFIT_PUBLICandOTHER. Retired keys (B2B_CLOUD_SERVICES,B2C_SMART_HOME,B2C_STREAMING,B2C_GAMING) are mapped forward to their closest current value onPOST /projectsandPATCH /projects/:idrather than rejected, so existing integrations keep working; genuinely unknown keys still returnERR_INVALID_PARAM.industrynow accepts 34 keys instead of 19, adding sectors that previously had to settle forOTHER. Stored values were migrated, so a project created before this change reports its new key when you read it back. The free-text companionbusiness_model_otheris now part of the API: send it alongsidebusiness_model: OTHERonPOST /projectsorPATCH /projects/:id(and thecreate_project/update_projectMCP tools) and it comes back in the project payload. Against any other key it returnsERR_INVALID_PARAM, and it is cleared automatically when the business model moves away fromOTHER. -
2026-08 (late)
Multi-value analytics filters (v1.34.0).
collection_id,country_code,language_codeandprompt_typenow accept one value or a comma-separated list on metrics, dimensions, answers, citation intelligence and AI Model Insights endpoints that already support those filters.GET /sentimentsalso accepts severalanalysisvalues. Values inside one filter are combined with OR, while different filters are combined with AND. Single-value requests continue to work unchanged, and matching MCP tools use the same contract. -
2026-08 (late)
Technical GEO report retrieval (v1.33.0).
GET /technical_geo_reportslists reports byproject_idandreport_type, whileGET /technical_geo_reports/:idreturns the current status and fullresult_datawhen completed. New MCP toolslist_technical_geo_reportsandget_technical_geo_reportprovide the same access, andcreate_technical_geo_reportnow returns report ids and tells clients to poll them. Claude and other MCP clients can now run, wait for and read Technical GEO reports in the same chat, with no copy and paste step. -
2026-08 (late)
Sentinel non-answers exposed as
no_result. When a provider returns nothing for a prompt after all retries, the stored text is a placeholder rather than a real AI response; those rows were already excluded from every platform metric but were indistinguishable via the API.GET /answersitems andGET /answers/:idnow carry ano_resultboolean, andGET /answers(plus the MCPlist_answerstool) accepts an optionalno_resultfilter:false= only real answers (recommended when computing your own metrics),true= only sentinels, omitted = both (unchanged legacy shape). -
2026-08 (mid)
Project profile updates and Brand Book on create (v1.31.0). New endpoint
PATCH /api/v1/projects/:idupdates a project's profile after creation, the same fields as Project Settings:brand_name,description,industry,business_model,target_audience,brand_voice,goals,primary_productsandmatching_names. The Brand Book fields (description,industry,brand_voice,target_audience) feed GEO Writer, prompt suggestions and Recommendations, so external systems can keep brand context in sync programmatically. Send only the fields to change; unknown fields returnERR_INVALID_PARAM. Changingmatching_names(a full replacement list) re-runs mention/citation matching over the project history in the background (rematching: true; further edits are rejected while it runs), and abrand_namechange applies to future runs only.POST /api/v1/projects(and thecreate_projectMCP tool) now acceptbusiness_model,target_audience,brand_voice,goalsandprimary_productsat creation time. The existing MCP toolupdate_projectand the new REST endpoint now share the exact same service. Requires aread_writekey; team members need the Projects update permission. -
2026-08 (mid)
Filter corrections on the new listings (v1.30.0). Filters that were documented but silently ignored now work.
store(owned media) andstatus(Reddit threads) reach the query instead of being dropped, sostore=app_storeandstatus=archivedstop returning unfiltered rows.owned=trueapplies toGET /dimensions/shopping?view=merchants, which previously returned every merchant including competitors, and toGET /dimensions/owned_media?provider=mobile_apps, whose rows now carry theyoursflag every other provider already returned. On that same provider,totalis now the full ranking count (capped at 500) rather than the size of the page, which had told paginating clients there was nothing after page 1.direction=descnow applies to the text sorts ofGET /dimensions/query_fan_outs(order=query_text,order=prompt_text), which always answered ascending; both now default to descending like every other sort. An endpoint's ownviewparameter can finally be combined withoutput=flatoroutput=csv(for example?view=merchants&output=csv), which returnedERR_INVALID_PARAM, and flat responses echoview,providerandstoreback.GET /accountnow reports the rate limit of the key you called with instead of the default, and itssubscriptionblock is limited to callers who can access Billing and Plans. Studies are scoped to the projects the caller can reach. -
2026-08 (mid)
Six new product surfaces (v1.29.0). Shopping and paid placements inside AI answers:
GET /api/v1/dimensions/shoppingandGET /api/v1/dimensions/ads(Scale+). Owned media and communities:GET /api/v1/dimensions/owned_media(YouTube, Instagram, Facebook, TikTok, LinkedIn, app stores) andGET /api/v1/dimensions/reddit(Growth+). Multi-model analyst reports:GET /api/v1/reputation/reports,GET /api/v1/reputation/reports/:id,GET /api/v1/studies,GET /api/v1/studies/:idandGET /api/v1/studies/:id/reports/:report_id(requires reputation monitoring). The shopping and ads paths are deliberately model-agnostic rather than named after one assistant, since the underlying data has always carried the standard model enum. Nine matching MCP tools:list_shopping_products,list_ads,list_reddit_citations,list_owned_media,list_reputation_reports,get_reputation_report,list_studies,get_study,get_study_report. All nine endpoints supportoutput=flatandoutput=csv. -
2026-08
Query fan-out in the API and MCP (v1.28.0). New endpoint
GET /api/v1/dimensions/query_fan_outsexposes the sub-queries a model actually issued when answering your tracked prompts, which is often not the phrasing you wrote.view=query(the default) returns one row per distinct sub-query with its occurrence count and share;view=promptreturns one row per prompt with how many distinct sub-queries it produced. It accepts the standard prompt filters plusquery(substring search),order,directionandoutputfor flat/CSV, and an order that does not belong to the chosen view returnsERR_INVALID_PARAM. The matching MCP tool islist_query_fan_outs. Fan-out is reported mainly by ChatGPT, so an empty result usually means the models in scope do not expose it rather than that nothing was searched. The endpoint returns the aggregation only: for a period-over-period delta, call it twice with explicitfrom/to. Both surfaces are gated by the same Query Fan-Out team-member permission as the in-app page. -
2026-08
Account usage, rate-limit headers and an MCP glossary (v1.27.0). New endpoint
GET /api/v1/accountreturns the plan, tracking cadence, subscription window, quota consumption (prompts, projects, competitors per project, monthly GEO Writer tasks, team members) and the rate limits that apply to your key, so an integration can see its remaining budget instead of discovering the ceiling by hitting it. An unlimited quota returnslimitandremainingasnullwithunlimited: true. Limits resolve through the account owner, so a team member sees the capacity that applies to them. The matching MCP tool isget_account_usage, available on every plan. Every/api/v1response now carriesX-RateLimit-Limit,X-RateLimit-RemainingandX-RateLimit-Reset(the429 ERR_RATE_LIMITEDresponse carries them alongsideRetry-After), and the two budgets, 300 requests/minute globally and 60/minute for writes, are now documented rather than implicit. The MCP server also exposes a new resourcellmpulse://glossarydefining every metric, unit, dimension and reading caveat (visibility vs AI Visibility Score, share of voice denominators, brand focus, partial periods, small samples), so an assistant can read the definitions instead of inferring them. No existing endpoint, parameter, payload or error code changed. -
2026-08
Agent Readiness joins the technical GEO bundle (v1.26.0).
POST /technical_geo_reportsnow also creates anagent_readinessreport scoring how ready the domain is for AI agents, socreated_reportsandreport_idsinclude the newagent_readinesskey (9 reports per run instead of 8). The MCP toolcreate_technical_geo_reportcreates the same bundle. Existing keys and response shapes are unchanged. -
2026-08
Grok and DeepSeek weekly tracking. The
modelfilter valuesgrokanddeepseeknow return real weekly visibility data on accounts with those add-ons enabled, across every metrics, dimensions, answers, sentiments and citations endpoint (they were previously accepted as filter values but never matched any executions). Grok answers come from its native web search, so they carry sources and citations like every other model. DeepSeek answers carry no sources or citations: DeepSeek offers no web search, so its answers reflect the model's own knowledge. DeepSeek rows returncitations: 0and an empty source list by design;visibility,mention_rate, share of voice and sentiment behave normally. Response shapes are unchanged, and models an API key's user has not enabled are still silently dropped. -
2026-08
Public MCP server card. New endpoint
GET /api/v1/mcp/server-cardreturns a Model Context Protocol Server Card describing the endpoint, its streamable HTTP transport, the protocol versions it accepts and the Authorization header a client must send. It needs no authentication, because it is the document a client reads before it holds a credential, and it contains no credential itself. The card is advertised in the Agentic Resource Discovery catalog at/.well-known/ai-catalog.json, whose MCP entry now uses the correctapplication/mcp-server-card+jsonmedia type and points at the card rather than at the transport endpoint. The card is deliberately NOT served at/.well-known/mcp/server-card.json: the MCP specification rules out that location. LLM Pulse also now publishes an API catalog at/.well-known/api-catalog(RFC 9727) and an agent skills index at/.well-known/agent-skills/index.json. -
2026-08
API reference reorganized by resource. The docs at
/api-docs, the OpenAPI and Swagger specs, the machine-readablellms.txtindex and the Postman collection now group every endpoint under the resource it belongs to (Projects, Metrics, Competitors, Prompts, Collections & Tags, Answers, Mentions & Citations, Sentiments, Sources & Citation Intelligence, AI Model Insights, AI & Agent Traffic, Search Console, Recommendations, GEO Writer, Technical GEO Reports, Annotations, Webhooks, MCP), each showing its reads and writes together and in the same order on every surface. The OpenAPI tag list now declares every tag in use: Projects, Competitors, Collections, Annotations, Reports and OAuth were missing, so Swagger UI and Redoc listed those endpoints last with no description.POST /projectsand the/project_draftswizard, previously absent fromllms.txt, are now listed, and the Postman collection covers every endpoint instead of the original two folders. No endpoint, parameter, payload or error code changed. -
2026-08
Amazon Rufus is now Alexa for Shopping. Amazon renamed its shopping assistant, so the model is labelled Alexa for Shopping across the app, the website and the docs. Nothing changes for integrations: the API value stays
amazon_rufuson themodelfilter and in every response, and historical data is untouched. No action required. -
2026-08
Native Rust CLI and official SDKs. CLI v2 replaces the JavaScript implementation with native binaries for macOS, Linux and Windows while preserving the existing configuration and profile format. Typed commands cover all 71 REST operations, with JSON, table and CSV output plus a direct REST command. Official generated clients are now maintained for TypeScript, Python, Go, Java, Kotlin, C#, PHP, Ruby, Rust, Swift, Dart and R. The OpenAPI document uses OpenAPI 3.0-compatible nullable fields so every client can be generated with the same pinned toolchain.
-
2026-08
Automatic annotations and all-plan access (v1.23.0). Annotations are now available on every plan, including Starter and trial accounts. Rows returned by
GET /annotationsand the MCPlist_annotationstool includeorigin:manual,automation,geo_test, orplatform. Automatic project annotations record daily prompt-set changes, enabled AI model changes, and tracking frequency changes. Existing fields and write behavior are unchanged. -
2026-08
Share of Voice sample sizes and per-model grouping (v1.22.0).
GET /metrics/sovnow returns aperiodsarray with, per bucket, the totalmentionsthe shares were computed on (the sample size: a bucket with 1-3 mentions reads as 100/50/33.33 and should be treated as low-sample) and apartialflag marking buckets still collecting data or clipped by the requested window. Eachcurrentrow also carries precomputed deltas:previous_share(last complete bucket) andavg_share(mean over complete buckets with data; partial buckets excluded). Existing fields are unchanged. The MCPget_sovtool gainsgroup_by=modelreturning one compact per-model share comparison per call (addinclude_series=truefor per-model trend series), every project-scoped MCP tool now accepts the project domain or exact name/brand name inproject_idbesides the numeric id, MCP metric responses include anapp_urlsource link, and MCP metric tools render interactive widgets in hosts that support them: share-of-voice donut, visibility summary card, metric-over-time line chart (get_timeseries) and top cited domains (get_top_sources). -
2026-07 (late)
Project creation response correction (v1.21.1).
POST /projectsandPOST /project_drafts/:id/finalizenow returncompetitors.processing: falsebecause competitor setup finishes inside the project transaction. Earlier responses incorrectly reportedtrue. Project website URLs now returnERR_INVALID_PARAMfor credentials, private or special IP addresses, localhost and internal hostnames. Public DNS hostnames, internationalized domain names and public IP literals remain supported. A malformed JSON body sent to a write endpoint now returns the JSON parse error (theERR_INVALID_PARAMfamily) instead ofERR_PROJECT_NOT_FOUND. -
2026-07 (late)
Mention and citation filters (v1.21.0).
GET /answers,GET /dimensions/prompt_executionsandGET /dimensions/sourcesacceptmention_filterand (on the first two)citation_filter, the same two-axis matrix the Responses and Citations pages expose: your brand crossed with competitors, each axis present, absent or any. Presets arementions_you,not_mentions_you,mentions_competitor,not_mentions_competitor,you_and_competitor,competitor_not_you,you_not_competitorandno_brands(no tracked brand appears at all), with the citation variantscites_you,not_cites_you,cites_competitor,not_cites_competitorandcites_no_brands. Pair either withcompetitorsto narrow the competitor side to specific rivals; on a negative preset that reads "none of these". On/dimensions/sourcesthe filter applies to the crawled content of each cited page. Unknown presets returnERR_INVALID_PARAM. The same arguments are available on the MCP toolslist_answers,list_prompt_executionsandlist_sources. -
2026-07 (late)
Flat and CSV output for BI tools (v1.20.0). Read endpoints now accept an optional
outputparameter:output=flatreturns the same metadata plus rectangularcolumnsandrows, andoutput=csvreturns those rows astext/csv. This lets Tableau (through its REST API Connector), Excel, Google Sheets and warehouse loaders read the API without code that walks the nested JSON./metrics/sovalso acceptsview=over_time|current|breakdown. Omittingoutputreturns the exact response existing integrations already receive. Errors are always JSON, percentages stay on the 0-100 scale, paginated endpoints exposeX-Total-Count,X-PageandX-Per-Pageheaders, and flat output is capped at 200,000 rows. -
2026-07 (late)
Longer metric history windows. The maximum date window on the metrics endpoints (
/metrics/*), the/dimensions/*listings, citation intelligence and AI model insights (REST and their MCP tool twins) is raised from 400 to 1500 days, enabling all-time queries. Search Console endpoints keep their 400-day window, which matches the GSC data retention we store. The Looker Studio connector gains "Last 365 days", "All time" and "Follow report date range" options plus three new report types (Prompt performance, Share of Voice, Top Sources) built on these endpoints. -
2026-07 (late)
Write API expansion: launch, update, delete (v1.19.0). Recommendations can now be launched via the API:
POST /recommendations(MCPlaunch_recommendations) starts an async generation and returns the run to poll; the MCP tool no longer requires the in-app chat confirmation card (external clients launch directly, the in-app chat agent still asks for confirmation). New management endpoints, each with an MCP twin:DELETE /prompts/:id,PATCH/DELETE /competitors/:id,PATCH/DELETE /collections/:id, and a full annotations set (GET /annotations,PATCH/DELETE /annotations/:id, Growth+). Deletes are irreversible: rows disappear immediately and historical data is purged in the background. All write endpoints require aread_writeAPI key and respect the team-member permission matrix. -
2026-07
MCP quality pass (from an external agent audit). Unknown
modelvalues and reversedfrom/towindows now returnERR_INVALID_PARAMinstead of being silently ignored.GET /metrics/agent_trafficreturns the newERR_AGENT_TRAFFIC_NOT_CONNECTEDwhen no agent-traffic source is connected.GET /metrics/top_sourcesavg_visibilityis now the percentage of responses citing the domain (bounded 0-100).duration_msfields are now real milliseconds. Additive fields:url_sha256+created_aton source rows,matching_nameson competitor list rows,scoreon sentiment categories,created_aton created annotations,data_throughon Search Console responses (GSC publishes with a 2-3 day lag). MCP tools: list tools acceptrange,list_answerstruncates responses to 1,500 chars by default (full_text=truefor more),list_citation_groupsurl view is compact unlessinclude_page_details=true, cited-URL tools accept a rawurlalternative tourl_sha256,get_sovdefaults to all configured competitors,list_promptsgains aquerysearch param, and not-found errors echo the requested id. -
2026-07 (late)
Lapsed subscriptions lose API access. When a self-serve subscription (Starter, Growth or Scale) is cancelled and its paid-through date has passed (after a short grace period), that account's API keys return
403 ERR_ACCOUNT_INACTIVE. Active subscriptions are unaffected, and so are invoice-paid and negotiated plans (Scale+ custom, Partner, Enterprise), which keep working while their billing is handled manually. Re-subscribe from the billing page to restore access. New error code:ERR_ACCOUNT_INACTIVE(403). -
2026-07 (late)
Top Sources visibility corrected.
avg_visibility(and itsavg_mention_ratealias) inGET /metrics/top_sourcesis now the share of valid responses that cite the domain: distinct citing responses divided by every valid response in the period. It previously counted source rows, so a response citing a domain three times counted three times, and divided only by the responses that had any source, which could report values above 100%. Expect lower, correct percentages.total_responsesis unchanged. -
2026-07 (late)
Amazon Rufus model (v1.18.0). New AI model
amazon_rufus(Amazon's shopping AI assistant, at the time called Amazon Rufus and since renamed Alexa for Shopping) launched as an Enterprise add-on and is now a paid add-on on every plan. Themodelfilter on metrics, dimensions, answers and sentiments endpoints acceptsamazon_rufus. As with other add-on models, data only appears for accounts where the model is enabled. -
2026-07 (late)
Project draft wizard API (v1.17.0). Multi-step project creation with AI suggestions:
POST /project_draftsstarts a draft and suggests name/description/industry for the URL,PATCH /project_drafts/:idsubmits each step (details, prompts, competitors, owned media) under strict forward gating and returns suggestions for the next step,GETreads state (cache-only suggestions for safe polling), andPOST .../finalizecreates the project with the exact fast-mode effects, idempotently. New error codesERR_DRAFT_NOT_FOUNDandERR_DRAFT_STATE. Drafts expire after 24 hours. Five MCP tool twins ship alongside:create_project,start_project_draft,get_project_draft,update_project_draftandfinalize_project_draft, sharing the exact REST services. -
2026-07 (late)
Project creation API (v1.16.0). New
POST /projectscreates a complete project in one call (fast mode): project fields, prompts (queued for immediate execution and categorization), competitors, weekly email subscription. Idempotent replays viaexternal_identifier(embed-enabled accounts) return the existing project withidempotent: true. Optionalexecute_prompts_immediately: falsedefers the first run to the next scheduled tracking window. Plan gates and quotas are enforced exactly like the in-app wizard (ERR_LIMIT_REACHED,ERR_QUOTA_EXCEEDED,ERR_PLAN_REQUIRED). -
2026-07 (late)
MCP usage guidance + richer project details (v1.15.6). The MCP server now returns usage instructions to connected AI clients on initialize: the recommended workflow, metric naming, efficiency tips, and the
brand_kind=non_brandrule for fair brand-vs-competitor comparisons (matching the in-app Overview default).brand_kindandprompt_typefilters added to all threeGET /reports/ai_model_insights/*endpoints and their MCP tools (get_ai_model_summary,get_ai_model_position_distribution,get_ai_overview_results); invalid values returnERR_INVALID_PARAM.GET /dimensions/projects/:id(and theget_project_detailsMCP tool) now includestats.prompts_by_brand_kindplus adata_coverageblock listing the models, countries and languages that actually have data, so one call replaces separate models/locales lookups. -
2026-07 (mid)
Citation metric consistency (v1.15.4). Citations and Citation Rate now include visible citations and background source references across Overview, AI Model Insights, REST and MCP. Background citations have no visible rank and remain excluded from
avg_positionand position distributions. Source ownership now honors exact-subdomain matching consistently. By Domain remains a registrable-domain rollup. Response shapes are unchanged. -
2026-07 (mid)
MCP Streamable HTTP notifications now return an empty 202 response. Strict clients such as Claude and Codex can complete initialization instead of failing when they parse a JSON
nullresponse. -
2026-07 (mid)
MCP OAuth connections now expire after one year. Access and refresh credentials share one fixed authorization deadline. Refresh responses return the same reusable refresh token to avoid credential loss and concurrency failures in MCP clients.
-
2026-07 (mid)
REST and MCP unified on one shared query layer. The metrics endpoints (
/metrics/timeseries,summary,sov,prompt_summary,top_sources,agent_traffic,ai_traffic) and every/dimensions/*listing now execute the same query code as their MCP tool twins, so both surfaces always return identical data. MCP tools gained the filters they were missing:prompt_type/brand_kindonget_prompt_summary,get_top_sourcesand the listing tools, plussource_typeonlist_sources(whose rows now includesource_typeand app-store link flags like REST). MCP input validation now matches REST: unknowncollection_id/promptids, malformed dates and date windows above 400 days return errors instead of being silently ignored.list_promptsrows now includecollection_ids, and REST summary rows now include themetricfield MCP already returned. One intentional difference remains: in week/month granularity, MCP leaves periods before the first data point null for rate and position metrics so averages are not dragged down, while REST keeps backfilling0.0. -
2026-07
Local businesses in answer details.
GET /answers/:id(and the MCP toolget_answer) now include alocal_businessesarray: the businesses ChatGPT displays in its local results widget for local-intent prompts, with title, address, phone, review counts, rating, website domain and ranking position, each matched to your brand or a tracked competitor viais_owned/competitor_id. -
2026-07
Bug fixes. MCP
get_timeseriesandget_summarynow return real values fornet_sentiment, the fivesentiment_*breakdowns andavg_mention_position(previously every data point was null via MCP; REST was unaffected), matching the REST metrics semantics.GET /dimensions/all_mentionsandGET /dimensions/all_citationsnow paginate in the database with deterministic ordering oncreated_atties, so deep pages are fast and stable on large projects; the response shape is unchanged. Custom per-key rate limits are now honored on the global API throttle (the default remains 300 requests/minute; contact us for higher quotas). -
2026-06 (late)
AI Traffic API (Scale+). New endpoint
GET /metrics/ai_trafficexposes the AI-referred traffic we measure from a project's connected web analytics provider (Google Analytics 4, Adobe Analytics, PostHog, Plausible or Piano): per-day users, sessions and conversions grouped by AI source (ChatGPT, Perplexity, Gemini, Claude and others), with totals and a conversion rate. New MCP tool:get_ai_traffic. Requires the Scale plan or above and a connected provider; projects without one return the newERR_AI_TRAFFIC_NOT_CONNECTED(404) code. -
2026-06 (late)
Search Console API (Growth+). New endpoints expose the Google Search Console performance data we already sync for projects with a connected GSC property:
GET /search_console/summary(headline impressions, clicks, CTR, average position, with optionalcountry/devicebreakdown),GET /search_console/timeseries(day/week/month series),GET /search_console/queriesandGET /search_console/pages(top queries/pages ranked by impressions, clicks, CTR or position, paginated).ctris a 0..1 fraction andpositionis the impression-weighted average, matching the Search Console API. New MCP tools:get_search_console_summary,get_search_console_timeseries,get_search_console_queries,get_search_console_pages. Projects without a connected property return the newERR_SEARCH_CONSOLE_NOT_CONNECTED(404) code. -
2026-06 (late)
Mention share by citing domain + batch source filters. New endpoint
GET /citation_intelligence/mentions_by_domain(and MCP toolget_mentions_by_citing_domain): for the responses where each given source domain is cited, returns the brand-vs-competitor mention share, normalized so each domain's actors sum to 100%.GET /metrics/top_sourcesandGET /citation_intelligence/groups(and their MCP tools) gain adomainsarray (exact domain whitelist) and acollection_idsarray (filter by several tags at once), so a wide domain x tag matrix is one call instead of one call per cell. -
2026-06 (late)
Team-member permission matrix now enforced on the API and MCP. An API key (or MCP/chat-agent session) owned by a restricted team member is gated by the same feature matrix as the web app: endpoints and tools outside the member's granted features return
403 ERR_INSUFFICIENT_PERMISSION(new error code). Account-owner and admin keys are unaffected, so existing integrations keep working unchanged. Outbound webhooks are now their own grantable permission feature (still Scale+). -
2026-06 (late)
Correct period aggregates for rate metrics in
GET /metrics/summary. Thetotalfield for percentage metrics (visibility/mention_rate,citation_rate,ai_visibility_score/weighted_visibility, sentiment shares) is now the average across periods instead of a sum of period rates, which could exceed 100%. Count metrics (mentions,citations,responses) are still summed. Each summary row now includes anaggregationfield ("sum"or"average") stating howtotalwas computed. The same fix applies to the MCPget_summarytool, which also stops echoing the fullseriesalongside the summary (callget_timeseriesfor series data) and gains agroup_byargument (modelorcollection) returning one summary per group in a single call.GET /answers(and the MCPlist_answerstool) accept a newqueryparam for case-insensitive full-text search inside AI response texts:totalbecomes the exact match count and rows return asnippet+match_countinstead of the full response text. -
2026-06 (late)
Team-member prompt permission and per-project prompt limits. Account owners can now turn off a team member's ability to add or delete prompts. When a member's permission is off,
POST /promptsand thecreate_promptsMCP tool return403 ERR_INSUFFICIENT_SCOPEfor that member's key (read endpoints are unaffected). Owners can also set a per-project prompt limit in Project Settings; once a project reaches it,POST /promptsandcreate_promptsreturnERR_LIMIT_REACHED(alongside the existing account-wide quota check) for everyone, including the owner, until the limit is raised. No new error codes or endpoints. -
2026-06 (late)
New MCP tool
get_webhook_sample(Scale+), the MCP counterpart ofGET /webhooks/sample/:event_type, so MCP clients can preview event payloads before subscribing. Plan gating aligned for the AI bot catalog: RESTGET /dimensions/agent_botsnow requires Scale or above (ERR_PLAN_REQUIREDbelow), while the MCP toollist_agent_botsis now available on every plan. -
2026-06 (mid)
Outbound Webhooks (Scale+, v1.9). New endpoints:
POST /webhooks(subscribe a public HTTPS URL to a project event),GET /webhooks(list subscriptions),DELETE /webhooks/:id(unsubscribe),GET /webhooks/sample/:event_type(example payloads for integration editors). Seven event types:mention.created,competitor_mention.created,citation.created,prompt_execution.completed,sentiment.negative_detected,recommendation.completed,intelligence_task.completed. Deliveries are HMAC-SHA256 signed (X-LLMPulse-Signature), retried 5 times with backoff, and subscriptions auto-disable after 20 consecutive failures. Create/delete require aread_writescope key. New MCP tools:create_webhook_subscription,list_webhook_subscriptions,delete_webhook_subscription. Webhooks power the new Zapier, Make and n8n connectors. -
2026-06
Content Intelligence renamed to GEO Writer. The feature and its API section are now labelled GEO Writer across the app and docs. This is a display-only rename: API endpoints (
POST/GET /intelligence_tasks,GET /intelligence_tasks/:id), request/response shapes, error codes, and MCP tool names (create_intelligence_task,list_intelligence_tasks,get_intelligence_task) are unchanged. The marketing page moved from/features/content-intelligenceto/features/geo-writerwith a 301 redirect. -
2026-05 (late)
MCP available on every plan via OAuth. The MCP endpoint (
POST /api/v1/mcp) now accepts OAuth 2.1 access tokens issued via Dynamic Client Registration (RFC 7591) and PKCE-S256. Any LLM Pulse user, including Starter, Growth and trial users, can connect ChatGPT, Claude, Gemini, Cursor or any other MCP-compatible client to their account by pasting the URLhttps://api.llmpulse.ai/api/v1/mcpinto their client's MCP / connector settings; the client walks the user through an OAuth sign-in flow with no API key required. Per-tool plan gating still applies: write tools and advanced read tools that require Growth or Scale continue to be filtered out oftools/listfor users without access. API-key auth (Authorization: Bearer …) is unchanged and remains the recommended path for headless integrations like Data Studio, Zapier and CI scripts (Scale plan and above). Discovery endpoints (/.well-known/oauth-authorization-server,/.well-known/oauth-protected-resource,/oauth/jwks.json) and registration/authorize/token endpoints live under/oauth/*. -
2026-05 (late)
New recommendation type: Sentiment & Reputation (Scale+).
recommendation_typeonGET /recommendations(and thelaunch_recommendationsMCP tool) now acceptssentiment_reputationin addition toai_visibility,social_communityandbrand_building. It turns the last 30 days of brand sentiment (widening to 90 if sparse), negative themes, comparative gaps where a competitor is praised, the cited sources behind negative answers, and weak reputation dimensions, into actionable recommendations. Requires the Scale plan or above; non-entitled users getERR_INVALID_PARAM/plan errors. -
2026-05 (late)
Prompt categorization filters. Every prompt is now auto-classified by
prompt_type(search intent:informational,navigational,commercial,transactional) andbrand_kind(brand= your own brand/products,brand_other= competitors or other brands,non_brand= generic, no brand named). Both are accepted as optional filters on/metrics/timeseries,/metrics/summary,/metrics/sov,/metrics/prompt_summary,/metrics/top_sourcesand/dimensions/prompts(which now also returns the two fields per prompt). Invalid values returnERR_INVALID_PARAM. The same filters are available asprompt_type/brand_kindargs on the MCP toolsget_timeseries,get_summary,get_sovandlist_prompts. -
2026-05 (mid)
Agent Write Endpoints (v1.5). API keys now expose a
scope(readvsread_write); pre-existing keys treatfullas a synonym ofread_write. Mutation endpoints (POST/PATCH/PUT/DELETE) now require aread_writescope key and return403 ERR_INSUFFICIENT_SCOPEotherwise. A second rate-limit bucket (60/min/key) is enforced on writes on top of the global 300/min/key budget. New REST endpoints:POST /competitors,POST /collections,POST /prompts/assign_tags(idempotent bulk tagging),POST /annotations(Growth+),POST /technical_geo_reports(full GEO bundle). New MCP write tools:create_competitor,create_collection,assign_prompt_tags,create_annotation,launch_recommendations(with pre-hoc user confirmation in the chat agent),create_technical_geo_report(idem). New error codes:ERR_INSUFFICIENT_SCOPE(403) for read-only keys hitting writes,ERR_PLAN_REQUIRED(403) for annotations on Starter. -
2026-05
Projects now expose
brand_nameseparately fromnamein API and MCP payloads.brand_nameis the brand label sent to LLMs and shown in customer-facing charts;nameremains the internal project label.nameis still returned for back-compat.mention_rateaccepted as a synonym forvisibilityin/metrics/*params and in MCP timeseries / summary / top_sources tools. Per-user AI model flags now apply to every read endpoint: API responses, metrics, dimensions, answers, sentiments and citations silently exclude models that aren't enabled for the API key's user. Today, active paid add-ons are Copilot, Claude, Grok, DeepSeek and Alexa for Shopping; Meta AI recurring execution is not active. Date-bucketed metrics standardized onEurope/Madridfor daily/weekly/monthly buckets, fixing off-by-one-day rows near midnight UTC. -
2026-04 (late)
Agent Analytics API (Scale+, Beta):
GET /metrics/agent_trafficandGET /dimensions/agent_botssurface AI bot crawler traffic (GPTBot, PerplexityBot, ClaudeBot, OAI-SearchBot, Google-Extended, and ~25 others) from Cloudflare or CSV uploads. New MCP tool:get_agent_traffic. MCPtools/listis now filtered by your plan, tools you can't use no longer appear in the catalog, and direct calls to gated tools return a cleanERR_PLAN_REQUIREDinstead of leaking schema. MCP auth boundaries hardened for member-of-owner access. -
2026-04 (mid)
Citation Intelligence API:
GET /citation_intelligence/groups(cited-URL clusters with source/type filters),GET /citation_intelligence/urls/:url_sha256,/occurrencesand/contentfor per-URL drill-down. AI Model Insights Reports API:GET /reports/ai_model_insights/summary,/position_distributionand/ai_overview_results. Recommendations API:GET /recommendationsandGET /recommendations/:id. New MCP tools: list_citation_groups, get_cited_url_details, list_cited_url_occurrences, get_cited_url_content, get_ai_model_summary, get_ai_model_position_distribution, get_ai_overview_results, list_recommendations, get_recommendation, list_competitor_mentions, list_competitor_citations, list_prompt_executions, list_tags. Stricter enum validation acrossview,order,direction,granularity,model,source_type,sentiment,content_gap,recommendation_type,status, unknown values now returnERR_INVALID_PARAMinstead of being silently ignored.source_typefilter acceptsowned,competitor,third_partyin addition to classification lists. AI Overview results bucket byexecuted_at(notcreated_at), so retried/backfilled rows land in the correct day. -
2026-04
New
POST /promptsendpoint for bulk prompt creation (up to 100 per request). New Content Intelligence API:POST /intelligence_tasksto create tasks,GET /intelligence_tasksto list with filters,GET /intelligence_tasks/:idfor full details and results. New MCP tools: create_prompts, create_intelligence_task, list_intelligence_tasks, get_intelligence_task. New error codes:ERR_LIMIT_REACHED(prompt quota),ERR_QUOTA_EXCEEDED(intelligence task quota),ERR_NOT_FOUND(resource not found). -
2026-03
New endpoint
GET /metrics/prompt_summaryfor paginated per-prompt metrics (responses, mentions, citations, visibility, citation_rate) in a single request -
2026-02
Added
ai_visibility_scoremetric (position-weighted visibility). New MCP tools: list_answers, get_answer, list_detailed_sentiments, get_project_details, get_competitor_details. New API endpoints: /answers, /sentiments, /dimensions/projects/:id, /dimensions/competitors/:id. Addedresponsesmetric (prompt execution count) andcitation_ratemetric (citations / responses x 100). API rate limits increased from 100 to 300 requests/minute. Addedpromptfilter to all metrics and dimensions endpoints. -
2026-01
Added MCP (Model Context Protocol) endpoint for AI integrations with Claude, ChatGPT, and other AI assistants
-
2025-12
Sentiment metrics added to /metrics/timeseries (sentiment_very_positive/positive/neutral/negative/very_negative) and documented semantics
-
2025-09
Metrics aligned with Overview (period totals with sticky, ratio-of-period-sums for visibility, propagation in avg_position), SOV breakdown,
queryfilter in Top Sources, caching notes, Postman download & environment section -
2025-08
Initial public API docs (v1)