# Archive or Restore Project Source: https://docs.surfacd.com/api-reference/projects/archive-or-restore-project /openapi.json patch /api/v1/projects/{project}/archive Archives a project, or restores it when `archived` is `false`. Archiving releases the project's reserved credits. Restoring resumes collection at the project's stored frequency and re-reserves the credits that schedule needs; if the team lacks sufficient available credits the restore is rejected with a `422` and no change is made. # Create Project Source: https://docs.surfacd.com/api-reference/projects/create-project /openapi.json post /api/v1/projects Creates a project for the current team, with its primary brand and the set of services (AI platforms) to monitor. The brand domain is normalised (protocol, `www`, and path are stripped). # Create Project (team-scoped) Source: https://docs.surfacd.com/api-reference/projects/create-project-team-scoped /openapi.json post /api/v1/teams/{teamUuid}/projects Team-scoped variant of the projects endpoint; identical contract with the team resolved from the path instead of the token's default team. # Delete Project Source: https://docs.surfacd.com/api-reference/projects/delete-project /openapi.json delete /api/v1/projects/{project} Soft-deletes a project. The project must be archived first: deletion is the exit from the archived state, not a shortcut from active. Deleting a project that is not archived is rejected with a `422` and no change is made; archive it via `PATCH /projects/{project}/archive` first. # List Projects Source: https://docs.surfacd.com/api-reference/projects/list-projects /openapi.json get /api/v1/projects Returns paginated projects for the current team. Excludes archived projects by default; pass `include_archived=1` to include them. # List Projects (team-scoped) Source: https://docs.surfacd.com/api-reference/projects/list-projects-team-scoped /openapi.json get /api/v1/teams/{teamUuid}/projects Team-scoped variant of the projects endpoint; identical contract with the team resolved from the path instead of the token's default team. # Manage Project Sharing Source: https://docs.surfacd.com/api-reference/projects/manage-project-sharing /openapi.json patch /api/v1/projects/{project}/share Manages a project's public share link. Send any combination of: `enabled` to turn sharing on/off, `password` to set or clear (null) a password, and `refresh_token` to rotate the share token (invalidating the previous link). Returns the current share state, including the share URL when sharing is enabled. The password itself is never returned. # Promote Pitch Project Source: https://docs.surfacd.com/api-reference/projects/promote-pitch-project /openapi.json patch /api/v1/projects/{project}/promote Promotes an ended pitch project to an ongoing standard project at the given cadence, lifting the pitch limits and reserving the credits the new schedule needs. Rejected with a 422 if the pitch window is still open, the team's active-project limit is reached, or there are insufficient credits; no change is made. # Show Project Source: https://docs.surfacd.com/api-reference/projects/show-project /openapi.json get /api/v1/projects/{project} Returns a single project for the current team, including primary brand, default country, and enabled services. Returns 404 if the project does not belong to the current team. # Update Project Source: https://docs.surfacd.com/api-reference/projects/update-project /openapi.json patch /api/v1/projects/{project} Partially updates a project. Only the fields present in the request body are changed. Services are matched by UUID or provider slug; supplying `services` replaces the monitored set. Changing the monitored services on a scheduled project triggers a new data collection run (which consumes credits). To update the primary brand, include `primary_brand.name`. # Create Prompts Source: https://docs.surfacd.com/api-reference/prompts/create-prompts /openapi.json post /api/v1/projects/{project}/prompts Creates one or more prompts on a project. **Side effects: this is not a passive write.** - Adding new active prompts normally **starts a data collection run**, which **consumes credits**. Exception: projects on a manual schedule do not auto-run after their first run; for those you must request a run separately. - A **keyword** and **search volume** are generated automatically for each new prompt by the pipeline; you cannot supply them. Duplicates of existing prompts (same text + country) are not re-created: an inactive duplicate is reactivated, and tag/topic changes are merged onto the existing prompt. New prompts are created with status `active`. Requests are rejected when they would exceed the project's prompt limit or the team's available credits. # Delete Prompt Source: https://docs.surfacd.com/api-reference/prompts/delete-prompt /openapi.json delete /api/v1/projects/{project}/prompts/{prompt} Deletes an inactive prompt, removing it and its history from reports, and recalculates the project's reserved credits. Only inactive prompts can be deleted: set an active prompt's `status` to `inactive` first, which stops collection but keeps its history in reports. Returns 422 if the prompt is still active, and 404 if the prompt's project does not belong to the current team. # List Prompts Source: https://docs.surfacd.com/api-reference/prompts/list-prompts /openapi.json get /api/v1/projects/{project}/prompts Returns paginated prompts for a project in the current team. Returns 404 if the project does not belong to the current team. # Show Prompt Source: https://docs.surfacd.com/api-reference/prompts/show-prompt /openapi.json get /api/v1/projects/{project}/prompts/{prompt} Returns a single prompt by UUID. Returns 404 if the prompt's project does not belong to the current team. # Update Prompt Source: https://docs.surfacd.com/api-reference/prompts/update-prompt /openapi.json patch /api/v1/projects/{project}/prompts/{prompt} Partially updates a prompt. Only the fields present are applied. `status` toggles between `active` and `inactive`: deactivating stops data collection and releases the prompt's reserved credits while keeping its history in reports; activating a prompt is subject to the project's prompt limit and the team's available credits. Pass `topic: null` to clear the topic. Keyword and search volume are pipeline-generated and cannot be set. # Update Prompt Tags Source: https://docs.surfacd.com/api-reference/prompts/update-prompt-tags /openapi.json patch /api/v1/projects/{project}/prompts/tags Bulk-updates tags across one or more of a project's prompts. Each entry targets a prompt by UUID and either replaces its tags wholesale (`sync`) or applies incremental changes (`add` / `remove`). `sync` cannot be combined with `add`/`remove`, and each entry must specify at least one of the three. Tags are referenced by UUID and must already exist on the project; use `/api/v1/projects/{project}/tags` to create or list them. The whole request is applied atomically. # List available countries Source: https://docs.surfacd.com/api-reference/reference/list-available-countries /openapi.json get /api/v1/countries Returns the active countries a project can target, ordered by name. Use a returned `code` as the `default_country_code` when creating a project or as a prompt's `country_code`. # List available platforms Source: https://docs.surfacd.com/api-reference/reference/list-available-platforms /openapi.json get /api/v1/platforms Returns the active AI platforms a project can run against, ordered by display name. Use the returned `provider` value in reporting `services` filters. For project service selection, send either the returned `provider` or `uuid`. # List Brands Source: https://docs.surfacd.com/api-reference/reference/list-brands /openapi.json get /api/v1/projects/{project}/brands Returns the project brands. Use the returned `uuid` values in `brands` reporting filters. # List domain categories Source: https://docs.surfacd.com/api-reference/reference/list-domain-categories /openapi.json get /api/v1/domain-categories Returns domain category enum values that can be passed in `categories` reporting filters. # List Topics Source: https://docs.surfacd.com/api-reference/reference/list-topics /openapi.json get /api/v1/projects/{project}/topics Returns the project topics. Use a returned `uuid` or `name` in `topics` reporting filters (names are case-insensitive). Topic creation is handled through prompt creation/update workflows. # Brand Mentions Source: https://docs.surfacd.com/api-reference/reporting/brand-mentions /openapi.json get /api/v1/projects/{project}/mentions Returns paginated brand mentions matched within the requested date range. Supports filtering by brand, AI service, country, tag, topic, prompt, rank range, sentiment, and free-text search across snippets. # Brand Rankings Source: https://docs.surfacd.com/api-reference/reporting/brand-rankings /openapi.json get /api/v1/projects/{project}/brand-rankings Returns paginated brand rankings within a date range, with optional filters for brands, tags, services, countries, prompts, topics, and brand search. Each row includes visibility, mention-weighted sentiment score (0–100 Net Sentiment Index), mentions, and average position. Use `brands` with `only_brand` or `always_include_brand` to pin a specific brand. # Matrix Analysis Source: https://docs.surfacd.com/api-reference/reporting/matrix-analysis /openapi.json get /api/v1/projects/{project}/matrix-analysis Returns a metric (visibility, mentions, industry rank, or average position) broken out across two public dimensions. Row, column, and cell identifiers use the same public identifiers as filters: provider strings, country codes, enum values, UUIDs, or stable sentinels. # Sources (Category Distribution) Source: https://docs.surfacd.com/api-reference/reporting/sources-category-distribution /openapi.json get /api/v1/projects/{project}/sources-data/category-distribution Returns the distribution of cited source categories for a single brand across the requested date range, along with total source and response counts. # Sources (Domains) Source: https://docs.surfacd.com/api-reference/reporting/sources-domains /openapi.json get /api/v1/projects/{project}/sources-data/domains Paginated list of domains cited by AI responses for the project across the date range. Each row includes citation count, rank, optional category, and comparison fields versus the previous period. # Sources (Hostnames) Source: https://docs.surfacd.com/api-reference/reporting/sources-hostnames /openapi.json get /api/v1/projects/{project}/sources-data/hostnames Paginated list of hostnames (e.g. `blog.example.com`) cited by AI responses for the project across the date range. # Sources (URLs) Source: https://docs.surfacd.com/api-reference/reporting/sources-urls /openapi.json get /api/v1/projects/{project}/sources-data/urls Paginated list of individual URLs cited by AI responses for the project. Supply either `domain` or `hostname` to scope to citations under that source; if both are sent, `hostname` wins. # Visibility Change Decomposition Source: https://docs.surfacd.com/api-reference/reporting/visibility-change-decomposition /openapi.json get /api/v1/projects/{project}/visibility-decomposition Explains why the brand's visibility score changed between the selected period and the previous period of equal length. The comparison window is derived automatically and echoed back as `comparison_start_date` / `comparison_end_date`. The change is decomposed across three dimensions - services, countries and topics - each of which partitions the analysed response set. Within a dimension, every segment carries a `contribution`: the visibility-point effect (on the 0-1 scale) of that segment's own mention-rate movement, weighted by the segment's share of responses. The dimension's `mix_contribution` captures change caused by a shift in where responses were collected (added platforms, new prompts, different response volumes) rather than by mention-rate movement. For every dimension, the segment contributions plus `mix_contribution` sum exactly to `after_visibility - before_visibility`. `within_noise: true` marks segments whose sample is too small (fewer than 30 responses in either period) or whose movement sits inside the 95% confidence interval for the rate difference; treat those movements as inconclusive. Segment `id`s use the same public identifiers as the filter parameters (service providers, country codes, topic UUIDs or `no_topic`), so drilling down is iterative: pass a segment's `id` back as the matching filter (`services`, `countries`, `topics`) and call the endpoint again to decompose that slice across the remaining dimensions. Use `GET /api/v1/projects/{project}/mentions` with the same filters to retrieve concrete example responses. When every partitioning dimension has been pinned to a single segment, pass `include_prompts=true` to reach the final level: the individual prompts that moved the slice. # Visibility Over Time Source: https://docs.surfacd.com/api-reference/reporting/visibility-over-time /openapi.json get /api/v1/projects/{project}/visibility-over-time Returns a per-brand series of visibility and sentiment metrics across a date range, optionally rolled up to weekly or monthly buckets. Use `brands` with brand UUIDs to select the series. # Get Narrative Source: https://docs.surfacd.com/api-reference/reputation/get-narrative /openapi.json get /api/v1/projects/{project}/reputation/narratives/{narrative} A single narrative with its windowed summary, per-platform sentiment split, and sibling narratives sharing its theme. # Get Response Source: https://docs.surfacd.com/api-reference/reputation/get-response /openapi.json get /api/v1/projects/{project}/reputation/responses/{response} Full detail for a single AI response: the response record, its prompt (with target country), the platform, cited sources, and any brand mentions. # Get Theme Source: https://docs.surfacd.com/api-reference/reputation/get-theme /openapi.json get /api/v1/projects/{project}/reputation/themes/{theme} A single theme with its narratives, per-platform sentiment split, and trajectory across the date range. # List Narratives Source: https://docs.surfacd.com/api-reference/reputation/list-narratives /openapi.json get /api/v1/projects/{project}/reputation/narratives Paginated list of reputation narratives (recurring storylines) for the project across the date range. # List Responses Source: https://docs.surfacd.com/api-reference/reputation/list-responses /openapi.json get /api/v1/projects/{project}/reputation/responses Paginated list of AI responses scoped to a narrative or theme (a theme expands to its narratives' mentions), windowed to the date range. # List Themes Source: https://docs.surfacd.com/api-reference/reputation/list-themes /openapi.json get /api/v1/projects/{project}/reputation/themes Paginated list of reputation themes (clusters of related narratives) for the project across the date range. # Reputation Overview Source: https://docs.surfacd.com/api-reference/reputation/reputation-overview /openapi.json get /api/v1/projects/{project}/reputation/overview Headline reputation KPIs for the project across the date range, with comparison values versus the equal-length previous period. # Reputation Sources (Domains) Source: https://docs.surfacd.com/api-reference/reputation/reputation-sources-domains /openapi.json get /api/v1/projects/{project}/reputation/sources/domains Paginated list of domains cited by the AI responses behind a narrative, theme, or brand, across the date range. # Reputation Sources (Prompts) Source: https://docs.surfacd.com/api-reference/reputation/reputation-sources-prompts /openapi.json get /api/v1/projects/{project}/reputation/sources/prompts Paginated list of prompts whose AI responses cited a specific URL, within a narrative, theme, or brand scope, across the date range. # Reputation Sources (URLs) Source: https://docs.surfacd.com/api-reference/reputation/reputation-sources-urls /openapi.json get /api/v1/projects/{project}/reputation/sources/urls Paginated list of individual URLs cited by the AI responses behind a narrative, theme, or brand. Supply either `domain` or `hostname` to scope to citations under that source; if both are sent, `hostname` wins. # Sentiment by Platform Source: https://docs.surfacd.com/api-reference/reputation/sentiment-by-platform /openapi.json get /api/v1/projects/{project}/reputation/sentiment-by-model Per-platform sentiment distribution and Net Sentiment Index for the project across the date range. # Sentiment Over Time Source: https://docs.surfacd.com/api-reference/reputation/sentiment-over-time /openapi.json get /api/v1/projects/{project}/reputation/sentiment-series Daily positive/neutral/negative mention counts for the project across the date range, on a contiguous day axis. # Create Tag Source: https://docs.surfacd.com/api-reference/tags/create-tag /openapi.json post /api/v1/projects/{project}/tags Creates a tag on the project and returns it with its public UUID. # Delete Tag Source: https://docs.surfacd.com/api-reference/tags/delete-tag /openapi.json delete /api/v1/projects/{project}/tags/{tag} Deletes a project tag and detaches it from prompts. # List Tags Source: https://docs.surfacd.com/api-reference/tags/list-tags /openapi.json get /api/v1/projects/{project}/tags Returns the project tags. Use a returned `uuid` for prompt tag assignment. Reporting filters accept a tag `uuid` or `name` (names are case-insensitive). # Show Tag Source: https://docs.surfacd.com/api-reference/tags/show-tag /openapi.json get /api/v1/projects/{project}/tags/{tag} # Update Tag Source: https://docs.surfacd.com/api-reference/tags/update-tag /openapi.json patch /api/v1/projects/{project}/tags/{tag} # Get Team Settings Source: https://docs.surfacd.com/api-reference/team/get-team-settings /openapi.json get /api/v1/teams/{teamUuid} Returns settings for the current team, plus its plan name, display prices, and the features included on that plan. The plan is read-only and cannot be changed through the API. # Get Team Settings Source: https://docs.surfacd.com/api-reference/team/get-team-settings-1 /openapi.json get /api/v1/team Returns settings for the current team, plus its plan name, display prices, and the features included on that plan. The plan is read-only and cannot be changed through the API. Operates on the token's default team; use the /teams/{teamUuid} variant to target a specific team. # Get Team Usage Source: https://docs.surfacd.com/api-reference/team/get-team-usage /openapi.json get /api/v1/teams/{teamUuid}/usage Returns the current team's credit summary plus a per-project breakdown of scheduled credit usage. The breakdown lists projects that currently reserve credits or have consumed one-off credits this calendar month. # Get Team Usage Source: https://docs.surfacd.com/api-reference/team/get-team-usage-1 /openapi.json get /api/v1/team/usage Returns the current team's credit summary plus a per-project breakdown of scheduled credit usage. The breakdown lists projects that currently reserve credits or have consumed one-off credits this calendar month. Operates on the token's default team; use the /teams/{teamUuid} variant to target a specific team. # Invite Team Member Source: https://docs.surfacd.com/api-reference/team/invite-team-member /openapi.json post /api/v1/teams/{teamUuid}/members Invites a member to the current team by email. The member starts with `pending` status until they accept. If the email isn't a registered user yet, an account is created for them. Owner cannot be assigned via the API. **Side effect:** the invitee is sent an invitation email. # Invite Team Member Source: https://docs.surfacd.com/api-reference/team/invite-team-member-1 /openapi.json post /api/v1/team/members Invites a member to the current team by email. The member starts with `pending` status until they accept. If the email isn't a registered user yet, an account is created for them. Owner cannot be assigned via the API. **Side effect:** the invitee is sent an invitation email. Operates on the token's default team; use the /teams/{teamUuid} variant to target a specific team. # List Team Members Source: https://docs.surfacd.com/api-reference/team/list-team-members /openapi.json get /api/v1/teams/{teamUuid}/members Returns all members of the current team, including those with a pending invitation. # List Team Members Source: https://docs.surfacd.com/api-reference/team/list-team-members-1 /openapi.json get /api/v1/team/members Returns all members of the current team, including those with a pending invitation. Operates on the token's default team; use the /teams/{teamUuid} variant to target a specific team. # List teams Source: https://docs.surfacd.com/api-reference/team/list-teams /openapi.json get /api/v1/teams # Remove Team Member Source: https://docs.surfacd.com/api-reference/team/remove-team-member /openapi.json delete /api/v1/teams/{teamUuid}/members/{email} Removes a member from the current team (revokes access or a pending invitation). The team owner cannot be removed. # Remove Team Member Source: https://docs.surfacd.com/api-reference/team/remove-team-member-1 /openapi.json delete /api/v1/team/members/{email} Removes a member from the current team (revokes access or a pending invitation). The team owner cannot be removed. Operates on the token's default team; use the /teams/{teamUuid} variant to target a specific team. # Show Team Member Source: https://docs.surfacd.com/api-reference/team/show-team-member /openapi.json get /api/v1/teams/{teamUuid}/members/{email} Returns a single team member by email. # Show Team Member Source: https://docs.surfacd.com/api-reference/team/show-team-member-1 /openapi.json get /api/v1/team/members/{email} Returns a single team member by email. Operates on the token's default team; use the /teams/{teamUuid} variant to target a specific team. # Update Member Role Source: https://docs.surfacd.com/api-reference/team/update-member-role /openapi.json patch /api/v1/teams/{teamUuid}/members/{email} Changes a member's role. The team owner's role cannot be changed, and Owner cannot be assigned (ownership is transferred through a separate flow). # Update Member Role Source: https://docs.surfacd.com/api-reference/team/update-member-role-1 /openapi.json patch /api/v1/team/members/{email} Changes a member's role. The team owner's role cannot be changed, and Owner cannot be assigned (ownership is transferred through a separate flow). Operates on the token's default team; use the /teams/{teamUuid} variant to target a specific team. # Changelog Source: https://docs.surfacd.com/changelog New features, improvements, and fixes in Surfacd, newest first. ## Members can now manage every part of a topic Members could already create, rename and assign topics, but deleting one needed an Admin. Members can now do all of it from **Manage Topics** or the Prompts page. Deleting a topic never deletes prompts: any prompts still in it move to Uncategorized. On the Prompts page, the selection toolbar now shows only the actions your role can use. If you can assign tags but not create them, the tag picker lists your project's existing tags without offering to create new ones. See [who can manage topics and tags](/docs/tags-organisation#who-can-manage-topics-and-tags) for the full breakdown by role. ## Deactivate prompts and keep their history Replacing a prompt used to mean deleting it, and deleting a prompt removed its history from your reports. Select prompts on the Prompts tab and click **Deactivate** to stop collecting them instead. Their topic, tags and past results stay in place, so you can see how a new prompt performs against the one it replaced. Deactivated prompts move to a new **Inactive** tab. From there you can reactivate a prompt to start collecting again, or delete it to remove it and its history from your reports. Active prompts are now deactivated before they can be deleted, so history is never removed by accident. If you deactivate every prompt in a project, collection pauses but your reports stay available. Collection resumes when you activate or add a prompt. Through the API and MCP server, set a prompt's `status` to `inactive` to deactivate it. The same rule applies there too: only inactive prompts can be deleted. ## Reputation dates now ignore deleted prompts When you delete a prompt, its responses drop out of your reports. Reputation's first-seen and last-seen dates now follow the same rule, on the Narratives and Themes lists, on each detail page and through the API. The **Latest** sort on Narratives uses the same dates. Related narratives on a narrative's detail page are also ranked using only responses from prompts you still track. ## Introducing Reputation Visibility tells you whether you appear in an AI answer. Reputation tells you what that answer means. You can win the mention and still lose the customer if ChatGPT, Gemini or Perplexity describe you poorly, and until now there was no way to see that at scale. Reputation analyses the responses Surfacd already collects and surfaces the recurring stories AI platforms tell about your brand. Narratives such as "praised for fast support" or "criticised for pricing" are grouped into themes, scored for sentiment and tracked over time, so you can see which stories are growing, which are fading, and which platforms are driving them. Competitor views show how the same themes play out for the brands you are measured against. Reputation is included on every plan. Open a project, click **Reputation** in the sidebar and enable it. Analysis starts with your next collection and there is nothing extra to configure. It is in beta and free to use while it is. ## Faster Source Analysis Source Analysis loads faster on projects with large source histories, including when opening a website's cited pages or exporting results. ## Download Rankings and Answers as a PDF or Markdown report Until now the only way to take a report out of the app was a spreadsheet of the underlying rows. Rankings and Answers now also download as a formatted report: the charts, tables and every active filter laid out as a document you can share. Choose **Export as PDF** for a branded, print-ready version, or **Export as Markdown** to paste the same report into an AI assistant and ask it to analyse or summarise your results. Each report includes a link that reopens the live page with the same filters applied. Both live in the **Export** menu on the page, alongside the existing spreadsheet download. ## Manage your topics in one place Topics group your prompts by theme, but until now you could only shape them while editing prompts. The new Manage Topics page, under Manage Tags in the project sidebar, shows every topic with its description, prompt count and creation date. From here you can create a topic ahead of assigning prompts, rename one, or update its description. Click a topic's prompt count to jump straight to its prompts. Deleting is safe by design: you are asked to confirm first, and prompts are never deleted with their topic. Any prompts still assigned move to Uncategorized, and the confirmation tells you how many prompts that affects. ## See the searches AI ran before it answered Open any answer from Mentions, the Dashboard or Reputation and a new Search Queries section sits beside the sources. It shows every web search the platform issued while building that answer, in the order it ran them, including operators such as `site:` and quoted phrases. Search-backed platforms often run several queries for one prompt. Seeing them tells you which questions the AI actually asked, which competitor sites it went looking at, and which regulations or terms it considered essential. Pages that rank for those searches are what the AI reads before it answers. Platforms that answer from their own knowledge run no searches, so the section stays hidden for them. The queries are also returned by the response detail API endpoint and the MCP response tool. ## In-app explanations for every metric Every report now explains itself. Hover a column heading like Visibility Score, Avg. Position or Citations, or the info icon beside a card, and a small panel tells you what the number means and how to read it — with a concrete example, such as "If AI gave 100 answers and 40 mentioned the brand, visibility is 40%". Bigger topics come with a short walkthrough video embedded right in the panel: creating a project, adding prompts, organising with topics, comparing visibility over time, tracking competitors, browsing answers, and the Analyse matrix. Where a docs page covers the topic in depth, the panel links straight to it. You will find these across the Dashboard, Rankings, Answers, Sources, Analyse, Reputation, Prompts, project settings and team settings. Reach out to [support@surfacd.com](mailto:support@surfacd.com) if you have any questions or feedback. ## Monitor your brand in Claude Claude is available as an early-access platform. It is not included in plans by default, so contact support to enable it for your team. Surfacd queries Claude with web search switched on, so responses reflect both the model's knowledge and the pages it cites. Claude's data is significantly more expensive to collect than most platforms, so each prompt check costs 30 credits rather than 1. The platform selector now shows a credit badge next to any platform that costs more than the standard rate, and the credit estimate for a project always reflects the real total. Claude is monitored through the model provider's API rather than the consumer app, and carries an **API** badge in the selector to make that clear. ## Filter API and MCP reports by tag or topic name Every reporting and reputation endpoint in the public API, and every report tool in the MCP server, now shares the same four filters: platforms, countries, tags and topics. Tags and topics accept either a UUID or a name. Names are matched case-insensitively within the project. Topics also accept `no_topic` to select prompts that have not been assigned a topic. Unknown values are rejected with a clear validation message rather than silently ignored, so a typo in a tag name will not quietly return unfiltered data. ## Grok now monitored through its API Grok is now monitored through the model provider's API, with an **API** badge in the platform selector. Because the way Grok is collected has changed, it has been deselected on every project that had it enabled. Any credits reserved for Grok on scheduled projects have been returned to your team. To keep monitoring Grok, open your project's platform settings and select it again. ## Colour-code your tags Pick a colour when you create a tag, whether that is from **Manage Tags** or by typing a new tag name while adding prompts. Ten colours are available: grey, blue, cyan, purple, pink, red, orange, yellow, green and teal. Colours appear wherever tags do: on prompt rows, in tag dropdowns, in the bulk-tagging tools and in report filter controls. Existing tags and tags created by CSV import show as grey until you choose a colour from **Manage Tags**. The public API returns a `color` field on every tag and accepts one when creating or updating a tag. ## Save and reopen your favourite report views Set up the filters you use most, then open the chevron next to the page name in the breadcrumb and choose **Save current view**. The dialog shows exactly which filters will be saved before you confirm. Saved views are listed in the same menu. Views for the current page appear first, and you can search across every page's views, rename them, or delete them. Dates can be saved three ways: leave them out so the view uses whatever range you have active, pin the exact dates, or choose a rolling range such as **Last 28 days** or **Previous month** that resolves to fresh dates each time you apply it. ## Report filters and views now live in the link Filters, selected tabs, sort orders, search terms and comparison sets on the reporting pages are now stored in the page address. Copy the link and whoever opens it sees the same view you do. Only the settings that differ from the page default are added, so links stay short. The browser back and forward buttons step through your filter changes, and reloading a page no longer resets it. This applies across Dashboard, Rankings, Mentions, Analyse, Sources, and the Reputation pages. ## Sentiment score alongside visibility in Rankings and the Dashboard Visibility tells you how often a brand appears. Sentiment tells you how it is described when it does. Both now sit side by side. In Brand Rankings, each brand has a **Sentiment Score** column with a colour band and a trend against the previous period. The Rankings CSV export includes the same values. On the Dashboard, the Industry Ranking card shows each brand's sentiment score, and the visibility chart has a **Visibility / Sentiment** toggle so you can chart either metric for every brand in the ranking. A period with no mentions has no sentiment to report, so the line bridges the gap rather than dropping to zero. The public API and MCP tools return the same `sentiment_score` and `previous_sentiment_score` fields on brand rankings and visibility-over-time responses. ## Follow what's new in Surfacd Improvements used to land quietly. Now every change that affects what you can see or do in Surfacd gets written up here as it goes live. Each entry explains what changed and why it matters, so you can tell at a glance whether something is worth a second look. Prefer updates to come to you? Subscribe to the RSS feed from the icon at the top of the changelog page and pipe it into Slack, email, or your reader of choice. # Adding Prompts Source: https://docs.surfacd.com/docs/adding-prompts Learn the different ways to add prompts to your project, from manual entry and file import to AI-generated suggestions. Surfacd offers three ways to add prompts to your project. Navigate to your project's **Prompts** tab and click **+ Add Prompts** to get started.