curl --request GET \
--url https://api.deapi.ai/api/v1/client/models \
--header 'Accept: <accept>' \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.deapi.ai/api/v1/client/models"
headers = {
"Accept": "<accept>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Accept: '<accept>', Authorization: 'Bearer <token>'}};
fetch('https://api.deapi.ai/api/v1/client/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deapi.ai/api/v1/client/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.deapi.ai/api/v1/client/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "<accept>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.deapi.ai/api/v1/client/models")
.header("Accept", "<accept>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deapi.ai/api/v1/client/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Accept"] = '<accept>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"name": "<string>",
"slug": "<string>",
"inference_types": {},
"info": {
"limits": {
"min_width": 64,
"max_width": 2048,
"min_height": 64,
"max_height": 2048,
"min_steps": 1,
"max_steps": 150,
"min_cfg_scale": 1,
"max_cfg_scale": 30,
"min_duration": 0.5,
"max_duration": 10,
"min_fps": 8,
"max_fps": 30
},
"features": {
"supports_last_frame": true,
"supports_negative_prompt": true,
"supports_controlnet": false,
"supports_lora": true,
"supports_voice_presets": true,
"supports_custom_voice": false
},
"defaults": {
"width": 512,
"height": 512,
"steps": 20,
"cfg_scale": 7.5,
"negative_prompt": "no disfigurations",
"fps": 24,
"duration": 4,
"voice": "alloy"
}
},
"loras": [
{
"display_name": "<string>",
"name": "<string>"
}
],
"languages": [
{
"name": "<string>",
"slug": "<string>",
"voices": [
{
"name": "<string>",
"slug": "<string>",
"gender": "<string>"
}
]
}
]
}
]
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"message": "Too Many Attempts."
}Model Selection
Endpoint for fetching all available models.
curl --request GET \
--url https://api.deapi.ai/api/v1/client/models \
--header 'Accept: <accept>' \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.deapi.ai/api/v1/client/models"
headers = {
"Accept": "<accept>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Accept: '<accept>', Authorization: 'Bearer <token>'}};
fetch('https://api.deapi.ai/api/v1/client/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deapi.ai/api/v1/client/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.deapi.ai/api/v1/client/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "<accept>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.deapi.ai/api/v1/client/models")
.header("Accept", "<accept>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deapi.ai/api/v1/client/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Accept"] = '<accept>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"name": "<string>",
"slug": "<string>",
"inference_types": {},
"info": {
"limits": {
"min_width": 64,
"max_width": 2048,
"min_height": 64,
"max_height": 2048,
"min_steps": 1,
"max_steps": 150,
"min_cfg_scale": 1,
"max_cfg_scale": 30,
"min_duration": 0.5,
"max_duration": 10,
"min_fps": 8,
"max_fps": 30
},
"features": {
"supports_last_frame": true,
"supports_negative_prompt": true,
"supports_controlnet": false,
"supports_lora": true,
"supports_voice_presets": true,
"supports_custom_voice": false
},
"defaults": {
"width": 512,
"height": 512,
"steps": 20,
"cfg_scale": 7.5,
"negative_prompt": "no disfigurations",
"fps": 24,
"duration": 4,
"voice": "alloy"
}
},
"loras": [
{
"display_name": "<string>",
"name": "<string>"
}
],
"languages": [
{
"name": "<string>",
"slug": "<string>",
"voices": [
{
"name": "<string>",
"slug": "<string>",
"gender": "<string>"
}
]
}
]
}
]
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"message": "Too Many Attempts."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
application/json Query Parameters
Page size: how many models a single call returns. Always send limit=50 — it is the maximum page size and returns the whole catalogue in one call. Omit it and the endpoint falls back to 25 models and gives no indication that the rest are missing. A value above 50 is clamped to 50, not rejected. This is the parameter that widens the page; per_page does not work.
1 <= x <= 5050
Accepted but currently ignored: it does not change the page size regardless of the value sent. Use limit to widen the page and page to retrieve the remaining results.
Page number, starting at 1. Rarely needed: with limit=50 the whole catalogue is returned on page 1 and meta.last_page reads 1. Should the catalogue ever outgrow 50 entries, meta.last_page becomes greater than 1 and you fetch the remaining pages with this parameter.
Comma-separated list of inference types to filter by. Example: txt2img,txt2audio. Values must match the inference_types strings returned by this endpoint exactly — note that some of them use hyphens (img-upscale, img-rmbg, vid-upscale, video-replace). An unrecognised value is not rejected: the endpoint returns an empty data array.
txt2img, img2txt, txt2audio, txt2music, txt2video, img2video, img2img, audio2video, video-replace, img-upscale, img-rmbg, vid-upscale, txt2embedding, audio2text, video2text, audio_file2text, video_file2text Response
List of available models.
List of available models
Show child attributes
Show child attributes
Was this page helpful?