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

# zlm-v1-moderation-edge

> Model details for zlm-v1-moderation-edge. OpenAI-compatible moderation, benchmarked against omni-moderation-latest.

<Note>
  The `instructions` field is not needed for this model. Send only the text to
  moderate. The verdict arrives as a JSON string in the response's output text —
  an OpenAI-moderations-style envelope of `{"model": ..., "results": [...]}` —
  so parse that string to read `flagged`, `unsafe_score`, `categories`, and
  `category_scores`.
</Note>

> ZeroGPU's moderation model screens text for unsafe, harmful, or policy-sensitive content and returns the complete OpenAI 13-category taxonomy — a `flagged` verdict, per-category booleans, and calibrated `category_scores` — so it drops into any pipeline written against `omni-moderation-latest`. Under the hood it's an 86M-parameter DeBERTa encoder with a shared trunk feeding one binary safe/unsafe head and 13 category heads, with per-category thresholds calibrated on held-out validation data. In [head-to-head benchmarks](https://zerogpu.ai/benchmarks/moderation-edge) against OpenAI omni-moderation it wins the binary safe/unsafe decision (0.899 vs 0.853 F1) and 9 of 13 harm categories — with the largest gains on graphic violence, illicit content, and self-harm — while returning verdicts 1.2–1.8× faster at the median on production-range inputs, because inference is co-located at the edge instead of a round trip to a central API. Moderation sits inline in front of every response your app serves; this is the model that's fast and accurate enough to live there.

**References:** [Moderation benchmark](https://zerogpu.ai/benchmarks/moderation-edge) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy)


## OpenAPI

````yaml api-reference/openapi/playgrounds/zlm-v1-moderation-edge.openapi.json POST /responses
openapi: 3.1.0
info:
  title: zlm-v1-moderation-edge playground
  version: '1.0'
  description: >-
    Interactive playground for **zlm-v1-moderation-edge**.

    Model is always `zlm-v1-moderation-edge` on this page (shown in the form,
    not editable).

    Authentication: `x-api-key` (required) and `x-project-id` (optional).
servers:
  - url: https://api.zerogpu.ai/v1
    description: Production
security:
  - ApiKey: []
paths:
  /responses:
    post:
      tags:
        - zlm-v1-moderation-edge
      summary: 'zlm-v1-moderation-edge: Responses'
      operationId: createResponse_zlm-v1-moderation-edge
      parameters:
        - name: x-project-id
          in: header
          required: false
          schema:
            type: string
          description: >-
            Optional project identifier. Scopes the request to a specific
            project when provided.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/CreateResponseRequest'
                - type: object
                  properties:
                    model:
                      type: string
                      const: zlm-v1-moderation-edge
                      default: zlm-v1-moderation-edge
                      example: zlm-v1-moderation-edge
                      description: Model identifier (fixed for this playground).
            examples:
              default:
                summary: Default
                value:
                  input: >-
                    I am so angry at this person that I want to hurt them. They
                    are worthless and should be scared of what I might do next.
                  model: zlm-v1-moderation-edge
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
              examples:
                default:
                  summary: Default
                  value:
                    id: 6b644bea-ed4a-43e6-b2ed-6a462c79c4e0
                    object: response
                    created_at: 1786030511
                    status: completed
                    completed_at: 1786030511
                    error: null
                    incomplete_details: null
                    instructions: null
                    max_output_tokens: null
                    model: zlm-v1-moderation-edge
                    output:
                      - type: message
                        id: 6b644bea-ed4a-43e6-b2ed-6a462c79c4e0
                        status: completed
                        role: assistant
                        content:
                          - type: output_text
                            text: >-
                              {"model":"zlm-v1-moderation-edge","results":[{"flagged":true,"unsafe_score":1,"categories":{"hate":false,"hate/threatening":false,"harassment":true,"harassment/threatening":true,"self-harm":false,"self-harm/intent":false,"self-harm/instructions":false,"sexual":false,"sexual/minors":false,"violence":true,"violence/graphic":false,"illicit":true,"illicit/violent":true},"category_scores":{"hate":0.21574,"hate/threatening":0.168273,"harassment":0.82545,"harassment/threatening":0.957703,"self-harm":0.015232,"self-harm/intent":0.017179,"self-harm/instructions":0.01807,"sexual":0.035671,"sexual/minors":0.094207,"violence":0.665897,"violence/graphic":0.198346,"illicit":0.732167,"illicit/violent":0.780693}}]}
                            annotations: []
                    parallel_tool_calls: true
                    previous_response_id: null
                    reasoning:
                      effort: null
                      summary: null
                    store: true
                    temperature: 1
                    text:
                      format:
                        type: text
                    tool_choice: auto
                    tools: []
                    top_p: 1
                    truncation: auto
                    usage:
                      input_tokens: 30
                      input_tokens_details:
                        cached_tokens: 0
                      output_tokens: 177
                      output_tokens_details:
                        reasoning_tokens: 0
                      total_tokens: 207
                    user: null
                    metadata: {}
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '420':
          description: Insufficient quota
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
components:
  schemas:
    CreateResponseRequest:
      type: object
      required:
        - model
        - input
      properties:
        model:
          type: string
          const: zlm-v1-moderation-edge
          default: zlm-v1-moderation-edge
          example: zlm-v1-moderation-edge
          description: Model identifier (fixed for this playground).
        input:
          type: string
          minLength: 1
          format: textarea
          maxLength: 131072
          description: The text to moderate, as a plain string.
    Response:
      type: object
      additionalProperties: true
    ErrorResponse:
      type: object
      additionalProperties: true
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key

````