API Changelog
Every change to the REST API and MCP tools, newest first.
-
2026-10-25 (v1.71.0)
No API for accounts that do not pay, tracked state of projects and prompts, and webhook removal below Scale. Every REST and MCP request, reads and OAuth included, returns
403 ERR_ACCOUNT_INACTIVEwhen the account never subscribed or its subscription ended over three days ago, and its webhooks deliver nothing until it pays. Invoice-billed accounts are exempt. From the paid-through date, paid work (GEO Writer, technical GEO reports, GEO audit runs, recommendations, prompt suggestions, project drafts,ask_support) answers the same code and new prompts get no first run. Projects, project details and prompts returntrackedanduntracked_reason, andPOST /promptsand/prompts/importadd awarningwhen they will not run.GET /webhooksandDELETE /webhooks/:idwork on every plan, to remove a subscription paused below Scale. GEO audits gainpaused_reasonquota,public_link_activeneeds an active account on the Scale tier or higher, and Sentiment & Reputation recommendation runs answerERR_NOT_FOUNDwithout reputation access. -
2026-10-24 (v1.70.0)
Filters the API already accepted are now in the contract, and range applies on the listings. The OpenAPI and Swagger documents, and so the SDKs, the CLI and the connectors, now list parameters these endpoints read but did not document:
country_code,language_codeandinclude_projectonGET /metrics/summaryandGET /metrics/sov;collection_idsanddomainsonGET /metrics/top_sources;prompt_type,brand_kindandrangeonGET /dimensions/mentions,/citations,/competitor_mentions,/competitor_citations,/all_mentions,/all_citationsand/sources(pluscountry_codeandlanguage_codeon the competitor and combined listings); andprompt_typeandbrand_kindonGET /dimensions/prompt_executions. Behaviour correction:rangeon those seven REST listings used to be ignored, so they returned the whole history; they now keep the last N days, as their MCP tools already did; an explicitfromortostill wins, and arangethat is not a single positive number, or that exceeds 1,500 days, returnsERR_INVALID_PARAM.domainsonGET /metrics/top_sourcesandGET /citation_intelligence/mentions_by_domain, andcollection_idsonGET /metrics/top_sources, take one value or a comma-separated list (domains=gmac.com,educaweb.com), and the bracket formdomains[]=still works. A comma-separateddomainsused to match no domain, and a client that repeated the key (domains=a&domains=b, as most generated SDKs did formentions_by_domain) got only the last one; regenerated SDKs send the comma-separated form.modelonGET /reports/ai_model_insights/position_distributionnow lists only the seven models the endpoint accepts; other values were already refused withERR_INVALID_PARAM.statusonGET /intelligence_tasksnow lists its values. MCP tools are unchanged. -
2026-10-23 (v1.69.0)
Archive reasons and effort for recommendation items.
PATCH /recommendations/:id/items/:item_idandupdate_recommendation_itemaccept an optionalreasonwhen archiving (not_relevant,too_complexorcompetitor), which later recommendation runs learn from; it is returned asmetadata.archive_reason. New items carrymetadata.effort(low,mediumorhigh). -
2026-10-22 (v1.68.0)
Several Search Console properties per project. New
GET /search_console/properties(MCPlist_search_console_properties) lists up to 10 connected properties. Every Search Console read takesproperty: one property id, or a comma-separated list orallto combine several, answered withproperties,excluded_properties(already counted by another selected property) andproperty_errors.propertyis also a summarydimensionand a rows dimension, and project details reportsearch_console.properties_count. -
2026-10-21 (v1.67.0)
Data connection status and connect links.
GET /dimensions/projects/:idandget_project_detailsnow returnai_trafficandagent_trafficnext tosearch_console, so a client can see which data sources a project has before calling their endpoints. Each has astatus(connected,reconnect_requiredornot_connected, plusimportedwhen agent traffic comes only from imported logs), the connectedpropertyorprovider, andconnect_url, the page where the user connects or reconnects it. Not-connected and access-revoked errors from the Search Console, AI traffic, web analytics and agent traffic endpoints carry the same link inerror.meta.connect_url, and their MCP tools return it asconnect_url. Nothing else in these responses changes. -
2026-10-19 (v1.66.0)
Masked webhook URLs, webhook pauses below Scale, plan-gated answer fields and import permissions.
GET /webhooksand thelist_webhook_subscriptionsMCP tool now show a read-only API key, or an MCP OAuth connection withoutmcp:write, only the scheme, host and any non-default port oftarget_urlfollowed by/…(for examplehttps://hook.eu1.make.com/…), because the full URL can let anyone post to the receiver. Aread_writekey, or a connection withmcp:write, still gets the full URL. A subscription created by an API key limited to some projects stops for good once that key no longer covers the subscription's project: it is listed withdisabled: true, and creating it again with the same project, event and URL replaces it with a new subscription and secret. While the account is below the Scale plan, its subscriptions are kept but deliver nothing: no failed delivery is counted and none is disabled. Deliveries resume once the account is back on Scale or above, and events from that period are not resent.GET /answers/:idnow leaves outsentimentsbelow the Growth plan andshopping_productsbelow the Scale plan, as theget_answerMCP tool already did. Both returnplan_required_fields, the list of fields left out, always present and empty when nothing is left out;get_answerused to return it as an object naming the plan of each field, and only when one was left out. InPOST /prompts/importand theimport_promptsMCP tool, a row that needs a tag that does not exist yet is skipped for a team member without create access to Tags, and a row matching a prompt that already existed adds no tags to it for a team member without update access to Prompts (the row is listed when it would have added one). Both come back inrow_errors, next to the rows skipped for giving a prompt more than 50 tags or taking the request past 500 new tags, limits the import description now states. -
2026-10-19 (v1.65.0)
Limits on matching names.
matching_namesnow takes at most 50 names of up to 100 characters each onPOST /projects,PATCH /projects/:id,POST /competitors,PATCH /competitors/:idandPOST /project_drafts/:id/finalize, and on the MCP toolscreate_project,update_project,create_competitor,update_competitorandfinalize_project_draft. The 50 include the brand name thatPOST /competitorsandPATCH /competitors/:idadd to the list. A longer list or name returnsERR_INVALID_PARAM(422) and nothing in the request is applied. The steps ofPATCH /project_drafts/:idstill store the lists as sent, and finalize checks them. The OpenAPI request schemas declare both limits asmaxItemsandmaxLength. A list saved before this change keeps working until it is edited. -
2026-10-16 (v1.64.0)
Project prompt limits in the API and MCP.
GET /dimensions/projects/:idandget_project_detailsreturnprompt_limit(null without one) andstats.prompts_available, how many prompts the project can still take: the lower of its room under that limit and the account's remaining prompts, 0 at worst and null only when neither applies.PATCH /projects/:idand the MCP toolupdate_projectaccept a whole-numberprompt_limitfrom 1 to 2147483647, or null to remove it. Only the account owner or an account admin (co-owner) with the Projects update permission can change it: other team members getERR_INSUFFICIENT_PERMISSION, a key limited to some projects getsERR_KEY_PROJECT_SCOPED, and a refused request applies nothing. Values such as"5"or5.0returnERR_INVALID_PARAM. A limit below the current count deletes no prompt; new ones are refused until the project is under it. A request sending onlyprompt_limitis saved even during a recalculation. -
2026-10-15 (v1.63.0)
More of the app, in the API and MCP.
GET /custom_reports,GET /custom_reports/:idandPOST /custom_reports/:id/send(list_custom_reports,get_custom_report,send_custom_report) list, read and send custom reports.PATCH /recommendations/:id/items/:item_id(update_recommendation_item) completes, archives or restores a recommendation item.GET /reports/sentiment/topicsandGET /reports/sentiment/tags(get_sentiment_topics,get_sentiment_tags) return sentiment by topic and by tag, like the Sentiment page.GET /competitors/suggestions(list_competitor_suggestions) returns the suggested competitors and the most cited domains of the Competitors page. -
2026-10-15 (v1.63.0)
Owned media and social profiles in the API.
GET /dimensions/owned_media/summary(get_owned_media_summary) returns the numbers behind each Owned Media tab, YouTube and LinkedIn among them: citations of the platform, the share that cites your profiles and content, the change against the previous period, weekly citations and the splits by AI model, country, content type and age.GET /dimensions/owned_media/citing_prompts(list_owned_media_citing_prompts) lists the answers citing one post, video or profile.GET /projects/:id/owned_mediaandPATCH /projects/:id/owned_media(get_owned_media_profiles,update_owned_media_profiles) read and set the profiles that count as yours, like Project Settings > Owned Media. -
2026-10-15 (v1.63.0)
Every way to add prompts, through the API.
POST /prompts/importand theimport_promptsMCP tool take up to 500 rows, each with its own country, language and tags, like the CSV import.POST /prompt_generationsandgenerate_prompt_suggestionsstart the suggestion generators of the app (website, keyword, topic, Reddit, People Also Ask, reputational, translate and Search Console) and answer 202 with a run to follow atGET /prompt_generations/:id(get_prompt_generation). The ideas land in the suggestion queue:GET /suggested_prompts(list_suggested_prompts) lists it,POST /suggested_prompts/acceptturns ideas into tracked prompts andPOST /suggested_prompts/rejectdismisses them (accept_suggested_prompts,reject_suggested_prompts).POST /prompts/remove_tagsis now the REST twin of theremove_prompt_tagsMCP tool, andPATCH /prompts/:id(update_prompt_categorization) sets the search intent and brand focus of a prompt by hand. -
2026-10-14 (v1.62.0)
Citations per period for a cited URL, domain or host.
GET /citation_intelligence/urls/:url_sha256and theget_cited_url_detailsMCP tool acceptinclude_series=true, which addscitation_series: the answers citing the URL per AI model (by_model) and per period (data), by day, week or month as the account tracking cadence sets (granularity), withtotalequal tostats.total_responses. Periods date each answer byexecuted_atin Europe/Madrid time. Withoutinclude_seriesthe response is unchanged. The endpoint now documents the filters it already applied (model,collection_id,country_code,language_code,prompt,from,to,source_type,sentimentandcontent_gap) and acceptsbrand_kind. For a domain or host,GET /citation_intelligence/groupsand thelist_citation_groupsMCP tool acceptkey, which returns only that group of the chosen view, and with a keyinclude_series=trueadds the samecitation_seriesto its row;include_serieswithoutkeyreturnsERR_INVALID_PARAM(422).GET /citation_intelligence/groupsalso appliesbrand_kind, which it used to ignore. -
2026-10-14 (v1.62.0)
Product listing markup is cleaned, not refused. On a
product_listingtask,PATCH /intelligence_tasks/:idand theupdate_intelligence_task_contentMCP tool keep onlyp,ul,ol,li,strong,em,h3andbrindescription_html, with no attributes. Other markup and every attribute are stripped and the edit still succeeds, so read the stored value from the response.POST /intelligence_tasks/:id/revertrestores the generated description cleaned the same way. -
2026-10-14 (v1.62.0)
A declined answer is a sentinel non-answer too. When the model declines to answer a prompt (today only Gemini, because of its safety filters or a restricted topic),
GET /answers,GET /answers/:idand thelist_answersandget_answerMCP tools return that run withno_result: trueand the usual placeholder text, like a run where the provider returned nothing after all retries. Such a run is not retried and stays out of every platform metric. The response shape is unchanged; theno_resultdescriptions now name both causes. -
2026-10-14 (v1.61.0)
Webhook secret only for the credential that created the subscription. Re-posting the same project, event and URL to
POST /webhooks, or calling thecreate_webhook_subscriptionMCP tool again, still returns the existing subscription as before, but includessecretonly when the call comes from the API key or OAuth connection that created it. Any other API key or OAuth connection gets the subscription withoutsecret, so it can no longer read a signing secret it was not given. A subscription created over an MCP OAuth connection before v1.58.0 has no recorded creator, so it never returnssecretagain. A new subscription, including one that replaces a subscription whose creating API key or OAuth connection was revoked, still returnssecret. To get a new secret for an existing subscription, delete it and create it again. -
2026-10-12 (v1.60.0)
A code on every MCP tool error. Every failing
tools/callnow carriescodenext toerror, with the value the REST endpoint returns for the same state; until now some tool errors carried onlyerror, and the two refusals made before a tool runs (missing required arguments, a value the input schema rejects) came as plain text, not as a JSON object witherror. Missing or invalid arguments, including values a tool's input schema rejects before it runs, returnERR_INVALID_PARAM. An unknown project returnsERR_PROJECT_NOT_FOUNDon every tool, and another missing recordERR_NOT_FOUND(ERR_DRAFT_NOT_FOUNDfor drafts). A tool refused for an OAuth scope or a read-only key returnsERR_INSUFFICIENT_SCOPE, for team-member permissionsERR_INSUFFICIENT_PERMISSION, and on a white-label portalERR_INTEGRATION_UNAVAILABLE. Budgets and daily limits returnERR_LIMIT_REACHEDorERR_QUOTA_EXCEEDED, as on REST. Theerrortext is unchanged. -
2026-10-12 (v1.60.0)
Unknown or differently cased source_type refused on GET /dimensions/sources.
GET /dimensions/sourcesused to ignore an unknownsource_type, or the array formsource_type[], and list every source, while a differently cased value such asOwnedwas applied asowned. It now accepts exactlyowned,competitororthird_party; any other value,OwnedandOWNEDincluded, returnsERR_INVALID_PARAM(422) with the accepted values. Thelist_sourcesMCP tool refuses the same values with the same code. -
2026-10-12 (v1.60.0)
Additional owned domains through the API.
PATCH /projects/:idand theupdate_projectMCP tool acceptadditional_owned_domains, the other domains the brand owns whose citations count as owned, which until now could only be edited in the app. It is a full replacement list of up to 10 domains, and[]clears it. A pasted URL is stored as its domain. The app's rules apply: a subdomain, a platform many companies share (such as youtube.com, amazon.com or wordpress.com), the project website or a domain a competitor tracks is refused withERR_INVALID_PARAMand the reason.GET /dimensions/projects/:idandget_project_detailsreturn the list. -
2026-10-12 (v1.60.0)
Additional owned domains: recalculation and owner-only changes. A change to
additional_owned_domainsreprocesses, in the background, the past answers that cite an added or removed domain (rematching: true); a reordered or identical list starts nothing. Only the account owner can send it: a team member key or connection, a co-owner's included, getsERR_INSUFFICIENT_PERMISSIONand nothing in the request is applied. A request is applied whole or not at all, and one sent withmatching_namesstarts a single recalculation. The responseprojectreturns the list, andPATCH /projects/:idnow publishes its response schema. While a recalculation runs,PATCH /projects/:idand theupdate_projectMCP tool refuse further edits withERR_INVALID_PARAM; that message no longer promises a wait of a few minutes and now asks to try again once the recalculation finishes. -
2026-10-12 (v1.60.0)
What a competitor deletion keeps.
DELETE /competitors/:idand thedelete_competitorMCP tool now keep the competitor's shopping products and brand entities, which the background job used to delete, and stop leaving its ads and local businesses without an owner. All four move to the project or to another competitor whose domain they match, or stay unattributed. The job still deletes the competitor's mentions, citations, sentiment and share of voice history. -
2026-10-12 (v1.60.0)
Model filter exceptions documented. The reference now describes the
modelfilter as each endpoint already applied it. An unknown model, or one the user has not enabled, returnsERR_INVALID_PARAM(422), with these exceptions.GET /sentimentsignores such a value. The citation intelligence endpoints accept onlychatgpt,ai_mode,ai_overview,perplexity,gemini,naver_aiandbaidu_ai.GET /reports/ai_model_insights/position_distributionaccepts those seven even when not enabled. The/metricsendpoints also acceptgoogle-ai-modeandgoogle-ai-overview, asai_modeandai_overview. -
2026-10-12 (v1.60.0)
Array form of the model filter refused on dimensions listings.
model[]on the/dimensionslistings used to be dropped, so they returned unfiltered data. It now returnsERR_INVALID_PARAM(422), as on/metricsand/answers.project_idonGET /dimensions/agent_botsis now documented as required but ignored: the bot catalog is the same for every project. -
2026-10-12 (v1.60.0)
Brand name in project lists, and the model filter on prompts.
GET /dimensions/projectsand thelist_projectsMCP tool now return each project'sbrand_name(null when it is not set), and so does theprojectthatGET /pingadds when called withproject_id, as the published Project schema already declared.GET /dimensions/promptsnow appliesmodel, which it used to ignore: it keeps the prompts with at least one execution on that model, of any outcome and date. Itspromptfilter already worked and is now documented. Thelist_promptsMCP tool accepts both filters. -
2026-10-12 (v1.60.0)
Webhooks with a revoked credential read as disabled.
GET /webhooksand thelist_webhook_subscriptionsMCP tool returndisabled: true, instead offalse, for a subscription whose API key or OAuth connection was revoked. Such a subscription receives no more events. Delete it, or create it again with the same project, event and URL to replace it with a new subscription and secret. -
2026-10-12 (v1.59.0)
GET /metrics/prompt_summaryrows now carry the brand sentiment of each prompt:sentiment_responses(responses with a sentiment verdict for the brand), the fivesentiment_*percentages of that count andnet_sentiment, computed like the sentiment metrics of/metrics/timeseriesand null when no response has a verdict. They followbreakdown=modeland every filter, and cannot be used to sort. Each row also carries the country, language, type, brand focus and tags of its prompt, as in/dimensions/prompts. Theget_prompt_summaryMCP tool returns the same fields. -
2026-10-12 (v1.58.0)
Team Members API. Manage the account team through the API with the rules of the Team Members settings page. New
GET /team_membersandGET /team_invitationslist members (account owner first) and pending invitations with their access and projects,POST /team_invitationssends an invitation email,DELETE /team_invitations/:idrevokes one andDELETE /team_members/:idremoves a member. The MCP tools arelist_team_members,list_team_invitations,invite_team_member,revoke_team_invitationandremove_team_member. Reading needs the account owner, a co-owner or the Team Members permission; revoking and removing need the owner or a co-owner. A team member allowed to invite cannot choose the access: the invitation copies their own permissions. Writes require a read_write scope key, and an API key limited to some projects getsERR_KEY_PROJECT_SCOPED(403) on every Team endpoint. Invitations sent through the API and MCP have a daily limit that counts revoked ones; reaching it answersERR_LIMIT_REACHED. -
2026-10-12 (v1.58.0)
GEO Writer version check, stricter traffic windows and webhook re-posts. GEO Writer task payloads return
result_version, andPATCH /intelligence_tasks/:idand the MCP toolupdate_intelligence_task_contentaccept it as an optional field. If the task was regenerated after you read it, the edit is refused with the new error codeERR_STALE_CONTENT(409), nothing is written anderror.meta.result_versionholds the current token. Withoutresult_version, edits apply as before.GET /metrics/ai_traffic,GET /metrics/agent_trafficand the MCP toolsget_ai_trafficandget_agent_trafficanswerERR_INVALID_PARAM(422) for arangebelow 1 or afromlater thanto, instead of an empty result. Re-posting the same project, event and URL toPOST /webhooksreturns the existing subscription unless the API key or OAuth connection that created it was revoked; then it is replaced by a new subscription with a new secret. -
2026-10-12 (v1.58.0)
Search Console API additions. New
GET /search_console/rowsand MCP toolget_search_console_rowsgroup rows by up to three dimensions (for example page and query, or date and page).start_rowon queries, pages and rows reads past Google's 25,000-row window, andaggregation_type(auto,byPage,byProperty) works on every Search Console endpoint. REST responses now includedata_through; withoutput=csv,X-Data-ThroughandX-Truncatedcarry the same information. MCP upstream errors includeretry_after.GET /dimensions/projects/:idandget_project_detailsreport the Search Console connection (search_console.statusandproperty). REST and MCP read the date window the same way: an invalidrangeisERR_INVALID_PARAM, and onlyfromaftertoisERR_INVALID_RANGE. -
2026-10-10 (v1.57.0)
Live web analytics (Growth+). New
GET /web_analytics/schemaandPOST /web_analytics/query, with the MCP toolsget_web_analytics_schemaandquery_web_analytics, turn LLM Pulse into a live, read-only bridge to the web analytics provider connected on the AI Traffic page (Google Analytics 4, Adobe Analytics or Customer Journey Analytics, Matomo, PostHog, Plausible or Piano). The caller writes the query in the provider's native format; the connected property is always used, only reads run, rows are capped at 5,000 and identical queries are cached for 10 minutes. New error codes:ERR_WEB_ANALYTICS_NOT_CONNECTED(404),ERR_WEB_ANALYTICS_INVALID_QUERY(422, with the provider's validation message),ERR_WEB_ANALYTICS_ACCESS_REVOKED(403) andERR_WEB_ANALYTICS_UPSTREAM(503 withRetry-After). -
2026-10-10 (v1.57.0)
Search Console breakdown truncation flag.
GET /search_console/summaryand theget_search_console_summaryMCP tool now returnbreakdown_truncated: truewhen the breakdown left rows out, because oflimitor the 25,000-row maximum Google returns. Withfiltersand nodimension, the summary totals are the complete figure Google reports for that filter. -
2026-10-07 (v1.56.0)
REST and MCP parity. These MCP parameters now refuse undocumented values instead of defaulting (REST is unchanged):
sort,sort_dirandbreakdownonget_prompt_summary,sortonget_top_sources,group_byandgranularityonget_agent_traffic,granularityonget_ai_traffic, andsource_typeonlist_sources, now case-sensitive.get_ai_model_position_distributionacceptsnaver_aiandbaidu_ai. More MCP write tools return the REST errorcode. Some REST and MCP error messages were reworded; REST codes and HTTP statuses are unchanged.assign_prompt_tagsignorescreate_missingfor team members who cannot create tags, like REST.start_project_draftacceptsexecute_prompts_immediately.POST /collectionsandcreate_collectionno longer attach prompts being deleted.PATCH /project_drafts/{id}accepts a nestedowned_mediaobject and refuses unknown fields in it. -
2026-10-07 (v1.56.0)
GEO audits. A new GEO Audits group keeps a technical GEO check on a domain or URL and follows it run after run.
GET/POST /geo_auditslist audits and create one per audit type, once, weekly or monthly (weekly and monthly foragent_readinessandrobots_txt);GET,PATCHandDELETE /geo_audits/{id}read, reschedule, pause or archive one, and creating an archived audit again restores its history.GET/POST /geo_audits/{geo_audit_id}/runslist runs and start a manual run (6 per audit per rolling hour, 200 per account per day),GET /geo_audits/{geo_audit_id}/runs/{sequence}and its/findingsreturn the full result and check-by-check findings,GET /geo_audits/{id}/comparisoncompares two runs,GET/PATCH /geo_audits/{geo_audit_id}/issueslist issues and accept or reopen one (an acceptance lapses when the evidence changes), andGET /geo_alertslists the alerts audits raised. Active recurring audits are capped per plan and over the cap returnERR_LIMIT_REACHED, as do the run limits. New MCP tools mirror every endpoint:list_geo_audits,get_geo_audit,create_geo_audit,update_geo_audit,delete_geo_audit,compare_geo_audit_runs,list_geo_audit_runs,run_geo_audit,get_geo_audit_run,list_geo_audit_findings,list_geo_audit_issues,update_geo_audit_issueandlist_geo_alerts. Writes need a key with write scope and, for team members, the matching permission on GEO Optimization. -
2026-10-04 (v1.55.0)
Project-scoped API keys. An API key can now be limited to one or several projects when it is created, with the Projects field on the API keys page. The set cannot be changed later, and existing keys keep seeing the whole account. A key limited to some projects sees only those:
GET /dimensions/projectsand the MCP toollist_projectsreturn only them, any other project id, domain or name answersERR_PROJECT_NOT_FOUNDexactly like a project that does not exist, and webhook subscriptions and studies list only theirs.GET /accountandget_account_usagelist the projects in the newapi_key_project_idsfield. Creating a project and the project draft wizard answer the newERR_KEY_PROJECT_SCOPED(403), and their MCP tools are left out oftools/list. Deleting a project removes it from the keys limited to it, and a key left with no project is revoked. -
2026-10-04 (v1.54.0)
Store integrations. A new Store Integrations group powers the LLM Pulse app for Shopify:
GET /store_connectionmatches a store domain to a project,PUT /ai_ordersandGET /ai_ordersstore and read back the orders AI assistants referred to the store, andGET/POST /catalog_prompt_suggestionswith/acceptand/rejectturn catalog products into buyer prompts to track. The MCP toolget_ai_ordersreads the stored orders.POST /intelligence_tasksalso acceptstask_type=product_listingwith aproductobject and returns ready-to-apply product page copy; that type is API-only.GET /dimensions/shoppingproduct rows now includebest_rank,modelsandlast_seen_at. New error codes:ERR_INTEGRATION_UNAVAILABLE(403, accounts with a white-label portal or an embed) andERR_GENERATION_FAILED(502, retry the request). -
2026-10-03 (v1.53.0)
Local businesses. New endpoint
GET /dimensions/local_businessesand MCP toollist_local_businesseslist the shops, restaurants and services AI answers name for your prompts, one row per business at its address, with appearances, prompts, average rating, average position, review count and whether it is yours or a tracked competitor, plus atotalsblock. Both accept the standard listing filters,owned,query,orderanddirection, and the endpoint supportsoutput=flatandoutput=csv. Available on every plan; team members need read access to Local Businesses. -
2026-10
Google entity links grouped apart. Links from Google AI Mode and AI Overviews to Google's entity viewer (
google.com/searchviewer/...) keep theirurlbut now reportgoogle-entity.invalidas theirdomainandhostinstead ofgoogle.com, inGET /metrics/top_sources,GET /dimensions/sources, the citation intelligence endpoints and the exports. They never count as owned or competitor citations, so a project or competitor on a Google domain is no longer credited for them. The app labels the group "Google (entity)". -
2026-09-30
API keys stop working below Scale. API keys are a Scale feature, and they now stop working while the account is below the Scale plan, for example after a downgrade: every REST request and every
/mcprequest made with a key answersERR_PLAN_REQUIRED(403). Keys are not revoked: they stay listed, can still be revoked, and work again once the account is back on Scale or above. MCP over OAuth is not affected. -
2026-09-29 (v1.52.0)
Edit llms.txt report files through the API.
PATCH /technical_geo_reports/:id/contentreplaces the llms.txt and llms-full.txt files of a completed llms.txt report: sendreport_type=llms_txt, aneditsobject with the full new text ofllms_txtand/orllms_full_txt, and thecontent_versionyou last read. The report detail now returnsresult_data.content_version. A stale or missingcontent_version, a blank file, a file over 200,000 characters or a report that has not completed returnsERR_INVALID_PARAM, and the update response addschanged_files. The first edit keeps the generated files inoriginal_llms_txt_contentandoriginal_llms_full_txt_content, andPOST /technical_geo_reports/:id/revert_contentrestores them. Two MCP tools mirror the endpoints:update_technical_geo_report_contentandrevert_technical_geo_report_content. Both writes need a key with write scope and, for team members, create permission on GEO Optimization. -
2026-09-29 (v1.52.0)
Automatic output language for llms.txt reports.
output_language_codeonPOST /technical_geo_reportsandcreate_technical_geo_reportalso acceptsauto, which keeps the llms.txt files in the website's own language. The create response echoesauto, and the report then returnsoutput_language_code: null. -
2026-09-28 (v1.51.1)
Technical GEO report quota.
POST /technical_geo_reportsandcreate_technical_geo_reportnow count each successfully created report as one daily unit. Run all attempts to create nine reports and starts only when at least nine daily units remain. Reports that are not created use no unit. Daily allocations vary by account. -
2026-09-28 (v1.51.0)
Response schemas match what the API sends. Responses are unchanged on the wire; the OpenAPI document and the official SDKs now describe them correctly. The points of
GET /metrics/timeseries,GET /metrics/summaryand theover_timeseries ofGET /metrics/sov(TimeseriesPoint) carry a calendar date such as2026-09-01(the first day of the bucket for week and month granularity), not a timestamp, andvalueisnullfor rate, position and sentiment metrics on days without answers. The Go, Java, Kotlin, Rust and C# SDKs could not decode these points before. In the typed SDKsdateis now a date type, for exampleLocalDatein Java and Kotlin,DateOnlyin C#,NaiveDatein Rust,datein Python and a string in Go. Fields the API can send asnullare now declared nullable, which the C# SDK rejected before:brand_name,url,description,business_model,target_audience,brand_voice,goals,google_play_idandapp_store_idonGET /dimensions/projects/{id};matching_names,google_play_id,app_store_idandcoloronGET /dimensions/competitors/{id};domainon the project actor inGET /metrics/timeseries,GET /metrics/summaryandGET /metrics/sov, and on the own-brand row ofGET /dimensions/competitors, when the project has no URL;response,executed_at,success,duration_msandfan_out_queriesonGET /answers/{id};result_dataon GEO Writer tasks; andlast_delivered_aton webhook subscriptions.duration_msis a number with one decimal place, not an integer. In the Go SDK the non-array fields among them now use theNullable*wrapper types. -
2026-09-28 (v1.50.1)
Sentiment access parity.
GET /sentimentsandGET /dimensions/sentimentsnow enforce the Growth plan requirement. The matching MCP tools use the same Growth gate and returnERR_PLAN_REQUIREDto direct calls below that tier. -
2026-09-28 (v1.50.0)
Project setup in fewer calls.
POST /projectsand thecreate_projectMCP tool acceptcollections, a list of{name, prompts}that creates prompt tags with the project and tags prompts of the same request by their text, and the response addscollectionsandsame_domain_projects(projects you can already see on the same domain; the create is never blocked).industryaccepts one key or an array on create, draft and update, and an unknown key now lists the valid ones.PATCH /projects/:idandupdate_projectacceptname.GET /metrics/sovperiods addconfidenceandmargin_of_error, plus a top-levelsample.GET /accountandget_account_usageaddplan_name. MCP only:get_sovtakesview=compactandlist_promptstakesfields. -
2026-09
Plan-required code on gated MCP tools. A direct
tools/callto a tool your plan does not include now returnscode: "ERR_PLAN_REQUIRED"next toerror, the same code the REST endpoints return for a plan gate. Theerrortext is unchanged. -
2026-09 (v1.49.0)
Page mentions are read per project. The page mention fields of
GET /citation_intelligence/groups,GET /citation_intelligence/urls/{url_sha256}and/content, including the domain and host mention counts and thecontent_gapfilter, now describe the cited page's analysis for the requesting project. A page not yet analyzed for the project, including one saved before the project cited it, returnsnullforbrand_mentionedandcompetitor_mentionedinstead offalse,content_gap_status: mentions_not_processedandpage_cache.mentions_processed: false, and a group's mention counts arenullwhen none of its pages has been analyzed. The same rule applies topage_detailsinGET /answers/{id}, tomention_filteronGET /dimensions/sourcesand to the matching MCP tools.mentions_not_processedwas already returned before this release and is now documented. -
2026-09 (v1.48.0)
Links into the app. Answers (
GET /answers,GET /answers/{id},GET /dimensions/prompt_executions), prompts (GET /dimensions/prompts,GET /metrics/prompt_summary) and technical GEO reports (GET /technical_geo_reports,GET /technical_geo_reports/{id}) now returnapp_url, the link that opens the record in the app.POST /technical_geo_reportsreturnsapp_urls, one link per created report, keyed by report type. Each link ends in?project_id=, so it opens that project for any user with access to it. The MCP tools return the same links. -
2026-09 (v1.47.0)
llms.txt output language and manual edits.
POST /technical_geo_reportsand thecreate_technical_geo_reportMCP tool acceptoutput_language_code(ISO 639-1, defaults to the project language) for the llms.txt report of the bundle. Report summaries exposeoutput_language_code, and a completed llms.txtresult_dataaddsmanually_edited_at,original_llms_txt_content,original_llms_full_txt_contentandmetadata.output_language_code: when the files were edited in the app,llms_txt_contentandllms_full_txt_contentreturn the edited text. -
2026-09 (v1.46.0)
Search Console
filtersis now callable from the official SDKs. The parameter accepts the whole list as one JSON value,filters=[{"dimension":"page","operator":"contains","expression":"/blog/"}], because an array of objects has no query-parameter form that a generated client can produce. The existing bracket encoding,filters[][dimension]=page, is unchanged and keeps working. -
2026-09 (v1.45.0)
Model filters now accept
naver_aiandbaidu_aifor accounts with those self-serve add-ons enabled. -
2026-09
MCP directory compatibility. Tool descriptions now state only their own operation, inputs, limits, and side effects. Cross-tool orchestration and model-behavior instructions were removed. Guided-analysis playbooks remain available through the user-invoked MCP prompts feature, but are no longer exposed through
get_analysis_playbookbecause tools must not dynamically inject behavioral instructions. -
2026-09 (v1.44.0)
Cited URLs keep their citation metrics when page content is unavailable. Unknown page mentions now return null; content_gap_status includes content_unavailable. Empty crawl results no longer appear as analysed pages. Observed 404 and 410 statuses remain visible.
-
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), attempted up to 5 times in total 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. At the time of this release, active paid add-ons were Copilot, Claude, Grok, DeepSeek and Alexa for Shopping; Meta AI recurring execution was not yet 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)