curl --request POST \
--url https://api.mintlify.com/discovery/v1/assistant/{domain}/message \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fp": "<string>",
"messages": [
{
"id": "foobar",
"role": "user",
"content": "how do i get started",
"parts": [
{
"type": "text",
"text": "How do I get started"
}
]
}
],
"threadId": null,
"retrievalPageSize": 5,
"filter": null
}
'{}Generates a response message from the assistant for the specified domain. Compatible with AI SDK v4.
curl --request POST \
--url https://api.mintlify.com/discovery/v1/assistant/{domain}/message \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fp": "<string>",
"messages": [
{
"id": "foobar",
"role": "user",
"content": "how do i get started",
"parts": [
{
"type": "text",
"text": "How do I get started"
}
]
}
],
"threadId": null,
"retrievalPageSize": 5,
"filter": null
}
'{}useChatuseChat hook from Vercel’s AI SDK is the recommended way to integrate the assistant API into your application.
Use the hook
import { useChat } from 'ai/react';
function MyComponent({ domain }) {
const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
api: `https://api.mintlify.com/discovery/v1/assistant/${domain}/message`,
headers: {
'Authorization': `Bearer ${process.env.PUBLIC_MINTLIFY_ASSISTANT_KEY}`,
},
body: {
fp: 'anonymous',
retrievalPageSize: 5,
context: [
{
type: 'code',
value: 'const example = "code snippet";',
elementId: 'code-block-1',
},
],
},
streamProtocol: 'data',
sendExtraMessageFields: true,
});
return (
<div>
{messages.map((message) => (
<div key={message.id}>
{message.role === 'user' ? 'User: ' : 'Assistant: '}
{message.content}
</div>
))}
<form onSubmit={handleSubmit}>
<input value={input} onChange={handleInputChange} />
<button type="submit">Send</button>
</form>
</div>
);
}
streamProtocol: 'data' - Required for streaming responses.sendExtraMessageFields: true - Required to send message metadata.body.fp - Fingerprint identifier (use ‘anonymous’ or a user identifier).body.retrievalPageSize - Number of search results to use (recommended: 5).body.context - Array of contextual information to provide to the assistant. Each context object contains:
type - Either 'code' or 'textSelection'.value - The code snippet or selected text content.elementId (optional) - Identifier for the UI element containing the context.The Authorization header expects a Bearer token. Use an assistant API key (prefixed with mint_dsc_). This is a public key safe for use in client-side code. Generate one on the API keys page in your dashboard.
The domain identifier from your domain.mintlify.app URL. Can be found at the end of your dashboard URL. For example, dashboard.mintlify.com/organization/domain has a domain identifier of domain.
Fingerprint identifier for tracking conversation sessions. Use 'anonymous' for anonymous users or provide a unique user identifier.
Array of messages in the conversation. On the frontend, you will likely want to use the handleSubmit function from the @ai-sdk package's useChat hook to append user messages and handle streaming responses, rather than manually defining the objects in this array as they have so many parameters.
Show child attributes
An optional identifier used to maintain conversation continuity across multiple messages. When provided, it allows the system to associate follow-up messages with the same conversation thread. The threadId is returned in the response as event.threadId when event.type === 'finish'.
Number of documentation search results to use for generating the response. Higher values provide more context but may increase response time. Recommended: 5.
Optional filter criteria for the search.
Show child attributes
Message generated successfully
Response object with data stream parts formatted with the specified status, headers, and content. For more information, see the AI SDK documentation at ai-sdk.dev/docs/ai-sdk-ui/streaming-data. Use the useChat hook from ai-sdk to handle the response stream.
Was this page helpful?