> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.ideogram.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.ideogram.ai/_mcp/server.

# Generate with Ideogram 3.0 (Transparent Background)

POST https://api.ideogram.ai/v1/ideogram-v3/generate-transparent
Content-Type: multipart/form-data

Generates images with transparent background synchronously based on a given prompt and optional parameters using
the Ideogram 3.0 model. Images will be generated using maximum supported resolution at the specified aspect ratio
to allow best results with upscaler. The selected resolution is written to the response, not the upscaled final
resolution.

`rendering_speed=FLASH` is not supported for transparent-background generation; the request will return a 400.
Use `TURBO`, `DEFAULT`, or `QUALITY` instead.

Images links are available for a limited period of time; if you would like to keep the image, you must download it.


Reference: https://developer.ideogram.ai/v1/api-reference/generate-images/generate-transparent-v3

## Authentication

- `Api-Key` header (required) — API key for access control. Use in the header with the name \"Api-Key\"

## Request

### Body (multipart/form-data)

This endpoint expects a multipart form.

- `prompt` (string, required) — The prompt to use to generate the image.
- `seed` (integer, optional) — Random seed. Set for reproducible generation.
- `upscale_factor` (enum, optional)
- `aspect_ratio` (enum, optional)
- `rendering_speed` (enum, optional) — The rendering speed to use. FLASH is not supported for transparent-background generation; requests with rendering_speed=FLASH will return a 400.
- `magic_prompt` (enum, optional)
- `negative_prompt` (string, optional) — Description of what to exclude from an image. Descriptions in the prompt take precedence to descriptions in the negative prompt.
- `num_images` (integer, optional) — Number of images to generate.
- `enable_copyright_detection` (boolean, optional) — Optional. Opt this request into post-generation copyright detection (Hive likeness + logo checks). The effective gate is the OR of this field and the organization's `copyright_detection_enabled` setting on `/api`: if the org has it on, this is ignored; if the org has it off, setting this `true` enables detection for this request only. Adds detection latency. Flagged images come back with `is_image_safe: false`.

## Response

### 200

Image(s) generated successfully.

- `created` (datetime, required) — The time the request was created.
- `data` (list of ImageGenerationObjectV3, required) — A list of ImageObjects that contain the generated image(s).

## Errors

### 400 Bad Request Error

Invalid input provided.

- `any`

### 401 Unauthorized Error

Not authorized to generate an image.

- `any`

### 422 Unprocessable Entity Error

Prompt failed the safety check.

- `error` (string, required)

### 429 Too Many Requests Error

Too many requests.

- `any`

## Types

### ImageGenerationObjectV3

- `prompt` (string, required) — The prompt used for the generation. This may be different from the original prompt.
- `resolution` (enum, required) — The resolutions supported for Ideogram 3.0.
  - Allowed values: `512x1536`, `576x1408`, `576x1472`, `576x1536`, `640x1344`, `640x1408`, `640x1472`, `640x1536`, `704x1152`, `704x1216`, `704x1280`, `704x1344`, `704x1408`, `704x1472`, `736x1312`, `768x1088`, `768x1216`, `768x1280`, `768x1344`, `800x1280`, `832x960`, `832x1024`, `832x1088`, `832x1152`, `832x1216`, `832x1248`, `864x1152`, `896x960`, `896x1024`, `896x1088`, `896x1120`, `896x1152`, `960x832`, `960x896`, `960x1024`, `960x1088`, `1024x832`, `1024x896`, `1024x960`, `1024x1024`, `1088x768`, `1088x832`, `1088x896`, `1088x960`, `1120x896`, `1152x704`, `1152x832`, `1152x864`, `1152x896`, `1216x704`, `1216x768`, `1216x832`, `1248x832`, `1280x704`, `1280x768`, `1280x800`, `1312x736`, `1344x640`, `1344x704`, `1344x768`, `1408x576`, `1408x640`, `1408x704`, `1472x576`, `1472x640`, `1472x704`, `1536x512`, `1536x576`, `1536x640`
- `is_image_safe` (boolean, required) — Whether this request passes safety checks. If false, the url field will be empty.
- `seed` (integer, required) — Random seed. Set for reproducible generation.
- `url` (string, optional, nullable) — The direct link to the image generated.
- `upscaled_resolution` (string, optional) — Output resolution, only used if operations alters image dimensions, such as upscale, crop etc.
- `style_type` (enum, optional, default: GENERAL) — The style type to generate with.
  - Allowed values: `AUTO`, `GENERAL`, `REALISTIC`, `DESIGN`, `FICTION`

## Examples

**Request**

```json
{
  "aspect_ratio": "1x1",
  "prompt": "A logo for Ideogram Coffee.",
  "rendering_speed": "TURBO",
  "upscale_factor": "X2"
}
```

**Response**

```json
{
  "created": {},
  "data": [
    {
      "prompt": "A logo for Ideogram Coffee.",
      "resolution": "1024x1024",
      "is_image_safe": true,
      "seed": 12345,
      "url": "https://ideogram.ai/api/images/ephemeral/xtdZiqPwRxqY1Y7NExFmzB.png?exp=1743867804&sig=e13e12677633f646d8531a153d20e2d3698dca9ee7661ee5ba4f3b64e7ec3f89",
      "upscaled_resolution": "2048x2028"
    }
  ]
}
```

**SDK Code**

```python
import requests

# Generate with Ideogram 3.0 (POST /v1/ideogram-v3/generate-transparent)
response = requests.post(
  "https://api.ideogram.ai/v1/ideogram-v3/generate-transparent",
  headers={
    "Api-Key": "<apiKey>"
  },
  json={
    "prompt": "A logo for Ideogram Coffee.",
    "rendering_speed": "TURBO"
  }
)
print(response.json())
with open('output.png', 'wb') as f:
  f.write(requests.get(response.json()['data'][0]['url']).content)

```

```typescript
const formData = new FormData();
formData.append('prompt', 'A logo for Ideogram Coffee.');
formData.append('rendering_speed', 'TURBO');
const response = await fetch('https://api.ideogram.ai/v1/ideogram-v3/generate-transparent', {
  method: 'POST',
  headers: { 'Api-Key': '<apiKey>' },
  body: formData
});
const data = await response.json();
console.log(data);

```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.ideogram.ai/v1/ideogram-v3/generate-transparent"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"aspect_ratio\"\r\n\r\n1x1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"enable_copyright_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"magic_prompt\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"negative_prompt\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_images\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA logo for Ideogram Coffee.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"rendering_speed\"\r\n\r\nTURBO\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"upscale_factor\"\r\n\r\nX2\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Api-Key", "<apiKey>")
	req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.ideogram.ai/v1/ideogram-v3/generate-transparent")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Api-Key"] = '<apiKey>'
request["Content-Type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"aspect_ratio\"\r\n\r\n1x1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"enable_copyright_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"magic_prompt\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"negative_prompt\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_images\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA logo for Ideogram Coffee.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"rendering_speed\"\r\n\r\nTURBO\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"upscale_factor\"\r\n\r\nX2\r\n-----011000010111000001101001--\r\n"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.ideogram.ai/v1/ideogram-v3/generate-transparent")
  .header("Api-Key", "<apiKey>")
  .header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"aspect_ratio\"\r\n\r\n1x1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"enable_copyright_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"magic_prompt\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"negative_prompt\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_images\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA logo for Ideogram Coffee.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"rendering_speed\"\r\n\r\nTURBO\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"upscale_factor\"\r\n\r\nX2\r\n-----011000010111000001101001--\r\n")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ideogram.ai/v1/ideogram-v3/generate-transparent', [
  'multipart' => [
    [
        'name' => 'aspect_ratio',
        'contents' => '1x1'
    ],
    [
        'name' => 'prompt',
        'contents' => 'A logo for Ideogram Coffee.'
    ],
    [
        'name' => 'rendering_speed',
        'contents' => 'TURBO'
    ],
    [
        'name' => 'upscale_factor',
        'contents' => 'X2'
    ]
  ]
  'headers' => [
    'Api-Key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.ideogram.ai/v1/ideogram-v3/generate-transparent");
var request = new RestRequest(Method.POST);
request.AddHeader("Api-Key", "<apiKey>");
request.AddParameter("multipart/form-data; boundary=---011000010111000001101001", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"aspect_ratio\"\r\n\r\n1x1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"enable_copyright_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"magic_prompt\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"negative_prompt\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_images\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA logo for Ideogram Coffee.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"rendering_speed\"\r\n\r\nTURBO\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"upscale_factor\"\r\n\r\nX2\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Api-Key": "<apiKey>",
  "Content-Type": "multipart/form-data; boundary=---011000010111000001101001"
]
let parameters = [
  [
    "name": "aspect_ratio",
    "value": "1x1"
  ],
  [
    "name": "enable_copyright_detection",
    "value": 
  ],
  [
    "name": "magic_prompt",
    "value": 
  ],
  [
    "name": "negative_prompt",
    "value": 
  ],
  [
    "name": "num_images",
    "value": 
  ],
  [
    "name": "prompt",
    "value": "A logo for Ideogram Coffee."
  ],
  [
    "name": "rendering_speed",
    "value": "TURBO"
  ],
  [
    "name": "seed",
    "value": 
  ],
  [
    "name": "upscale_factor",
    "value": "X2"
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://api.ideogram.ai/v1/ideogram-v3/generate-transparent")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```