ContentFlow Python SDK
Podcast intelligence API — transcripts, semantic search, entity extraction, topic classification, and AI summaries from 50,000+ hours of business podcasts.
Installation
pip install contentflow-sdk
Quick Start
from contentflow import ContentFlow
client = ContentFlow(api_key="pk_live_...")
# Search 50,000+ hours of podcast content
results = client.search.hybrid(query="AI fundraising strategies")
for result in results.results:
print(f"{result.title}: {result.best_chunk_text[:100]}")
# Transcribe any YouTube video
job = client.jobs.create(youtube_url="https://youtube.com/watch?v=...")
job = client.jobs.wait(job.id) # polls until complete
summary = client.jobs.get_summary(job.id)
print(summary.summaries[0].content)
Async Support
from contentflow import AsyncContentFlow
async with AsyncContentFlow() as client:
job = await client.jobs.create(youtube_url="https://youtube.com/watch?v=...")
job = await client.jobs.wait(job.id)
transcript = await client.jobs.get_transcript(job.id)
Features
- Typed responses — full Pydantic models with IDE autocomplete
- Sync + async —
ContentFlowandAsyncContentFlowclients - Smart polling —
jobs.wait()with exponential backoff - Automatic retries — configurable retry with backoff on transient errors
- Rate limit handling — parsed rate limit headers on
RateLimitError - CLI tool —
pip install contentflow-sdk[cli]for terminal access
API Reference
Jobs
| Method | Description |
|---|---|
client.jobs.create(youtube_url=...) |
Submit a video for transcription |
client.jobs.get(job_id) |
Get job status and details |
client.jobs.wait(job_id) |
Poll until job completes |
client.jobs.create_and_wait(youtube_url=...) |
Submit and wait in one call |
client.jobs.get_transcript(job_id, format=...) |
Download transcript (json/srt/markdown/plain) |
client.jobs.get_summary(job_id) |
AI summary with citations |
client.jobs.get_speakers(job_id) |
Identified speakers and roles |
client.jobs.get_segments(job_id) |
Topical video sections |
client.jobs.get_entities(job_id) |
Companies, people, products mentioned |
client.jobs.get_topics(job_id) |
Topic classifications |
Search
| Method | Description |
|---|---|
client.search.hybrid(query, ...) |
Keyword + semantic search with filters |
client.search.semantic(query, ...) |
Pure meaning-based search |
Search filters: limit, alpha (keyword vs semantic balance), speaker_ids, entity_ids, topic_ids, channel_ids, date_from, date_to
CLI
pip install contentflow-sdk[cli]
export CONTENTFLOW_API_KEY=pk_live_...
# Submit and wait for transcription
contentflow jobs create "https://youtube.com/watch?v=..." --wait
# Download transcript
contentflow jobs transcript JOB_ID --format markdown --output transcript.md
# Get AI summary
contentflow jobs summary JOB_ID
# Search across all content
contentflow search hybrid "startup fundraising" --limit 5
contentflow search semantic "how to handle investor objections"
Configuration
client = ContentFlow(
api_key="pk_live_...", # or set CONTENTFLOW_API_KEY env var
base_url="https://custom.url", # default: https://api.gocontentflow.com
timeout=60.0, # request timeout in seconds (default: 30)
max_retries=5, # retry count for transient errors (default: 3)
)
Error Handling
from contentflow import ContentFlow, RateLimitError, NotFoundError, AuthenticationError
client = ContentFlow(api_key="pk_live_...")
try:
job = client.jobs.get("nonexistent-id")
except NotFoundError:
print("Job not found")
except RateLimitError as e:
print(f"Rate limited. Retry after {e.retry_after}s")
print(f"Remaining: {e.remaining}/{e.limit}")
except AuthenticationError:
print("Invalid API key")
Exception hierarchy:
ContentFlowError
├── APIError
│ ├── APIConnectionError
│ │ └── APITimeoutError
│ └── APIStatusError
│ ├── BadRequestError (400)
│ ├── AuthenticationError (401)
│ ├── PermissionDeniedError (403)
│ ├── NotFoundError (404)
│ ├── RateLimitError (429)
│ └── InternalServerError (5xx)
├── JobFailedError
└── JobTimeoutError
Get Your API Key
Sign up at gocontentflow.com to get your API key.
Metadata
Release files for contentflow-sdk 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| contentflow_sdk-0.1.0.tar.gz | 21.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| contentflow_sdk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.8 kB
Release files / contentflow_sdk-0.1.0.tar.gz
| Download URL | contentflow_sdk-0.1.0.tar.gz |
|---|---|
| Size | 21.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b35a092316843e34a3050dbc26cb3ed6d8fcc6d4077dff9351072195b0cec543
|
|
BLAKE2b-256 checksum How to use checksums |
8bf3eb8d69083671b26bdacd005ea3fb196b54bf0c62145f2f69cb59055e42e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency logRelease files / contentflow_sdk-0.1.0-py3-none-any.whl
| Download URL | contentflow_sdk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 22.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a18ede1de9b875d3b89b809a7c0198c6eb8868e89f9fadae5f81a6e9bae8a060
|
|
BLAKE2b-256 checksum How to use checksums |
c8900c56f07b767703f07856a4b1da9819af36195b67b05623f18c4e5be7c3d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency log