curl --request POST \
--url https://api.webless.ai/api/v1/snackable-read \
--header 'Content-Type: application/json' \
--data '
{
"company": "YOUR_COMPANY",
"canonical_url": "https://example.com/articles/product-launch"
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
company: 'YOUR_COMPANY',
canonical_url: 'https://example.com/articles/product-launch'
})
};
fetch('https://api.webless.ai/api/v1/snackable-read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.webless.ai/api/v1/snackable-read"
payload = {
"company": "YOUR_COMPANY",
"canonical_url": "https://example.com/articles/product-launch"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "ready",
"bullets": [
"The launch introduces a faster setup flow.",
"Existing integrations remain compatible.",
"The new experience is available to all customers."
],
"source_url": "https://example.com/articles/product-launch",
"title": "Product launch",
"cache_status": "miss",
"version": "published",
"resolved_version": "published",
"resolved_corpus_version": 12,
"generated_at": "2026-06-12T19:30:00+00:00"
}Generate a Snackable Read
Generate concise takeaways from an indexed page.
curl --request POST \
--url https://api.webless.ai/api/v1/snackable-read \
--header 'Content-Type: application/json' \
--data '
{
"company": "YOUR_COMPANY",
"canonical_url": "https://example.com/articles/product-launch"
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
company: 'YOUR_COMPANY',
canonical_url: 'https://example.com/articles/product-launch'
})
};
fetch('https://api.webless.ai/api/v1/snackable-read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.webless.ai/api/v1/snackable-read"
payload = {
"company": "YOUR_COMPANY",
"canonical_url": "https://example.com/articles/product-launch"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "ready",
"bullets": [
"The launch introduces a faster setup flow.",
"Existing integrations remain compatible.",
"The new experience is available to all customers."
],
"source_url": "https://example.com/articles/product-launch",
"title": "Product launch",
"cache_status": "miss",
"version": "published",
"resolved_version": "published",
"resolved_corpus_version": 12,
"generated_at": "2026-06-12T19:30:00+00:00"
}not_found when the page is not available in the selected index.Choose generation behavior
| Goal | Field |
|---|---|
| Return between one and six takeaways | Set max_bullets. The default is 3. |
| Adjust the writing style | Set tone to neutral, warm, professional, or concise. |
| Keep existing takeaways | Pass up to five strings in existing_bullets. They count toward max_bullets. |
| Test unpublished runtime changes | Set version to unpublished. Production requests default to published. |
| Bypass the cache and summary analytics | Set is_private_session to true or tracking_consent to false. |
existing_bullets in the requested
tone. In a non-private session, it preserves them and generates only the
remaining bullets.Handle the response status
The endpoint returns HTTP200 for each application-level result.
| Status | Meaning |
|---|---|
ready | bullets contains the generated takeaways. |
not_found | The page is not in the selected index. bullets is empty. |
error | The API could not produce usable takeaways. |
POST /api/v1/quick-read route remains compatible. Use
POST /api/v1/snackable-read for new integrations.Body
Public company or index identifier.
Canonical URL of the page to summarize.
Current browser URL. Optional; fragments and tracking params are normalized server-side.
Optional page title for display and prompt context.
Optional locale or language hint.
Caller-generated request identifier.
Caller-generated session identifier.
When true, bypasses the cache and summary analytics logging.
Tracking consent for this request. Setting this to false also enables private-session behavior.
Model alias configured for the runtime package.
Runtime package pointer. Omit this field or use published for production traffic. Use unpublished only when testing an unpublished runtime package.
published, unpublished Maximum number of Snackable Read bullets to return.
1 <= x <= 6Writing style for generated bullets.
neutral, warm, professional, concise Existing bullets to preserve or rewrite. These count toward max_bullets.
5Response
Snackable Read result for the supplied page URL
Snackable Read generation status.
ready, not_found, error Concise page takeaways. Empty when status is not_found or error.
Whether the response came from cache.
hit, miss, bypass Normalized source URL used for lookup.
Page title returned by the request or indexed content.
Runtime package pointer. Omit this field or use published for production traffic. Use unpublished only when testing an unpublished runtime package.
published, unpublished Resolved runtime pointer after fallback handling.
Resolved indexed corpus version used internally for the response.
Server timestamp for the generated response.
Was this page helpful?