Documentation
Everything you need to use Broad-Cast.ai's platform and API
Overview
Broad-Cast.ai provides two main capabilities:
AI Podcast Generator
Transform your content sources into professional podcast scripts and audio using AI.
Knowledge Base API
Build searchable vector databases from your content for RAG applications.
Data Isolation: Each workspace's data is completely isolated. The API only returns content from sources you've connected.
Quickstart
-
1
Create an Account
Sign up at broad-cast.ai/register to get started.
-
2
Add Data Sources
Connect RSS feeds, websites, or upload documents from your Dashboard.
-
3
Generate API Key
Go to Settings → API Keys and create a new key for your application.
-
4
Make Your First Request
Use the vector search API to query your indexed content.
Authentication
All API requests require an API key in the X-API-Key header.
curl https://broad-cast.ai/v1/vector/search \
-H "X-API-Key: bcast_your_api_key" \
-H "Content-Type: application/json" \
-d '{"query": "your search"}'
Security: Keep your API keys secret. Don't expose them in client-side code or public repositories.
Vector Search
POST /v1/vector/search
Search your indexed content using semantic similarity. Returns the most relevant documents based on meaning, not just keywords.
Request Body
{
"query": "How do I configure authentication?",
"limit": 10,
"doc_types": ["topics", "replies"]
}
| Parameter | Type | Description |
|---|---|---|
| query | string | Search query (required, max 2000 chars) |
| limit | integer | Results to return (1-100, default: 10) |
| doc_types | array | Filter by document type |
| connector_uuids | array | Filter by specific data sources |
Response
{
"results": [
{
"id": "doc_12345",
"content": "To configure authentication, you need to...",
"doc_type": "topic",
"connector_uuid": "abc123-def456",
"distance": 0.234,
"metadata": {
"title": "Authentication Guide",
"author": "JohnDoe",
"url": "https://example.com/docs/auth"
}
}
],
"total": 1,
"query": "How do I configure authentication?"
}
List Sources
GET /v1/vector/collections
Get a list of your connected data sources with document counts.
Response
{
"collections": [
{
"connector_uuid": "abc123-def456",
"connector_name": "Tech Blog RSS",
"topics_count": 1542,
"replies_count": 0
}
]
}
Error Handling
The API returns standard HTTP status codes and JSON error responses.
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Invalid request parameters |
| 401 | Invalid or missing API key |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
Error Response Format
{
"detail": "Invalid API key"
}
Python Examples
Basic Search
import requests
API_KEY = "bcast_your_api_key"
BASE_URL = "https://broad-cast.ai"
response = requests.post(
f"{BASE_URL}/v1/vector/search",
headers={"X-API-Key": API_KEY},
json={
"query": "How do I implement user authentication?",
"limit": 5
}
)
data = response.json()
for result in data["results"]:
print(f"Score: {1 - result['distance']:.3f}")
print(f"Content: {result['content'][:200]}...")
print("---")
RAG Integration
import requests
import openai
def get_context(query: str, api_key: str) -> str:
"""Retrieve relevant context from Broad-Cast.ai"""
response = requests.post(
"https://broad-cast.ai/v1/vector/search",
headers={"X-API-Key": api_key},
json={"query": query, "limit": 3}
)
results = response.json()["results"]
return "\n\n".join([r["content"] for r in results])
def answer_question(question: str):
context = get_context(question, "bcast_your_api_key")
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": f"Answer based on this context:\n{context}"},
{"role": "user", "content": question}
]
)
return response.choices[0].message.content
print(answer_question("How do I configure OAuth?"))
Node.js Examples
Basic Search
const API_KEY = "bcast_your_api_key";
const BASE_URL = "https://broad-cast.ai";
async function search(query) {
const response = await fetch(`${BASE_URL}/v1/vector/search`, {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({ query, limit: 5 })
});
const data = await response.json();
data.results.forEach(result => {
console.log(`Score: ${(1 - result.distance).toFixed(3)}`);
console.log(`Content: ${result.content.slice(0, 200)}...`);
console.log("---");
});
}
search("How do I implement user authentication?");
Express.js Middleware
const express = require('express');
const app = express();
const API_KEY = process.env.BROADCAST_API_KEY;
async function searchContext(query) {
const res = await fetch("https://broad-cast.ai/v1/vector/search", {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({ query, limit: 5 })
});
return res.json();
}
app.post('/api/chat', async (req, res) => {
const { question } = req.body;
// Get relevant context
const context = await searchContext(question);
// Use context with your LLM
// ... your LLM integration here
res.json({ answer: "..." });
});
app.listen(3000);