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

# Image Generation

> Portkey's AI gateway supports image generation capabilities that many foundational model providers offer.

The most common use case is that of **text-to-image** where the user sends a prompt which the image model processes and returns an image.

<Info>
  The guide for vision models is [available here](/product/ai-gateway/multimodal-capabilities/vision).
</Info>

## Text-to-Image Usage

Portkey supports the OpenAI signature to make text-to-image requests.

<Tabs>
  <Tab title="NodeJS">
    ```js theme={"system"}
    import Portkey from 'portkey-ai';

    // Initialize the Portkey client
    const portkey = new Portkey({
        apiKey: "PORTKEY_API_KEY",  // Replace with your Portkey API key
        virtualKey: "VIRTUAL_KEY"   // Add your provider's virtual key
    });

    async function main() {
      const image = await portkey.images.generate({
        model: "dall-e-3",
        prompt: "Lucy in the sky with diamonds"
      });

      console.log(image.data);
    }

    main();
    ```
  </Tab>

  <Tab title="Python">
    ```py theme={"system"}
    from portkey_ai import Portkey
    from IPython.display import display, Image

    # Initialize the Portkey client
    portkey = Portkey(
        api_key="PORTKEY_API_KEY",  # Replace with your Portkey API key
        virtual_key="VIRTUAL_KEY"   # Add your provider's virtual key
    )

    image = portkey.images.generate(
      model="dall-e-3",
      prompt="Lucy in the sky with diamonds"
    )

    # Display the image
    display(Image(url=image.data[0].url))
    ```
  </Tab>

  <Tab title="OpenAI NodeJS">
    ```js theme={"system"}
    import OpenAI from 'openai'; // We're using the v4 SDK
    import { PORTKEY_GATEWAY_URL, createHeaders } from 'portkey-ai'

    const openai = new OpenAI({
      apiKey: 'OPENAI_API_KEY', // defaults to process.env["OPENAI_API_KEY"],
      baseURL: PORTKEY_GATEWAY_URL,
      defaultHeaders: createHeaders({
        provider: "openai",
        apiKey: "PORTKEY_API_KEY" // defaults to process.env["PORTKEY_API_KEY"]
      })
    });

    async function main() {
      const image = await openai.images.generate({
        model: "dall-e-3",
        prompt: "Lucy in the sky with diamonds"
      });

      console.log(image.data);
    }

    main();
    ```
  </Tab>

  <Tab title="OpenAI Python">
    ```py theme={"system"}
    from openai import OpenAI
    from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders
    from IPython.display import display, Image

    client = OpenAI(
        api_key='OPENAI_API_KEY',
        base_url=PORTKEY_GATEWAY_URL,
        default_headers=createHeaders(
            provider="openai",
            api_key="PORTKEY_API_KEY"
        )
    )

    image = client.images.generate(
      model="dall-e-3",
      prompt="Lucy in the sky with diamonds",
      n=1,
      size="1024x1024"
    )

    # Display the image
    display(Image(url=image.data[0].url))
    ```
  </Tab>

  <Tab title="cURL">
    ```sh theme={"system"}
    curl "https://api.portkey.ai/v1/images/generations" \
      -H "Content-Type: application/json" \
      -H "x-portkey-api-key: $PORTKEY_API_KEY" \
      -H "x-portkey-virtual-key: $OPENAI_VIRTUAL_KEY" \
      -d '{
        "model": "dall-e-3",
        "prompt": "Lucy in the sky with diamonds"
      }'
    ```
  </Tab>
</Tabs>

### API Reference

[Create Image](/provider-endpoints/images/create-image)

On completion, the request will get logged in the logs UI where the image can be viewed.

(*Note that providers may remove the hosted image after a period of time, so some logs might only contain the url*)

<Frame>
  <img src="https://mintcdn.com/portkey-docs/VWP2Y8zxPP5N4jE6/images/product/ai-gateway/ai-14.avif?fit=max&auto=format&n=VWP2Y8zxPP5N4jE6&q=85&s=15ee781701c8c587976a2cdcfa081cef" width="800" height="560" data-path="images/product/ai-gateway/ai-14.avif" />
</Frame>

## Cookbook

[**Here's a detailed cookbook on image generation using Portkey**](https://github.com/Portkey-AI/portkey-cookbook/blob/main/examples/image-generation.ipynb) which demonstrates the use of multiple providers and routing between them through Configs.
