Generate pristine images with Nano Banana models, synthesize 720p HD cinematic videos via Omni 1.1 Flash (Veo temporal diffusion) in Frames and Ingredients modes, invert watermarks losslessly with reverse-alpha mathematics, or orchestrate tools natively via Model Context Protocol (MCP).
Building with Cursor, Windsurf, Claude Code, ChatGPT Actions, LangChain, or Custom Agents? Access our client libraries and real-time streaming:
Official TypeScript & Node.js SDK with full type definitions, automatic job completion, and CLI tool.
Official Python client with sync & async execution, Pydantic type safety, and automatic watermark removal.
Sub-second real-time streaming progress (0% → 100%) and instant completion notifications.
Standard markdown index and full specification files formatted specifically for LLM context injection.
Machine-callable JSON specification for ChatGPT Actions, Postman, Swagger, and LangChain.
Connect directly in Claude Desktop, Cursor, or Windsurf with zero code via SSE protocol.
do0p-ai)Build production visual synthesis pipelines with zero boilerplate. The official do0p-ai SDKs provide full TypeScript definitions, automatic job completion resolution, reverse-alpha watermark removal, and custom proxy routing.
Native ESM & CommonJS for Node.js 18+, Bun, Deno, and Next.js.
Synchronous & async client with Pydantic typing for Python 3.8+.
Execute prompt generation directly in bash/zsh scripts or CI/CD pipelines.
import Do0p from 'do0p-ai';
// 1. Initialize with your production API key (or DOOP_API_KEY environment variable)
const do0p = new Do0p({
apiKey: process.env.DOOP_API_KEY || 'doop_live_your_secret_key',
});
async function run() {
// 2. Synthesize 2K Photorealistic Image
const image = await do0p.images.generate({
model: 'nano-banana-pro',
prompt: 'Hyperrealistic portrait of an astronaut on Mars looking into a glowing glass crystal, golden hour, 8k resolution',
size: '2048x2048',
aspect_ratio: '1:1',
quality: 'hd',
});
console.log('Production 2K Image URL:', image.data[0].url);
// 3. Synthesize 1080p Cinematic Video (SDK resolves async completion automatically)
const video = await do0p.videos.generate({
model: 'omni-1.1-flash',
prompt: 'High speed dynamic cinematic drone shot through misty volcanic canyon at sunset',
duration: 4,
resolution: '720p',
aspect: 'landscape',
});
console.log('Production Video MP4:', video.data[0].url);
// 4. Check Credit Balance
const balance = await do0p.credits.get();
console.log(`Remaining Credits: ${balance.credits} cr`);
}
run();Eliminate HTTP polling latency. Stream live generation progress percentages (0% → 100%), pipeline stage transitions, completed asset URLs, and credit balance changes directly into your application over persistent full-duplex WebSockets.
Browsers automatically transmit the secure do0p_token HTTP cookie during WS upgrade.
Pass your API key as a query parameter: wss://do0p.com/api/ws?key=YOUR_KEY.
Use standard token sub-protocols: Sec-WebSocket-Protocol: bearer, <token>.
| Event Name | Direction | Payload Description |
|---|---|---|
| connection.ready | Server → Client | Handshake confirmed. Returns userId, role, and credits balance. |
| generation.progress | Server → Client | Sub-second progress updates containing requestId, progress (0-100), stage, and elapsedSec. |
| generation.completed | Server → Client | Dispatched immediately when manifold converges. Returns url, clean_url, and generation_time. |
| generation.failed | Server → Client | Dispatched on inference failure. Details the error code and triggers automatic credit refund. |
| credits.updated | Server → Client | Live balance synchronization after top-ups or compute deductions. |
| ping / pong | Bidirectional | Automated 30-second heartbeat ensuring low-latency socket health. |
// Connect to the Do0p WebSocket Real-Time Gateway
const ws = new WebSocket('wss://do0p.com/api/ws?key=doop_live_your_secret_key');
ws.onopen = () => {
console.log('Connected to Do0p Real-Time Streaming Gateway');
};
ws.onmessage = (event) => {
const { event: eventName, data } = JSON.parse(event.data);
switch (eventName) {
case 'connection.ready':
console.log(`Authenticated as ${data.userId}. Credits: ${data.credits}`);
break;
case 'generation.progress':
console.log(`[${data.requestId}] ${data.progress}% - ${data.stage} (${data.elapsedSec}s)`);
// Update UI progress bar in real-time
break;
case 'generation.completed':
console.log('Pristine Asset URL:', data.clean_url || data.url);
break;
case 'credits.updated':
console.log('Updated Credit Balance:', data.credits_balance);
break;
case 'generation.failed':
console.error('Generation Failed:', data.error);
break;
}
};
ws.onerror = (err) => console.error('WebSocket Error:', err);
ws.onclose = () => console.log('Socket closed');Every API and MCP interaction is authenticated using a Bearer API Key generated in your API Keys Dashboard. Keys are cryptographically hashed via SHA-256 for maximum security.
Drop-in compatible with standard OpenAI SDK base URL configurations.
Pass in standard HTTP requests, or append ?key=... in MCP URL params.
Enforced per IP. Exceeding returns 429 Too Many Requests with Retry-After.
| Code | Status | Description | Action / Resolution |
|---|---|---|---|
| 200 OK | Success | Request processed and credits deducted successfully. | Consume output payload data. |
| 400 Bad Request | Validation Error | Missing required field (e.g. prompt) or invalid resolution/aspect. | Check JSON request parameters against schema. |
| 401 Unauthorized | Authentication Failure | Missing or invalid Bearer API Key header. | Generate a live key in /dashboard/api-keys. |
| 402 Payment Required | Insufficient Credits | Wallet balance is lower than the model credit cost. | Top up credits in /dashboard/billing. |
| 429 Too Many Requests | Rate Limit Exceeded | Sent more than 120 requests/minute from your IP. | Back off for duration in Retry-After header. |
| 500 Server Error | Execution Failure | Upstream worker exception. Credits are automatically refunded. | Retry request or contact support. |
Synthesize high-fidelity generative imagery powered by Google Flow models with automatic mathematical watermark removal. Fully compatible with OpenAI SDKs.
Gemini 3 Pro Image foundation. SOTA visual fidelity, rich photorealism, fine typography, and complex multi-subject grounding.
Gemini 3.1 Flash Image (Nano Banana 2.1). Pro visual intelligence with ultra-fast latency, enhanced typography, and grounded generation.
Gemini 3.1 Flash Lite. Our highest throughput, ultra-cost-effective engine built for large-scale automation pipelines.
| Field | Type | Default | Description |
|---|---|---|---|
| prompt | string | required | Text description of the desired image. |
| model | string | "nano-banana-pro" | nano-banana-pro, nano-banana-2.1 / nano-banana-2, or nano-banana-2-lite. |
| size / aspect_ratio | string | "2048x2048" | Aspect ratios: 1:1 (2048x2048), 16:9 (1792x1024), 9:16 (1024x1792), 4:3 (1024x768), or 3:4 (768x1024). |
| n | integer | 1 | Number of images to generate (1 to 4). |
| quality | string | "hd" | "standard" (1K Original) or "hd" (2K Lanczos Upscaled). |
| images_base64 | string[] | null | Array of up to 5 base64 reference images for style/character guidance. |
| seed | integer | random | Deterministic random seed (0 to 4,294,967,295). |
| auto_remove_watermark | boolean | true | Automatically strips Google watermarks losslessly before returning. |
import Do0p from 'do0p-ai';
// npm i do0p-ai
const do0p = new Do0p({
apiKey: 'doop_live_your_secret_key',
});
const response = await do0p.images.generate({
model: 'nano-banana-pro',
prompt: 'Architectural studio render of a brutalist pavilion in a moss garden, rain reflections, 8k',
size: '2048x2048',
aspect_ratio: '1:1',
quality: 'hd',
});
// Returns pristine 2K native image with automated reverse-alpha watermark removal
console.log('Production 2K Asset:', response.data[0].url);{
"created": 1741234567,
"model": "nano-banana-pro",
"credits_deducted": 1.0,
"credits_remaining": 149.0,
"data": [
{
"url": "https://do0p.com/media/clean_flow_brutalist_1741234567.png",
"resolution": "2048x2048",
"latency_ms": 1420
}
]
}Upscale any generated or external image to pristine 2K resolution (2048px+) with anti-aliased Lanczos interpolation. Produces razor-sharp edges and high pixel density suitable for print and 4K displays. Cost: 0.5 credits.
curl -X POST https://do0p.com/api/v1/images/upscale \
-H "Authorization: Bearer doop_live_your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://do0p.com/media/sample_original.png",
"scale": 2
}'{
"success": true,
"url": "https://do0p.com/media/upscaled_1741234999_sample.png",
"resolution": "2048x2048",
"original_resolution": "1024x1024"
}Synthesize high-definition, cinema-grade video clips powered by Google's flagship Veo temporal diffusion architecture. Mastered strictly at 720p HD (1280×720 landscape, 720×1280 portrait @ 24fps) with automated watermark inversion.
video_mode: "frames")Provide a First Frame (start_image_base64) and an optional Last Frame (end_image_base64). The temporal engine creates smooth keyframe transitions and camera trajectories between both boundaries.
video_mode: "ingredients")Upload up to 5 reference images (images_base64) to infuse character design, outfit details, color palette, or object consistency into the synthesized video sequence.
import Do0p from 'do0p-ai';
// npm i do0p-ai
const do0p = new Do0p({
apiKey: 'doop_live_your_secret_key',
});
// Synthesizes video and automatically awaits completion with zero boilerplate
const video = await do0p.videos.generate({
model: 'omni-1.1-flash',
prompt: 'A neon-lit subway train passing through a futuristic underground station, cinematic 24fps',
duration: 4, // 4 or 6 seconds
resolution: '720p',
aspect: 'landscape', // or 'portrait' (9:16)
});
console.log('Production Video MP4:', video.data[0].url);Strips Google Flow and Gemini watermarks losslessly using compiled Go binary gemini-omni. Rather than blur or AI inpainting, it solves the inverse alpha channel equation to recover 100% of underlying pixels. Cost: 0.2 credits ($0.002) per file.
curl -X POST https://do0p.com/api/v1/watermark/remove \
-H "Authorization: Bearer doop_live_your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://do0p.com/media/watermarked_input.png"
}'curl -X POST https://do0p.com/api/v1/watermark/remove \
-H "Authorization: Bearer doop_live_your_secret_key" \
-F "file=@/path/to/watermarked_video.mp4"{
"success": true,
"cleaned_url": "https://do0p.com/media/clean_1741235432_ab12cd.png",
"raw_url": "https://do0p.com/media/input_1741235432_ab12cd.png",
"duration_ms": 68,
"credits_deducted": 0.2
}Programmatically query your available credit balance, approximate USD conversion, and the 10 most recent generation transactions. Free of charge.
curl -X GET https://do0p.com/api/v1/user/credits \
-H "Authorization: Bearer doop_live_your_secret_key"{
"user_id": "usr_94381",
"email": "developer@company.com",
"credits_balance": 139.0,
"approx_usd_value": "1.39",
"recent_transactions": [
{
"id": "tx_8412",
"amount": -10,
"type": "GENERATION",
"description": "Video Generation (6s): Camera drifts...",
"createdAt": "2026-09-16T12:00:00.000Z"
}
]
}Returns all active image and video models currently deployed on Do0p, their credit rates, price in USD, and supported modalities. Free of charge.
curl -X GET https://do0p.com/api/v1/models{
"object": "list",
"data": [
{
"id": "nano-banana-pro",
"name": "Nano Banana Pro",
"type": "IMAGE",
"description": "Gemini 3 Pro Image foundation. Native 2K.",
"credit_cost": 1.0,
"price_usd": 0.01,
"badge": "2K Pro",
"is_featured": true
},
{
"id": "omni-1.1-flash",
"name": "Omni 1.1 Flash",
"type": "VIDEO",
"description": "Google Veo temporal diffusion. 720p HD Master.",
"credit_cost": 7.0,
"price_usd": 0.07,
"duration_seconds": 4,
"badge": "720p HD",
"is_featured": true
}
]
}Instead of polling for video synthesis completion, configure an HTTPS endpoint in your Webhooks Dashboard. Do0p delivers an automated HTTP POST webhook the millisecond your media deliverable is ready.
Fired when asynchronous Veo video generation completes and clean MP4 is hosted.
Fired if video rendering fails. Credits are automatically refunded to your balance.
{
"event": "video.completed",
"timestamp": "2026-09-16T12:00:30.000Z",
"data": {
"job_id": "gen_video_174123499",
"status": "completed",
"model": "omni-1.1-flash",
"duration": 6,
"video_url": "https://do0p.com/media/clean_174123499_bamboo.mp4",
"credits_deducted": 10
}
}Every webhook delivery includes an X-Do0p-Signature header. Verify the signature against your webhook secret using timing-safe comparison:
const crypto = require('crypto');
function verifyWebhook(rawBody, signatureHeader, secret) {
const hmac = crypto.createHmac('sha256', secret);
const digest = hmac.update(rawBody).digest('hex');
return crypto.timingSafeEqual(Buffer.from(digest), Buffer.from(signatureHeader));
}Whether you are a developer using Cursor or Windsurf, a creative using Claude Desktop, building a Custom GPT in ChatGPT, or running local chatbots like Open WebUI, connecting takes less than 60 seconds.
Generate 1-4 native 2K images with Nano Banana Pro, Nano Banana 2.1, or Nano Banana 2 Lite. Optional reference images. Zero watermarks.
Generate 720p HD videos with Omni 1.1 Flash (Veo). Supports Frames mode (start & end frames) and Ingredients mode (up to 5 references).
Lossless mathematical reverse-alpha removal of Google Flow or Gemini watermarks for any image or video URL.
Check real-time completion state, output media URLs, safety policy checks, or failure reasons for any job ID.
Query current wallet credit balance, remaining quotas, active model catalog, and live pricing matrix.
In Cursor, open Settings (Cmd+,) > Features > MCP > Add New MCP Server.
Set Type to SSE and paste your endpoint URL:
https://do0p.com/api/mcp?key=YOUR_DO0P_API_KEYRun this single command in your terminal. It safely injects Do0p AI into your Claude Desktop configuration without overwriting existing servers:
curl -sSL "https://do0p.com/api/mcp/install?key=YOUR_DO0P_API_KEY" | bashOr manually add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"do0p-flow": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-fetch",
"https://do0p.com/api/mcp"
],
"env": {
"AUTHORIZATION": "Bearer YOUR_DO0P_API_KEY"
}
}
}
}In OpenAI ChatGPT, go to Explore GPTs > Create a GPT > Configure > Actions > Create new action.
Under Schema, click Import from URL and enter:
https://do0p.com/api/v1/openapi.jsonUnder Authentication, select API Key, choose Bearer, and enter your Do0p API Key. Your Custom GPT can now create images and videos on-demand!
Connect any AI chat interface that supports OpenAI-compatible endpoints:
| Model Display Name | Slug | Resolution | Credits | USD Est. | Turnaround |
|---|---|---|---|---|---|
| 🍌 Nano Banana Pro | nano-banana-pro | 2048 × 2048 | 1.0 cr | $0.010 | ~2.5s |
| 🍌 Nano Banana 2.1 | nano-banana-2 / nano-banana-2.1 | 2048 × 2048 | 0.8 cr | $0.008 | ~1.5s |
| 🍌 Nano Banana 2 Lite | nano-banana-2-lite | 1024 × 1024 | 0.5 cr | $0.005 | ~0.9s |
| 🔍 2K Image Upscaler | upscaler-2k | 2048 × 2048 | 0.5 cr | $0.005 | ~1.0s |
| 🎥 Omni 1.1 Flash (4s) | omni-1.1-flash | 720p HD (1280×720) | 7.0 cr | $0.070 | ~20s |
| 🎥 Omni 1.1 Flash (6s) | omni-1.1-flash | 720p HD (1280×720) | 10.0 cr | $0.100 | ~30s |
| 🎥 Omni 1.1 Flash (8s) | omni-1.1-flash | 720p HD (1280×720) | 14.0 cr | $0.140 | ~45s |
| 🎥 Omni 1.1 Flash (10s) | omni-1.1-flash | 720p HD (1280×720) | 18.0 cr | $0.180 | ~60s |
| ✨ Watermark Inverter | gemini-omni | Lossless Pixel Restor. | 0.2 cr | $0.002 | ~80ms |
Every API endpoint, webhook, and MCP tool provides structured, machine-readable error responses. If an inference task fails or triggers content safety filters, your account is guaranteed 100% credit preservation.
Credits are only permanently deducted upon successful delivery of pristine media. If a prompt triggers safety moderation, experiences cluster capacity, or times out, credits are immediately restored (0 credits charged).
{
"status": "failed",
"generation_id": "gen_88f9b2a1",
"error": {
"message": "Content Safety Notice: Your prompt was flagged by automated content safety filters (e.g. sensitive, adult, or policy-restricted concepts). Your credits were safely preserved. Please adjust your prompt description and try a different or milder concept.",
"type": "content_policy_violation",
"code": "unsafe_prompt",
"recommendation": "Your prompt triggered content moderation filters. Please modify your prompt to use milder or artistic wording and try again."
},
"credits_refunded": true,
"credits_charged": 0
}| HTTP Status | Error Code | Trigger Condition | Automated Machine Action |
|---|---|---|---|
| 400 Bad Request | unsafe_prompt | Prompt contains explicit, adult, or prohibited concepts | Rephrase prompt with artistic/metaphorical language. Do not retry identical prompt. |
| 402 Payment Required | insufficient_credits | Wallet balance lower than required model credits | Top up wallet credits in Dashboard or reduce image count / duration. |
| 429 Rate Limited | rate_limit_exceeded | Burst limit exceeded on current API key | Backoff exponential wait (2-5s) or rotate through additional keys. |
| 502 Bad Gateway | generation_error | GPU compute nodes operating at maximum instantaneous capacity | Retry in 10-15 seconds or switch to a high-throughput model (e.g. z-image-turbo). |
| 504 Gateway Timeout | request_timeout | Rendering took longer than 4 minutes due to high complexity | Simplify prompt or lower resolution/steps, then retry. |