For Developers

CLI Reference

Every Senso CLI command and flag, grouped by what you use it for.

This is the full list of senso commands. To install the CLI and sign in, start with Senso CLI. Every command also prints its own help with senso <command> --help.

Global flags

These work on every command.

FlagWhat it does
--api-key <key>Use this key for one command, instead of the stored one
--base-url <url>Send requests to a different API address
--output <format>plain (default), json or table
--quietHide the banner and other non-essential output
--no-update-checkSkip the daily check for a newer version
-v, --versionPrint the CLI version
-h, --helpPrint help for any command
Use --output json in scripts and agents. It prints the API's response as JSON and nothing else.

Environment variables

VariableWhat it does
SENSO_API_KEYThe key to use, instead of the stored one
SENSO_BASE_URLA different API address, like --base-url
SENSO_CONFIG_DIRWhere the CLI stores its config, instead of the default folder
SENSO_DEBUG=1Print every request and its status, with the key hidden
SENSO_GAP_SIGNALS=offKeep searches out of the gap report, like --no-gap-signals
SENSO_NO_UPDATE_CHECK=1Skip the daily version check, like --no-update-check
The CLI uses the key from --api-key first, then SENSO_API_KEY, then the stored config. senso whoami shows which one it used.

Exit codes

CodeMeaning
0The command did what you asked
1Senso refused the request. The message says why
2The command was wrong: an unknown command, a missing argument or a bad flag
3No key, or the key was refused
4What you asked for does not exist
5The CLI could not reach Senso

Authentication

Sign in, sign out, and check which organization you are using.

CommandWhat it does
senso loginSign this device in. Opens an approval page in your browser; an admin approves, and the CLI stores the key it gets. Does nothing if your stored key still works.
senso logoutForget the stored key. A key that senso login created is revoked first; a key you supplied is only forgotten.
senso whoamiShow the organization you are signed in to, the key prefix, and where the key came from.
CommandFlagWhat it does
login--completeFinish a login started earlier: wait for the browser approval and store the key.
login--interactivePaste an existing API key at a prompt instead. Needs a terminal.
login--device-name <name>How this device is labeled on the approval page.
login--no-browserDo not try to open the approval page automatically.

Organization

Your organization's profile, credits and industry.

senso org

CommandWhat it does
senso org getShow the organization profile: name, slug, tier, websites, locations, models and schedule.
senso org updateUpdate organization details. Only the fields you pass change, but websites and locations replace their whole list.
senso org set-industry <industryId>Set the industry your organization belongs to, from senso industries list. Replaces any previous choice.
senso org set-runsTurn every scheduled prompt run and content-generation run on or off.
CommandFlagWhat it does
org update--data <json>JSON with any of name, slug, logo_url, websites (list of {"url"}), locations (list of {"country_code", "region_name"}).
org set-runs--enabled <bool>Set to true or false

senso credits

CommandWhat it does
senso credits balanceShow the credits available and any spend limit.
senso credits historyShow credit spend per day over a trailing window, oldest first, ending today.
CommandFlagWhat it does
credits history--days <n>Length of the trailing window in days, 1-365 (default 30)

senso industries

CommandWhat it does
senso industries listList the public industry catalog, with each industry's prompt, model and location counts.
senso industries answers <industry>Read the newest answer for each of your industry's prompts, per model and location, and whether it named your brand.
senso industries prompts <industry>List the prompts an industry runs. Their IDs are what import-prompts and generate industry-draft take.
senso industries brands <industry>Rank the brands named in an industry's answers over a window, by mentions.
senso industries brand <industry> <brandName>Everything about one brand in an industry, matched by name.
senso industries brand-by-id <industry> <brandId>The same as brand, looked up by the brand_id it returns.
senso industries domain <industry> <domain>How often a domain, or a full URL with --url, was cited in an industry's answers.
senso industries import-prompts <industry>Copy prompts from your own industry into your organization, with their run history. Prompts you already have are skipped. This activates the organization and starts its scheduled runs.
CommandFlagWhat it does
industries list--search <q>Case-insensitive substring match against name or slug
industries list--limit <n>Page size, 1-100 (default 50)
industries list--offset <n>Number of industries to skip (default 0)
industries list--sort <order>Sort order: name_asc, name_desc, created_asc, created_desc (default name_asc)
industries list--liveOnly industries actively running — at least one model enabled and one active prompt
industries answers--mentioned <bool>Only answers that did (true) or did not (false) name your brand
industries answers--models <list>Comma-separated model filter: gpt-4.1, chatgpt, perplexity, aioverview, gemini, linkup, claude-sonnet-4-6, grok
industries answers--location <code>One location, e.g. US or US/California (default every location)
industries answers--prompt-ids <list>Comma-separated prompt ids to restrict to
industries answers--since <date>Only answers collected on or after this day, YYYY-MM-DD
industries answers--include-emptyInclude answers where the model returned nothing
industries answers--limit <n>Page size, 1-100 (default 25)
industries answers--offset <n>Number of answers to skip (default 0)
industries prompts--imported <bool>Keep only the prompts you already have (true) or do not have yet (false). Omit for all.
industries prompts--limit <n>Page size, 1-100 (default 50)
industries prompts--offset <n>Number of prompts to skip (default 0)
industries brands--from <date>Start of the window, YYYY-MM-DD (default 30 days ago)
industries brands--to <date>End of the window, YYYY-MM-DD (default today)
industries brands--models <list>Comma-separated model filter
industries brands--location <code>One location, as the industry's runs record it: a country code such as US, or a country/region pair such as US/California
industries brands--limit <n>Page size, 1-100 (default 100)
industries brands--offset <n>Number of brands to skip (default 0)
industries brands--no-canonicalizeDo not merge spelling variants — raw per-spelling rows
industries brands--rollup <mode>Set to parent to fold sub-brands into their parent company
industries brands--entity-type <list>Comma-separated types to keep: brand, regulator, publisher, government, generic_term, product_model, forum_social
industries brand--from <date>Start of the window, YYYY-MM-DD (default 30 days ago)
industries brand--to <date>End of the window, YYYY-MM-DD (default today)
industries brand--models <list>Comma-separated model filter
industries brand--location <code>One location, as the industry's runs record it: a country code such as US, or a country/region pair such as US/California
industries brand-by-id--from <date>Start of the window, YYYY-MM-DD (default 30 days ago)
industries brand-by-id--to <date>End of the window, YYYY-MM-DD (default today)
industries brand-by-id--models <list>Comma-separated model filter
industries brand-by-id--location <code>One location, as the industry's runs record it: a country code such as US, or a country/region pair such as US/California
industries domain--from <date>Start of the window, YYYY-MM-DD (default 30 days ago)
industries domain--to <date>End of the window, YYYY-MM-DD (default today)
industries domain--models <list>Comma-separated model filter
industries domain--location <code>One location, as the industry's runs record it: a country code such as US, or a country/region pair such as US/California
industries domain--url <url>Look up this full URL instead of the bare domain
industries import-prompts--prompt-ids <ids>Comma-separated industry prompt ids, 1-100, no duplicates (from senso industries prompts)

senso history-imports

CommandWhat it does
senso history-imports listList the 50 most recent history-import jobs, newest first.
senso history-imports get <importId>Show one history-import job, by the ID industries import-prompts returns.

senso run-config

CommandWhat it does
senso run-config modelsShow the AI models prompts are run against.
senso run-config set-modelsReplace the AI models prompts are run against.
senso run-config model-optionsList the model names set-models accepts.
senso run-config scheduler-modelsShow the provider and model pairs the scheduler runs.
senso run-config set-scheduler-modelsReplace the scheduler's provider and model pairs.
senso run-config scheduleShow the days of the week prompts run (0 is Sunday).
senso run-config set-scheduleSet the days of the week prompts run.
CommandFlagWhat it does
run-config set-models--data <json>JSON {"models": [...]}, at least one name from run-config model-options.
run-config set-scheduler-models--data <json>JSON {"models": [...]} of provider/model pairs.
run-config set-schedule--data <json>JSON {"schedule": [...]}, days 0 (Sunday) to 6 (Saturday).

Members and access

People, roles and API keys.

senso members

CommandWhat it does
senso members listList organization members, with their names, emails and roles.
CommandFlagWhat it does
members list--limit <n>Maximum members to return (max: 1000)
members list--offset <n>Number of members to skip (for pagination)
members list--search <query>Filter by name or email
members list--sort <order>Sort order: name_asc, name_desc, email_asc, email_desc, created_asc, created_desc

senso users

CommandWhat it does
senso users listList the users in the organization, with their user IDs and roles.
senso users addAdd an existing Senso user to the organization by user ID and role ID.
senso users get <userId>Show one user's role and membership.
senso users update <userId>Change a user's role in the organization.
senso users remove <userId>Remove a user from the organization. Their Senso account is not deleted.
senso users set-current <userId>Make this organization the user's active organization.
senso users inviteInvite someone new by email. Creates their account and adds them with the role you choose.
senso users invite-existingAdd an existing Senso user to the organization by email.
CommandFlagWhat it does
users list--limit <n>Maximum number of users to return
users list--offset <n>Number of users to skip (for pagination)
users add--data <json>JSON with user_id, role_id and optional is_current.
users update--data <json>JSON with role_id (required) and optional is_current.
users invite--email <email>User's email address
users invite--given-name <name>First name
users invite--family-name <name>Last name
users invite--role-id <uuid>Role to assign — resolve with senso roles list
users invite--is-currentMake this org the new user's current org
users invite-existing--email <email>Email of an existing Senso user
users invite-existing--role-id <uuid>Role to assign — resolve with senso roles list
users invite-existing--is-currentMake this org the user's current org

senso roles

CommandWhat it does
senso roles listList every role in the organization: the built-in admin, collaborator and viewer roles, and any custom ones.

senso permissions

CommandWhat it does
senso permissions listList every permission key, with its name, description and category.

senso api-keys

CommandWhat it does
senso api-keys listList the organization's API keys, with name, expiry and whether each is restricted.
senso api-keys get <keyId>Show one API key's details. The key itself is never shown again after it is created.
senso api-keys kb-permissions-get <keyId>Show the knowledge base restrictions on a key. An empty list means full access.
CommandFlagWhat it does
api-keys list--limit <n>Maximum number of keys to return
api-keys list--offset <n>Number of keys to skip (for pagination)

Knowledge base

Add, organize and search the documents Senso answers from.

senso kb

CommandWhat it does
senso kb rootShow the knowledge base's root folder.
senso kb statsCount the documents and folders in the knowledge base.
senso kb my-filesList the files and folders at the top of the knowledge base.
senso kb findFind files and folders by name.
senso kb sync-statusShow whether recent moves and deletes are still being applied. Not an ingestion signal: use kb get for that.
senso kb get <id>Show a file or folder. For a document, content.processing_status says whether it is ready to search.
senso kb children <id>List what is inside a folder.
senso kb ancestors <id>List the folders above a file or folder, from the root down.
senso kb get-content <id>Show a document's text and metadata, or an earlier version with --rev.
senso kb download-url <id>Get a temporary download link for an uploaded file, or an earlier version with --rev.
senso kb create-folderCreate a folder, at the top level or inside another folder.
senso kb rename <id>Rename a file or folder.
senso kb move <id>Move a file or folder into another folder.
senso kb delete <id>Delete a file or folder.
senso kb bulk-delete <nodeIds...>Delete up to 100 files and folders at once. Folders take everything inside them. If any one cannot be deleted, none are.
senso kb create-rawAdd a document from text or markdown. Senso tags it automatically once it is processed.
senso kb update-raw <id>Replace a text document's title and text, as a new version.
senso kb patch-raw <id>Update a text document's text, and optionally its title and summary, as a new version.
senso kb upload <files...>Upload up to 10 files. Each is processed in the background; check with kb get before searching it.
senso kb update-file <id> <file>Replace an uploaded file with a new version.
senso kb tags list <id>List the tags on a file or folder.
senso kb tags set <id>Replace all the tags on a file or folder. Names that do not exist yet are created.
senso kb tags add <id>Add one tag to a file or folder. A new name is created.
senso kb tags remove <id>Remove one tag from a file or folder.
senso kb permissions list <id>List who has access to a file or folder, with each grant's ID.
senso kb permissions add <id>Give a user or group viewer or editor access to a file or folder.
senso kb permissions update <id> <permissionId>Change a grant's role to viewer or editor.
senso kb permissions remove <id> <permissionId>Remove a grant.
CommandFlagWhat it does
kb my-files--limit <n>Items per page, 1-50 (the API caps higher values at 50) (default 50)
kb my-files--offset <n>Pagination offset (default 0)
kb my-files--type <type>Only nodes of this type: folder, content
kb my-files--status <status>Only documents in this ingestion state: pending, processing, complete, failed. Ignored with --type folder
kb my-files--role <role>Only nodes where the caller holds this role: editor, viewer. Ignored for org-admin keys, which already reach everything
kb my-files--sort-by <field>Sort by: name, updated_at, created_at, type, status, role
kb my-files--sort-order <dir>Sort direction: asc, desc
kb my-files--tag-ids <ids>Comma-separated tag IDs; only nodes carrying at least one of them
kb find--query <q>Name search query
kb find--limit <n>Items per page, 1-50 (the API caps higher values at 50) (default 20)
kb find--offset <n>Pagination offset (default 0)
kb find--type <type>Only nodes of this type: folder, content
kb find--status <status>Only documents in this ingestion state: pending, processing, complete, failed. Ignored with --type folder
kb find--role <role>Only nodes where the caller holds this role: editor, viewer. Ignored for org-admin keys, which already reach everything
kb find--sort-by <field>Sort by: name, updated_at, created_at, type, status, role
kb find--sort-order <dir>Sort direction: asc, desc
kb find--tag-ids <ids>Comma-separated tag IDs; only nodes carrying at least one of them
kb children--limit <n>Items per page, 1-50 (the API caps higher values at 50) (default 50)
kb children--offset <n>Pagination offset (default 0)
kb children--type <type>Only nodes of this type: folder, content
kb children--status <status>Only documents in this ingestion state: pending, processing, complete, failed. Ignored with --type folder
kb children--role <role>Only nodes where the caller holds this role: editor, viewer. Ignored for org-admin keys, which already reach everything
kb children--sort-by <field>Sort by: name, updated_at, created_at, type, status, role
kb children--sort-order <dir>Sort direction: asc, desc
kb children--tag-ids <ids>Comma-separated tag IDs; only nodes carrying at least one of them
kb get-content--rev <n>Retrieve a specific stored version of this content, by version number
kb download-url--rev <n>Download a specific stored version of this file, by version number
kb create-folder--name <name>Folder name
kb create-folder--parent-id <id>Parent folder node ID (omit to create at root)
kb rename--name <name>New name
kb move--parent-id <parentId>Target parent folder node ID
kb create-raw--data <json>JSON with text (required), title, summary, kb_folder_node_id.
kb update-raw--data <json>JSON with title and text (both required), summary, tag_ids. tag_ids replaces all tags.
kb patch-raw--data <json>JSON with text, title, summary, tag_ids. tag_ids replaces all tags.
kb upload--folder-id <id>Parent folder node ID to place files in (omit for root)
kb tags set--names <list>Comma-separated tag names (created if missing)
kb tags set--ids <list>Comma-separated existing tag UUIDs
kb tags add--name <name>Tag name (created if missing)
kb tags add--id <tagId>Existing tag UUID
kb tags remove--name <name>Tag name to detach
kb tags remove--id <tagId>Existing tag UUID to detach
kb permissions add--grantee-type <type>Who the grant is for: user, group
kb permissions add--grantee-id <id>The user ID or group ID to grant access to
kb permissions add--role <role>Access level to grant: viewer, editor
kb permissions update--role <role>The new role: viewer, editor

senso ingest

CommandWhat it does
senso ingest upload <files...>Upload up to 10 files. The same as kb upload.
senso ingest reprocess <nodeId> <file>Replace a document's file with a new one and process it again.
CommandFlagWhat it does
ingest upload--folder-id <id>Destination folder ID (skip interactive prompt)

senso website-import

CommandWhat it does
senso website-import startImport pages from your organization's website into the knowledge base, and wait until it finishes. The site is the one on file in senso org get.
senso website-import statusShow the import in progress and the last one that finished.
CommandFlagWhat it does
website-import start--no-waitReturn the accepted run immediately instead of polling until the import finishes.

CommandWhat it does
senso search <query>Ask a question. Returns an answer written from your knowledge base and the passages it used.
senso search context <query>Return the matching passages only, with no answer, to feed into your own model.
senso search content <query>Return the matching documents only, one row each, with the IDs to read them or narrow a later search.
senso search full <query>The same as senso search.
senso search stream <query>Stream the answer as it is written, then the passages it used.
CommandFlagWhat it does
search--max-results <n>Maximum number of results (max: 20) (default 5)
search--content-ids <ids...>Restrict search to specific content item IDs (space-separated UUIDs)
search--require-scoped-idsOnly return results from the specified --content-ids (omit to allow fallback to all content)
search--no-gap-signalsKeep this search out of the organization's gap report (sends X-Senso-Signals: off). Use it for probes, tests and monitors — a real question that finds nothing should be left eligible. The search still runs, costs credits and is recorded. Set SENSO_GAP_SIGNALS=off to do this for every search.
search context--max-results <n>Maximum results (max: 20) (default 5)
search context--content-ids <ids...>Restrict search to specific content item IDs (space-separated UUIDs)
search context--require-scoped-idsOnly return results from the specified --content-ids
search context--no-gap-signalsKeep this search out of the organization's gap report (sends X-Senso-Signals: off). Use it for probes, tests and monitors — a real question that finds nothing should be left eligible. The search still runs, costs credits and is recorded. Set SENSO_GAP_SIGNALS=off to do this for every search.
search content--max-results <n>Maximum results (max: 20) (default 5)
search content--content-ids <ids...>Restrict search to specific content item IDs (space-separated UUIDs)
search content--require-scoped-idsOnly return results from the specified --content-ids
search content--no-gap-signalsKeep this search out of the organization's gap report (sends X-Senso-Signals: off). Use it for probes, tests and monitors — a real question that finds nothing should be left eligible. The search still runs, costs credits and is recorded. Set SENSO_GAP_SIGNALS=off to do this for every search.
search full--max-results <n>Maximum results (max: 20) (default 5)
search full--content-ids <ids...>Restrict search to specific content item IDs (space-separated UUIDs)
search full--require-scoped-idsOnly return results from the specified --content-ids
search full--no-gap-signalsKeep this search out of the organization's gap report (sends X-Senso-Signals: off). Use it for probes, tests and monitors — a real question that finds nothing should be left eligible. The search still runs, costs credits and is recorded. Set SENSO_GAP_SIGNALS=off to do this for every search.
search stream--max-results <n>Maximum results (max: 20) (default 5)
search stream--content-ids <ids...>Restrict search to specific content item IDs (space-separated UUIDs)
search stream--require-scoped-idsOnly return results from the specified --content-ids
search stream--no-gap-signalsKeep this search out of the organization's gap report (sends X-Senso-Signals: off). Use it for probes, tests and monitors — a real question that finds nothing should be left eligible. The search still runs, costs credits and is recorded. Set SENSO_GAP_SIGNALS=off to do this for every search.

senso tags

CommandWhat it does
senso tags listList every tag in the organization.
senso tags createCreate a tag. Names are unique, ignoring case.
senso tags get <id>Show a tag and how many prompts and documents use it.
senso tags update <id>Rename a tag. Everything already tagged keeps it.
senso tags delete <id>Delete a tag and remove it from everything it was on.
CommandFlagWhat it does
tags list--countsInclude prompt/content usage counts
tags create--name <name>Tag name
tags update--name <name>New tag name

Brand and context

What every piece of generated content inherits.

senso brand-kit

CommandWhat it does
senso brand-kit getShow the brand kit: name, domain, description, voice and tone, author persona and writing rules.
senso brand-kit setReplace the whole brand kit. Any field you leave out is removed.
senso brand-kit patchChange some brand kit fields and keep the rest. global_writing_rules is replaced as a whole.
CommandFlagWhat it does
brand-kit set--data <json>JSON {"guidelines": {...}} with any of brand_name, brand_domain, brand_description, voice_and_tone, author_persona, global_writing_rules.
brand-kit patch--data <json>JSON {"guidelines": {...}} with at least one of the brand kit fields.

senso content-types

CommandWhat it does
senso content-types listList the organization's content types.
senso content-types createCreate a content type from a name and a markdown template.
senso content-types get <id>Show a content type and its configuration.
senso content-types update <id>Replace a content type's name and configuration.
senso content-types patch <id>Change some of a content type's fields and keep the rest.
senso content-types delete <id>Delete a content type.
CommandFlagWhat it does
content-types list--limit <n>Maximum number of content types to return (default 50)
content-types list--offset <n>Number of items to skip (for pagination)
content-types create--data <json>JSON with name and config: template (markdown), cta_text, cta_destination, writing_rules.
content-types update--data <json>JSON with name and config, both required.
content-types patch--data <json>JSON with the fields to change.

senso product-lines

CommandWhat it does
senso product-lines listList the organization's product lines.
senso product-lines createCreate a product line, with any details you want to attach.
senso product-lines get <id>Show a product line.
senso product-lines update <id>Replace a product line's name and details.
senso product-lines patch <id>Change some of a product line's fields and keep the rest.
senso product-lines delete <id>Delete a product line.
CommandFlagWhat it does
product-lines list--limit <n>Maximum items to return (default 50)
product-lines list--offset <n>Number of items to skip (for pagination)
product-lines create--data <json>JSON with name and details (any object).
product-lines update--data <json>JSON with name and details, both required.
product-lines patch--data <json>JSON with the fields to change.

Prompts and tracking

The questions Senso asks AI models, and who and what to watch in the answers.

senso prompts

CommandWhat it does
senso prompts listList the organization's prompts: the questions Senso asks AI models on your behalf.
senso prompts createCreate a prompt, with a funnel stage: awareness, consideration, evaluation or decision.
senso prompts get <promptId>Show a prompt and its full run history.
senso prompts delete <promptId>Delete a prompt and its run history.
senso prompts tags list <promptId>List the tags on a prompt.
senso prompts tags set <promptId>Replace all the tags on a prompt. Names that do not exist yet are created.
senso prompts tags add <promptId>Add one tag to a prompt. A new name is created.
senso prompts tags remove <promptId>Remove one tag from a prompt.
CommandFlagWhat it does
prompts list--limit <n>Maximum prompts to return (max: 100)
prompts list--offset <n>Number of prompts to skip (for pagination)
prompts list--search <query>Filter prompts by question text
prompts list--sort <order>Sort order: created_desc, created_asc, text_asc, text_desc, type_asc, type_desc
prompts create--data <json>JSON with question_text and type.
prompts tags set--names <list>Comma-separated tag names (created if missing)
prompts tags set--ids <list>Comma-separated existing tag UUIDs
prompts tags add--name <name>Tag name (created if missing)
prompts tags add--id <tagId>Existing tag UUID
prompts tags remove--name <name>Tag name to detach
prompts tags remove--id <tagId>Existing tag UUID to detach

senso questions

CommandWhat it does
senso questions listList the organization's questions.
senso questions createCreate a question, with a funnel stage and optional tags.
senso questions patch <questionId>Change a question's funnel stage or tags.
senso questions delete <questionId>Delete a question.
CommandFlagWhat it does
questions list--type <type>Filter by question type: organization, network (default organization)
questions create--data <json>JSON with question_text, type and tag_ids.
questions patch--data <json>JSON with type, tag_ids, or both.

senso competitors

CommandWhat it does
senso competitors listList the competitors you track.
senso competitors addTrack one competitor.
senso competitors batch-addTrack up to 50 competitors at once, for example the ones competitors suggest returns.
senso competitors suggestSuggest competitors, from your website and recent prompt runs.
senso competitors update <competitorId>Change a tracked competitor.
senso competitors delete <competitorId>Stop tracking a competitor.
CommandFlagWhat it does
competitors add--name <name>Competitor brand name
competitors add--url <url>Competitor website URL
competitors batch-add--data <json>JSON {"items": [...]}, each with name, url, source, and optionally rationale and confidence.
competitors update--name <name>Competitor brand name
competitors update--url <url>Competitor website URL

senso tracked-sources

CommandWhat it does
senso tracked-sources listList the rules that classify cited URLs as Owned, Tracked or External.
senso tracked-sources addAdd a rule. New rules start active. A domain rule matches the whole registrable domain, so blog.example.com is stored as example.com.
senso tracked-sources update <sourceId>Replace a rule. Pattern, match type and tier are required.
senso tracked-sources delete <sourceId>Remove a rule.
CommandFlagWhat it does
tracked-sources add--pattern <pattern>Value to match cited URLs against, interpreted per --match-type
tracked-sources add--match-type <type>Match strategy: domain, host, path_prefix, exact_url
tracked-sources add--tier <tier>Classification tier: primary (Owned), tracked, secondary (External)
tracked-sources add--category <category>Optional sub-category (only meaningful for the 'tracked' tier): affiliated_domain, published_content, social, press
tracked-sources add--label <label>Optional human-readable label
tracked-sources add--priority <n>Optional ordering priority (integer)
tracked-sources update--pattern <pattern>Value to match cited URLs against, interpreted per --match-type
tracked-sources update--match-type <type>Match strategy: domain, host, path_prefix, exact_url
tracked-sources update--tier <tier>Classification tier: primary (Owned), tracked, secondary (External)
tracked-sources update--category <category>Optional sub-category (only meaningful for the 'tracked' tier): affiliated_domain, published_content, social, press
tracked-sources update--label <label>Optional human-readable label
tracked-sources update--priority <n>Optional ordering priority (integer)
tracked-sources update--activeMark the rule active
tracked-sources update--no-activeMark the rule inactive

Evaluate

Check text against your sources, find gaps, and read how AI answers about you.

senso evals

CommandWhat it does
senso evals evaluatorsList the evaluators you can run, with their current versions.
senso evals textCheck text you supply, against your knowledge base (kb_accuracy) or your brand kit (brand_alignment).
senso evals runsList eval runs, newest first, with each score and its claim counts.
senso evals get <runId>Show one eval run in full: every claim, its verdict and the evidence.
senso evals claimsList the individual claims evaluators have judged, across runs or for one.
senso evals content <contentId>Check a saved text document or generated article. Uploaded files cannot be checked.
CommandFlagWhat it does
evals text--evaluator <key>Which check to run: kb_accuracy, brand_alignment (default kb_accuracy)
evals text--evaluator-version <v>Pin an evaluator version (see senso evals evaluators)
evals text--judge-model <model>Override the model that judges the text
evals text--label <text>Free-form tag stored on the run, for finding it later
evals text--idempotency-key <key>Makes the trigger safe to retry — the same key returns the original run
evals text--waitPoll until the run finishes instead of returning a handle straight away
evals text--text <text>The text to judge
evals text--text-file <path>Read the text to judge from a file
evals text--title <title>Optional title, stored with the run's subject (max 255 chars)
evals runs--from <instant>Only items created at or after this RFC 3339 instant, e.g. 2026-09-01T00:00:00Z
evals runs--to <instant>Only items created before this RFC 3339 instant (exclusive)
evals runs--evaluator <key>Filter by evaluator key (see senso evals evaluators)
evals runs--subject-type <type>Filter by subject type, e.g. inline or content
evals runs--limit <n>Page size, 1-100 (default 25)
evals runs--offset <n>Number of items to skip (default 0)
evals claims--from <instant>Only items created at or after this RFC 3339 instant, e.g. 2026-09-01T00:00:00Z
evals claims--to <instant>Only items created before this RFC 3339 instant (exclusive)
evals claims--evaluator <key>Filter by evaluator key (see senso evals evaluators)
evals claims--subject-type <type>Filter by subject type, e.g. inline or content
evals claims--limit <n>Page size, 1-100 (default 25)
evals claims--offset <n>Number of items to skip (default 0)
evals claims--run-id <id>Only claims from this eval run
evals content--evaluator <key>Which check to run: kb_accuracy, brand_alignment (default kb_accuracy)
evals content--evaluator-version <v>Pin an evaluator version (see senso evals evaluators)
evals content--judge-model <model>Override the model that judges the text
evals content--label <text>Free-form tag stored on the run, for finding it later
evals content--idempotency-key <key>Makes the trigger safe to retry — the same key returns the original run
evals content--waitPoll until the run finishes instead of returning a handle straight away

senso gaps

CommandWhat it does
senso gaps listList gaps, most severe first. By default only open, reopened and addressed gaps.
senso gaps get <gapId>Show a gap in full: every sighting, every decision recorded against it, and the evidence.
senso gaps resolve <gapId>Record what was done about a gap. The type you record decides its new status.
senso gaps answer <gapId>Record that you wrote content to fix a gap. The gap becomes addressed.
senso gaps dismiss <gapId>Close a gap that does not need fixing.
senso gaps undo <gapId> <resolutionId>Take back one recorded decision. The gap's status is worked out again from the rest.
CommandFlagWhat it does
gaps list--status <status>Filter by status, repeatable: weak, open, reopened, addressed, resolved, dismissed, dormant, or all (default open, reopened, addressed)
gaps list--problem <problem>Filter by problem, repeatable: conflict, not_found, no_source, flagged
gaps list--origin <origin>Filter by origin, repeatable: claim, unanswered_question, documents_didnt_answer, flagged_answer, api_unanswered_question. api_unanswered_question is a search through the API, MCP server or CLI that found nothing
gaps list--surface <surface>Filter by where it was seen, repeatable: search_turn, content, question_run, api_search
gaps list--kind <kind>Filter by kind, repeatable: missing, conflict, kb_conflict, flagged
gaps list--tag <tagId>Filter by topic tag id, repeatable (see senso tags list)
gaps list--search <text>Only gaps whose text contains this
gaps list--sort <order>severity, recent, demand (default severity)
gaps list--limit <n>Page size, 1-100 (default 50)
gaps list--offset <n>Number of gaps to skip (default 0)
gaps resolve--type <type>One of: answered, content_added, content_updated, ruled_kb_correct, ruled_claim_correct, ruled_document, dismissed, not_relevant, we_dont_do_this, source_irrelevant
gaps resolve--produced-content-id <id>The content that was written — required for answered, content_added and content_updated
gaps resolve--authority-content-id <id>The document the decision is about — required for ruled_claim_correct, ruled_document and source_irrelevant
gaps resolve--ruling-side <side>Which side a ruling found correct: kb, claim, document
gaps resolve--notes <text>Why, in a sentence — shown on the gap's timeline
gaps answer--content-id <id>The content that answers it: the id from senso kb create-raw, or a content_id from senso kb get
gaps answer--updatedAn existing document was improved, rather than a new one written
gaps answer--notes <text>What was written, in a sentence
gaps dismiss--notes <text>Why it does not matter, in a sentence

senso analytics

CommandWhat it does
senso analytics summaryEvery headline metric for a window, with the previous window and the change between them.
senso analytics mentionsMentions, share of voice (your mentions ÷ mentions of every brand), rank and sentiment over time.
senso analytics citationsCitation Rate for each tier (÷ D, answers with at least one citation) and Citation Share for each tier (÷ S, citation instances), over time.
senso analytics domainsEvery cited domain, ranked, with its Citation Coverage (÷ D) and Citation Share (÷ S).
senso analytics pagesEvery cited URL, with its Citation Coverage (÷ D), Citation Share (÷ S) and the prompts behind it.
senso analytics promptsPerformance per prompt. Sort by mention_rate ascending to find where you are not mentioned.
senso analytics prompt <promptId>One prompt's metric history, plus the latest full answer from every model and location.
senso analytics answersThe newest answer for each prompt, model and location, with its citations and competitor mentions.
senso analytics glossaryThe definition, denominator and pitfall of every metric these commands return.
senso analytics filtersThe models, locations, prompt types, tags and competitors that have data, so you can filter without guessing.
CommandFlagWhat it does
analytics summary--from <date>Window start, YYYY-MM-DD (default 30 days ending at the most recent day with data)
analytics summary--to <date>Window end, YYYY-MM-DD (max window: 365 days)
analytics summary--models <list>Comma-separated model filter — see 'senso analytics filters'
analytics summary--location <list>Comma-separated location filter, case-sensitive (e.g. US, US/California)
analytics summary--prompt-type <type>Funnel stage: awareness, consideration, evaluation, decision
analytics summary--tag <tag>Restrict to prompts carrying this tag
analytics mentions--from <date>Window start, YYYY-MM-DD (default 30 days ending at the most recent day with data)
analytics mentions--to <date>Window end, YYYY-MM-DD (max window: 365 days)
analytics mentions--models <list>Comma-separated model filter — see 'senso analytics filters'
analytics mentions--location <list>Comma-separated location filter, case-sensitive (e.g. US, US/California)
analytics mentions--prompt-type <type>Funnel stage: awareness, consideration, evaluation, decision
analytics mentions--tag <tag>Restrict to prompts carrying this tag
analytics mentions--group-by <bucket>Time bucket: day, week (default day)
analytics citations--from <date>Window start, YYYY-MM-DD (default 30 days ending at the most recent day with data)
analytics citations--to <date>Window end, YYYY-MM-DD (max window: 365 days)
analytics citations--models <list>Comma-separated model filter — see 'senso analytics filters'
analytics citations--location <list>Comma-separated location filter, case-sensitive (e.g. US, US/California)
analytics citations--prompt-type <type>Funnel stage: awareness, consideration, evaluation, decision
analytics citations--tag <tag>Restrict to prompts carrying this tag
analytics citations--group-by <bucket>Time bucket: day, week (default day)
analytics domains--from <date>Window start, YYYY-MM-DD (default 30 days ending at the most recent day with data)
analytics domains--to <date>Window end, YYYY-MM-DD (max window: 365 days)
analytics domains--models <list>Comma-separated model filter — see 'senso analytics filters'
analytics domains--location <list>Comma-separated location filter, case-sensitive (e.g. US, US/California)
analytics domains--prompt-type <type>Funnel stage: awareness, consideration, evaluation, decision
analytics domains--tier <tier>Filter by tier: primary, tracked, secondary
analytics domains--domain-contains <text>Substring filter on the domain
analytics domains--sort <field>Sort by: citations, coverage (default citations)
analytics domains--limit <n>Maximum rows to return (default 50, max: 100)
analytics domains--offset <n>Rows to skip (for pagination)
analytics pages--from <date>Window start, YYYY-MM-DD (default 30 days ending at the most recent day with data)
analytics pages--to <date>Window end, YYYY-MM-DD (max window: 365 days)
analytics pages--models <list>Comma-separated model filter — see 'senso analytics filters'
analytics pages--location <list>Comma-separated location filter, case-sensitive (e.g. US, US/California)
analytics pages--prompt-type <type>Funnel stage: awareness, consideration, evaluation, decision
analytics pages--tier <tier>Filter by tier: primary, tracked, secondary
analytics pages--domain <domain>Restrict to one exact domain
analytics pages--domain-contains <text>Substring filter on the domain
analytics pages--url-contains <text>Substring filter on the URL
analytics pages--sort <field>Sort by: citations, coverage (default citations)
analytics pages--limit <n>Maximum rows to return (default 50, max: 100)
analytics pages--offset <n>Rows to skip (for pagination)
analytics prompts--from <date>Window start, YYYY-MM-DD (default 30 days ending at the most recent day with data)
analytics prompts--to <date>Window end, YYYY-MM-DD (max window: 365 days)
analytics prompts--models <list>Comma-separated model filter — see 'senso analytics filters'
analytics prompts--location <list>Comma-separated location filter, case-sensitive (e.g. US, US/California)
analytics prompts--prompt-type <type>Funnel stage: awareness, consideration, evaluation, decision
analytics prompts--tag <tag>Restrict to prompts carrying this tag
analytics prompts--search <query>Filter prompts by question text
analytics prompts--sort <field>Sort by: mention_rate, share_of_voice, citations, answered, text (default mention_rate)
analytics prompts--order <dir>Sort direction: asc, desc (default desc)
analytics prompts--limit <n>Maximum rows to return (default 50, max: 100)
analytics prompts--offset <n>Rows to skip (for pagination)
analytics prompt--from <date>Window start, YYYY-MM-DD
analytics prompt--to <date>Window end, YYYY-MM-DD
analytics prompt--models <list>Comma-separated model filter
analytics prompt--location <list>Comma-separated location filter, case-sensitive
analytics prompt--no-include-answersOmit the latest answer bodies (included by default)
analytics answers--from <date>Answers collected on or after this date, YYYY-MM-DD (hides rows, never reveals older answers)
analytics answers--to <date>Answers collected on or before this date, YYYY-MM-DD (hides rows, never reveals older answers)
analytics answers--models <list>Comma-separated model filter
analytics answers--location <list>Comma-separated location filter, case-sensitive
analytics answers--prompt-type <type>Funnel stage: awareness, consideration, evaluation, decision
analytics answers--tag <tag>Restrict to prompts carrying this tag
analytics answers--mentioned <bool>Only answers that did (true) or did not (false) name your brand
analytics answers--cited <bool>Only answers that did (true) or did not (false) cite anything
analytics answers--citation-tier <tier>Only answers citing this tier: primary, tracked, secondary
analytics answers--limit <n>Maximum rows to return (default 25, max: 100)
analytics answers--offset <n>Rows to skip (for pagination)

Generate

Write content from your knowledge base and manage it through review.

senso generate

CommandWhat it does
senso generate settingsShow whether content generation and auto-publish are on, the schedule and the destinations.
senso generate update-settingsChange the generation settings: on or off, auto-publish, schedule and default content type.
senso generate sampleWrite one draft for a prompt in a content type, and wait for it. Without --destination it is saved as a draft only.
senso generate runGenerate content for all prompts, or the ones you name. Runs in the background; follow it with runs-get.
senso generate job-contextShow every prompt with its queue status (create or update) and a summary of the queue.
senso generate runs-listList generation runs.
senso generate runs-get <runId>Show one generation run.
senso generate runs-items <runId>List the prompts in a run and each one's status and resulting content.
senso generate runs-logs <runId>List a run's log entries.
senso generate industry-draftWrite a document for one of your industry's prompts and return it as markdown. It is not saved as content.
CommandFlagWhat it does
generate update-settings--data <json>JSON with any of enable_content_generation, content_auto_publish, content_schedule (days 0 to 6), selected_content_type_id.
generate sample--prompt-id <id>Prompt (geo question) ID to generate content for
generate sample--content-type-id <id>Content type ID that defines the output format (use 'content-types list' to find)
generate sample--destination <dest>Publisher slug to publish to immediately after generation. Omit to save as draft only.
generate sample--no-waitReturn the accepted sample job immediately instead of polling for the generated content.
generate run--prompt-ids <ids...>Optional list of prompt IDs to process (omit to run all)
generate run--content-type-id <id>Override the org's default content type for this run
generate run--publisher-ids <ids...>Restrict publishing to specific publisher IDs
generate runs-list--limit <n>Items per page (default 20)
generate runs-list--offset <n>Pagination offset (default 0)
generate runs-list--status <status>Filter by run status
generate runs-list--active-onlyOnly return active (in-progress) runs
generate runs-list--start-date <date>Filter runs on or after this date (YYYY-MM-DD)
generate runs-list--end-date <date>Filter runs on or before this date (YYYY-MM-DD)
generate runs-items--limit <n>Items per page (default 100)
generate runs-items--offset <n>Pagination offset (default 0)
generate runs-items--status <status>Filter by item status: pending, running, succeeded, failed, skipped, stopped
generate runs-logs--limit <n>Items per page (default 100)
generate runs-logs--offset <n>Pagination offset (default 0)
generate industry-draft--industry-prompt-id <id>An industry prompt id from senso industries prompts — NOT one of your own prompt ids
generate industry-draft--content-type-id <id>A content type id from senso content-types list, giving the document its format
generate industry-draft--product-line-ids <ids>Comma-separated product line ids (default all, up to 100)
generate industry-draft--audience <text>Who the document is for (max 500 chars)
generate industry-draft--style-tone <text>Voice and tone guidance (max 500 chars)
generate industry-draft--extra-instructions <text>Further instructions for the writer (max 4000 chars)

senso generated-content

CommandWhat it does
senso generated-content listList generated content, published or drafts.
senso generated-content get <id>Show one generated item, with its question and body.
CommandFlagWhat it does
generated-content list--status <status>Which items to list: published, drafts (default published)
generated-content list--limit <n>Items per page (max 100) (default 10)
generated-content list--offset <n>Pagination offset (default 0)
generated-content list--search <query>Filter by title

senso content

CommandWhat it does
senso content listList the files and folders at the top of the knowledge base. kb my-files returns the same, in more detail.
senso content get <id>Show a generated content item: its versions, metadata and publish status. Knowledge base documents are read with kb get-content.
senso content delete <id>Delete a content item, and remove it from any destination it is published to.
senso content unpublish <id>Take a content item down from every destination, or only some, and return it to draft.
senso content verificationList content in the review workflow, by editorial status.
senso content verification-countsCount content by editorial status, with per-destination summaries.
senso content verification-velocityHow many published pages have been cited, and how long the first citation took.
senso content provenanceTrace one published URL back through generation to its sources and publish records.
senso content citation-details <id>Citation detail for one published content item: a summary, each destination and a daily trend.
senso content citation-prompts <id>The prompts and models whose answers cite a published item, and the lift against answers that do not.
senso content record-edits <id>Record edit events for a content item. Events already recorded are skipped.
senso content versions <id>List a content item's versions, newest first.
senso content reject <versionId>Reject a content version in review, with an optional reason.
senso content restore <versionId>Return a rejected version to draft.
senso content owners <id>List a content item's owners.
senso content set-owners <id>Replace a content item's owners.
senso content remove-owner <id> <userId>Remove one owner from a content item.
senso content tags list <id>List the tags on a content item.
senso content tags set <id>Replace all the tags on a content item. Names that do not exist yet are created.
senso content tags add <id>Add one tag to a content item. A new name is created.
senso content tags remove <id>Remove one tag from a content item.
CommandFlagWhat it does
content list--limit <n>Items per page (default 10)
content list--offset <n>Pagination offset (default 0)
content unpublish--publish-record-ids <ids...>Restrict unpublish to specific publish_record UUIDs. Use 'content get <id>' to find publish record IDs for a content item.
content verification--limit <n>Maximum items to return
content verification--offset <n>Number of items to skip (for pagination)
content verification--search <query>Filter by title
content verification--status <status>Filter by status: all, draft, review, rejected, published
content verification--substatus <substatus>Narrow further (only valid with --status published): pending_draft
content provenance--url <url>The live published URL to audit, matched exactly
content citation-details--start-date <YYYY-MM-DD>Inclusive start of the window
content citation-details--end-date <YYYY-MM-DD>Inclusive end of the window; not before --start-date
content citation-details--models <list>Comma-separated models to filter by (e.g. chatgpt,perplexity). Omit for all.
content citation-details--locations <list>Comma-separated locations to filter by. Omit for all.
content citation-prompts--start-date <YYYY-MM-DD>Inclusive start of the window
content citation-prompts--end-date <YYYY-MM-DD>Inclusive end of the window; not before --start-date
content citation-prompts--models <list>Comma-separated models to filter by (e.g. chatgpt,perplexity). Omit for all.
content citation-prompts--locations <list>Comma-separated locations to filter by. Omit for all.
content citation-prompts--destinations <list>Comma-separated publisher slugs to restrict to. Unknown slugs are ignored.
content record-edits--data <json>JSON {"events": [...]}, each with event_type, edit_source and client_event_id.
content reject--reason <text>Reason for rejection
content set-owners--user-ids <ids...>User IDs to set as owners
content tags set--names <list>Comma-separated tag names (created if missing)
content tags set--ids <list>Comma-separated existing tag UUIDs
content tags add--name <name>Tag name (created if missing)
content tags add--id <tagId>Existing tag UUID
content tags remove--name <name>Tag name to detach
content tags remove--id <tagId>Existing tag UUID to detach

senso ctas

CommandWhat it does
senso ctas listList the call-to-action templates, the default first.
senso ctas createCreate a call-to-action template.
senso ctas update <ctaId>Replace a template. Any optional field you leave out is cleared.
senso ctas delete <ctaId>Delete a template. The default cannot be deleted until you clear or change it.
senso ctas set-default <ctaId>Make a template the organization default.
senso ctas clear-defaultClear the organization default.
senso ctas for-content <contentId>Show which call to action a content item carries: the default, a pinned template, or none.
senso ctas set-for-content <contentId>Set which call to action a content item carries.
senso ctas upload-urlGet a temporary link to upload an image for a template, and the image_url to use.
CommandFlagWhat it does
ctas create--data <json>JSON with title, button_label and target_url (required), and optionally description, eyebrow, image_url, agent_text, is_default.
ctas update--data <json>JSON with the full template. title, button_label and target_url are required.
ctas set-for-content--selection <type>What to carry: default, template, none
ctas set-for-content--cta-id <ctaId>The template to pin. Required with --selection template only.
ctas upload-url--filename <name>The file's name. Its extension, when it has one, must match --content-type.
ctas upload-url--content-type <type>The image media type: image/png, image/jpeg, image/webp, image/gif
ctas upload-url--size <bytes>The file size in bytes, at most 10485760 (10 MiB)

Publish

Send content to your destinations.

senso engine

CommandWhat it does
senso engine publishPublish markdown to your destinations. Pass content_id to publish a new version of an existing item.
senso engine draftSave markdown as a draft for review. Pass content_id to add a version to an existing item.
CommandFlagWhat it does
engine publish--data <json>JSON with raw_markdown and seo_title (required), and optionally content_id, geo_question_id, summary, publisher_ids, mark_as_published.
engine publish--publisher-ids <ids...>Restrict publishing to specific publisher IDs. Overrides any publisher_ids present in --data. Omit to publish to all configured destinations (citeables by default).
engine draft--data <json>JSON with raw_markdown and seo_title (required), and optionally content_id, geo_question_id, summary.

senso destinations

CommandWhat it does
senso destinations listList the destinations you can publish to, with live article counts.
senso destinations addRegister a custom domain as a destination.
senso destinations remove <publisherId>Remove a destination, and choose what happens to content live on it.
CommandFlagWhat it does
destinations add--domain <domain>Custom domain to register (e.g. "content.example.com")
destinations add--name <name>Display name for the destination (e.g. "Example Citeables")
destinations add--type <type>Destination type. One of: citeables, codeables, cucopilot. Defaults to citeables. (default citeables)
destinations remove--action <action>One of: leave, unpublish, delete. See command description.
destinations remove--also-remove-destinationAlso delete the publisher row (not just the org link). Only valid for custom destinations you own. (default false)
destinations remove--keep-domainKeep the custom domain registered on citeables after removing (custom destinations only). (default false)

senso publish-records

CommandWhat it does
senso publish-records retry <publishRecordId>Retry a publish that failed.

Agent skills and the CLI

Install skills for your coding agent, and manage the CLI itself.

senso skills

CommandWhat it does
senso skills install [names...]Install Senso agent skills, all of them with --all or by name.
senso skills listList the installed Senso skills.
senso skills list-availableList every official Senso skill you can install.
senso skills remove <name>Remove an installed skill.
CommandFlagWhat it does
skills install--allInstall every official Senso skill
skills install--agent <name>Target a specific agent: claude, cursor, codex, copilot, gemini, cline
skills install--globalInstall globally instead of project-level
skills list--globalList globally installed skills
skills remove--globalRemove from global install
CommandWhat it does
senso setupInstall every official skill globally. The same as senso skills install --all --global.
senso updateUpdate the CLI to the latest version.
senso uninstallRemove the CLI, its skills and the stored key. Asks first unless you pass --yes.
CommandFlagWhat it does
setup--agent <name>Target a specific agent: claude, cursor, codex, copilot, gemini, cline
setup--globalInstall globally (the default; accepted so the flag is never an error)
setup--localInstall into the current project instead of globally
uninstall-y, --yesSkip the confirmation prompt (required when there is no terminal)
uninstall--dry-runReport what would be removed without removing anything
uninstall--keep-skillsLeave the installed agent skills alone
uninstall--keep-configLeave the stored API key and organization info alone

Next steps