# PlatPhorm Radio - Complete AI/LLM Documentation # https://podcasts.platphormnews.com # Version: 1.1.0 # Last Updated: 2026-03-22 ================================================================================ OVERVIEW ================================================================================ PlatPhorm Radio is a revolutionary podcast streaming platform that combines the nostalgic aesthetics of classic Winamp with modern AI-powered features. The platform analyzes podcast content in real-time and generates dynamic visual backgrounds that reflect the emotional tone of the content. Key Innovation: Sentiment-Reactive Generative Visuals - Background colors and animations shift based on podcast mood - Five sentiment states: positive, negative, neutral, excited, calm - Particle systems and flowing shapes respond to audio playback Key Features: - Multi-tenant architecture for white-label deployments - Webhook support with idempotency for n8n and automation platforms - Event sourcing with outbox pattern - Background job queue for async processing - Comprehensive audit logging - Dynamic API Discovery and OpenAI functions - Smart AI Fallbacks for input parsing ================================================================================ API REFERENCE ================================================================================ Base URL: https://podcasts.platphormnews.com/api/v1 Authentication: Optional (API key in X-API-Key header) Rate Limit: 100 requests per minute per IP OpenAPI Spec: /api/openapi.json Request Headers: - X-Request-ID: Automatic request tracing - X-Tenant-ID: Multi-tenant isolation (optional) - Idempotency-Key: Prevent duplicate processing ================================================================================ PODCASTS API ================================================================================ -------------------------------------------------------------------------------- GET /api/v1/podcasts -------------------------------------------------------------------------------- Description: Retrieve list of available podcasts Query Parameters: - category (string, optional): Filter by category - limit (integer, optional): Max results per page (default: 20, max: 100) - offset (integer, optional): Pagination offset (default: 0) Response: { "success": true, "podcasts": [...], "pagination": { "total": 100, "limit": 20, "offset": 0, "has_more": true } } -------------------------------------------------------------------------------- POST /api/v1/ingest -------------------------------------------------------------------------------- Description: Ingest a podcast from URL or RSS feed. Supports iTunes, Spotify, and direct RSS with automatic fallback. Request Body: { "url": "https://example.com/podcast.rss" } Response: { "success": true, "podcast": { "id": "...", "title": "...", ... }, "episodes": [...], "spotifyFallback": false } -------------------------------------------------------------------------------- GET /api/v1/categories -------------------------------------------------------------------------------- Description: List all podcast categories with counts Response: { "success": true, "categories": [ { "slug": "tech", "name": "Technology", "icon": "🔬", "podcast_count": 42 } ] } -------------------------------------------------------------------------------- GET /api/v1/trending -------------------------------------------------------------------------------- Description: Get trending podcasts Query Parameters: - limit (integer, optional): Number of results (default: 5, max: 20) ================================================================================ SENTIMENT API ================================================================================ -------------------------------------------------------------------------------- POST /api/v1/sentiment -------------------------------------------------------------------------------- Description: Analyze sentiment of text content Request Body: { "text": "This is amazing content!" } Response: { "sentiment": "positive", "confidence": 0.85, "keywords": ["amazing"] } ================================================================================ EVENTS API (Outbox Pattern) ================================================================================ -------------------------------------------------------------------------------- GET /api/v1/events -------------------------------------------------------------------------------- Description: List events for event-driven architectures and n8n integration Query Parameters: - event_type (string): Filter by event type - aggregate_type (string): Filter by aggregate type - published (boolean): Filter by published status - limit (integer): Items per page (max: 100) - offset (integer): Pagination offset Response: { "success": true, "events": [ { "id": "uuid", "event_type": "podcast.created", "aggregate_type": "podcast", "aggregate_id": "abc123", "payload": {...}, "published": false, "created_at": "2026-03-22T..." } ], "pagination": {...} } -------------------------------------------------------------------------------- POST /api/v1/events -------------------------------------------------------------------------------- Description: Create a new event Request Body: { "event_type": "podcast.created", "aggregate_type": "podcast", "aggregate_id": "abc123", "payload": { "title": "New Podcast" } } ================================================================================ WEBHOOKS API ================================================================================ -------------------------------------------------------------------------------- POST /api/v1/webhooks -------------------------------------------------------------------------------- Description: Receive incoming webhooks with signature verification Headers: - x-webhook-signature: HMAC SHA256 signature - x-webhook-event: Event type - idempotency-key: Unique key for deduplication Request Body: Any JSON payload Response: { "success": true, "event_id": "uuid", "delivery_id": "...", "idempotent": false, "latency_ms": 15 } -------------------------------------------------------------------------------- GET /api/v1/webhooks -------------------------------------------------------------------------------- Description: List registered webhook endpoints ================================================================================ JOBS API (Background Queue) ================================================================================ -------------------------------------------------------------------------------- GET /api/v1/jobs -------------------------------------------------------------------------------- Description: List background jobs Query Parameters: - queue (string): Filter by queue name - status (string): Filter by status (pending, running, completed, failed) -------------------------------------------------------------------------------- POST /api/v1/jobs -------------------------------------------------------------------------------- Description: Create a background job Request Body: { "queue": "default", "name": "process_podcast", "payload": { "podcast_id": "abc123" }, "priority": 0, "run_at": "2026-03-22T12:00:00Z" } ================================================================================ AUDIT API ================================================================================ -------------------------------------------------------------------------------- GET /api/v1/audit -------------------------------------------------------------------------------- Description: List audit logs for compliance and debugging Query Parameters: - action (string): Filter by action - resource_type (string): Filter by resource type - user_id (string): Filter by user ID ================================================================================ HEALTH & DISCOVERY ================================================================================ GET /api/health - Service health check GET /api/openapi.json - OpenAPI 3.1 specification GET /api/mcp - Model Context Protocol endpoint GET /api/docs - Interactive API documentation ================================================================================ SENTIMENT ANALYSIS ================================================================================ The platform uses keyword-based sentiment analysis with five categories: POSITIVE: Uplifting and encouraging content - Keywords: great, amazing, wonderful, excellent, success, inspiring, hopeful NEGATIVE: Critical or challenging topics - Keywords: bad, terrible, problem, crisis, fear, struggle, difficult NEUTRAL: Balanced and informative - Detected when no strong sentiment keywords present EXCITED: High energy and enthusiastic - Keywords: exciting, wow, incredible, breakthrough, revolutionary CALM: Relaxed and meditative - Keywords: peaceful, calm, relaxing, serene, mindful, meditation ================================================================================ MULTI-TENANT ARCHITECTURE ================================================================================ Database Tables: - tenants: Organization/tenant configuration - roles: Role-based access control - profiles: User profiles linked to auth.users - api_keys: API key management with scopes - audit_logs: Comprehensive audit trail - webhook_endpoints: Registered webhook destinations - webhook_deliveries: Delivery tracking with retries - events: Event outbox for event-driven architecture - jobs: Background job queue - podcasts: Podcast metadata - episodes: Episode data with audio URLs - podcast_categories: Category taxonomy All tables include: - tenant_id for multi-tenant isolation - created_at, updated_at timestamps - metadata JSONB for flexible extensions - Row Level Security (RLS) policies ================================================================================ INTEGRATION WITH PLATPHORM NETWORK ================================================================================ PlatPhorm Radio is part of the PlatPhorm News Network ecosystem: Network Graph: https://platphormnews.com/api/network/graph Root Domain: https://www.platphormnews.com MCP Server: https://mcp.platphormnews.com Related Services: - games.platphormnews.com - Gaming platform - sports.platphormnews.com - Sports news - altnews.platphormnews.com - Alternative news - calendar.platphormnews.com - Event scheduling - docs.platphormnews.com - Documentation ================================================================================ n8n INTEGRATION ================================================================================ All webhook and event endpoints are compatible with n8n workflows: 1. Use HTTP Request node to poll /api/v1/events for new events 2. Use Webhook node to receive callbacks at /api/v1/webhooks 3. Use idempotency-key header for reliable delivery 4. Create jobs via /api/v1/jobs for async processing Example n8n payload structure: { "event_type": "podcast.ingested", "aggregate_type": "podcast", "aggregate_id": "podcast-123", "payload": { "title": "New Podcast", "category": "Technology", "episode_count": 50 } } ================================================================================ SUPPORT & CONTRIBUTIONS ================================================================================ Crypto Donations: 0x30589F2e1B8E9a48BBb2c66Ac012FE7ED2A7eB85 Source Code: https://github.com/mbarbine/platphorm-podcasts ================================================================================