List available models
curl --request GET \
--url https://api.perceptron.inc/v1/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.perceptron.inc/v1/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.perceptron.inc/v1/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.perceptron.inc/v1/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 => [
"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.perceptron.inc/v1/models"
req, _ := http.NewRequest("GET", url, nil)
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.perceptron.inc/v1/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.perceptron.inc/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"created": 123,
"id": "<string>",
"object": "<string>",
"owned_by": "perceptron"
}
],
"object": "<string>"
}{
"error": {
"message": "Invalid API key",
"type": "authentication_error",
"param": null,
"code": null
}
}{
"error": {
"message": "Organization rate limit exceeded (30 requests/minute). Please retry after 30 seconds.",
"type": "rate_limit_error",
"param": null,
"code": "rate_limit_exceeded"
}
}{
"error": {
"message": "The server had an error while processing your request.",
"type": "server_error",
"param": null,
"code": null
}
}List Models
Returns a list of models available in the API. Use the extended query parameter
to get additional metadata about each model’s capabilities and supported features.
GET
/
v1
/
models
List available models
curl --request GET \
--url https://api.perceptron.inc/v1/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.perceptron.inc/v1/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.perceptron.inc/v1/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.perceptron.inc/v1/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 => [
"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.perceptron.inc/v1/models"
req, _ := http.NewRequest("GET", url, nil)
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.perceptron.inc/v1/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.perceptron.inc/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"created": 123,
"id": "<string>",
"object": "<string>",
"owned_by": "perceptron"
}
],
"object": "<string>"
}{
"error": {
"message": "Invalid API key",
"type": "authentication_error",
"param": null,
"code": null
}
}{
"error": {
"message": "Organization rate limit exceeded (30 requests/minute). Please retry after 30 seconds.",
"type": "rate_limit_error",
"param": null,
"code": "rate_limit_exceeded"
}
}{
"error": {
"message": "The server had an error while processing your request.",
"type": "server_error",
"param": null,
"code": null
}
}Overview
The Models API returns a list of models available in the Perceptron API. This endpoint is compatible with OpenAI’s model listing specification. Use the optionalextended query parameter to retrieve detailed metadata about each model, including capabilities, supported input/output modalities, and token limits.
Examples
List Available Models
Retrieve a basic list of all available models:curl --location 'https://api.perceptron.inc/v1/models' \
--header 'Authorization: Bearer YOUR_API_KEY'
Get Extended Model Metadata
Retrieve detailed information about each model’s capabilities and limits:curl --location 'https://api.perceptron.inc/v1/models?extended=true' \
--header 'Authorization: Bearer YOUR_API_KEY'
Rate Limits
This endpoint is limited to 30 requests/min.Use Cases
- Model Discovery: Query available models before making inference requests
- Capability Checking: Verify a model supports specific features (structured outputs, video input, etc.)
- Dynamic Configuration: Build UIs that adapt to model capabilities
- Token Limit Validation: Check context and output limits before sending requests
Authorizations
Bearer token authentication using your Perceptron API key
Query Parameters
If true, returns extended model metadata including capabilities, modalities, and limits.
Response
List of available models. Returns GetModelsResponse when extended=false (default), or GetModelsExtendedResponse when extended=true.