Looking for the chatbot template? It's now here.

PostableMessage

The union type accepted by thread.post() for sending messages.

PostableMessage is the union of all message formats accepted by thread.post() and sent.edit().

type PostableMessage = AdapterPostableMessage | AsyncIterable<string>;

String

Raw text passed through as-is to the platform.

await thread.post("Hello world");

PostableRaw

Explicit raw text — behaves the same as a plain string.

await thread.post({ raw: "Hello world" });

Prop

Type

PostableMarkdown

Markdown converted to each platform's native format.

await thread.post({ markdown: "**Bold** and _italic_" });

Prop

Type

PostableAst

mdast AST converted to each platform's native format. See Markdown for builder functions.

import { root, paragraph, text, strong } from "chat";

await thread.post({
  ast: root([paragraph([strong([text("Hello")])])]),
});

Prop

Type

PostableCard

Rich card with interactive elements. See Cards for components.

import { Card, Text } from "chat";

await thread.post(Card({ title: "Hello", children: [Text("World")] }));

You can also pass a card with explicit fallback text:

await thread.post({
  card: Card({ title: "Hello", children: [Text("World")] }),
  fallbackText: "Hello — World",
});

Prop

Type

AsyncIterable (streaming)

An async iterable of strings, like the AI SDK's textStream. The SDK streams the message in real time using platform-native APIs where available.

import { streamText } from "ai";

const result = streamText({ model, prompt: message.text });
await thread.post(result.textStream);

FileUpload

Used in the files field of any structured message format.

Prop

Type

On this page

GitHubEdit this page on GitHub