Use when run AI models on Replicate cloud API. Deploy image generation,
Scanned 9/8/2026
Install to Claude Code
npx -y skills add oyi77/1ai-skills --skill replicate-runner --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Replicate Runner?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/oyi77-replicate-runner)More formats (shields.io, HTML) on the badges page.
---
name: replicate-runner
description: Use when run AI models on Replicate cloud API. Deploy image generation,
video creation, audio processing, and custom models without managing infrastructure.
Use when working with replicate runner.
domain: core
author: oyi77
license: Apache-2.0
subdomain: core-platform
tags:
- ai
- replicate
- models
- image-generation
- video
- api
version: 1.0.0
category: core
---
# Replicate Runner
## When to Use
**Trigger phrases:**
- "replicate runner"
- "Run AI models on Replicate cloud API"
- When running AI models without managing GPU infrastructure
- When generating images, videos, or audio with state-of-the-art models
- When deploying custom models to a cloud API
- When chaining multiple AI models in a pipeline
## Anti-Rationalization Table
| Excuse | Reality | Rule |
|--------|---------|------|
| "I'll just use the API directly" | Replicate API changes; runner abstraction insulates your code | One integration point, not N scattered calls |
| "Docker is enough" | Docker lacks model versioning, caching, cost tracking | Runner adds observability and governance |
| "I don't need model routing" | Different models excel at different tasks | Route automatically; don't hardcode |
**Trigger phrases:**
- "replicate runner"
- "Run AI models on Replicate cloud API"
- When running AI models without managing GPU infrastructure
- When generating images, videos, or audio with state-of-the-art models
- When deploying custom models to a cloud API
- When chaining multiple AI models in a pipeline
## When NOT to Use
- For local inference (use Ollama skills)
- For OpenAI-compatible endpoints (use OpenAI skills)
- For fine-tuning (use training-specific skills)
## Overview
Access 1000+ AI models via Replicate API. Run Flux, Stable Diffusion, Whisper, and custom models with a single API call. Pay per second of compute.
## Setup & Configuration
### 1. Get API Token
Sign up at [replicate.com](https://replicate.com), then create an API token in your account settings.
### 2. Environment Variable
```bash
export REPLICATE_API_TOKEN=r8_xxxxxxxxxxxxxxxxxxxx
```
Or store in `.env`:
```bash
REPLICATE_API_TOKEN=r8_xxxxxxxxxxxxxxxxxxxx
```
### 3. Install SDK
**Python:**
```bash
pip install replicate
```
**Node.js:**
```bash
npm install replicate
```
### 4. SDK Initialization
**Python:**
```python
import replicate
# Token auto-reads from REPLICATE_API_TOKEN env var
```
**Node.js:**
```javascript
import Replicate from "replicate";
const replicate = new Replicate();
```
### Pricing Model
| Plan | Compute Per Second |
|------|-------------------|
| Pay-as-you-go | $0.000113/s (base) |
| Annual Commitment | ~20% discount |
| Private Deployments | Custom pricing |
Most models also include a **free prediction** for first-time use.
## Workflow
1. **Install SDK** — `npm install replicate` or `pip install replicate`
2. **Choose model** — Browse replicate.com/models or use model IDs
3. **Run prediction** — Submit input, poll for output
4. **Handle output** — Download files, process results
5. **Chain models** — Pipe output of one model as input to another
---
## Core Usage — Synchronous Prediction
The simplest path: submit a prediction and wait for the result.
**Python:**
```python
import replicate
# Flux image generation
output = replicate.run(
"black-forest-labs/flux-schnell",
input={
"prompt": "cyberpunk city at sunset, neon lights, rain",
"num_outputs": 2,
"aspect_ratio": "16:9",
"num_inference_steps": 4,
}
)
for item in output:
print(item.url)
```
**Node.js:**
```javascript
import Replicate from "replicate";
const replicate = new Replicate();
const output = await replicate.run(
"black-forest-labs/flux-schnell",
{
input: {
prompt: "cyberpunk city at sunset, neon lights, rain",
num_outputs: 2,
aspect_ratio: "16:9",
},
}
);
console.log(output);
```
---
## Advanced Usage Patterns
### Async Prediction with Webhook Callback
For long-running models (video, upscaling), use webhooks so Replicate POSTs the result to your server instead of blocking.
**Python:**
```python
import replicate
prediction = replicate.predictions.create(
version="lucataco/remove-bg:95fcc2a26d3899cd6c26964560f8e0e6a2f5b8c1e5c7e3c5e8f3c5e8d3c5e8f3",
input={"image": "https://example.com/photo.jpg"},
webhook="https://myapp.com/replicate-callback",
webhook_events_filter=["completed"]
)
print(f"Prediction ID: {prediction.id}")
print(f"Started: {prediction.created_at}")
# Webhook will deliver {prediction.id} with output when done
```
**Node.js:**
```javascript
import Replicate from "replicate";
const replicate = new Replicate();
const prediction = await replicate.predictions.create({
version: "lucataco/remove-bg:95fcc2a26d3899cd6c26964560f8e0e6a2f5b8c1e5c7e3c5e8f3c5e8d3c5e8f3",
input: { image: "https://example.com/photo.jpg" },
webhook: "https://myapp.com/replicate-callback",
webhook_events_filter: ["completed"],
});
```
### Image-to-Image Pipeline
Generate an image, then use it as input to a second model.
**Python:**
```python
import replicate
from PIL import Image
import requests
# Step 1: Generate base image
base = replicate.run(
"black-forest-labs/flux-schnell",
input={"prompt": "mountain landscape", "num_outputs": 1}
)
base_url = base[0].url
# Step 2: Download image bytes
img_bytes = requests.get(base_url).content
# Step 3: Upscale with Real-ESRGAN
upscaled = replicate.run(
"nightmareai/real-esrgan:42fed1c4974146d4d2414e2be2c5277c7fcf05fcc3a73abf41610695738c1d69",
input={"image": img_bytes, "scale": 2}
)
print("Upscaled:", upscaled)
```
### Audio Transcription
**Python:**
```python
import replicate
output = replicate.run(
"openai/whisper:4d50797390bb4d5e5e1b2b6c8c6b5a7a7b9f5b7c8d9e0f1a2b3c4d5e6f7a8b9c",
input={
"audio": "https://example.com/meeting.mp3",
"model": "large-v3",
"language": "en"
}
)
print(output["text"])
```
**Node.js:**
```javascript
import Replicate from "replicate";
const replicate = new Replicate();
const output = await replicate.run(
"openai/whisper:4d50797390bb4d5e5e1b2b6c8c6b5a7a7b9f5b7c8d9e0f1a2b3c4d5e6f7a8b9c",
{
input: {
audio: "https://example.com/meeting.mp3",
model: "large-v3",
language: "en",
},
}
);
console.log(output.text);
```
### Video Generation
**Python:**
```python
import replicate
import time
# Start prediction (non-blocking)
prediction = replicate.predictions.create(
version="stability-ai/stable-video-diffusion:3f0457e4619daac51203dedb472816fd4af51f3149fa7a9e0b5ffcf1b8172438",
input={
"input_image": "https://example.com/photo.png",
"video_length": 25,
"sizing_strategy": "maintain_aspect_ratio",
}
)
# Poll until complete
prediction = replicate.predictions.get(prediction.id)
while prediction.status not in ("succeeded", "failed", "canceled"):
time.sleep(2)
prediction = replicate.predictions.get(prediction.id)
if prediction.status == "succeeded":
print("Video URL:", prediction.output)
```
**Node.js:**
```javascript
import Replicate from "replicate";
const replicate = new Replicate();
const prediction = await replicate.predictions.create({
version:
"stability-ai/stable-video-diffusion:3f0457e4619daac51203dedb472816fd4af51f3149fa7a9e0b5ffcf1b8172438",
input: {
input_image: "https://example.com/photo.png",
video_length: 25,
},
});
// Poll for completion
let result = await replicate.predictions.get(prediction.id);
while (result.status !== "succeeded" && result.status !== "failed") {
await new Promise((r) => setTimeout(r, 2000));
result = await replicate.predictions.get(prediction.id);
}
if (result.status === "succeeded") {
console.log("Video URL:", result.output);
}
```
### Batch Processing with Error Isolation
When running many predictions, isolate failures so one error doesn't kill the batch.
**Python:**
```python
import replicate
from concurrent.futures import ThreadPoolExecutor, as_completed
prompts = [
"cyberpunk city",
"fantasy forest",
"underwater temple",
]
def generate(prompt: str) -> dict:
try:
output = replicate.run(
"black-forest-labs/flux-schnell",
input={"prompt": prompt, "num_outputs": 1}
)
return {"prompt": prompt, "url": str(output[0]), "status": "ok"}
except Exception as e:
return {"prompt": prompt, "error": str(e), "status": "failed"}
with ThreadPoolExecutor(max_workers=3) as pool:
futures = {pool.submit(generate, p): p for p in prompts}
for future in as_completed(futures):
print(future.result())
```
---
## Common Issues & Troubleshooting
| Problem | Cause | Fix |
|---------|-------|-----|
| `401 Unauthorized` | Missing or invalid API token | Set `REPLICATE_API_TOKEN` env var or pass `api_token` to constructor |
| `402 Payment Required` | Insufficient account credits | Top up at replicate.com/account/billing |
| `429 Too Many Requests` | Rate limit exceeded | Add exponential backoff (start 1s, max 30s) |
| Model not found | Incorrect version hash or model ID | Always use `owner/name:version_hash` format from replicate.com |
| `CUDA out of memory` | Model too large for queue | Use a quantized version or smaller variant |
| `InputValidationError` | Wrong parameter name or type | Check model's schema: `replicate.models.get("owner/name").versions.list()` |
| Webhook never fires | URL unreachable from Replicate | Use a public HTTPS endpoint; test with webhook.site first |
| Prediction hangs at `processing` | Queue backlog for popular models | Switch to webhook pattern or set `replicate.predictions.create(..., webhook=...)` for visibility |
| File too large for input | Replicate has 50MB input limit | Host file on object storage (S3, R2) and pass the URL instead |
| `model_version` deprecated | SDK version mismatch | Upgrade: `pip install --upgrade replicate` or `npm install replicate@latest` |
### Rate Limit Handling
```python
import time
import replicate
def run_with_retry(model_id, input_data, max_retries=3):
for attempt in range(max_retries):
try:
return replicate.run(model_id, input=input_data)
except replicate.exceptions.ReplicateError as e:
if "429" in str(e) and attempt < max_retries - 1:
sleep = (2 ** attempt) + 1
print(f"Rate limited, retrying in {sleep}s...")
time.sleep(sleep)
continue
raise
```
### Cost Tracking
**Python:**
```python
import replicate
prediction = replicate.predictions.get("prediction_id")
cost = prediction.metrics.get("predict_time", 0) * 0.000113
print(f"Prediction {prediction.id}: {prediction.status}")
print(f"Compute time: {prediction.metrics.get('predict_time', 'N/A')}s")
print(f"Estimated cost: ${cost:.4f}")
```
---
## Monetization
Replicate's platform and per-second billing model open several revenue channels:
### 1. Custom Model Hosting Service
Deploy your own fine-tuned models (LoRA, DreamBooth) as private Replicate models, then resell API access at a markup.
- **Model:** Deploy as `you/your-model` on Replicate Cog
- **Pricing:** Replicate charges ~$0.000113/s; you resell at $0.0005–$0.001/s via your own API wrapper
- **Margin:** 4–10x on compute, zero GPU management overhead
### 2. White-Label Image/Video API
Bundles of curated models behind a single branded API.
- Integrate Flux + upscaling + background removal into one `/generate` endpoint
- Charge per-image ($0.01–$0.10) versus paying per-second to Replicate
- Target: e-commerce platforms needing product photography at scale
### 3. Async Media Processing Pipeline
Webhook-based batch processor for high-volume workloads.
- Accept bulk uploads, route through Replicate models, return results asynchronously
- Monetize via subscription tiers (100/mo free, $29/mo for 10K, enterprise custom)
- Models: upscaling, background removal, watermarking, format conversion
### 4. SaaS Frontend + Caching Layer
Wrap Replicate with caching (same prompt → same output → no API cost) and a better UI.
- Cache identical requests in object storage
- Tiered pricing: cache hits cost you $0, pass Replicate cost only on cache misses
- Add analytics dashboard, batch history, A/B testing for prompts
### 5. One-Click Model Deployment Service
Help non-technical customers deploy their own custom models (art style, face, product).
- Charge $99–$499/setup + monthly hosting fee
- Customer uploads 10–20 reference images, you train a LoRA and deploy to Replicate
- Replicate handles all GPU; you handle the training script, UI, and billing
### Cost Optimization Tips
| Strategy | Savings |
|----------|---------|
| Cache frequent prompts in object storage | Eliminates repeat compute cost |
| Use `flux-schnell` (4 steps) instead of `flux-dev` (28 steps) | ~7x cheaper |
| Batch parameters into single prediction when model supports it | One queue slot, one cold-start |
| Prefer smaller model variants (Quantized = Q4/Q8) | 2–4x faster, cheaper per second |
| Use webhooks instead of polling | No wasted compute on poll requests |
| Schedule batch jobs during off-peak hours | Lower queue wait (less idle billing) |
## Process
1. **Prepare** — Gather requirements, verify prerequisites, set up environment
1. **Execute** — Run replicate runner workflow with configured parameters
1. **Verify** — Validate output meets requirements, document results
## Verification
- [ ] API token authenticated
- [ ] Model predictions complete successfully
- [ ] Output files download correctly
- [ ] Error handling for rate limits and failures
- [ ] Cost tracking per prediction
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!