Multi-dimensional filtering. Section-level precision. 15+ structured outputs. Built for enterprise AI teams.
# Simple story retrieval curl -X POST https://api.synorb.com/stories \ -H "api-key: YOUR_KEY" \ -H "secret: YOUR_SECRET" \ -d '{ "stream_id": 889, "published_date_from": "2025-01-01" }' # Returns complete stories
# Filter by entity dimensions curl -X POST https://api.synorb.com/stories \ -H "api-key: YOUR_KEY" \ -H "secret: YOUR_SECRET" \ -d '{ "stream_id": 889, "filters": [ {"key": "Topics", "value": "AI"} ] }' # Returns only AI-related content
# Extract specific sections only curl -X POST https://api.synorb.com/stories \ -H "api-key: YOUR_KEY" \ -H "secret: YOUR_SECRET" \ -d '{ "stream_id": 889, "body_sections": [ "Key Insights", "Signals" ] }' # Returns only insights + signals
# Surgical multi-dimensional extraction curl -X POST https://api.synorb.com/stories \ -H "api-key: YOUR_KEY" \ -H "secret: YOUR_SECRET" \ -d '{ "stream_id": 889, "filters": [ {"key": "Topics", "value": "AI"}, {"key": "people", "value": "Marc Andreessen"} ], "body_sections": ["Portfolio Mentions"], "published_date_from": "2025-09-01" }' # Precision-targeted intelligence
Complete API specifications with enhanced filtering and surgical extraction capabilities
Headers only - no query parameters required.
Header | Type | Description |
---|---|---|
api-key | string | Your API key from account dashboard |
secret | string | Your API secret for authentication |
{
"user_id": 429,
"usage": {
"quota": 1000, // Monthly allocation
"usage": 3252, // Stories consumed
"overage": 2252, // Beyond quota
"quota_reset_date": "2025-10-15"
}
}
{
"streams": [
{
"id": 889,
"title": "Andreessen Horowitz Insights",
"description": "VC insights, portfolio updates...",
"purpose": "Track venture perspectives...",
"home_domain": "economics-business-work",
"cross_domains": ["engineering-technology"],
"primary_entity": {
"name": "Andreessen Horowitz",
"type": "org",
"role": "publisher"
}
}
]
}
Field | Type | Description |
---|---|---|
id | integer | Stream identifier for detail queries |
home_domain | string | Primary domain classification |
cross_domains | array | Secondary domains this stream appears in |
Parameter | Type | Required | Description |
---|---|---|---|
streamid | integer | Required | Stream ID from catalog |
{
"stream_id": 889,
"title": "Andreessen Horowitz Insights",
// 15+ structured body sections (stream-specific)
"body_sections": [
"Overview", "Key Insights", "Notable Quotes",
"Actionable Takeaways", "Announcement",
"Key Details", "Big Picture", "Key Arguments",
"Signals", "Entities Mentioned", "Links",
"Portfolio Mentions", "Risks & Watchpoints",
"Resources Mentioned", "Timestamps"
],
// Multi-dimensional filters (stream-specific)
"filters": [
{
"key": "Topics",
"allowed": ["AI", "Crypto", "Biotech", "Enterprise"]
},
{
"key": "people",
"allowed": ["Marc Andreessen", "Ben Horowitz"]
},
{
"key": "content_type",
"allowed": ["Blog Post", "Podcast", "Tweet Thread"]
}
],
// Activity metrics
"activity": {
"7d_count": 12,
"30d_count": 48,
"90d_count": 156
}
}
Always call /stream first to discover available filters and body sections for that stream. Each stream has unique filter dimensions and section structures. Use this metadata to construct precise /stories queries.
{
"stream_id": 889, // Required
"published_date_from": "2025-08-01", // Optional
"published_date_to": "2025-10-03", // Optional
"page_num": 0, // Default: 0
"page_size": 100, // Max: 200
// Section extraction (empty = all)
"body_sections": [
"Key Insights",
"Signals",
"Portfolio Mentions"
],
// Multi-dimensional filtering
"filters": [
{"key": "Topics", "value": "AI"},
{"key": "people", "value": "Marc Andreessen"}
]
}
Parameter | Type | Required | Description |
---|---|---|---|
stream_id | integer | Required | Target stream identifier |
body_sections | array | Optional | Sections to extract (empty = all 15 sections). Use /stream to discover available sections. |
filters | array | Optional | Multi-dimensional filters [{key, value}]. Use /stream to discover filter dimensions. |
published_date_from | string | Optional | Start date (YYYY-MM-DD format) |
page_size | integer | Optional | Results per page (max: 200) |
{
"stories": [
{
"story_id": 1126730,
"published_date": "2025-09-23",
"filters": [
{"key": "Topics", "allowed": ["AI", "Crypto"]},
{"key": "people", "allowed": ["Ben Horowitz"]}
],
"story": {
"body": "# Title\n\n## Key Insights\n..."
}
}
],
"pagination": {
"total_count": 28,
"next": null,
"prev": null
}
}
Combine body_sections + filters for precision targeting. Example: Extract only "Portfolio Mentions" section from AI-related stories by Marc Andreessen. Filters are stream-specific - always check /stream first.
Production-ready libraries with built-in surgical extraction and multi-dimensional filtering
Real patterns for production AI applications
Extract portfolio mentions from VC content, filtered by specific topics and investors
Pull only risk sections from regulatory filings, filtered by entity type
Aggregate key insights about AI from multiple venture sources
Extract only announcement sections from specific industry streams
From setup to surgical extraction
Email for instant access with free tier quota
Call /stream to see available filters and sections
Combine filters + sections for surgical precision
Production-ready techniques for multi-dimensional filtering, pagination strategies, and surgical extraction at scale
Combine filters across dimensions for precision targeting (AND logic)
# Python: Combine multiple filter dimensions
stories = client.get_stories(
stream_id=889,
filters=[
{
"key": "Topics",
"value": "AI"
},
{
"key": "people",
"value": "Marc Andreessen"
},
{
"key": "content_type",
"value": "Blog Post"
}
],
published_date_from="2025-09-01"
)
Extract only specific sections to reduce payload and focus intelligence
# JavaScript: Extract specific sections only
const response = await client.getStories({
streamId: 889,
filters: [
{ key: "Topics", value: "AI" }
],
bodySections: [
"Key Insights",
"Signals",
"Portfolio Mentions"
]
})
// Story body contains ONLY requested sections
Handle large result sets with cursor-based pagination
# Python: Paginate through large result sets
all_stories = []
page_num = 0
has_more = True
while has_more:
response = client.get_stories(
stream_id=889,
filters=[{"key": "Topics", "value": "AI"}],
page_num=page_num,
page_size=200 # Max per request
)
all_stories.extend(response["stories"])
# Check if there are more pages
has_more = response["pagination"]["next"] is not None
page_num += 1
print(f"Fetched {len(all_stories)} stories so far...")
print(f"Total: {len(all_stories)} stories")
Copy-paste patterns for common enterprise use cases
Track what your competitors are investing in by extracting portfolio mentions from VC streams
Pull only risk-related sections from regulatory streams for compliance monitoring
Collect key insights about AI trends from multiple VC and research sources
Monitor new funding rounds by filtering for announcement-type content
Get only actionable insights from industry reports for strategic planning
Create personalized intelligence feeds by combining multiple filters and date ranges
Start building with Synorb's machine-native content infrastructure
🎉 7-day context window • 1,000 stories/month • No credit card required