Code Examples

Complete Python, JavaScript, and cURL examples.

llms.txt Full docs for LLMs

Complete, copy-paste examples with error handling for every API category.

Text-to-Speech

Python — TTS Generation
# pip install requests import requests, time, sys API_KEY = "YOUR_API_KEY" BASE = "https://api.algrow.online" HEADERS = {"Authorization": f"Bearer {API_KEY}"} # 1. Submit generation resp = requests.post(f"{BASE}/api/generate-simple", headers=HEADERS, data={ "script": "Welcome to our YouTube channel.", "voice_id": "21m00Tcm4TlvDq8ikWAM", "provider": "elevenlabs", "stability": "0.7", "similarity_boost": "0.8", }) data = resp.json() if not data.get("success"): print(f"Error: {data.get('error')}") sys.exit(1) job_id = data["job_id"] print(f"Job submitted: {job_id}") # 2. Poll for completion (max 60 attempts = ~3 minutes) for attempt in range(60): status = requests.get(f"{BASE}/api/job-status/{job_id}", headers=HEADERS).json() if status["status"] == "completed": print(f"Audio ready: {status['audio_url']}") break elif status["status"] == "failed": print(f"Generation failed: {status.get('error', 'Unknown error')}") sys.exit(1) else: print(f"Status: {status['status']}... (attempt {attempt + 1})") time.sleep(3) else: print("Timed out waiting for generation") sys.exit(1)
JavaScript (Node.js 18+)
const API_KEY = "YOUR_API_KEY"; const BASE = "https://api.algrow.online"; async function generateTTS(text, voiceId, options = {}) { // 1. Submit generation const form = new URLSearchParams(); form.append("script", text); form.append("voice_id", voiceId); form.append("provider", options.provider || "elevenlabs"); if (options.stability) form.append("stability", options.stability); if (options.similarity_boost) form.append("similarity_boost", options.similarity_boost); if (options.speed) form.append("speed", options.speed); const submitRes = await fetch(`${BASE}/api/generate-simple`, { method: "POST", headers: { Authorization: `Bearer ${API_KEY}` }, body: form, }); const submitData = await submitRes.json(); if (!submitData.success) throw new Error(submitData.error); const jobId = submitData.job_id; console.log(`Job submitted: ${jobId}`); // 2. Poll for completion for (let i = 0; i < 60; i++) { const statusRes = await fetch(`${BASE}/api/job-status/${jobId}`, { headers: { Authorization: `Bearer ${API_KEY}` }, }); const status = await statusRes.json(); if (status.status === "completed") return status.audio_url; if (status.status === "failed") throw new Error(status.error || "Generation failed"); console.log(`Status: ${status.status}... (attempt ${i + 1})`); await new Promise(r => setTimeout(r, 3000)); } throw new Error("Timed out waiting for generation"); } // Usage generateTTS("Hello from the Algrow API!", "21m00Tcm4TlvDq8ikWAM", { stability: "0.7", similarity_boost: "0.8", }) .then(url => console.log("Audio:", url)) .catch(err => console.error("Error:", err.message));
cURL (complete workflow)
# Step 1: Submit generation RESPONSE=$(curl -s -X POST "https://api.algrow.online/api/generate-simple" \ -H "Authorization: Bearer YOUR_API_KEY" \ -F "script=This is a complete cURL example with polling." \ -F "voice_id=21m00Tcm4TlvDq8ikWAM") echo "Submit response: $RESPONSE" JOB_ID=$(echo $RESPONSE | python3 -c "import sys,json; print(json.load(sys.stdin)['job_id'])") # Step 2: Poll until complete while true; do STATUS=$(curl -s "https://api.algrow.online/api/job-status/$JOB_ID" \ -H "Authorization: Bearer YOUR_API_KEY") STATE=$(echo $STATUS | python3 -c "import sys,json; print(json.load(sys.stdin)['status'])") if [ "$STATE" = "completed" ]; then AUDIO=$(echo $STATUS | python3 -c "import sys,json; print(json.load(sys.stdin)['audio_url'])") echo "Audio ready: $AUDIO" break elif [ "$STATE" = "failed" ]; then echo "Failed: $STATUS" break fi echo "Status: $STATE ..." sleep 3 done

YouTube Scraper

Python — Scrape a Channel
import requests, time API_KEY = "YOUR_API_KEY" BASE = "https://api.algrow.online" HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"} # 1. Submit scraping job resp = requests.post(f"{BASE}/api/youtube-scraper", headers=HEADERS, json={ "url": "https://www.youtube.com/@MrBeast", "video_type": "videos", "sort": "popular", "max_videos": 10, "include_transcripts": true, "include_comments": true }) data = resp.json() job_id = data["job_id"] print(f"Job {job_id} queued ({data['mode']} mode)") # 2. Poll for results for _ in range(120): status = requests.get(f"{BASE}/api/youtube-scraper/{job_id}", headers=HEADERS).json() if status["status"] == "completed": result = status["result"] print(f"Got {result['total_videos']} videos, {result['total_views']:,} total views") for v in result["videos"]: print(f" {v['title']} — {v['view_count']:,} views") break elif status["status"] == "failed": print(f"Failed: {status.get('error')}") break time.sleep(3)
cURL — Scrape a Single Video
# Scrape a single video with transcripts curl -X POST "https://api.algrow.online/api/youtube-scraper" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "include_transcripts": true}'

Terminated Channels

Python — Search Terminated Channels
import requests API_KEY = "YOUR_API_KEY" BASE = "https://api.algrow.online" HEADERS = {"Authorization": f"Bearer {API_KEY}"} # Search for terminated gaming channels with 100k+ subs resp = requests.get(f"{BASE}/api/terminated-channels/search", headers=HEADERS, params={ "q": "gaming", "languages": "English", "min_subs": 100000, "sort": "subs_desc", "per_page": 10 }) data = resp.json() for ch in data["channels"]: print(f"{ch['channel_title']} — {ch['subscriber_count']:,} subs, terminated {ch['terminated_days_ago']}d ago") for v in ch.get("recent_videos", []): print(f" └ {v['title']} ({v['view_count']:,} views)")
cURL — Recently Terminated Channels
curl "https://api.algrow.online/api/terminated-channels/search?sort=date_desc&per_page=20" \ -H "Authorization: Bearer YOUR_API_KEY"

Studio

Python — Generate an Image
import requests, time API_KEY = "YOUR_API_KEY" BASE = "https://api.algrow.online" HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"} # Submit image generation resp = requests.post(f"{BASE}/api/generate-image", headers=HEADERS, json={ "prompt": "a sunset over mountains, photorealistic", "model": "nano-banana-2", "aspect_ratio": "16:9" }) job_id = resp.json()["job_id"] # Poll for result for _ in range(60): status = requests.get(f"{BASE}/api/job-status/{job_id}", headers=HEADERS).json() if status["status"] == "completed": print(f"Image: {status['result_url']}") break elif status["status"] == "failed": print(f"Failed: {status.get('error')}") break time.sleep(3)
cURL — Remove Captions from Video
curl -X POST "https://api.algrow.online/api/caption-remover" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"video_url": "https://example.com/my-video.mp4"}'
cURL — Generate a Video
curl -X POST "https://api.algrow.online/api/generate-video" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"prompt": "a cat walking through a field of flowers", "model": "sora-2", "seconds": "4"}'
esc
×

Buy More Credits

Boost
150
credits
$4.99
Good for:
  • ~12 min caption removal
Studio
1,000
credits
$31.49
Good for:
  • ~80 min caption removal