---
title: "Stream an LLM-generated product description from a website"
method: POST
path: "/dashboard/api/onboarding/describe-product"
tags: ["Onboarding"]
---

# Stream an LLM-generated product description from a website

`POST /dashboard/api/onboarding/describe-product`

## Request

- Base URL: `https://api.agnost.ai`
- URL: `https://api.agnost.ai/dashboard/api/onboarding/describe-product`
- Auth: one of:
  - HTTP bearer and API key in header `x-org-id`
  - API key in header `x-api-key`

Fetches the user's website (either a URL passed directly or inferred
from a corporate email domain) and streams a 2-3 sentence product
description over Server-Sent Events. Used during organization setup
so the user does not have to write the description by hand.

Returns 422 if the email domain is a free email provider, the site
cannot be reached, or extraction yielded too little content. The
client should ask the user to describe the product manually in those
cases.

Response is `text/event-stream`. Each event is a JSON object:
`{"text": "..."}` for incremental tokens, `{"error": "..."}` for
terminal failure. The stream ends with a `[DONE]` sentinel.

## Request body

- object
  - `url` string: Website URL (preferred). Either url or email is required.
  - `email` string, email: Falls back to the email's domain if url is not provided.

## Response `200`

Server-Sent Events stream of description tokens

## Other responses

- `422`: Personal email, unreachable site, or insufficient content

## Changes

- **2026-11-03** `a61431b48f36`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/agnost/apis/agnost-ai-api/changes/dashboard/api/onboarding/describe-product/post.md)

---

[API](https://skmtc.dev/agnost/apis/agnost-ai-api.md) - [All operations](https://skmtc.dev/agnost/apis/agnost-ai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/agnost/apis/agnost-ai-api/revisions/a61431b48f36?raw)
