> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developer.ideogram.ai/v1/api-reference/custom-model-training/list-models/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.ideogram.ai/_mcp/server. # List models GET https://api.ideogram.ai/models Lists custom models for the authenticated user. Use the `scope` parameter to control which models are returned. If omitted, returns both owned models and models shared with the user's organization via the model registry. `owned` returns only models created by the user. `shared` returns only models shared via the model registry, excluding the user's own models. Reference: https://developer.ideogram.ai/v1/api-reference/custom-model-training/list-models ## Authentication - `Api-Key` header (required) — API key for access control. Use in the header with the name \"Api-Key\" ## Request ### Query parameters - `scope` (enum, optional) — Controls which models are returned. Omit to return both owned and shared models combined. `owned` returns only models created by the authenticated user. `shared` returns only models shared with the user's organization via the model registry. - Allowed values: `owned`, `shared` - `status` (list of enum, optional) — Filter by model status. Applied to owned models only; shared models in the model registry are already filtered to available versions. Example: `?status=TRAINING&status=COMPLETED` - Allowed values: `CREATING`, `DRAFT`, `TRAINING`, `COMPLETED`, `ERRORED`, `ARCHIVED` ## Response ### 200 Models retrieved successfully - `models` (list of CustomModel, required) — List of models. ## Errors ### 401 Unauthorized Error Unauthorized - `any` ## Types ### CustomModel A custom model. - `model_id` (string, required) — Unique identifier for the model (base64 URL-safe encoded UUID). - `name` (string, required) — Display name of the model. - `status` (enum, required) — The status of a custom model. - Allowed values: `CREATING`, `DRAFT`, `TRAINING`, `COMPLETED`, `ERRORED`, `ARCHIVED` - `creation_time` (datetime, required) — When the model was created. - `is_available_for_generation` (boolean, required) — Whether the model is available for image generation. - `is_owned` (boolean, required) — Whether the authenticated user owns this model. - `custom_model_uri` (string, optional, nullable) — A custom model URI in the format model/\/version/\. Use this URI when generating images with this model. Only present for models that have been registered in the model registry. - `dataset_id` (string, optional, nullable) — ID of the dataset (collection) the model was trained from. - `last_update_time` (datetime, optional, nullable) — When the model was last updated. ## Examples **Response** ```json { "models": [ { "model_id": "model_id", "name": "name", "status": "CREATING", "creation_time": "2024-01-15T09:30:00Z", "is_available_for_generation": true, "is_owned": true, "custom_model_uri": "model/my-custom-model/version/1", "dataset_id": "dataset_id", "last_update_time": "2024-01-15T09:30:00Z" }, { "model_id": "model_id", "name": "name", "status": "CREATING", "creation_time": "2024-01-15T09:30:00Z", "is_available_for_generation": true, "is_owned": true, "custom_model_uri": "model/my-custom-model/version/1", "dataset_id": "dataset_id", "last_update_time": "2024-01-15T09:30:00Z" } ] } ``` **SDK Code** ```python import requests url = "https://api.ideogram.ai/models" headers = {"Api-Key": ""} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.ideogram.ai/models'; const options = {method: 'GET', headers: {'Api-Key': ''}}; 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/models" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Api-Key", "") 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/models") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Api-Key"] = '' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.ideogram.ai/models") .header("Api-Key", "") .asString(); ``` ```php request('GET', 'https://api.ideogram.ai/models', [ 'headers' => [ 'Api-Key' => '', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ideogram.ai/models"); var request = new RestRequest(Method.GET); request.AddHeader("Api-Key", ""); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Api-Key": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.ideogram.ai/models")! 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() ```