{"openapi":"3.0.0","info":{"title":"Presentr Analyze Media Intelligence API","version":"1.0.0","description":"Podcast analysis API for transcript, captions, chapters, ad markers, show notes, and media health."},"servers":[{"url":"https:\/\/analyze.presentr.me"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"apiKeyAuth":{"type":"apiKey","in":"header","name":"X-Api-Key"}},"schemas":{"PodcastAnalyzeRequest":{"type":"object","required":["source_url"],"properties":{"source_url":{"type":"string","format":"uri"},"options":{"type":"object","properties":{"language":{"type":"string","example":"en"},"generate_transcript":{"type":"boolean","example":true},"generate_captions":{"type":"boolean","example":true},"caption_formats":{"type":"array","items":{"type":"string","enum":["srt","vtt"]}},"detect_ad_markers":{"type":"boolean","example":true},"ad_marker_count":{"type":"integer","minimum":1,"maximum":10},"generate_chapters":{"type":"boolean","example":true},"generate_summary":{"type":"boolean","example":true}}}}},"JobEnvelope":{"type":"object","properties":{"job":{"type":"object","properties":{"uuid":{"type":"string","example":"job_123e4567-e89b-12d3-a456-426614174000"},"type":{"type":"string","example":"podcast_analysis"},"status":{"type":"string","example":"queued"},"status_url":{"type":"string","example":"\/api\/v1\/jobs\/job_123e4567-e89b-12d3-a456-426614174000"}}}}},"Artifact":{"type":"object","properties":{"type":{"type":"string"},"filename":{"type":"string"},"url":{"type":"string","format":"uri"},"expires_at":{"type":"string","format":"date-time"},"content_type":{"type":"string"}}},"PodcastAnalysisResult":{"type":"object","properties":{"type":{"type":"string","example":"podcast_analysis_result"},"duration_sec":{"type":"integer"},"language":{"type":"string","nullable":true},"transcript_summary":{"type":"string","nullable":true},"ad_markers":{"type":"array","items":{"type":"object"}},"chapters":{"type":"array","items":{"type":"object"}},"media_health":{"type":"object"}}},"ErrorResponse":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","nullable":true}}}}}}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"paths":{"\/api\/v1\/podcasts\/analyze":{"post":{"summary":"Create podcast analysis job","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Replaying this key with the same body returns the original job instead of creating a second, chargeable one. A different body with the same key returns 409. Scoped per account."}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PodcastAnalyzeRequest"}}}},"responses":{"202":{"description":"Queued","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/JobEnvelope"}}}},"422":{"description":"Validation failed","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}}}}},"\/api\/v1\/jobs\/{uuid}":{"get":{"summary":"Get job status","parameters":[{"in":"path","name":"uuid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Job status"},"404":{"description":"Job missing or expired","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}}}}},"\/api\/v1\/jobs\/{uuid}\/artifacts":{"get":{"summary":"Get signed artifact URLs","parameters":[{"in":"path","name":"uuid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Artifacts list"}}}},"\/api\/v1\/me":{"get":{"summary":"Verify authentication context","responses":{"200":{"description":"Authenticated context"}}}},"\/api\/v1\/usage":{"get":{"summary":"Current-period usage","responses":{"200":{"description":"Usage summary"}}}}}}