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. 1

    Create an Account

    Sign up at broad-cast.ai/register to get started.

  2. 2

    Add Data Sources

    Connect RSS feeds, websites, or upload documents from your Dashboard.

  3. 3

    Generate API Key

    Go to Settings → API Keys and create a new key for your application.

  4. 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.

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);