curl --request POST \
--url https://pria.praxislxp.com/api/admin/aimodels \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"institution": "<string>",
"account": "<string>",
"minimum": true,
"page": 1,
"pageSize": 100
}
'import requests
url = "https://pria.praxislxp.com/api/admin/aimodels"
payload = {
"institution": "<string>",
"account": "<string>",
"minimum": True,
"page": 1,
"pageSize": 100
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
institution: '<string>',
account: '<string>',
minimum: true,
page: 1,
pageSize: 100
})
};
fetch('https://pria.praxislxp.com/api/admin/aimodels', 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://pria.praxislxp.com/api/admin/aimodels",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'institution' => '<string>',
'account' => '<string>',
'minimum' => true,
'page' => 1,
'pageSize' => 100
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://pria.praxislxp.com/api/admin/aimodels"
payload := strings.NewReader("{\n \"institution\": \"<string>\",\n \"account\": \"<string>\",\n \"minimum\": true,\n \"page\": 1,\n \"pageSize\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://pria.praxislxp.com/api/admin/aimodels")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"institution\": \"<string>\",\n \"account\": \"<string>\",\n \"minimum\": true,\n \"page\": 1,\n \"pageSize\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/admin/aimodels")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"institution\": \"<string>\",\n \"account\": \"<string>\",\n \"minimum\": true,\n \"page\": 1,\n \"pageSize\": 100\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": [
{
"_id": "<string>",
"name": "<string>",
"institution": "<string>",
"model_use": "conversationModel",
"description": "",
"api_url": "https://api.openai.com/v1",
"api_key": "<string>",
"default_headers": {},
"client_library": "openai_cli",
"features": {
"stream": false,
"tools": false,
"code": false,
"vision": false,
"mcp": false
},
"input_media": {
"text": true,
"image": false,
"audio": false,
"video": false,
"pdf": false
},
"output_media": {
"text": true,
"audio": false,
"video": false,
"image": false
},
"max_input_tokens": 128000,
"max_output_tokens": 64000,
"reasoning_effort": null,
"extended_context": false,
"status": "active",
"picture_url": "<string>",
"created": "2023-11-07T05:31:56Z"
}
],
"total": 123,
"hasMore": true,
"page": 123,
"pageSize": 123,
"message": "<string>"
}Get list of AI models
Retrieves AI models with optional filtering. Two response shapes:
- Paginated mode (default): Returns
{ success, data, total, hasMore, page, pageSize, message }. Theinstitutionfield on each item is populated to{ name, ainame, picture }. - Minimum mode (
minimum: true): Returns{ success, data, message }withdataprojected to{ _id, name, model_use, status }. No pagination fields. Used by dropdown selectors.
Filter precedence: institution > account (space-separated IDs, expanded to their institutions and filtered by the caller’s RAP) > caller’s own institution (for admins) > all non-deleted models (for supers).
curl --request POST \
--url https://pria.praxislxp.com/api/admin/aimodels \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"institution": "<string>",
"account": "<string>",
"minimum": true,
"page": 1,
"pageSize": 100
}
'import requests
url = "https://pria.praxislxp.com/api/admin/aimodels"
payload = {
"institution": "<string>",
"account": "<string>",
"minimum": True,
"page": 1,
"pageSize": 100
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
institution: '<string>',
account: '<string>',
minimum: true,
page: 1,
pageSize: 100
})
};
fetch('https://pria.praxislxp.com/api/admin/aimodels', 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://pria.praxislxp.com/api/admin/aimodels",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'institution' => '<string>',
'account' => '<string>',
'minimum' => true,
'page' => 1,
'pageSize' => 100
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://pria.praxislxp.com/api/admin/aimodels"
payload := strings.NewReader("{\n \"institution\": \"<string>\",\n \"account\": \"<string>\",\n \"minimum\": true,\n \"page\": 1,\n \"pageSize\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://pria.praxislxp.com/api/admin/aimodels")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"institution\": \"<string>\",\n \"account\": \"<string>\",\n \"minimum\": true,\n \"page\": 1,\n \"pageSize\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/admin/aimodels")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"institution\": \"<string>\",\n \"account\": \"<string>\",\n \"minimum\": true,\n \"page\": 1,\n \"pageSize\": 100\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": [
{
"_id": "<string>",
"name": "<string>",
"institution": "<string>",
"model_use": "conversationModel",
"description": "",
"api_url": "https://api.openai.com/v1",
"api_key": "<string>",
"default_headers": {},
"client_library": "openai_cli",
"features": {
"stream": false,
"tools": false,
"code": false,
"vision": false,
"mcp": false
},
"input_media": {
"text": true,
"image": false,
"audio": false,
"video": false,
"pdf": false
},
"output_media": {
"text": true,
"audio": false,
"video": false,
"image": false
},
"max_input_tokens": 128000,
"max_output_tokens": 64000,
"reasoning_effort": null,
"extended_context": false,
"status": "active",
"picture_url": "<string>",
"created": "2023-11-07T05:31:56Z"
}
],
"total": 123,
"hasMore": true,
"page": 123,
"pageSize": 123,
"message": "<string>"
}Authorizations
JWT token passed in x-access-token header
Body
Filter by institution ID. When omitted, admins fall back to their own institution and supers see all.
Filter by account IDs (space-separated). Resolves to every non-deleted institution under those accounts, then filters by the caller's RAP.
When true, returns a flat list of { _id, name, model_use, status } with no pagination. Used by dropdown selectors.
Page number (1-based, ignored when minimum=true).
x >= 1Page size (also accepted as limitsearch; ignored when minimum=true).
1 <= x <= 5000Response
AI models retrieved successfully. Shape depends on the minimum flag in the request.
- Option 1
- Option 2
Paginated response (returned when minimum is false or omitted).
Was this page helpful?