---
title: "Analyze - AI Vision Moderation"
method: POST
path: "/analyze/ai_vision_moderation"
tags: ["Analysis"]
---

# Analyze - AI Vision Moderation

`POST /analyze/ai_vision_moderation`

The Moderation mode accepts multiple questions about an image, to which the response provides concise answers of "yes," "no," or "unknown." This functionality allows for a nuanced evaluation of whether the image adheres to specific content policies, creative specs, or aesthetic criteria.

## Request body

- AnalyzeAIVisionModerationRequest
  - `source` union, required
    - object
      - `asset_id` string, required — The asset ID to analyze
      - `uri` string, uri — The URI of the asset to analyze
    - object
      - `asset_id` string — The asset ID to analyze
      - `uri` string, uri, required — The URI of the asset to analyze
  - `async` boolean — Whether to perform the analysis asynchronously. If true, the response is returned immediately and analysis is done in the background. Once complete, a webhook notification will be sent to the specified URL and/or to the URLs defined in the Webhook Notifications settings of your Cloudinary Console.
  - `notification_url` string — The webhook URL to notify when the analysis is complete. Only relevant when async is set to true.
  - `rejection_questions` string[] — A list of yes/no questions

## Response `200`

Analysis succeeded

- AnalyzeAIVisionModerationResponse, nullable
  - `data` object
    - `entity` string
    - `analysis` AIVisionModerationAnalysisData
      - `responses` object[], required
        - `prompt` string
        - `value` 'yes' | 'no' | 'unknown'
      - `model_version` integer
  - `limits` LimitsObject, nullable
    - `items` object[]
      - `type` 'google_tagging' | 'object_detection' | 'ai_vision', required
      - `used_by_request` integer, nullable — The amount of quota used by the current request
      - `remaining` integer, nullable — The remaining quota
      - `limit` integer, nullable — The total quota limit
      - `reset_time` string, date-time, nullable — Time in UTC when the limit will be reset
  - `request_id` string

## Other responses

- `202` — Analysis accepted
- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `429` — Rate limited
- `500` — Internal server error

---

[API](https://skmtc.net/cloudinary/apis/analyze-api-beta.md) · [All operations](https://skmtc.net/cloudinary/apis/analyze-api-beta/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cloudinary/analyze-api-beta/versions/b54402e987f1/schema)
