UNCENSORED NSFW IMAGE + VIDEO API

Create any NSFW image or video with Flux, Wan Spicy and Seedance.

No content filter, API key or prepaid balance. Each request settles exact USDC through x402.

NSFW allowed Flux · Wan · Seedance No API key x402 exact USDC
1GET /api/modelsPick a model and route
2POST generationReceive HTTP 402
3Sign and retryPay exact USDC
4Poll predictionRead output URL
01

Run a paid request

npm install @x402/core @x402/evm @x402/fetch viem
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(
  process.env.EVM_PRIVATE_KEY as `0x${string}`
);
const client = new x402Client()
  .register("eip155:*", new ExactEvmScheme(account));
const paidFetch = wrapFetchWithPayment(fetch, client);

const response = await paidFetch("https://www.studio-x.cc/api/generate/image", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    model: "black-forest-labs/flux-schnell",
    prompt: "Editorial studio portrait, precise lighting",
    params: {}
  })
});

const job = await response.json();

while (true) {
  const result = await fetch("https://www.studio-x.cc" + job.predictionUrl).then(r => r.json());
  if (["completed", "succeeded"].includes(result.data?.status)) {
    console.log(result.data.outputs[0]);
    break;
  }
  if (result.data?.status === "failed") throw new Error(result.data.error);
  await new Promise(resolve => setTimeout(resolve, 3000));
}
03

Paid endpoints

POST · application/json
RoutePriceModelsReturns
/api/generate/image$0.0033-$0.033 USDC4predictionUrl
/api/generate/video-fast$0.11-$0.165 USDC3predictionUrl
/api/generate/video-pro$0.2695-$0.55 USDC2predictionUrl
/api/generate/video-ultra$0.55 USDC2predictionUrl
04

NSFW image & video models

NSFW models · USDC per request
ModelGenerationEndpointPrice
Flux Schnell · NSFWblack-forest-labs/flux-schnelltext to image/api/generate/image$0.0033 USDC
Flux Dev · NSFWblack-forest-labs/flux-devtext to image/api/generate/image$0.0132 USDC
Wan 2.6 Image · NSFWalibaba/wan-2.6/text-to-imagetext to image/api/generate/image$0.0231 USDC
Wan 2.7 Image · NSFWalibaba/wan-2.7/text-to-imagetext to image/api/generate/image$0.033 USDC
Wan 2.2 Turbo Spicy I2V · NSFWatlascloud/wan-2.2-turbo-spicy/image-to-videoimage to video/api/generate/video-fast$0.11 USDC / 5s
Wan 2.2 Turbo Spicy Infinite I2V · NSFWatlascloud/wan-2.2-turbo-spicy/infinite-image-to-videoimage to video/api/generate/video-fast$0.11 USDC / 5s
Wan 2.2 Spicy I2V · NSFWalibaba/wan-2.2-spicy/image-to-videoimage to video/api/generate/video-fast$0.165 USDC / 5s
Seedance v1.5 Pro Spicy I2V · NSFWbytedance/seedance-v1.5-pro/image-to-video-spicyimage to video/api/generate/video-pro$0.2695 USDC / 5s
Wan 2.6 Spicy I2V · NSFWatlascloud/wan-2.6-spicy/image-to-videoimage to video/api/generate/video-pro$0.55 USDC / 5s
Wan 2.7 Spicy I2V · NSFWatlascloud/wan-2.7-spicy/image-to-videoimage to video/api/generate/video-ultra$0.55 USDC / 5s
Wan 2.7 Video Edit · NSFWalibaba/wan-2.7/video-editvideo to video/api/generate/video-ultra$0.55 USDC / 5s
05

Request contract

Use inputUrl for image-to-video and video-to-video routes. Text-to-image only needs a prompt.

{
  "model": "string",
  "prompt": "string",
  "inputUrl": "https://...", // optional by model
  "params": {
    "duration": 5,
    "resolution": "720p"
  }
}
First response may be HTTP 402 Retry carries PAYMENT-SIGNATURE Success returns a pollable prediction URL