curl --request GET \
--url https://api.hopscotchlabs.ai/v1/models/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hopscotchlabs.ai/v1/models/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hopscotchlabs.ai/v1/models/{id}', 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.hopscotchlabs.ai/v1/models/{id}",
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.hopscotchlabs.ai/v1/models/{id}"
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.hopscotchlabs.ai/v1/models/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hopscotchlabs.ai/v1/models/{id}")
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{
"id": "openai/gpt-4o-mini",
"object": "model",
"created": 1756080000,
"owned_by": "openai",
"hopscotch": {
"model_id": "openai/gpt-4o-mini",
"display_name": "GPT-4o mini",
"author": "openai",
"author_slug": "meta",
"author_source": "recorded",
"context_window_tokens": 128000,
"max_output_tokens": 16384,
"input_rate_thousandths": 150,
"output_rate_thousandths": 600,
"currency_code": "USD",
"endpoint_families": [
"chat_completions"
],
"provider_display_names": [
"OpenAI"
],
"provider_families": [
"groq"
],
"capabilities": {
"streaming": "yes",
"tools": "yes",
"json_mode": "yes",
"vision": "yes",
"audio": "no"
},
"parameters": [
{
"name": "temperature",
"type": "number",
"min_milli": 0,
"max_milli": 2000,
"default_milli": 1000,
"enum_values": null,
"sent_by_default": false,
"note": "Higher values make the reply less predictable."
}
],
"deprecated_at": null,
"sunset_at": null,
"replacement_model_id": null,
"description": "A small, fast model for everyday chat and extraction work."
}
}{
"error": {
"message": "Incorrect API key provided.",
"type": "authentication_error",
"param": null,
"code": "invalid_api_key",
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "The model \"openai/gpt-4o-mini\" was not found in the live catalog.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "POST is not supported for /v1/models/openai/gpt-4o-mini in this release.",
"type": "invalid_request_error",
"param": null,
"code": "method_not_allowed",
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "Rate limit reached for this key. Try again in 12 seconds. Request id REQUEST_ID.",
"type": "rate_limit_error",
"param": null,
"code": "rate_limit_exceeded",
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "The server had an error while processing your request. Sorry about that! Quote the request id if you contact support.",
"type": "api_error",
"param": null,
"code": null,
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "No provider is configured, so there is nothing to serve this request.",
"type": "api_error",
"param": null,
"code": "no_provider_configured",
"request_id": "REQUEST_ID"
}
}Retrieve a model
Everything the list carries for one model, plus the fields served only here: the model’s own description, the request parameters it accepts, and its deprecation and sunset dates where it has them.
A model id contains slashes and the whole of it is the identifier. Percent-encode it once, or send it unencoded; a double-encoded slash names no model and answers 404.
curl --request GET \
--url https://api.hopscotchlabs.ai/v1/models/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hopscotchlabs.ai/v1/models/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hopscotchlabs.ai/v1/models/{id}', 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.hopscotchlabs.ai/v1/models/{id}",
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.hopscotchlabs.ai/v1/models/{id}"
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.hopscotchlabs.ai/v1/models/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hopscotchlabs.ai/v1/models/{id}")
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{
"id": "openai/gpt-4o-mini",
"object": "model",
"created": 1756080000,
"owned_by": "openai",
"hopscotch": {
"model_id": "openai/gpt-4o-mini",
"display_name": "GPT-4o mini",
"author": "openai",
"author_slug": "meta",
"author_source": "recorded",
"context_window_tokens": 128000,
"max_output_tokens": 16384,
"input_rate_thousandths": 150,
"output_rate_thousandths": 600,
"currency_code": "USD",
"endpoint_families": [
"chat_completions"
],
"provider_display_names": [
"OpenAI"
],
"provider_families": [
"groq"
],
"capabilities": {
"streaming": "yes",
"tools": "yes",
"json_mode": "yes",
"vision": "yes",
"audio": "no"
},
"parameters": [
{
"name": "temperature",
"type": "number",
"min_milli": 0,
"max_milli": 2000,
"default_milli": 1000,
"enum_values": null,
"sent_by_default": false,
"note": "Higher values make the reply less predictable."
}
],
"deprecated_at": null,
"sunset_at": null,
"replacement_model_id": null,
"description": "A small, fast model for everyday chat and extraction work."
}
}{
"error": {
"message": "Incorrect API key provided.",
"type": "authentication_error",
"param": null,
"code": "invalid_api_key",
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "The model \"openai/gpt-4o-mini\" was not found in the live catalog.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "POST is not supported for /v1/models/openai/gpt-4o-mini in this release.",
"type": "invalid_request_error",
"param": null,
"code": "method_not_allowed",
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "Rate limit reached for this key. Try again in 12 seconds. Request id REQUEST_ID.",
"type": "rate_limit_error",
"param": null,
"code": "rate_limit_exceeded",
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "The server had an error while processing your request. Sorry about that! Quote the request id if you contact support.",
"type": "api_error",
"param": null,
"code": null,
"request_id": "REQUEST_ID"
}
}{
"error": {
"message": "No provider is configured, so there is nothing to serve this request.",
"type": "api_error",
"param": null,
"code": "no_provider_configured",
"request_id": "REQUEST_ID"
}
}Authorizations
A workspace API key in an Authorization: Bearer header. A missing header, a scheme other than Bearer, a key of the wrong shape, and a key we reject are all 401.
Path Parameters
The model id, exactly as the list gives it.
Response
The model.
One model, in the same envelope the list uses, with the detail-only fields under hopscotch.
"openai/gpt-4o-mini"
"model"
Absent when the model has no announced end.
Everything the list carries for a model, plus the five fields served only when one model is asked for by name.
Show child attributes
Show child attributes