> 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.

# List invoices

GET https://api.ideogram.ai/v2/account/invoices

Returns your organization's invoices with their line items — the
billing record your usage reports reconcile against. Amounts are
decimal strings in the invoice's currency.

Requires an API key whose owner is an organization admin. Keys owned
by other members receive a 404.


Reference: https://developer.ideogram.ai/api-reference/account/invoices

## Authentication

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

## Response

### 200

The organization's invoices. Empty when no billing history exists yet.

- `invoices` (list of AccountInvoice, required) — The organization's invoices.

## Errors

### 401 Unauthorized Error

Unauthorized.

- `any`

### 404 Not Found Error

No organization with billing access was found for this credential.

- `any`

## Types

### AccountInvoice

- `start_time` (datetime, required) — Start of the invoice period.
- `end_time` (datetime, required) — End of the invoice period.
- `status` (enum, required) — Status of the invoice
  - Allowed values: `draft`, `pending_payment`, `paid`, `voided`
- `total` (string, required) — Invoice total in `currency_code`, as a decimal string.
- `currency_code` (string, required) — ISO 4217 currency code of the amounts on this invoice.
- `line_items` (list of AccountInvoiceLineItem, required) — The invoice's charges.
- `issued_time` (datetime, optional, nullable) — When the invoice was issued, when it has been.
- `paid_time` (datetime, optional, nullable) — When the invoice was paid, when it has been.

### AccountInvoiceLineItem

One charged product on an invoice.

- `description` (string, required) — Display name of the charged product. Not an identifier.
- `quantity` (string, required) — Number of billed units, as a decimal string.
- `unit_price` (string, required) — Price per unit in `currency_code`, as a decimal string.
- `cost_total` (string, required) — Total charged amount in `currency_code`, as a decimal string.
- `currency_code` (string, required) — ISO 4217 currency code of the amounts on this line item.
- `api_key` (AccountUsageApiKey, optional) — The API key the usage was billed to, in redacted form.

### AccountUsageApiKey

The API key the usage was billed to, in redacted form.

- `id` (string, required) — The API key's id, as listed by `GET /v2/account/api-keys`.
- `redacted_key` (string, optional, nullable) — The first characters of the key followed by bullets.
- `label` (string, optional, nullable) — The key's user-supplied label, when one is set.

## Examples

**Response**

```json
{
  "invoices": [
    {
      "start_time": "2024-01-15T09:30:00Z",
      "end_time": "2024-01-15T09:30:00Z",
      "status": "paid",
      "total": "150.00",
      "currency_code": "USD",
      "line_items": [
        {
          "description": "Ideogram v4 Generation",
          "quantity": "2100",
          "unit_price": "0.04",
          "cost_total": "84.00",
          "currency_code": "USD",
          "api_key": {
            "id": "JRPVD7jWR1aTBYiJ0UFVOg",
            "redacted_key": "ATG5•••••••••••••",
            "label": "Live production environment"
          }
        },
        {
          "description": "Ideogram v4 Generation",
          "quantity": "2100",
          "unit_price": "0.04",
          "cost_total": "84.00",
          "currency_code": "USD",
          "api_key": {
            "id": "JRPVD7jWR1aTBYiJ0UFVOg",
            "redacted_key": "ATG5•••••••••••••",
            "label": "Live production environment"
          }
        }
      ],
      "issued_time": "2024-01-15T09:30:00Z",
      "paid_time": "2024-01-15T09:30:00Z"
    },
    {
      "start_time": "2024-01-15T09:30:00Z",
      "end_time": "2024-01-15T09:30:00Z",
      "status": "paid",
      "total": "150.00",
      "currency_code": "USD",
      "line_items": [
        {
          "description": "Ideogram v4 Generation",
          "quantity": "2100",
          "unit_price": "0.04",
          "cost_total": "84.00",
          "currency_code": "USD",
          "api_key": {
            "id": "JRPVD7jWR1aTBYiJ0UFVOg",
            "redacted_key": "ATG5•••••••••••••",
            "label": "Live production environment"
          }
        },
        {
          "description": "Ideogram v4 Generation",
          "quantity": "2100",
          "unit_price": "0.04",
          "cost_total": "84.00",
          "currency_code": "USD",
          "api_key": {
            "id": "JRPVD7jWR1aTBYiJ0UFVOg",
            "redacted_key": "ATG5•••••••••••••",
            "label": "Live production environment"
          }
        }
      ],
      "issued_time": "2024-01-15T09:30:00Z",
      "paid_time": "2024-01-15T09:30:00Z"
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.ideogram.ai/v2/account/invoices"

headers = {"Api-Key": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.ideogram.ai/v2/account/invoices';
const options = {method: 'GET', headers: {'Api-Key': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

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

func main() {

	url := "https://api.ideogram.ai/v2/account/invoices"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Api-Key", "<apiKey>")

	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/v2/account/invoices")

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

request = Net::HTTP::Get.new(url)
request["Api-Key"] = '<apiKey>'

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.get("https://api.ideogram.ai/v2/account/invoices")
  .header("Api-Key", "<apiKey>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.ideogram.ai/v2/account/invoices', [
  'headers' => [
    'Api-Key' => '<apiKey>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.ideogram.ai/v2/account/invoices");
var request = new RestRequest(Method.GET);
request.AddHeader("Api-Key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Api-Key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.ideogram.ai/v2/account/invoices")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

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()
```