> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nsfw-api.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Build asynchronous image and video generation into your product.

NSFW API provides asynchronous image generation, image editing, and video generation for approved adult-content businesses.

Every request is authenticated with a project API key, priced in USD before it runs, and returned as a job that you poll or receive by signed webhook.

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Create an API key and submit your first generation.
  </Card>

  <Card title="API Reference" icon="brackets-curly" href="/api-reference/models">
    Explore request schemas, responses, and the interactive playground.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    Store and send project-scoped API keys safely.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/webhooks">
    Receive signed terminal job notifications.
  </Card>
</CardGroup>

## Base URL

```text theme={null}
https://nsfw-api.net
```

The API uses OpenAI-style `/v1/...` routes. Generation is asynchronous: successful creation returns HTTP `202` and a job ID.

## Core workflow

<Steps>
  <Step title="Create a project and API key">
    Use the [dashboard](https://nsfw-api.net/app) to create a project and a scoped API key. The raw key is shown once.
  </Step>

  <Step title="Submit a generation">
    Call an image or video generation endpoint. The maximum price is reserved atomically before provider work begins.
  </Step>

  <Step title="Wait for completion">
    Poll the job no more than once per second, or configure a signed webhook.
  </Step>

  <Step title="Download the result">
    Successful jobs return short-lived signed URLs. Download outputs to storage you control.
  </Step>
</Steps>

<Info>
  Prices use exact four-decimal USD amounts. Failed, cancelled, expired, and policy-rejected jobs are not charged.
</Info>
