All guides

Read suggested replies and contacts from the answer API

skyyware/starchat v0.11.0

Starchat 0.10.4 adds optional suggestion_labels and contacts fields to the answer returned by POST /chat. Existing answer fields remain. For a streamed response, these fields are inside the final result frame's data object. Early failures can still return ordinary JSON; clients check the content type. The endpoint retains its origin, request validation, and capacity checks.

Suggested replies

Field Meaning and limit
suggestions Up to four full next-turn texts, each at most 120 characters
suggestion_labels Optional display labels in the same order and count, each at most 60 characters

Labels preserve the corresponding question's meaning. Generation aims for two to five words and at most 42 characters; the enforced maximum is 60. Independent answer review checks both the full text and its label.

For example, this part of an answer offers a short label for a longer reply:

{
	"suggestions": ["Keep tasks in this browser without account registration"],
	"suggestion_labels": ["Keep tasks here"]
}

The browser displays Keep tasks here and submits the full suggestions[0] text when clicked. Labels stay on one line. A long label can end in a visual ellipsis, while the control's title retains the full question. If labels are absent, the browser uses the full suggestion as its label.

Labels and submitted suggestions omit trailing full stops and ellipses. Question marks and internal punctuation, such as Node.js or 1.2, remain. Restored suggestions use the same rendering; saved conversation messages are not rewritten. Opening app ideas keep their configured label and question.

Reviewed contact offers

contacts contains at most four contacts selected for the current answer. The server resolves their destinations from the installation's fresh verified catalogue. Independent answer review checks that each contact's purpose fits the current concern. Addresses in conversation text alone do not qualify.

Contact field Meaning
kind email or phone
address One plain email recipient or an E.164 phone number
label Contact name, at most 120 characters
locale Recipient's correspondence language
source Approved source URL
expires Unix timestamp in seconds for the next midnight in the installation's timezone

For example, this fictional contact offer issued on 20 October 2026 with timezone Europe/Berlin expires at local midnight on 21 October:

{
	"kind": "phone",
	"address": "+497110000000",
	"label": "Service office",
	"locale": "de",
	"source": "https://example.org/contact",
	"expires": 1792533600
}

The browser validates the contact fields and requires expires * 1000 to be greater than its current time. Missing or expired metadata offers no contextual email or telephone action. Older saved answers do not infer contacts from prose, and a new answer does not inherit a previous answer's contacts.

An enabled telephone channel offers a direct tel: button for the reviewed number. The click uses the visitor's telephone handler without a model request. A contextual email action prepares a draft only after a click. The configured primary email recipient remains available for an answered in-scope exchange, even when contextual metadata is absent.

Requested drafts and documents resolve contacts again from fresh sources. An empty contact result removes that creation choice for the current transcript; transient generation failures still offer manual retry. Completed documents keep their reviewed contact cards and preparation lists.

Model fields and compatibility

The model schema requires suggestion_labels and contact_ids. contact_ids contains up to four exact catalogue keys. It is an internal model field, not a client-supplied destination. HTTP answers expose resolved contacts; they do not expose those selection IDs. Empty optional fields are omitted.

Older HTTP answers without the new fields remain readable. Custom clients must tolerate absent labels and contacts. Installation settings still determine which asset types and channels are available. This response grants no additional scope, account access, call, or message delivery.

See verified contacts for source metadata and conversation assets for preparation, downloads, and session-context checks.