◆ Sapport for developers API reference Error catalog OpenAPI
Sections

Data schemas

Request and response objects. The types in method tables link here.

#Money

A monetary amount.

FieldTypeDescription
amountstring
required
Amount as a STRING (never a float), for example "123.45".
currencystring
required
ISO 4217 currency code: RUB (RU), GBP (EN), IDR (ID).

#FieldError

A validation error for one field.

FieldTypeDescription
fieldstring
required
Path to the request field as a JSON Pointer (RFC 6901): "/limit", "/events/0".
codestring
required
Machine-readable reason: out_of_range, required, invalid_format…
messagestring
required
Human-readable explanation.

#Problem

An error in application/problem+json (RFC 9457).

FieldTypeDescription
typestring
required
Link to the code description: https://<cell domain>/developers/errors#<code>.
titlestring
required
Short title, the same for a given code.
statusinteger
required
HTTP status.
codestring
required
Stable machine-readable code. Branch on it, not on the text.
Values: invalid_api_key wrong_cell integration_inactive tenant_inactive scope_missing ip_not_allowed feature_not_in_plan pii_transfer_not_allowed not_found method_not_allowed bad_request idempotency_key_required idempotency_conflict operation_in_progress invalid_state precondition_failed precondition_required payload_too_large validation_failed rate_limited spend_limit_reached insufficient_funds wallet_suspended internal_error service_unavailable upstream_unavailable
detailstring
required
Explanation of this particular case. Do not parse this text.
request_idstring
required
Request id (equals the X-Request-Id header). Quote it when contacting support.
errorsarray<FieldError>
optional
Per-field errors (validation_failed only).
correct_base_urlstring
optional
wrong_cell only: the base URL of the cell the key was issued in.
topup_urlstring
optional
wallet_suspended only: the dashboard address where the wallet is topped up.
balanceMoney
optional, may be null
wallet_suspended only: the wallet balance at the time of the refusal.

#Usage

The cost of a paid operation.

FieldTypeDescription
costMoney
required
modelstring
required
The model that performed the operation.

#Operation

An asynchronous operation (one envelope for all modules).

FieldTypeDescription
idstring
required
Operation id.
typestring
required
Operation type, for example "article.generation".
statusstring
required
Operation state.
Values: queued running succeeded failed canceled
created_atstring
required
Creation time, ISO 8601 UTC.
completed_atstring
optional
Completion time; only for succeeded, failed, canceled.
resourceobject
optional
The resource the operation relates to; read the result through it.
resource.typestring
required
resource.idstring
required
errorobject
optional
failed only: a code from the error catalog or the operation-specific reason code.
error.codestring
required
error.messagestring
required
usageUsage
optional
Paid operations only.

#OperationEnvelope

The 202 response to a creating request.

FieldTypeDescription
operationOperation
required

#Me

Who you are: tenant, integration, key, limits, wallet.

FieldTypeDescription
tenantobject
required
The tenant that owns the key.
tenant.idstring
required
tenant.namestring
required
cellstring
required
Platform cell: ru, en or id.
Values: ru en id
base_urlstring
required
Base URL of this cell API.
integrationobject
required
The integration (service account) that owns the key.
integration.idstring
required
integration.namestring
required
channel_idstring
required, may be null
The integration "api" channel; null — the channel is not created yet.
keyobject
required
key.key_idstring
required
Public key id (not a secret).
key.modestring
required

Values: live test
key.scopesarray<string>
required
Effective scopes: integration scopes ∩ the owner current permissions ∩ the licence.
Values: conversations:read conversations:write ai_seller:invoke leads:read leads:write leads:score analytics:read analytics:write dashboards:read articles:read articles:write articles:generate strategist:read strategist:write strategist:chat webhooks:manage
key.expires_atstring
required
Key expiry, ISO 8601 UTC.
key.ip_allowlistarray<string>
required, may be null
Allowed addresses and networks (CIDR); null — any address.
limitsobject
required
Request rate limits.
limits.read_per_mininteger
required
limits.write_per_mininteger
required
limits.paid_per_mininteger
required
limits.paid_concurrencyinteger
required
Concurrent paid operations per tenant.
walletobject
required
The tenant wallet (AI operations).
wallet.balanceMoney
required, may be null
The wallet balance in roubles; null — the state is unknown or the tenant is not billed.
wallet.statestring
required
ok — fine; low — running low; negative — the balance is below zero; blocked — the wallet is blocked; unknown — the state could not be obtained. Details: GET /wallet.
Values: ok low negative blocked unknown
wallet.exchangestring
required
suspended for negative and blocked: every route except /me and /wallet answers 402 wallet_suspended.
Values: active suspended
wallet.topup_urlstring
required
The dashboard address where the wallet is topped up.
wallet.daily_spendobject
required
wallet.daily_spend.limitMoney
required, may be null
The integration daily spend limit; null — not set.
wallet.daily_spend.usedMoney
required
crm_modestring
required
The tenant CRM mode: "internal" (our CRM) or an external system.

#Webhook

An event subscription. The secret is not returned in such responses.

FieldTypeDescription
idstring
required
Subscription id.
urlstring
required
Receiving URL: https, port 443, a host name (not an IP), no redirects.
eventsarray<string>
required
Event types: an exact type or a family pattern "family.*". Available types: conversation.created, message.created, conversation.handoff_requested, conversation.summary_ready, lead.created, lead.updated, lead.scored, lead.status_changed, lead.action_requested, task.created, task.completed, contact.merged, crm.mode_changed, article.ready, article.published, article.generation.failed, strategist.report.ready, strategist.turn.completed, operation.completed, api_key.expiring.
include_piiboolean
required
Full payload with personal data; only for lead.*, contact.* and conversation.* events. Default false.
descriptionstring
required, may be null
A note for yourself, up to 200 characters.
statusstring
required
active — deliveries flow; paused — suspended.
Values: active paused
created_atstring
required
ISO 8601 UTC.
updated_atstring
required
ISO 8601 UTC.
secret_rotated_atstring
required, may be null
Time of the last secret rotation; null — never rotated.
previous_secret_expires_atstring
required, may be null
While the rotation window (24 hours) is open — when the previous secret stops working; otherwise null.

#WebhookWithSecret

The subscription together with its secret: the creation and rotation response.

FieldTypeDescription
idstring
required
Subscription id.
urlstring
required
Receiving URL: https, port 443, a host name (not an IP), no redirects.
eventsarray<string>
required
Event types: an exact type or a family pattern "family.*". Available types: conversation.created, message.created, conversation.handoff_requested, conversation.summary_ready, lead.created, lead.updated, lead.scored, lead.status_changed, lead.action_requested, task.created, task.completed, contact.merged, crm.mode_changed, article.ready, article.published, article.generation.failed, strategist.report.ready, strategist.turn.completed, operation.completed, api_key.expiring.
include_piiboolean
required
Full payload with personal data; only for lead.*, contact.* and conversation.* events. Default false.
descriptionstring
required, may be null
A note for yourself, up to 200 characters.
statusstring
required
active — deliveries flow; paused — suspended.
Values: active paused
created_atstring
required
ISO 8601 UTC.
updated_atstring
required
ISO 8601 UTC.
secret_rotated_atstring
required, may be null
Time of the last secret rotation; null — never rotated.
previous_secret_expires_atstring
required, may be null
While the rotation window (24 hours) is open — when the previous secret stops working; otherwise null.
secretstring
required, may be null
The signing secret: shown ONCE, in the creation or rotation response. On an idempotent replay of the request — null: keep the secret from the first response.

#WebhookCreate

The subscription creation body.

FieldTypeDescription
urlstring
required
Receiving URL: https, port 443, a host name (not an IP), no redirects.
eventsarray<string>
required
Event types: an exact type or a family pattern "family.*". Available types: conversation.created, message.created, conversation.handoff_requested, conversation.summary_ready, lead.created, lead.updated, lead.scored, lead.status_changed, lead.action_requested, task.created, task.completed, contact.merged, crm.mode_changed, article.ready, article.published, article.generation.failed, strategist.report.ready, strategist.turn.completed, operation.completed, api_key.expiring.
include_piiboolean
optional
Full payload with personal data; only for lead.*, contact.* and conversation.* events. Default false.
descriptionstring
optional, may be null
A note for yourself, up to 200 characters.

#WebhookUpdate

The update body: pass at least one field.

FieldTypeDescription
urlstring
optional
Receiving URL: https, port 443, a host name (not an IP), no redirects.
eventsarray<string>
optional
Event types: an exact type or a family pattern "family.*". Available types: conversation.created, message.created, conversation.handoff_requested, conversation.summary_ready, lead.created, lead.updated, lead.scored, lead.status_changed, lead.action_requested, task.created, task.completed, contact.merged, crm.mode_changed, article.ready, article.published, article.generation.failed, strategist.report.ready, strategist.turn.completed, operation.completed, api_key.expiring.
include_piiboolean
optional
Full payload with personal data; only for lead.*, contact.* and conversation.* events. Default false.
descriptionstring
optional, may be null
A note for yourself, up to 200 characters.
statusstring
optional
Pause or resume deliveries.
Values: active paused

#WebhookPage

A page of a list.

FieldTypeDescription
dataarray<Webhook>
required
next_cursorstring
required, may be null
Cursor of the next page; null — the list is exhausted. Valid for 24 hours.

#WebhookTestResult

The 202 response to a test delivery. The event body arrives at your URL with livemode: false.

FieldTypeDescription
event_idstring
required, may be null
The test event id.
typestring
required
statusstring
required
The event is queued; it goes out on the next delivery run (within a minute).

#WebhookDelivery

A delivery log entry (kept for 30 days).

FieldTypeDescription
idstring
required
Delivery id.
event_idstring
required
Event id.
statestring
required
pending — waiting for an attempt; delivered — delivered; failed — an attempt failed, a retry follows; dead — retries exhausted.
Values: pending delivered failed dead
attemptinteger
required
Number of the last attempt (0 — none yet).
status_codeinteger
required, may be null
HTTP status of the subscriber response; null if there was none.
duration_msinteger
required, may be null
Attempt duration, ms.
errorstring
required, may be null
Failure reason: timeout, connection or certificate error, a 3xx response.
next_attempt_atstring
required, may be null
Time of the next attempt; null if no more attempts follow.
delivered_atstring
required, may be null
Time of successful delivery.
created_atstring
required

#WebhookDeliveryPage

A page of a list.

FieldTypeDescription
dataarray<WebhookDelivery>
required
next_cursorstring
required, may be null
Cursor of the next page; null — the list is exhausted. Valid for 24 hours.

#Wallet

The state of the tenant wallet and of data exchange.

FieldTypeDescription
balanceMoney
required, may be null
The wallet balance in roubles (the wallet is kept in RUB on every cell); null — the state is unknown or the tenant is not billed.
statestring
required
ok — fine; low — running low (exchange continues); negative — the balance is below zero; blocked — the wallet is blocked; unknown — the state could not be obtained.
Values: ok low negative blocked unknown
exchangestring
required
suspended for negative and blocked: every route except /me and /wallet answers 402 wallet_suspended and webhooks are postponed. With unknown it stays active: free reads proceed with the Sapport-Wallet-State: unknown header, paid operations are closed (503).
Values: active suspended
topup_urlstring
required
The dashboard address where the wallet is topped up (a staff member with the top-up permission must sign in).
daily_spendobject
required, may be null
The integration daily spend; null while spend is not tracked per integration.
daily_spend.limitMoney
required, may be null
The integration daily spend limit; null — not set.
daily_spend.usedMoney
required

#TimeseriesItem

One time series.

FieldTypeDescription
metricstring
required

Values: sessions pageviews visitors bounce_rate impressions clicks ctr position ai_referrals bot_hits leads deals_won revenue
fromstring
required
Date YYYY-MM-DD.
tostring
required
Date YYYY-MM-DD.
granularitystring
required

Values: day week
aggstring
required
How the series is folded over the period.
Values: sum avg
enginestring
required, may be null
The search engine of the series; null for metrics not tied to search.
Values: google yandex bing
availabilitystring
required

Values: ok no_data no_source
reasonstring
required, may be null
Reason code when availability is not ok.
seriesarray<object>
required
The series; days without data are filled with zeros. With the weekly step date is the first day of the week.
comparisonobject
required
comparison.currentobject
required, may be null
comparison.prevobject
required, may be null
comparison.delta_pctnumber
required, may be null
Change in percent; null if there is nothing to compare with or the base is zero.
comparison.data_throughstring
required, may be null
The last date the data is complete.
summaryobject
required, may be null
summary.totalobject
required, may be null
summary.latestobject
required, may be null
summary.non_zero_daysinteger
required
cluster_appliedboolean
required
data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.

#TimeseriesResponse

One series (a single metric) or items in request order (several metrics).

FieldTypeDescription
dataobject
required

#TrafficSourceRow

A first-visit source over the period.

FieldTypeDescription
sourcestring
required

Values: google yandex bing chatgpt perplexity ai_other social ads direct other
kindstring
required

Values: search ai_assistant social ads direct other
sessionsinteger
required
visitorsinteger
required, may be null
Daily unique visitors summed over the period; null when they cannot be counted (anonymous beacon).
leadsinteger
required
seriesarray<object>
optional
Only with include=series.

#TrafficSourcesResponse

Traffic sources, most sessions first.

FieldTypeDescription
dataarray<TrafficSourceRow>
required
data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.

#FunnelStep

A funnel step with its own availability and date.

FieldTypeDescription
keystring
required

Values: impressions clicks sessions leads deals_created deals_won revenue
availabilitystring
required

Values: ok no_data no_source
sourcesarray<string>
required
unitstring
required

Values: count money
currentobject
required, may be null
prevobject
required, may be null
delta_pctnumber
required, may be null
data_throughstring
required, may be null

#FunnelResponse

The funnel impressions → clicks → sessions → leads → deals → revenue.

FieldTypeDescription
dataobject
required
data.enginestring
required

Values: yandex google both
data.fromstring
required
Date YYYY-MM-DD.
data.tostring
required
Date YYYY-MM-DD.
data.stepsarray<FunnelStep>
required
data.by_channelarray<object>
required
data.search_by_enginearray<object>
optional
Only engine=both: the engines separately.
data.by_productarray<object>
required
data.crmobject
required
data.crm.availabilitystring
required

Values: ok no_data
data.crm.reasonstring
optional
data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.

#VisibilityResponse

Visibility: five independent sections.

FieldTypeDescription
dataobject
required
data.fromstring
required
Date YYYY-MM-DD.
data.tostring
required
Date YYYY-MM-DD.
data.enginestring
required

Values: yandex google both
data.shareobject
required
data.share.availabilitystring
required
data.share.reasonstring
optional
data.share.sourcestring
required
data.share.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.share.dataobject
required
data.distributionobject
required
data.distribution.availabilitystring
required
data.distribution.reasonstring
optional
data.distribution.sourcestring
required
data.distribution.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.distribution.dataobject
required
data.sovobject
required
data.sov.availabilitystring
required
data.sov.reasonstring
optional
data.sov.sourcestring
required
data.sov.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.sov.dataobject
required
data.aeoobject
required
data.aeo.availabilitystring
required
data.aeo.reasonstring
optional
data.aeo.sourcestring
required
data.aeo.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.aeo.dataobject
required
data.regionsobject
required
data.regions.availabilitystring
required
data.regions.reasonstring
optional
data.regions.sourcestring
required
data.regions.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.regions.dataobject
required

#OverviewResponse

A slice of the Overview screen: the requested blocks in screen order.

FieldTypeDescription
dataobject
required
data.fromstring
required
Date YYYY-MM-DD.
data.tostring
required
Date YYYY-MM-DD.
data.blocksobject
required
data.blocks.strategistobject
optional
data.blocks.strategist.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.strategist.reasonstring
optional
data.blocks.strategist.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.kpiobject
optional
data.blocks.kpi.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.kpi.reasonstring
optional
data.blocks.kpi.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.funnelobject
optional
data.blocks.funnel.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.funnel.reasonstring
optional
data.blocks.funnel.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.attentionobject
optional
data.blocks.attention.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.attention.reasonstring
optional
data.blocks.attention.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.adsobject
optional
data.blocks.ads.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.ads.reasonstring
optional
data.blocks.ads.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.ai_assistantsobject
optional
data.blocks.ai_assistants.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.ai_assistants.reasonstring
optional
data.blocks.ai_assistants.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.popular_pagesobject
optional
data.blocks.popular_pages.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.popular_pages.reasonstring
optional
data.blocks.popular_pages.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.clustersobject
optional
data.blocks.clusters.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.clusters.reasonstring
optional
data.blocks.clusters.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.data_trustobject
optional
data.blocks.data_trust.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.data_trust.reasonstring
optional
data.blocks.data_trust.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.sitemap_healthobject
optional
data.blocks.sitemap_health.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.sitemap_health.reasonstring
optional
data.blocks.sitemap_health.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.
data.blocks.statusobject
optional
data.blocks.status.availabilitystring
required

Values: ok no_data no_source not_connected
data.blocks.status.reasonstring
optional
data.blocks.status.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.

#PulseAlert

A Pulse finding: a demand topic that started to grow.

FieldTypeDescription
idstring
required
topic_idstring
required
topic_namestring
required, may be null
keywordstring
required
horizonstring
required
statusstring
required
episode_startstring
required, may be null
last_seenstring
required, may be null
scorenumber
required, may be null
volumenumber
required, may be null
growthnumber
required, may be null
sourcesarray<object>
required
strategist_topicobject
required, may be null
The linked strategist queue topic.
strategist_topic.idstring
required
strategist_topic.statusstring
required

#PulseResponse

A slice of the Pulse screen.

FieldTypeDescription
dataobject
required
data.periodobject
required
data.period.fromstring
required
Date YYYY-MM-DD.
data.period.tostring
required
Date YYYY-MM-DD.
data.new_7dinteger
required
data.truncatedboolean
required
data.alertsarray<PulseAlert>
required
data.data_as_ofobject
required
Source → the date up to which its data is complete. A source with no data is not listed.

#ArticleSummary

A tenant article without its content (a list item).

FieldTypeDescription
idstring
required
Article id.
titlestring
required
slugstring
required, may be null
statusstring
required
draft — a draft; review — in review; approved — approved; published — published; rejected — rejected; transferred — moved to the blog; external — external.
localestring
required, may be null
Article language (ru, en, id).
keywordstring
required, may be null
The main query of the article.
meta_titlestring
required, may be null
meta_descriptionstring
required, may be null
cover_image_urlstring
required, may be null
word_countinteger
required
created_atstring
required, may be null
ISO 8601 UTC.
updated_atstring
required, may be null
ISO 8601 UTC.
published_atstring
required, may be null
ISO 8601 UTC.

#ArticlePublication

The state of the latest publication of the article through the site module.

FieldTypeDescription
targetstring
required
Where it is published: the module on your site.
statestring
required
queued — in the queue or handed to the module; applied — applied on the site; skipped — skipped; conflict — the site edit is newer; failed — an error.
Values: queued applied skipped conflict failed
published_urlstring
required, may be null
The article URL on your site once applied.
errorstring
required, may be null
The failure reason, up to 200 characters.

#Article

A tenant article with its content.

FieldTypeDescription
idstring
required
Article id.
titlestring
required
slugstring
required, may be null
statusstring
required
draft — a draft; review — in review; approved — approved; published — published; rejected — rejected; transferred — moved to the blog; external — external.
localestring
required, may be null
Article language (ru, en, id).
keywordstring
required, may be null
The main query of the article.
meta_titlestring
required, may be null
meta_descriptionstring
required, may be null
cover_image_urlstring
required, may be null
word_countinteger
required
created_atstring
required, may be null
ISO 8601 UTC.
updated_atstring
required, may be null
ISO 8601 UTC.
published_atstring
required, may be null
ISO 8601 UTC.
contentobject
required
The article body in the requested format: html and markdown — a string; blocks — an array of {type, html} blocks. The HTML is stripped of scripts, dangerous links and event handlers. For an article whose body moved to the platform blog the content is empty.
publicationArticlePublication
required, may be null
null — the article has not been published through the site module yet.

#ArticlePage

A page of a list.

FieldTypeDescription
dataarray<ArticleSummary>
required
next_cursorstring
required, may be null
Cursor of the next page; null — the list is exhausted. Valid for 24 hours.

#StrategistReportSummary

A strategist report header (a list item).

FieldTypeDescription
idstring
required
Report id.
report_datestring
required
Report date, YYYY-MM-DD.
report_typestring
required
daily — daily, weekly — weekly.
Values: daily weekly
summary_textstring
required
The short summary.
actions_countinteger
required
How many actions are recommended.
data_as_ofobject
required
Data freshness: for each metric (key) the date of the latest data, YYYY-MM-DD; the snapshot key is the date of the analytics snapshot the report is built on. Empty if there is no snapshot.
delivered_atstring
required, may be null
When the report was delivered to the owner; null — not yet. ISO 8601 UTC.

#StrategistReportAction

A recommended action.

FieldTypeDescription
titlestring
required
prioritystring
required
Action priority (high, medium, low).
rationalestring
required
The rationale. Competitor names are hidden in it.
target_refstring
required, may be null
A reference to the target (article, product, campaign); null if there is none or it is a competitor.
expected_effectobject
required, may be null
The expected effect; null if the strategist named none.
expected_effect.metricstring
required, may be null
expected_effect.deltastring
required, may be null
expected_effect.horizon_daysinteger
required, may be null
check_after_daysinteger
required, may be null
In how many days to check the result.
basisstring
required
What the conclusion rests on: observed_pattern — observed elsewhere; own_measured — measured on your data; research — a study; hypothesis — a hypothesis.
Values: observed_pattern own_measured research hypothesis

#StrategistEvidence

Evidence per action. Verbatim competitor wording is not returned.

FieldTypeDescription
actionsarray<object>
required
validationobject
optional
The evidence check result. relevance_checked is always false: references and quotes are checked, not the meaning.
validation.refs_validboolean
required
validation.excerpts_validboolean
required
validation.relevance_checkedboolean
required
validation.limitationsarray<string>
required

#StrategistReport

A full strategist report. The analytics snapshot, model and cost are not returned.

FieldTypeDescription
idstring
required
report_datestring
required
report_typestring
required

Values: daily weekly
summary_textstring
required
data_as_ofobject
required
Data freshness: for each metric (key) the date of the latest data, YYYY-MM-DD; the snapshot key is the date of the analytics snapshot the report is built on. Empty if there is no snapshot.
highlightsarray<object>
required
What goes well.
concernsarray<object>
required
What is concerning.
actionsarray<StrategistReportAction>
required
evidenceStrategistEvidence
required

#StrategistReportPage

A page of a list.

FieldTypeDescription
dataarray<StrategistReportSummary>
required
next_cursorstring
required, may be null
Cursor of the next page; null — the list is exhausted. Valid for 24 hours.

#StrategistTopic

A topic in the strategist queue.

FieldTypeDescription
idstring
required
titlestring
required, may be null
rationalestring
required, may be null
Why the topic is proposed. For competitor-sourced topics domains are hidden.
trend_scorenumber
required, may be null
Trend score; null — not scored.
sourcestring
required
Where the topic comes from: planner, competitors, chat and others.
statusstring
required
proposed — awaiting a decision; approved — approved; generating — the article is being created; generated — the article is created; rejected — rejected; duplicate — a duplicate; expired — expired.
Values: proposed approved generating generated rejected duplicate expired
cluster_idstring
required, may be null
generated_article_idstring
required, may be null
The id of the created article (GET /articles/{id}).
proposed_atstring
required, may be null
ISO 8601 UTC.
decided_atstring
required, may be null
ISO 8601 UTC.
expires_atstring
required, may be null
ISO 8601 UTC.

#StrategistTopicPage

A page of a list.

FieldTypeDescription
dataarray<StrategistTopic>
required
next_cursorstring
required, may be null
Cursor of the next page; null — the list is exhausted. Valid for 24 hours.

#StrategistAction

A strategist action proposed in your session and awaiting a decision.

FieldTypeDescription
idstring
required
session_idstring
required, may be null
The conversation session in which the action was proposed.
typestring
required
The action kind. In v1 only propose_topic.
titlestring
required
The title of the proposed topic.
statusstring
required
proposed — awaiting confirmation; confirmed — confirmed, running; executed — done; failed — failed; cancelled — cancelled; expired — expired (7 days).
Values: proposed confirmed executed failed cancelled expired
resultobject
required, may be null
The result of an executed action: the created topic.
result.topic_idstring
required
errorobject
required, may be null
The failure reason when status = failed.
error.codestring
required
error.messagestring
required
created_atstring
required, may be null
ISO 8601 UTC.
decided_atstring
required, may be null
ISO 8601 UTC.
expires_atstring
required, may be null
When the wait ends: creation + 7 days. ISO 8601 UTC.

#StrategistActionPage

A page of a list.

FieldTypeDescription
dataarray<StrategistAction>
required
next_cursorstring
required, may be null
Cursor of the next page; null — the list is exhausted. Valid for 24 hours.

#Conversation

A conversation. Contains personal data (external_customer_id).

FieldTypeDescription
idstring
required
Conversation id (uuid).
channelstring
required, may be null
Channel type: api, telegram, website …
contact_idstring
required, may be null
The Sapport contact (customer) id.
external_customer_idstring
required, may be null
The customer id in your system. Channel api only; null for other channels (the messenger external id is not disclosed).
statusstring
required
Conversation state: open, handoff_pending, resolved, closed … The set may grow — do not treat the list as closed.
modestring
required
Who handles the conversation: ai — the AI answers (modes auto and supervised), operator — a human answers (copilot and manual).
Values: ai operator
languagestring
required, may be null
Conversation language (ISO 639-1); null — not detected.
created_atstring
required, may be null
Conversation start, ISO 8601 UTC.
updated_atstring
required
Last change or message, ISO 8601 UTC. The walk order. The unread counter does not change it.

#MessageAttachment

A message attachment.

FieldTypeDescription
typestring
required, may be null
Content kind: image, file, audio …
urlstring
required
A temporary signed link to the file (download without the API key). Do not store the link: fetch the message again.
expires_atstring
required, may be null
When the link stops working, ISO 8601 UTC (about an hour); null — a permanent path.

#Message

A conversation message. Contains customer personal data (text, attachments).

FieldTypeDescription
idstring
required
Message id (uuid).
conversation_idstring
required
The conversation.
senderstring
required
Sender: customer, ai, operator, system.
Values: customer ai operator system
content_typestring
required
Content kind: text, image, file …
contentstring
required, may be null
The text; null — no text (attachment only) or the message is deleted.
attachmentsarray<MessageAttachment>
required
Attachments (at most one for now).
deletedboolean
required
true — the message is deleted (returned only with include_deleted=true; no text or attachments).
created_atstring
required
Message time, ISO 8601 UTC.

#ConversationPage

A page of a list.

FieldTypeDescription
dataarray<Conversation>
required
next_cursorstring
required, may be null
Cursor of the next page; null — the list is exhausted. Valid for 24 hours.

#MessagePage

A page of a list.

FieldTypeDescription
dataarray<Message>
required
next_cursorstring
required, may be null
Cursor of the next page; null — the list is exhausted. Valid for 24 hours.

#LeadFlags

AI flags from the conversation. true/false are set only when the model is confident.

FieldTypeDescription
buy_intentboolean
required, may be null
Intent to buy; null — the model is not sure.
supportboolean
required, may be null
A support request rather than a purchase; null — not sure.
supplierboolean
required, may be null
A supplier or advertiser, not a customer; true archives the lead (ai_not_client).

#LeadScore

The lead score. null for a lead that has not been scored yet.

FieldTypeDescription
scoreinteger
required
Score 0–100.
gradestring
required
Grade: A — 75 and above, B — 50–74, C — 25–49, D — below 25.
Values: A B C D
reasonstring
required, may be null
Explanation of the score; null until recorded.
flagsLeadFlags
required, may be null
sourcestring
required, may be null
Who scored: ai, external or manual; null — unknown.
Values: ai external manual
modelstring
required, may be null
The model that set the flags; null if the score is not AI.
scored_atstring
required, may be null
When the score was set. ISO 8601 UTC.

#LeadContact

The lead contact. Holds personal data: every disclosure is recorded in the disclosure log.

FieldTypeDescription
idstring
required
Contact id.
first_namestring
required, may be null
last_namestring
required, may be null
emailstring
required, may be null
Personal data.
phonestring
required, may be null
Personal data.
tagsarray<string>
required
geo_countrystring
required, may be null
Country by IP (ISO 3166-1 alpha-2).
geo_citystring
required, may be null
City by IP.

#LeadAttribution

Where the lead came from (first touch). null when there is no trace.

FieldTypeDescription
utm_sourcestring
required, may be null
utm_mediumstring
required, may be null
utm_campaignstring
required, may be null
first_pagestring
required, may be null
The first-visit page.
referrerstring
required, may be null

#Lead

A tenant lead.

FieldTypeDescription
idstring
required
Lead id.
external_idstring
required, may be null
The id in an external CRM; null until an external CRM is connected.
external_urlstring
required, may be null
versioninteger
required, may be null
Version for If-Match; null while the database has no version column — use etag.
etagstring
required
The version tag (equals the ETag header of the card).
statusstring
required
One of six canonical statuses. Archive is the archived flag, not a status.
Values: new qualified proposal negotiation won lost
archivedboolean
required
The lead is archived.
archived_reasonstring
required, may be null
Archive reason, for example ai_not_client.
ownerstring
required
Where the lead lives: internal — in our CRM.
Values: internal external
titlestring
required, may be null
sourcestring
required, may be null
assigned_tostring
required, may be null
Id of the responsible employee.
valueMoney
required, may be null
product_idstring
required, may be null
course_slugstring
required, may be null
contactLeadContact
required, may be null
conversation_idstring
required, may be null
attributionLeadAttribution
required, may be null
scoreLeadScore
required, may be null
flagsLeadFlags
required, may be null
intentstring
required, may be null
ai_summarystring
required, may be null
next_actionstring
required, may be null
next_action_atstring
required, may be null
ISO 8601 UTC.
lost_reasonstring
required, may be null
qualified_atstring
required, may be null
ISO 8601 UTC.
won_atstring
required, may be null
ISO 8601 UTC.
lost_atstring
required, may be null
ISO 8601 UTC.
last_activity_atstring
required, may be null
ISO 8601 UTC.
created_atstring
required
Created. ISO 8601 UTC.
updated_atstring
required
Updated. ISO 8601 UTC.

#LeadPage

A page of a list.

FieldTypeDescription
dataarray<Lead>
required
next_cursorstring
required, may be null
Cursor of the next page; null — the list is exhausted. Valid for 24 hours.