visibility

POST /v1/visibility/targets

Watch a new domain.

All visibility endpoints

All developer docs →

Authentication

Send an API key as a bearer token. The endpoint checks sites.create; a key without it is refused with 403, not 404.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X POST https://api.zinndigital.com/v1/visibility/targets \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "domain": <string> }'

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Adds a domain to the watch-list. A domain that is not hosted with us counts against the external-target allowance; the organisation's own sites do not. category and market decide what questions the answer engines are asked, and are the single most important thing a customer can supply — a reading taken on defaults is real and is worth less. brand is the trading name to look for in an answer, which is genuinely separate from the domain: a model that recommends a business by name without printing its URL has still mentioned them. cadence_days: 0 pauses the schedule. It does not delete anything: history and settings survive and it resumes with no further action.

Request body

NameTypeRequiredWhat it is
domainstringYes—
labelstringNo—
brandstringNo—
categorystringNo—
marketstringNo—
kindsVisibilityAuditKind[]No—
cadence_daysintegerNo—
fundingstring<plan, credits>Nocredits switches the target to pay-per-use for the products the plan does not hold (see VisibilityTarget.funding). Only ever set because a caller asked: without it a product…

Response

NameTypeRequiredWhat it is
fundingstring<plan, credits>NoWho pays for the products the organisation's plan does NOT hold. plan (the default): they are not run. credits: they run pay-per-use from Zinn® credits at the per-unit prices…
brand_termsstring[]NoBrand page 1's searches as the customer set them (setVisibilityBrandTerms). Empty means the brand name (or, failing that, the domain) is the one search.
credit_holdsobjectNoProducts held for want of Zinn® credit, with the moment each was held. A top-up resumes them on the next sweep, oldest first; nothing is dropped.
idUuidYesUUIDv7 identifier — sortable by creation time (docs/02 §8).
domainstringYesThe hostname
labelstringNoThe customer's own label for this domain.
brandstringNoThe trading name to look for in an answer engine's reply. Genuinely separate from the domain — an answer that recommends a business by name without printing its URL has still…
categorystringNoWhat this business sells, in the customer's own words. The questions asked of the answer engines are built from it, so it is the single field that decides whether an AI-visibility…
marketstringNoWhere the business sells. Used with category to build the questions.
is_externalbooleanYesTrue when this is not one of this organisation's own domains — a competitor or a prospect. Only external targets count against the plan's allowance. A domain is the organisation's…
site_idstringNoThe site this target corresponds to, when it is one of ours.
kindsVisibilityAuditKind[]Yes—
cadence_daysintegerYesDays between scheduled audits. 0 means paused — not deleted. History and settings survive and it resumes with no further action.
next_due_atstringNo—
last_audit_atstringNo—
review_profilesReviewProfile[]No—
profile_candidatesReviewProfile[]NoWhat the last lookupVisibilityReviewProfiles search found. Candidates only — the reputation check reads review_profiles, and a candidate becomes one when the customer confirms…
profile_lookupobjectNoThe last review-profile search's state. Empty when none was ever run.
productsTrackedProduct[]NoThe products this organisation has asked us to price-track.
merchant_namesstring[]NoHow this business appears as a seller on the marketplaces. Confirmed by the customer and never inferred: Google Shopping publishes a seller name and no domain on its listings,…
keywordsTrackedKeyword[]NoThe search phrases this organisation tracks its position for. Customer-supplied and never derived: asking a vendor which phrases a domain already ranks for would return exactly…
promptsstring[]NoThe customer's own questions for the AI answer engines. Empty means the default questions built from category and market. Bounded by the prompts allowance.
watched_linksWatchedLink[]NoThe individual links the customer watches pointing at this domain. What each link was found to be is a reading on the latest link_watch audit, not here. Bounded by the links…
mention_phrasesMentionPhraseState[]NoThe phrases this organisation listens for on this domain (brand mentions), each with its own schedule as the checks actually left it.

Errors this endpoint can return

401 · 403 · 422