openapi: 3.2.0 info: title: Eden AI API V3 Moderations API version: 3.0.0 servers: - url: https://api.edenai.run description: Production server tags: - name: Moderations paths: /v3/moderations: post: tags: - Moderations summary: Create Moderation description: OpenAI-compatible content moderation endpoint. operationId: create_moderation_v3_moderations_post requestBody: content: application/json: schema: $ref: '#/components/schemas/ModerationBody' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ModerationResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - AuthBearer: [] /v3/moderations/models: get: tags: - Moderations summary: List Moderation Models description: List available moderation models. operationId: list_moderation_models_v3_moderations_models_get parameters: - name: view in: query required: false schema: enum: - endpoints - models type: string description: How to group the listing. 'endpoints' (default) is one entry per provider/model id, unchanged. 'models' is one entry per routable model name with its provider endpoints nested underneath — send that name as `model` to let Eden AI choose the provider. default: endpoints title: View description: How to group the listing. 'endpoints' (default) is one entry per provider/model id, unchanged. 'models' is one entry per routable model name with its provider endpoints nested underneath — send that name as `model` to let Eden AI choose the provider. responses: '200': description: Successful Response content: application/json: schema: anyOf: - $ref: '#/components/schemas/ListModelsResponse' - $ref: '#/components/schemas/ListModelsWithEndpointsResponse' title: Response List Moderation Models V3 Moderations Models Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError ModerationTextInput: properties: type: type: string const: text title: Type text: type: string title: Text type: object required: - type - text title: ModerationTextInput HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError ModerationResponse: properties: cost: anyOf: - type: number - type: 'null' title: Cost provider: anyOf: - type: string - type: 'null' title: Provider id: type: string title: Id model: type: string title: Model results: items: $ref: '#/components/schemas/OpenAIModerationResult' type: array title: Results additionalProperties: true type: object required: - id - model - results title: ModerationResponse ModelObject: properties: id: type: string title: Id description: Model identifier (e.g., 'openai/gpt-4') object: type: string const: model title: Object description: Object type default: model created: type: integer title: Created description: Unix timestamp of model creation/release owned_by: type: string title: Owned By description: Provider/organization that owns the model model_name: type: string title: Model Name description: Model name without provider prefix context_length: anyOf: - type: integer - type: 'null' title: Context Length description: Maximum context length in tokens description: anyOf: - type: string - type: 'null' title: Description description: Model description source: anyOf: - type: string - type: 'null' title: Source description: Model source URL capabilities: $ref: '#/components/schemas/Capabilities' description: Model capabilities pricing: additionalProperties: true type: object title: Pricing description: Pricing information after any applicable discounts have been applied list_pricing: additionalProperties: true type: object title: List Pricing description: Provider list pricing, before any discounts are applied discount: anyOf: - type: number - type: 'null' title: Discount description: Discount applied to the model (0-1 range) regions: items: $ref: '#/components/schemas/RegionObject' type: array title: Regions description: Regions where this model is available alias_of: anyOf: - type: string - type: 'null' title: Alias Of description: 'Set when this entry is an alias (e.g. ''gemini-pro-latest''): the real model_id it currently resolves to. None for concrete models.' type: object required: - id - created - owned_by - model_name title: ModelObject description: Extended model object with full metadata. ListModelsWithEndpointsResponse: properties: object: type: string const: list title: Object description: Object type default: list data: items: $ref: '#/components/schemas/ModelWithEndpoints' type: array title: Data description: List of routable models type: object required: - data title: ListModelsWithEndpointsResponse description: '`?view=models` response: routable names, each with its provider endpoints. Named for the public vocabulary rather than the internal one: Pydantic class names become OpenAPI schema titles and generated SDK classes, and a caller never needs the word "canonical" -- to them these are simply models, and the rows behind them endpoints.' ModerationImageUrl: properties: url: type: string title: Url type: object required: - url title: ModerationImageUrl RegionObject: properties: code: type: string title: Code description: Region code (e.g., 'us-east-1') name: type: string title: Name description: Region display name type: object required: - code - name title: RegionObject description: Region where a model is available. OpenAIModerationResult: properties: categories: anyOf: - additionalProperties: true type: object - type: 'null' title: Categories category_applied_input_types: anyOf: - additionalProperties: true type: object - type: 'null' title: Category Applied Input Types category_scores: anyOf: - additionalProperties: true type: object - type: 'null' title: Category Scores flagged: anyOf: - type: boolean - type: 'null' title: Flagged additionalProperties: true type: object required: - categories - category_applied_input_types - category_scores - flagged title: OpenAIModerationResult ModerationImageInput: properties: type: type: string const: image_url title: Type image_url: $ref: '#/components/schemas/ModerationImageUrl' type: object required: - type - image_url title: ModerationImageInput ListModelsResponse: properties: object: type: string const: list title: Object description: Object type default: list data: items: $ref: '#/components/schemas/ModelObject' type: array title: Data description: List of models type: object required: - data title: ListModelsResponse description: List models response. ModerationBody: properties: input: anyOf: - type: string - items: type: string type: array - items: oneOf: - $ref: '#/components/schemas/ModerationTextInput' - $ref: '#/components/schemas/ModerationImageInput' discriminator: propertyName: type mapping: image_url: '#/components/schemas/ModerationImageInput' text: '#/components/schemas/ModerationTextInput' type: array title: Input description: Text or multimodal content to classify. model: type: string title: Model description: Model identifier in 'provider/model' format, e.g. 'openai/omni-moderation-latest'. default: openai/omni-moderation-latest type: object required: - input title: ModerationBody Capabilities: properties: input_modalities: items: type: string type: array title: Input Modalities output_modalities: items: type: string type: array title: Output Modalities supports_reasoning: type: boolean title: Supports Reasoning default: false supports_web_search: type: boolean title: Supports Web Search default: false supports_tool_choice: type: boolean title: Supports Tool Choice default: false supports_computer_use: type: boolean title: Supports Computer Use default: false supports_prompt_caching: type: boolean title: Supports Prompt Caching default: false supports_response_schema: type: boolean title: Supports Response Schema default: false supports_system_messages: type: boolean title: Supports System Messages default: false supports_function_calling: type: boolean title: Supports Function Calling default: false supports_native_streaming: type: boolean title: Supports Native Streaming default: false supports_assistant_prefill: type: boolean title: Supports Assistant Prefill default: false supports_embedding_image_input: type: boolean title: Supports Embedding Image Input default: false supports_parallel_function_calling: type: boolean title: Supports Parallel Function Calling default: false additionalProperties: true type: object title: Capabilities description: 'Model capability flags. Unknown flags are preserved so consumers keep working when new capabilities are introduced without a coordinated release.' ModelWithEndpoints: properties: id: type: string title: Id description: The routable model name, with no provider prefix (e.g. 'gpt-oss-120b'). Send this as `model` to let Eden AI choose which provider serves it. object: type: string const: model title: Object description: Object type default: model created: type: integer title: Created description: Unix timestamp of the newest endpoint serving this model default: 0 owned_by: type: string title: Owned By description: Who authored the model, independent of who sells it default: '' mode: anyOf: - type: string - type: 'null' title: Mode description: 'What the model does: ''chat'', ''embedding'', ''stt'', ''tts'' or ''image_generation''. Lets a caller tell an LLM from a voice.' endpoints: items: $ref: '#/components/schemas/ModelObject' type: array title: Endpoints description: Every provider endpoint serving this model, each with its own pricing, context length, capabilities and regions. endpoint_count: type: integer title: Endpoint Count description: How many provider endpoints serve this model readOnly: true type: object required: - id - endpoints - endpoint_count title: ModelWithEndpoints description: 'One routable model name and the provider endpoints behind it. Deliberately carries NO pricing, context window or capability of its own. Those vary between the sellers of one model — `gpt-oss-120b` spans a 9.5x input-price range, two context lengths and six distinct capability sets across ten sellers — so a value here would be wrong for most of the group. Each endpoint keeps its own, unchanged. ``endpoints`` entries are the same :class:`ModelObject` the flat listing returns, field for field, which is what makes this view a pure regrouping: a caller reading ``data[].endpoints[]`` sees exactly what it reads from ``data[]`` today.' securitySchemes: AuthBearer: type: http scheme: bearer