# Omnifence AI > Omnifence AI is a content moderation company. Its API screens text, images, video and audio for prohibited content and returns a pass or reject decision with a reason. It is built for adult entertainment, AI companion, AI generation and roleplay platforms, and for the payment providers and banks that underwrite them. It also runs the Shared Registry, a private registry that helps platforms stop users that other platforms banned for serious harm. Omnifence AI is operated by LORMARCO LTD. Omnifence AI exists because platforms that create or host sexual and AI-generated content carry a specific risk: a single piece of prohibited content (child sexual abuse material, a celebrity deepfake, non-consensual imagery) can end a payment relationship, a merchant account or a business. Omnifence gives those platforms a moderation layer that blocks what the law and the card networks prohibit while leaving consensual adult content alone, and gives their payment partners a control they can require, verify and monitor. This file is the complete description of the product, followed by links to the pages and documentation behind it. - Website: https://omnifence.ai - Dashboard: https://app.omnifence.ai - Documentation: https://omnifence.ai/docs (guides for the API, the Shared Registry and the platform, plus an API reference generated from the OpenAPI specification) - API base URL: https://api.omnifence.ai/api/v1 - Contact: hello@omnifence.ai (support, business and partnerships, Shared Registry membership and disputes) ## What Omnifence AI is Omnifence AI is a content moderation platform with two products. 1. **The moderation API.** You submit text, an image, a video or an audio clip. The API returns a pass or reject decision for it, with a reason on rejection. 2. **The Shared Registry.** A private registry of users banned by member platforms for serious harm, so that a ban on one platform becomes a signal on the others. It is aimed at platforms that create or host sexual and AI-generated content: adult entertainment sites, AI companion and character apps, NSFW image and video generators and uncensored roleplay products. It is also aimed at the payment service providers, acquirers and banks that board those platforms as merchants. The product exists to solve a specific problem. For these platforms, one piece of prohibited content (child sexual abuse material, a celebrity deepfake, non-consensual imagery, bestiality, extreme violence) can trigger merchant account termination, frozen funds or rolling reserves. Generic moderation tools tend to block all adult content, which breaks the product. Omnifence blocks what the law and the card networks prohibit and allows consensual adult content, so the platform can keep operating and keep its payment partners. ## How a moderation request works Every modality works the same way. 1. Submit content to the endpoint for its type. The request is multipart form data. 2. The API responds immediately with a `job_id` and `status: "queued"`. 3. Moderation runs asynchronously. Collect the result by polling `GET /api/v1/job/{job_id}` or by registering a webhook. 4. A job ends as `completed` (a decision was reached) or `failed`. There is no percentage progress to show, so wait for a terminal status. Submit an image: ```bash curl -X POST https://api.omnifence.ai/api/v1/moderate/image \ -H "Authorization: Bearer $OMNIFENCE_API_KEY" \ -F "image=https://example.com/photo.jpg" ``` Response: ```json { "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "queued" } ``` Read the result: ```bash curl https://api.omnifence.ai/api/v1/job/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \ -H "Authorization: Bearer $OMNIFENCE_API_KEY" ``` A completed, passing job: ```json { "is_prohibited": 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" } ``` A rejected job adds a `reason`: ```json { "is_prohibited": true, "reason": "The text requests sexual content involving a minor.", "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "type": "text", "status": "completed" } ``` Recommended pattern: fail closed. Hold the content until a pass decision arrives, and treat an error or a missing decision as not yet approved. ## The four modalities | Modality | Endpoint | Input | Limits and notes | |---|---|---|---| | Text | POST /api/v1/moderate/text | `text` field | Checked against your policy and every enabled custom category. Rejections carry a short reason. | | Image | POST /api/v1/moderate/image | `image`: public HTTP or HTTPS URL | The API fetches the URL. It takes a URL, not a file upload. Returns the `nsfw` label when enabled. | | Video | POST /api/v1/moderate/video | `video`: public URL to an MP4, WebM or QuickTime file | Up to 100 MB. The whole clip goes to a video-capable model, with no frame extraction. HLS and DASH manifests are rejected. | | Audio | POST /api/v1/moderate/audio | `audio`: public URL | Up to 100 MB and 30 minutes. Formats: mp3, m4a/mp4, wav, flac, ogg (including Opus), webm, aac. Speech is transcribed and checked like text. Slower than other modalities because transcription scales with clip length. | Every endpoint also accepts an optional `webhook_url` to receive that job's result. **Text batches.** `POST /api/v1/moderate/text/batch` takes 1 to 99 items, each with a `key` and up to 20,000 characters of `text`. Each item is checked on its own, as if submitted alone, and gets its own decision under its key, so you can show which field was rejected. A batch counts as one request against your rate limit, and each item is billed as one text moderation job. `GET` the batch to read every item decision. **Audio privacy.** The transcript is never stored and never returned. It exists only in short-lived, automatically expiring storage while the job runs, and is deleted when the job finishes. The rejection reason is model-generated and may paraphrase what was said, so if even a paraphrase is unacceptable, show users only `is_prohibited`. **Clips with no speech pass.** Music without words, sound effects and silence complete with `is_prohibited: false`. ## Decision logic - Every completed job reports `is_prohibited` as a boolean. While it is processing, the value is null. - The decision is binary. There is no confidence score and no threshold, and there is no categories object on the response. The `reason` string explains a rejection and names a custom category by its slug. - On image and video jobs, the AI Adult General check owns the decision. It rejects content that breaks the content policy, matches one of your custom categories, or depicts or appears to depict a minor. - On text and audio jobs, `is_prohibited` is true when the text, or the transcript, is judged prohibited. - The `nsfw` field is informational only. It reports nudity or sexual content on images and video, and it never rejects a job. An image can be `is_prohibited: false` with `nsfw: true`. Apply your own product rule to that label. Text and audio jobs carry no `nsfw` field. - Content that appears to depict a minor is rejected by the always-on check, which has no account toggle. Repeated detections may be reviewed manually and can lead to account termination. ## The moderation policy The default policy blocks the following categories. Consensual adult content stays allowed. - **Celebrities & Known IP Characters** (Deepfakes): We block recognizable celebrities, politicians, public figures, and copyrighted characters (Disney, Marvel, anime, video games, etc.) even in stylized, parodied, or animated forms. - **Minors & Youth References** (CSAM): Zero-tolerance for any depiction of individuals who appear under 18. We flag based on facial features, body proportions, clothing, and context regardless of art style. Visuals override any age claims. - **Prohibited Bodily Fluids & Human Waste** (Human waste): Detection of urine, feces, scat, menstrual blood (outside normal context), vomit, or severe bleeding. Normal sexual fluids (e.g., semen) in consensual adult scenes are permitted. - **Alcohol, Drugs & Medication Context** (Narcotics): We block clear depictions or promotion of alcohol, illegal drugs, paraphernalia (bongs, syringes, powder lines, etc.), and medication misuse in sexual or exploitative contexts. - **Hate Speech & Discrimination** (Hate speech): Any racial slurs, hate symbols (swastikas, etc.), or content promoting supremacy, dehumanization, or discrimination based on race, religion, gender identity, sexual orientation, or disability. - **Bestiality and Teratophilia** (Bestiality): Sexual acts or suggestive content involving real animals, mythological creatures, monsters, aliens, or non-human entities lacking human proportions. - **Severe Harm & Crime Content** (Criminal content): Depictions or implications of rape, sexual assault, kidnapping, murder, suicide, self-harm, corpses, or necrophilia. Any non-consensual or criminal context is strictly prohibited. - **Sex between family members** (Incest): Sexual content involving blood relatives (brother, sister, mom, dad, etc.), including text overlays or family-context clues combined with sexual visuals. - **Violence & Pain Infliction** (Violence): Torture devices, beating, whipping, gore, open wounds, or extreme bodily harm. Severe pain infliction is blocked even in BDSM contexts. - **Incapacitation & Coercion** (Rape): Sexualization of subjects who appear unconscious, asleep, drugged, hypnotized, choked, or otherwise unable to consent. - **Weapons in Sexual Context** (Weapons): We strictly prohibit any combination of firearms, knives, swords, guns, blades, explosives, or other lethal weapons with nudity, sexual acts, suggestive posing, or erotic contexts. - **Sex for Money Indicators** (Prostitution): We prohibit visual cues suggesting prostitution, transactional sex, or trafficking. This includes cash, crypto symbols, price tags, tip jars, or money linked to nudity or sexual acts. - **Religious figures** (Religion): Explicit or romantic themes featuring specific major religious figures (such as Jesus, Allah, or Muhammad). - **Political ideologies** (Politics): Characters who exist primarily to promote a specific political agenda or to serve as mouthpieces for political grievances. - **Eating disorders** (Disorders): Material that promotes, instructs, or encourages eating disorders, including characters designed to portray disordered eating as a desirable or aspirational lifestyle choice. ### Built-in checks and settings - **AI Adult General** always runs and cannot be disabled. It evaluates the default categories and your custom categories together. - **NSFW label** is on by default and can be turned off. When off, the check is skipped and the field is omitted. - **Per-account toggles.** In the dashboard, or through the API, you can enable or disable the NSFW label, text moderation and individual default categories. Child-safety categories are never listed and always run. - Turning the text toggle off removes the only check text jobs have, so every text job then passes. Audio jobs still run their transcript check regardless of that toggle. ### Custom categories A custom category is your own prohibited-content rule, written in plain language, for example rules specific to your characters, markets or partner requirements. - Up to 10 per account. Each has a name, a description and a system prompt, which is the instruction the check evaluates against. The slug is derived from the name, never changes and identifies the category in a rejection reason. - A custom category runs on every endpoint (text, image, video and audio) and a match rejects the job the same way a built-in breach does. - Categories are evaluated inside the check each endpoint already runs, so adding more does not add a separate check. Long lists of long prompts make jobs slightly slower. - Manage them on the Moderation page of the dashboard, or with the custom categories endpoints. One endpoint drafts a system prompt from a plain description. ## Webhooks, polling and reliability - **Global webhook.** Register one URL that receives every job's outcome. Registering again replaces it, and a DELETE detaches it. - **Per-request webhook.** Send `webhook_url` with a request to override the global URL for that job. - **Signing.** Every callback is signed with your account's signing secret following the Standard Webhooks specification. Verify the signature before acting on a payload. Rotating a secret keeps the previous one valid for 24 hours so receivers can redeploy. - **Payload.** Contains `is_prohibited`, `job_id`, `status`, `completed_at` or `failed_at`, and `delivery_id`. It adds `reason` on a rejection and `nsfw` on image and video jobs when that check is on. - **Deduplication.** `delivery_id` (also sent in the X-Omnifence-Delivery-Id header) stays the same across every retry of the same result, so use it to ignore duplicates. - **One terminal webhook per job.** Either the completed result or a failed notice, never both. A job that exhausts its retries sends a failed webhook with an error code, and its charge is refunded. Resubmit to get a decision. - **Polling.** Poll `GET /api/v1/job/{id}` with rate limits in mind, or list jobs with `GET /api/v1/jobs`. A CSV export of jobs in a date range is available. - **Recovery.** Documentation covers recovering in-flight jobs after a restart or a missed webhook, including fallback polling. ## Authentication and scopes All requests need a Bearer API key. Create keys on the API Keys page of the dashboard; the full value is shown once. Each key carries scopes, enforced at runtime, and a missing scope returns 403 FORBIDDEN. | Scope | Allows | |---|---| | moderate:text, moderate:image, moderate:video, moderate:audio | The matching moderation endpoint | | job:read | Reading job status | | webhook:manage | Webhook registration and signing secrets (not on keys by default) | | account:config | Changing category toggles and custom categories (not on keys by default) | | registry:check, registry:submit | The Shared Registry endpoints (registry keys only, issued by Omnifence) | Keys you create carry the four moderation scopes and job:read. A leaked key can be revoked from the dashboard. Do not commit keys or ship them in client-side code. ## Rate limits and errors - Default limit: 60 requests per minute per account, tracked by client, not IP. A second window caps bursts at one tenth of the per-minute limit per second (6 per second by default). Both windows must pass. - Responses carry x-ratelimit-limit, x-ratelimit-remaining and x-ratelimit-reset. A 429 also carries retry-after. Use exponential backoff with jitter and honor retry-after. - Failed authentication is throttled by source IP: after 50 failures in a minute, that IP is locked out for the rest of the window. - Errors are JSON with a machine-readable code, a message and the status code. Common codes: INVALID_REQUEST (400), UNAUTHORIZED (401), PAYMENT_REQUIRED (402, balance at or below zero), FORBIDDEN (403), ACCOUNT_TERMINATED (403), JOB_NOT_FOUND (404), PAYLOAD_TOO_LARGE (413), UNSUPPORTED_MEDIA (415), MEDIA_UNREACHABLE (422), RATE_LIMITED (429), INTERNAL_ERROR (500), SERVICE_UNAVAILABLE (503) and SUBMISSION_STATUS_UNKNOWN (503, the submission may have been accepted, so check by job id). ## Integrating faster with a coding agent Omnifence publishes an agent skill that teaches a coding agent to add moderation to a codebase. It works with any coding agent that supports the skills standard and installs with the skills CLI. 1. **Discovery:** the agent finds every place your code creates or accepts content, including in-house services, using signals like prompt payloads, job queues and media uploads. 2. **Confirmation:** it shows the list and asks you to confirm, remove or add call sites before writing code. A missed call site leaves content unmoderated. 3. **Integration:** it adds the right endpoint at each site: text for user prompts and chat turns, then image, video and audio for media. 4. **Async handling:** it holds content until a pass decision arrives, by webhook or rate-limit-aware polling, and fails closed on errors. ## Billing and pricing - Prepaid credit. Each request reduces the balance. When it reaches zero, new requests return 402 PAYMENT_REQUIRED until you top up. - Top up in the dashboard with preset amounts from $25 to $500, or a custom amount from $5 to $5,000, paid by card through Stripe. Invoices are available as PDFs, and Stripe Tax applies tax where it is collected. - Auto top-up charges a saved card when the balance falls below a threshold you set, by an amount you choose. You can disable it at any time. Average cost per moderation, cheapest to most expensive. The final price of a request depends on its content (the length of the text, the image, the length of the video or audio) and cannot be predicted in advance. These are the averages customers actually spend, in US dollars: - **Text:** $0.001245 per moderation - **Audio:** $0.002086 per moderation - **Image:** $0.002983 per moderation - **Video:** $0.006632 per moderation Volume discount: up to 50% off for customers who come with volume, which suits generative AI adult platforms. Contact hello@omnifence.ai. Shared Registry: free. There is no fee to join, check or report. Membership does not depend on using or paying for Omnifence moderation. No membership fee: Vetting and your registry key cost nothing. No per-call charges: Check sign-ups and report bans as often as your daily check quota allows, at no cost. No moderation spend: The registry attaches to an ordinary Omnifence account. You do not need to use or pay for moderation. Stronger with every member: Each vetted platform that reports a ban improves the signal for everyone, so joining is free. Plans: - **Basic plan:** pay as you go. Top-ups from $25, access to all tools, no onboarding fees, no minimums, and a choice of auto top-up amount. - **Growth:** for high-volume platforms. Everything in Basic plus 24/7 priority support and discounts of 10% up to 50% on requests. Contact hello@omnifence.ai. - **AI Startups:** $500 in free onboarding credits for AI companionship startups, no commitment, pay as you go once the balance is used. Pricing page: https://omnifence.ai/pricing ## For adult entertainment platforms Page: https://omnifence.ai/ai-moderation-adult-entertainment Adult platforms are judged by their payment partners on what their AI actually produces. Omnifence moderates every prompt, output, image, video and voice clip, blocking CSAM, deepfakes and non-consensual content, so a merchant can pass underwriting, protect its merchant account and keep consensual adult content flowing. Typical use cases: AI companion and character chat, NSFW image and video generators, uncensored roleplay and chat, and adult content platforms adding generative AI features. What the payment risk looks like: - **Account termination.** One incident can trigger termination, frozen funds or rolling reserves. - **Underwriting friction.** Underwriters ask how prohibited content is prevented. A terms-of-service page or policy PDF is not enough. They want a working control. - **Moving targets.** New models, characters and jailbreaks appear every week. Keyword lists and manual review cannot keep up with generation. What Omnifence provides: coverage across text, image, video and audio; a policy built for adult content; audit-ready logs that store only what the law requires and can be exported when a payment partner asks; custom rules; low false positives on consensual content; and a privacy-first approach with no training on customer data. ## For payment providers and banks Page: https://omnifence.ai/underwriting-adult-merchants Adult and AI-native merchants arrive in onboarding queues faster than review processes were designed for. Their risk lives in what their models generate, which a website review or policy document cannot show. Omnifence gives underwriting and risk teams a content control they can require, verify at boarding and monitor after approval. **Five conditions to require from every adult merchant:** 1. A live content moderation control in the production path, covering text, image, video and audio. 2. A policy aligned with the categories the card networks prohibit. 3. Exportable decision logs the merchant can share at boarding, at review and after an incident. 4. Custom rules for any approval conditions specific to your portfolio. 5. Shared Registry membership, so users banned elsewhere for payment fraud or prohibited content are stopped at sign-up. **Workflow:** the merchant applies; you require Omnifence as a boarding condition; analysts review the merchant's policy and exported reports, which show a control that is running; you approve, reject or set conditions; ongoing logs show the control stays on between periodic reviews. **Who benefits:** underwriting teams get one standard to compare applicants and defend decisions. Risk and monitoring teams see what merchants' systems block after go-live and can spot drift. Acquiring and sponsor banks get a portfolio-wide baseline that lowers brand and network exposure. Omnifence complements KYB and website review. Those tell you who a merchant is and what it sells; Omnifence shows what its AI generates and blocks. Approval is always the payment provider's decision. ## The Shared Registry Page: https://omnifence.ai/shared-registry. Docs: https://omnifence.ai/docs/registry/overview The Shared Registry is a private registry, built and operated by Omnifence AI, of users that member platforms banned for serious harm. It is inspired by self-exclusion schemes such as GAMSTOP and by cross-platform safety signal sharing, and is not affiliated with GAMSTOP or any government body. **The problem.** A user banned by one platform for generating prohibited content, or for payment fraud, can sign up to the next platform in minutes with the same email. Each platform learns on its own, after the harm happens again. The registry closes that gap. **How it works.** 1. A person on a member's trust and safety team reviews the evidence and upholds a ban. 2. The member normalises the user's email, hashes it with SHA-256 and sends the hash and a category to the registry. The email never leaves the member. 3. When someone signs up to another member platform, that platform hashes the email the same way and checks it. 4. The registry returns a signal for each category members reported, with the number of reporting members and the dates. The checking member decides what to do under its own terms. **Hashing rules (every member must match exactly).** Trim whitespace, apply Unicode NFKC and lowercase. Split at the last @. Strip one trailing dot from the domain. Treat googlemail.com as gmail.com. For gmail.com, outlook.com, hotmail.com, live.com, msn.com, icloud.com, me.com, mac.com, proton.me, protonmail.com, pm.me, fastmail.com and fastmail.fm, remove everything from the first + in the local part. For gmail.com, remove dots from the local part. Hash the result with SHA-256 and encode as lowercase hexadecimal. A test vector: Jane.Doe@Example.com normalises to jane.doe@example.com, which hashes to 86e0b9e56c17cc4d12387e1949b85053fbe73bc3ce5a1188713a9d300cc6133d. **What a check returns.** ```json { "match": true, "signals": [ { "category": "prohibited_content", "reporter_count": 2, "first_reported_at": "2026-03-02T10:15:00.000Z", "last_reported_at": "2026-08-19T08:40:00.000Z", "automated_refusal_permitted": true } ], "normalisation_version": 1 } ``` A check sends one to five hashed identifiers for one user, with a context of signup, login or periodic. It never returns an entry ID, a reporting member's name or a case reference. **Three categories only.** | Category | Covers | Retention | Refuse on a match alone | |---|---|---|---| | prohibited_content | Sexual content involving minors, or intimate imagery of a real person without consent, including sexual deepfakes | 3 years | Yes | | payment_fraud | Confirmed use of stolen payment credentials or other payment fraud. A chargeback alone is not confirmation | 2 years | No, a person reviews first | | ban_evasion | Re-registered after a ban in another registry category | 1 year | No, a person reviews first | There is no general banned category. Spam, rudeness and minor terms breaches do not belong in the registry. **Privacy by design.** The registry stores a keyed HMAC of the member's hash, the category, the reporting member with its case reference, and dates. It never stores emails, names, other account data or content. The HMAC key is held only by Omnifence, so a copy of the registry reveals no emails. Members see only their own entries. A member that checks sees categories, counts and dates, never who reported. The audit trail never contains an email or a hash. **Member obligations.** Report only bans a person reviewed and upheld, and attest to that on every report. Keep the evidence under your case reference. Revoke overturned bans immediately. Check only at real account activity such as sign-up, login or a periodic re-check. Refuse on a match alone only where automated refusal is permitted. Tell your users in your privacy notice and terms that you check and report to an industry registry. Decide independently: a match is information, and members do not agree with each other to refuse anyone. **Fairness.** Every entry expires after its retention period and is deleted 30 days later. A person can ask Omnifence what the registry holds about their email and can dispute an entry. While a dispute is open the entry does not match. If the reporting member cannot support the report, the entry is revoked. **Joining.** Open to vetted platforms that hold user accounts and enforce policies against fraud or prohibited content, including platforms that do not use Omnifence moderation. Email hello@omnifence.ai with your company's legal name, the platform you operate and the categories you want to report. Vetting reviews your trust and safety process, you sign the membership agreement, and Omnifence issues a registry key. The registry does not replace any legal duty to report illegal content to the authorities. ## Frequently asked questions **How does Omnifence AI work?** Our advanced machine-learning models scan every message, image, and voice clip in real time. We flag or block only prohibited NSFW content while allowing healthy, consensual adult AI companionship conversations to flow naturally. **Is it accurate enough for AI companions and roleplay?** Yes. We achieve high accuracy with extremely low false positives and false negatives on erotic roleplay, flirting, and consensual kink, so your users enjoy natural uncensored experiences. **Do you store or train on my users data?** We are privacy first. Your data stays yours. We do not train our models on customer conversations. **How does pricing work?** Flexible usage based pricing that scales with your AI companion platform. **Can my team collaborate?** Absolutely. Invite unlimited team members, set custom moderation rules together, and manage everything from one beautiful dashboard. **What content categories do you moderate?** CSAM, celebrity deepfakes, sexual violence, bestiality, gore, drugs, and any other illegal or harmful NSFW content, all while protecting free speech in consensual adult AI interactions. **Does the API return a confidence score?** No. Every job returns a single binary is_prohibited decision, with a reason on rejection. **Is moderation synchronous?** No. Submit content, receive a job_id, then poll or receive a signed webhook. Audio takes longer because transcription scales with clip length. **Can I moderate files I upload directly?** The image, video and audio endpoints take public URLs, not file uploads. The text endpoint takes the text itself. **Does Omnifence store my users' content?** Logging keeps only what the law requires. Audio transcripts are never stored or returned. Omnifence does not train its models on customer conversations. **Will Omnifence get a merchant approved by a payment provider?** Approval is always the payment provider's decision. Omnifence provides a working, documented content control and the logs to back it. ## Endpoint reference All paths are under https://api.omnifence.ai/api/v1. | Method and path | Purpose | Scope | |---|---|---| | POST /moderate/text | Submit text | moderate:text | | POST /moderate/text/batch | Submit 1 to 99 texts | moderate:text | | GET /moderate/text/batch/{batch_id} | Read every item decision of a batch | job:read | | POST /moderate/image | Submit an image URL | moderate:image | | POST /moderate/video | Submit a video URL | moderate:video | | POST /moderate/audio | Submit an audio URL | moderate:audio | | GET /job/{id} | Read one job | job:read | | GET /jobs | List jobs, paginated and filterable | job:read | | GET /jobs/export | Download jobs in a date range as CSV | job:read | | POST /webhook/register, DELETE /webhook/register | Set or clear the global webhook URL | webhook:manage | | GET /me/webhook-secrets, POST /me/webhook-secrets/reveal, POST /me/webhook-secrets/rotate | Manage the webhook signing secret | webhook:manage | | GET /me/moderation-config, PUT /me/moderation-config | Read or change per-account toggles | read: none, write: account:config | | GET /me/default-categories | List default categories and their state | none | | GET, POST /me/custom-categories | List or create custom categories | write: account:config | | POST /me/custom-categories/generate-prompt | Draft a system prompt from a description | account:config | | PUT, DELETE /me/custom-categories/{id} | Update, enable, disable or delete a category | account:config | | POST /registry/check | Check hashed identifiers against the Shared Registry | registry:check | | POST, GET /registry/entries | Report a banned user, or list your reports | registry:submit | | POST /registry/entries/{id}/revoke | Withdraw a report | registry:submit | Full request and response schemas are in the API reference and the OpenAPI specification linked below. ## Solutions pages - [AI moderation for adult entertainment platforms](https://omnifence.ai/ai-moderation-adult-entertainment): What the moderation layer does for adult and AI platforms, the payment risks it addresses and how to integrate it. - [Underwriting adult merchants](https://omnifence.ai/underwriting-adult-merchants): For PSPs, acquirers and banks. What to require from every adult merchant, and a workflow for boarding and monitoring them. - [Shared Registry](https://omnifence.ai/shared-registry): How the registry works, its three categories, its privacy design and how to join. ## Product and pricing pages - [Homepage and full moderation policy](https://omnifence.ai/): Overview and the 15 policy categories in detail. - [Pricing](https://omnifence.ai/pricing): Plans, top-ups, average cost per moderation by content type and volume discounts. - [Contact](https://omnifence.ai/contact): Email only. hello@omnifence.ai for support, business and partnerships. ## Documentation - [Quickstart](https://omnifence.ai/docs/quickstart): Submit a first moderation request in under five minutes. - [Authentication](https://omnifence.ai/docs/authentication): API keys and scopes. - [Content moderation overview](https://omnifence.ai/docs/moderation/overview): How each modality works. - [Text](https://omnifence.ai/docs/moderation/text-moderation), [image](https://omnifence.ai/docs/moderation/image-moderation), [video](https://omnifence.ai/docs/moderation/video-moderation) and [audio](https://omnifence.ai/docs/moderation/audio-moderation) moderation: Inputs, limits and outputs per endpoint. - [Moderation categories](https://omnifence.ai/docs/moderation/categories) and [decision logic](https://omnifence.ai/docs/moderation/decisions): The built-in checks, custom categories and how a decision is reached. - [Per-account category toggles](https://omnifence.ai/docs/platform/moderation-categories): Enable or disable individual checks. - [Webhooks](https://omnifence.ai/docs/platform/webhooks), [webhook reliability](https://omnifence.ai/docs/platform/webhook-reliability) and [error recovery](https://omnifence.ai/docs/platform/error-recovery): Getting results reliably. - [Rate limiting](https://omnifence.ai/docs/platform/rate-limiting), [errors](https://omnifence.ai/docs/errors), [troubleshooting](https://omnifence.ai/docs/troubleshooting) and [billing](https://omnifence.ai/docs/platform/billing). - [Agent skill](https://omnifence.ai/docs/agent-skill): Let a coding agent add the moderation calls to your codebase. - [Shared Registry docs](https://omnifence.ai/docs/registry/overview): [How it works](https://omnifence.ai/docs/registry/how-it-works), [membership](https://omnifence.ai/docs/registry/membership), [categories](https://omnifence.ai/docs/registry/categories), [hashing](https://omnifence.ai/docs/registry/hashing), [checking](https://omnifence.ai/docs/registry/checking), [reporting](https://omnifence.ai/docs/registry/reporting), [privacy and security](https://omnifence.ai/docs/registry/privacy-and-security) and [disputes](https://omnifence.ai/docs/registry/disputes). - [API reference](https://omnifence.ai/docs/api-reference/introduction) and the [OpenAPI specification](https://omnifence.ai/docs/api-reference/openapi.json). ## Blog - [How to Moderate AI-Generated Pornography](https://omnifence.ai/blog/how-to-moderate-ai-generated-pornography): Modern AI moderation swaps simple blocklists for real-time semantic and visual filters that catch explicit intent before it ever renders. By layering prompt-level guardrails with automated neural network classifiers, platforms can neutralize NSFW risks at scale without human bottlenecks. - [The dangers of AI undressing and deepfakes](https://omnifence.ai/blog/the-dangers-of-ai-undressing-and-deepfakes): Explore the severe dangers of AI undressing and deepfakes, from psychological trauma to sextortion. Learn about the latest 2026 legal protections, the impact of non-consensual imagery, and essential steps to protect your digital identity in an era of synthetic media. ## Company Omnifence AI is operated by LORMARCO LTD. Its terms are governed by the laws of Cyprus. - [Careers](https://omnifence.ai/careers): Fully remote roles in Europe: Machine Learning Engineer, Data Scientist, AI Product Manager, AI Ethics Researcher, QA Automation Engineer. - [Terms and Conditions](https://omnifence.ai/policies/terms-and-conditions): Last updated 31/03/2026. - [Privacy Policy](https://omnifence.ai/policies/privacy-policy): Last updated 31/03/2026. ## Optional - [Sitemap](https://omnifence.ai/sitemap.xml)