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

# Quickstart

> Submit your first moderation request in under five minutes

This guide walks you through authenticating, submitting a moderation request, and checking the result.

## Prerequisites

* A Omnifence account. Sign up at the [dashboard](https://app.omnifence.ai/signup) — your organization is provisioned automatically on first signup.
* An API key. Create one from the **API Keys** page in the dashboard — the raw value is shown **once** at creation, so copy it immediately.
* cURL or any HTTP client.

## Steps

<Steps>
  <Step title="Authenticate">
    Include your API key as a Bearer token in the `Authorization` header with every request.

    ```bash theme={null}
    export OMNIFENCE_API_KEY="your_api_key_here"
    ```
  </Step>

  <Step title="Submit an image moderation request">
    Send an image URL for moderation. The API returns a job ID immediately. Use
    `POST /api/v1/moderate/prompt` to moderate a text prompt instead, or
    `POST /api/v1/moderate/video` for a video URL.

    ```bash theme={null}
    curl -X POST https://api.omnifence.ai/api/v1/moderate/image \
      -H "Authorization: Bearer $OMNIFENCE_API_KEY" \
      -F "image=https://example.com/photo.jpg"
    ```

    ```json Response theme={null}
    {
      "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "status": "queued"
    }
    ```
  </Step>

  <Step title="Check job status">
    Poll the job endpoint with the returned `job_id`.

    ```bash theme={null}
    curl https://api.omnifence.ai/api/v1/job/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
      -H "Authorization: Bearer $OMNIFENCE_API_KEY"
    ```

    ```json Response theme={null}
    {
      "is_prohibited": false,
      "categories": {
        "ai_adult_general": false,
        "underage": false,
        "nsfw": false
      },
      "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "type": "image",
      "status": "completed",
      "created_at": "2026-05-19T12:00:00.000Z",
      "completed_at": "2026-05-19T12:00:05.000Z"
    }
    ```
  </Step>

  <Step title="Set up a webhook (optional)">
    Instead of polling, register a webhook to receive results automatically.

    ```bash theme={null}
    curl -X POST https://api.omnifence.ai/api/v1/webhook/register \
      -H "Authorization: Bearer $OMNIFENCE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url": "https://your-app.com/webhooks/omnifence"}'
    ```

    ```json Response theme={null}
    {
      "message": "Webhook URL registered successfully",
      "url": "https://your-app.com/webhooks/omnifence"
    }
    ```
  </Step>
</Steps>

## Next steps

<Columns cols={2}>
  <Card title="Authentication" icon="key" href="/authentication">
    Learn how API keys work and how to manage them.
  </Card>

  <Card title="Content moderation" icon="shield" href="/moderation/overview">
    Understand the full moderation pipeline.
  </Card>

  <Card title="Real-time progress" icon="signal-stream" href="/platform/sse-progress">
    Stream live progress updates for long-running jobs.
  </Card>

  <Card title="Handle a rejection" icon="ban" href="/moderation/decisions">
    Understand decision logic and what to do when a job is rejected.
  </Card>

  <Card title="Webhook reliability" icon="webhook" href="/platform/webhook-reliability">
    Build reliable webhook handling with fallback polling.
  </Card>

  <Card title="API reference" icon="terminal" href="/api-reference/introduction">
    Full endpoint reference with request and response schemas.
  </Card>
</Columns>
