Spicy API

Uncensored image, image-to-video and chat generation for adult apps (18+). OpenAI-compatible REST API plus 15 MCP tools: model prices, cost estimates, generation with per-spend approval, jobs, usage, top-up links and a monthly spend limit. Prompts are screened before billing and sandbox keys bill nothing.

Hosted MCP Server

npx add-mcp 'https://www.spicyapi.com/api/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Spicy API documentation

Spicy API is one REST API for uncensored image, image-editing, video and chat generation, sold per generation from a prepaid US-dollar balance: no subscription, no GPUs to run. It is OpenAI-compatible (point the OpenAI SDK at https://api.spicyapi.com/v1 with a Spicy API key) and includes our own POV video fine-tunes. Not to be confused with spicyapi.ai, an unrelated model aggregator.

Base URL https://api.spicyapi.com. Authenticate with Authorization: Bearer sk-spicy-... (keys from https://www.spicyapi.com/dashboard/api-keys, shown once, stored hashed). Check your balance with GET /v1/account.

Quickstart

from openai import OpenAI

client = OpenAI(api_key="sk-spicy-...", base_url="https://api.spicyapi.com/v1")

# Images: the OpenAI SDK's images.generate maps onto POST /v1/images/generations
img = client.images.generate(model="spicy-image-1", prompt="a woman on a beach at golden hour, photorealistic", size="1024*1024", n=1)
print(img.data[0].url)  # durable CDN URL, reusable as image_url for edits and video

# Chat: fully compatible, streaming included
stream = client.chat.completions.create(model="spicy-chat-1", messages=[{"role": "user", "content": "hey"}], stream=True)
curl https://api.spicyapi.com/v1/videos/generations \
  -H "Authorization: Bearer $SPICYAPI_KEY" -H "Content-Type: application/json" \
  -d '{"model": "spicy-motion-2", "prompt": "slow build, steady rhythm", "image_url": "<a URL from /v1/images/generations>", "resolution": "720P", "duration": 5}'
# 202 {"id": "sj_...", "status": "queued", "cost_usd": 0.875} then poll every 10 to 15 seconds:
curl https://api.spicyapi.com/v1/videos/tasks/sj_... -H "Authorization: Bearer $SPICYAPI_KEY"

Models

ModelKindPriceLimits
spicy-pov-missionary-1video$0.175 per second at 720P, $0.29 per second at 1080Presolutions 720P, 1080P; 2 to 15 seconds; needs image_url (one of your generated images)
spicy-pov-doggystyle-1video$0.175 per second at 720P, $0.29 per second at 1080Presolutions 720P, 1080P; 2 to 15 seconds; needs image_url (one of your generated images)
spicy-pov-blowjob-1video$0.175 per second at 720P, $0.29 per second at 1080Presolutions 720P, 1080P; 2 to 15 seconds; needs image_url (one of your generated images)
spicy-image-1image$0.06 per imagesizes 10241024, 8321216, 1216*832; up to 4 outputs per call
spicy-image-1-proimage$0.09 per imagesizes 10241024, 8321216, 1216*832; up to 2 outputs per call
spicy-image-edit-1image-edit$0.15 per imagesizes 10241024, 8321216, 1216*832; up to 1 output per call; needs image_url (one of your generated images)
spicy-motion-1video$0.175 per second at 720P, $0.29 per second at 1080Presolutions 720P, 1080P; 2 to 10 seconds; needs image_url (one of your generated images)
spicy-motion-2video$0.175 per second at 720P, $0.29 per second at 1080Presolutions 720P, 1080P; 2 to 15 seconds; needs image_url (one of your generated images)
spicy-video-1video$0.175 per second at 720P, $0.29 per second at 1080Presolutions 720P, 1080P; 2 to 15 seconds
spicy-motion-3video$0.1 per second at 480P, $0.2 per second at 720P, $0.4 per second at 1080Presolutions 480P, 720P, 1080P; 2 to 30 seconds; image_url optional (text-to-video without it)
spicy-motion-3-fastvideo$0.14 per second at 480P, $0.28 per second at 720P, $0.56 per second at 1080Presolutions 480P, 720P, 1080P; 2 to 30 seconds; image_url optional (text-to-video without it)
spicy-chat-1chat$0.575 per 1M tokens (minimum $0.0005 per request)

Endpoints

Core

Images

Video

Chat

Input images: no uploads, by design

Image editing and image-to-video accept only URLs returned by /v1/images/generations or /v1/images/edits on the same account (GET /v1/images lists them). Uploads and third-party URLs are rejected before any charge. This keeps real-person and minor imagery out of the pipeline and is a legal-compliance requirement, not a limitation we plan to lift.

Video is asynchronous

POST /v1/videos/generations returns 202 with a task id and the price already debited. Poll GET /v1/videos/tasks/{id} every 10 to 15 seconds until status is succeeded (then output.video_url) or failed (refunded). Or set a webhook URL in the dashboard: we POST {"event": "task.succeeded" | "task.failed", "data": {...}} with an X-SpicyAPI-Signature header (hex HMAC-SHA256 of the raw body with your signing secret).

POV fine-tunes

spicy-pov-missionary-1, spicy-pov-doggystyle-1 and spicy-pov-blowjob-1 are our own image-to-video fine-tunes. Give them a first frame already in position; the activation token is injected for you. Same price as spicy-motion-2.

Errors and limits

401 bad key, 402 insufficient balance (top up at https://www.spicyapi.com/dashboard/account), 400 invalid parameters, 422 prompt blocked by moderation (never charged), 429 model at capacity (retry in a few seconds), 502 upstream unavailable (refunded). Shape: {"error": {"message": "...", "type": "insufficient_balance"}}. Acceptable use: https://www.spicyapi.com/acceptable-use.

Sandbox

Create a key with Sandbox ticked: every endpoint returns fixture output flagged sandbox: true after the same validation and keyword screening, nothing is billed, video tasks report processing for a few seconds then succeeded with an example clip.

For AI agents

Machine-readable overview: https://www.spicyapi.com/llms.txt. OpenAPI: https://www.spicyapi.com/openapi.json. MCP endpoint: https://www.spicyapi.com/api/mcp (Claude Code: claude mcp add --transport http spicyapi https://www.spicyapi.com/api/mcp --header "Authorization: Bearer sk-spicy-..."). Skills: https://www.spicyapi.com/skills/index.json. A sandbox key answers everything from fixtures with nothing billed.

Full reference as one file: https://www.spicyapi.com/llms-full.txt.