Automated Adult Content Generation API: Submit, Poll, Scale

Automated Adult Content Generation API: Submit, Poll, Scale
Automated Adult Content Generation API: Submit, Poll, Scale

Key Takeaways

  • Adult generation is not a separate API surface. The endpoints whose IDs end in -spicy post to the same paths as every other image and video model; only the model string in the body changes.
  • One poller covers image, video and 3D. The status values and the response envelope are byte-identical across all three.
  • No endpoint accepts a webhook, callback or notify field. Polling is the only completion signal, and the docs put the cadence at 3 to 5 seconds.

There Is No Separate Adult API

Read on August 14, 2026 from the request schemas at docs.siray.ai/api-reference/openapi-spec/, 180 endpoints are callable. Fifteen of them carry -spicy or -uncensored in the ID, and all fifteen use exactly the same paths as the other 102 media endpoints. Twelve are Spicy endpoints: seven video across Seedance 2.0, Seedance 2.5 and Wan 2.7, plus five Seedream Spicy image.

The integration you built for a safe-for-work model is the one an adult model needs. What changes is the model string and what it costs — the video pricing guide covers the second part, and the 2026 NSFW model roundup covers which string to put there.

The URL Will Not Tell You Sync from Async

Submit
Poll
Endpoints
POST /v1/video/generations
GET /v1/video/generations/{task_id}
66
POST /v1/images/generations/async
GET /v1/images/generations/async/{task_id}
48
POST /v1/3d/generations
GET /v1/3d/generations/{task_id}
3

117 media endpoints, three submit paths, three poll paths. The remaining 63 endpoints are chat and embeddings, and those return synchronously.

Notice what the table gives away: the image path contains /async/ and the video path does not, yet both are asynchronous. Submitting a video job returns a task_id, not video bytes. Reading the URL for a hint about response shape gets it backwards.

Three submit paths cover 117 models
Three submit paths cover 117 models

One Poller Covers Image, Video and 3D

The poll response is the same object regardless of modality: code, message, and a data block holding task_id, status, progress, outputs, fail_reason, and three timestamps — submit_time, start_time, finish_time. The outputs array carries public URLs once the job lands.

Status
Meaning
NOT_START
accepted, preprocessing has not begun
SUBMITTED
stored, waiting to enter the queue
QUEUED
scheduled, waiting for compute
IN_PROGRESS
generating
SUCCESS
read outputs
FAILURE
read fail_reason

Those six values are byte-identical across the image, video and 3D task documentation. Write one state machine and point it at whichever poll path the job came from. The task_id prefix — image_, video_, 3d_ — is the only other tell.

Store the three timestamps. Queue wait is start_time minus submit_time; generation is finish_time minus start_time. One combined latency number hides which of the two is slow.

There Are No Webhooks

Across all 180 callable endpoints, zero request bodies accept a webhook, callback or notify field. Polling is not the recommended pattern, it is the only one. Both the image and video docs say to query every 3 to 5 seconds.

For a scaled pipeline, that shapes the design: you need durable storage of every task_id at submit time, a worker that walks open tasks on that interval, and a terminal-state rule that treats FAILURE as data rather than an exception. Errors on the submit call itself are a separate problem with its own retry rules.

Same six states for image, video and 3D
Same six states for image, video and 3D

FAQ

Does Siray have a separate API for adult content generation?

No. The endpoints whose IDs end in -spicy use the same submit and poll paths as every other image and video model. The model string in the request body is the only difference.

Does the adult image or video API support webhooks?

No endpoint on the platform does. A sweep of all 180 callable request schemas found zero webhook, callback or notify fields, so completion is detected by polling the task at the documented 3 to 5 second interval.

Can one poller handle both image and video jobs?

Yes. The six status values and the full response envelope are identical across image, video and 3D, so a single state machine works for all three. Only the poll URL and the task_id prefix differ.

Summary

Automating adult generation is not a special integration. Submit, store the task_id, poll every 3 to 5 seconds, read outputs or fail_reason. Build it once and every model is a string swap away, including the batch production workflows on top of it.

Get Started

Create your free Siray account and submit your first task — the API quickstart walks through authentication and the first request.


Compliance: Siray refuses all illegal content and enforces zero tolerance for CSAM. Every endpoint above is intended for lawful adult content involving consenting adults only, and never for a real person's likeness without documented consent. "Uncensored" and "Spicy" mean no excess filtering within the law — not the absence of it.