Skip to main content
POST
Error

Authorizations

Authorization
string
header
required

Flowyte secret API key (Authorization: Bearer flowyte_sk_live_…). Scope-gated; is scoped to your organization — a key can never reach another tenant. The listed scopes in each operation's apiKey requirement are the scopes that key must hold. The tokenUrl is nominal: keys are minted in the dashboard.

Path Parameters

id
string
required

The chat session id (from createChatSession).

Body

application/json
content
string
required

The visitor's message text.

stream
boolean
default:false

true → stream the reply as SSE frames; false → return the reply message(s) as JSON.

entry
EntryContext · object

Which door the conversation came in through — a small, per-session bag of hints about the ingress, exposed to the agent in its own entry namespace ({entry.page_path}, {entry.label}, …). The doors: a call or text carries the dialed/texted number's operator-typed label from updateNumber ({"source":"did","label":"Denver line"}) — the agent is given the LABEL, never the digits. A web chat carries the embedding page's hints ({"source":"widget","page_path":"/pricing","market":"denver"}), where page_path is captured by the loader with no configuration and the rest come from the embed's optional data-context attribute. Entry context is an UNTRUSTED HINT, and the platform treats it as one. A visitor controls the page that supplies the chat values and a caller can dial the wrong line, so it can never be an assertion about who someone is: it is kept out of the identity bucket, it never satisfies a skill's parameter_bindings, and it LOSES to a value the conversation actually collected under the same name. The intended use is to pre-seed a question the agent still asks — offer "Denver" as the service area and confirm it, rather than asking cold. source is set by the platform (did | widget) and is ignored if you send it. Browser-supplied bags are restricted to the allowlisted keys below; other keys, non-string values, values over 200 characters, more than 8 keys, and a raw data-context over 1KB are dropped silently rather than erroring.

Example:

Response

SSE stream (stream=true) or messages (stream=false).

success
boolean
required
data
object
required
message
string
errors
object[]