Eden AI Images API

The Images API from Eden AI — 3 operation(s) for images.

Operations 3

POST /v3/images/generations Image Generations #
POST /v3/images/edits Image Edits #
GET /v3/images/models List Image Models #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/eden-ai-images-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

eden-ai-images-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Eden AI API V3 Images API
  version: 3.0.0
servers:
- url: https://api.edenai.run
  description: Production server
tags:
- name: Images
paths:
  /v3/images/generations:
    post:
      tags:
      - Images
      summary: Image Generations
      description: OpenAI-compatible image generation endpoint.
      operationId: image_generations_v3_images_generations_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageGenerationBody'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - AuthBearer: []
  /v3/images/edits:
    post:
      tags:
      - Images
      summary: Image Edits
      description: 'OpenAI-compatible image-edit endpoint.


        Accepts either ``application/json`` (gpt-image-style ``images: [{file_id|image_url}]``)

        or ``multipart/form-data`` (OpenAI SDK classic shape: ``image[]`` UploadFile,

        optional ``mask`` UploadFile, plus text fields). Content-Type drives dispatch.'
      operationId: image_edits_v3_images_edits_post
      requestBody:
        content:
          application/json:
            schema:
              properties:
                routing:
                  anyOf:
                  - $ref: '#/components/schemas/ProviderRoutingPreferences'
                  - type: 'null'
                  description: 'How to pick between the providers that serve the requested model. Applies when `model` is a model name with no provider prefix (e.g. ''gpt-5.5''); ignored for a concrete ''provider/model'' id, which already names its provider. With model=''@edenai'' the platform chooses the model too: `quality_cost` steers that choice, and the provider fields apply whenever the chosen model is a provider-less name.'
                model:
                  type: string
                  title: Model
                  description: provider/model, e.g. 'openai/gpt-image-2'
                prompt:
                  type: string
                  maxLength: 32000
                  minLength: 1
                  title: Prompt
                n:
                  anyOf:
                  - type: integer
                    maximum: 10.0
                    minimum: 1.0
                  - type: 'null'
                  title: N
                size:
                  anyOf:
                  - type: string
                  - type: 'null'
                  title: Size
                  description: Provider-specific size string. OpenAI accepts '1024x1024', '1536x1024', '1024x1536', 'auto'. Vertex Imagen accepts square or aspect-ratio strings. Validation is delegated to the provider.
                user:
                  anyOf:
                  - type: string
                  - type: 'null'
                  title: User
                  description: End-user identifier for abuse tracking.
                metadata:
                  anyOf:
                  - additionalProperties: true
                    type: object
                  - type: 'null'
                  title: Metadata
                  description: Arbitrary metadata attached to the request.
                extra_headers:
                  anyOf:
                  - additionalProperties:
                      type: string
                    type: object
                  - type: 'null'
                  title: Extra Headers
                  description: Additional HTTP headers forwarded to the provider API. Credential headers (Authorization, x-api-key, ...) are rejected.
                images:
                  items:
                    $ref: '#/components/schemas/ImageRef'
                  type: array
                  maxItems: 16
                  minItems: 1
                  title: Images
                  description: One or more input images. Each entry references one image via exactly one of `file_id` (an Eden upload id) or `image_url` (https URL or base64 data URL). The first image is the canvas; subsequent images are inpaint references.
                mask:
                  anyOf:
                  - $ref: '#/components/schemas/ImageRef'
                  - type: 'null'
                  description: Optional mask image (PNG with transparent pixels marking the regions to edit). Same shape as an `images[]` entry.
              additionalProperties: true
              type: object
              required:
              - model
              - prompt
              - images
              title: ImageEditJsonBody
              description: "OpenAI-compatible ``POST /v1/images/edits`` JSON request body.\n\nReferences:\n- OpenAI's current /v1/images/edits JSON form for gpt-image-* takes\n  ``images: [{file_id | image_url}, ...]`` and an optional ``mask:\n  {file_id | image_url}``.\n- ``image_url`` accepts an https URL or a ``data:image/...;base64,...`` URL."
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageResponse'
      security:
      - AuthBearer: []
  /v3/images/models:
    get:
      tags:
      - Images
      summary: List Image Models
      description: List image-generation / image-edit models available in the caller's region.
      operationId: list_image_models_v3_images_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 Image Models V3 Images Models Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    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.'
    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.
    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
    ImageGenerationBody:
      properties:
        routing:
          anyOf:
          - $ref: '#/components/schemas/ProviderRoutingPreferences'
          - type: 'null'
          description: 'How to pick between the providers that serve the requested model. Applies when `model` is a model name with no provider prefix (e.g. ''gpt-5.5''); ignored for a concrete ''provider/model'' id, which already names its provider. With model=''@edenai'' the platform chooses the model too: `quality_cost` steers that choice, and the provider fields apply whenever the chosen model is a provider-less name.'
        model:
          type: string
          title: Model
          description: provider/model, e.g. 'openai/gpt-image-2'
        prompt:
          type: string
          maxLength: 32000
          minLength: 1
          title: Prompt
        n:
          anyOf:
          - type: integer
            maximum: 10.0
            minimum: 1.0
          - type: 'null'
          title: N
        size:
          anyOf:
          - type: string
          - type: 'null'
          title: Size
          description: Provider-specific size string. OpenAI accepts '1024x1024', '1536x1024', '1024x1536', 'auto'. Vertex Imagen accepts square or aspect-ratio strings. Validation is delegated to the provider.
        user:
          anyOf:
          - type: string
          - type: 'null'
          title: User
          description: End-user identifier for abuse tracking.
        metadata:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Metadata
          description: Arbitrary metadata attached to the request.
        extra_headers:
          anyOf:
          - additionalProperties:
              type: string
            type: object
          - type: 'null'
          title: Extra Headers
          description: Additional HTTP headers forwarded to the provider API. Credential headers (Authorization, x-api-key, ...) are rejected.
        quality:
          anyOf:
          - type: string
          - type: 'null'
          title: Quality
          description: Provider-specific quality string (e.g. 'low', 'medium', 'high', 'standard', 'hd', 'auto'). Accepted values depend on the model.
        response_format:
          anyOf:
          - type: string
          - type: 'null'
          title: Response Format
          description: Legacy DALL-E parameter. Ignored by gpt-image-* and forwarded to the provider for any model that still honors it.
      additionalProperties: true
      type: object
      required:
      - model
      - prompt
      title: ImageGenerationBody
      description: OpenAI-compatible ``POST /v1/images/generations`` request body.
    ProviderRoutingPreferences:
      properties:
        sort:
          anyOf:
          - type: string
            enum:
            - cost
            - speed
            - latency
            - exact
          - type: 'null'
          title: Sort
          description: What to optimise for when several providers serve the requested model. 'cost' (default) picks the cheapest for this request's shape; 'speed' the highest tokens/second; 'latency' the fastest to first token; 'exact' the most reliable at producing well-formed tool calls / structured output. Health is always a filter first — no mode will route you to a failing provider. Can also be written as a model suffix, e.g. 'gpt-5.5:speed'.
        sticky:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Sticky
          description: Keep a conversation on the provider holding its prompt cache. On by default, and only ever active for models whose providers discount cache reads. Set false to route every request independently on price instead. Naming an explicit `sort` also takes priority over cache affinity.
        allow_fallbacks:
          type: boolean
          title: Allow Fallbacks
          description: 'Whether other providers of the same model may be tried when the chosen one fails. Set false to pin the request to the single best provider: it then fails rather than silently moving to another seller. useful when a cache-warm prompt would cold-miss elsewhere. This governs PROVIDERS of the requested model only; models you list in `fallbacks` are your own choice and are always kept.'
          default: true
        quality_cost:
          anyOf:
          - type: integer
            maximum: 10.0
            minimum: 0.0
          - type: 'null'
          title: Quality Cost
          description: 'Only with model=''@edenai'': how far to trade answer quality for cost when the platform chooses the MODEL. 0 asks for the best model for the request, 10 for the cheapest model that can still handle it, values in between blend the two; omit it to leave the choice to the platform (quality first). This is the one `routing` field that steers the model rather than the provider — `sort` never changes which model is chosen.'
        allowed_providers:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Allowed Providers
          description: Restrict routing to these providers, e.g. ['openai', 'anthropic']. Only providers that serve the requested model are considered, so an entry that does not sell it is simply inert. If none of them do, the request fails rather than falling back to a provider you excluded. Case-insensitive. Applies to routed providers only. a concrete 'provider/model' you named in `fallbacks` is your own choice and is kept.
      type: object
      title: ProviderRoutingPreferences
      description: 'How to choose between SELLERS of one model — and, with ``@edenai``, how far to trade

        quality for cost when the platform chooses the model.


        The seller fields are only meaningful when `model` is a canonical name (`gpt-5.5`) rather than a concrete

        `provider/model` — with a concrete id there is nothing to choose between. For choosing the

        MODEL itself see ``router_candidates`` and ``model="@edenai"``, which is a different router;

        ``quality_cost`` below is the one field here that speaks to it.'
    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.'
    ImageResponse:
      properties:
        cost:
          anyOf:
          - type: number
          - type: 'null'
          title: Cost
        provider:
          anyOf:
          - type: string
          - type: 'null'
          title: Provider
        created:
          anyOf:
          - type: integer
          - type: 'null'
          title: Created
        data:
          items:
            $ref: '#/components/schemas/ImageDataItem'
          type: array
          title: Data
        usage:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Usage
      additionalProperties: true
      type: object
      title: ImageResponse
      description: 'OpenAI-compatible image response + Eden ``cost`` / ``provider`` fields.


        Shared by ``POST /v3/images/generations`` and ``POST /v3/images/edits`` —

        the wire shape is identical.'
    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.
    ImageRef:
      properties:
        file_id:
          anyOf:
          - type: string
          - type: 'null'
          title: File Id
        image_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Image Url
      additionalProperties: false
      type: object
      title: ImageRef
      description: 'One entry in ``images[]`` (or the ``mask`` value).


        Exactly one of ``file_id`` or ``image_url`` must be set.'
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ImageDataItem:
      properties:
        url:
          anyOf:
          - type: string
          - type: 'null'
          title: Url
        b64_json:
          anyOf:
          - type: string
          - type: 'null'
          title: B64 Json
        revised_prompt:
          anyOf:
          - type: string
          - type: 'null'
          title: Revised Prompt
      additionalProperties: true
      type: object
      title: ImageDataItem
      description: 'Single image entry inside the OpenAI-shaped ``data: [...]`` array.


        Providers return either ``url`` (most non-OpenAI providers) or

        ``b64_json`` (gpt-image-*); ``revised_prompt`` is OpenAI-specific.'
    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.'
  securitySchemes:
    AuthBearer:
      type: http
      scheme: bearer